API reference
Generated reference for every ForceVue REST API v1 endpoint.
Base URL: https://forcevue.com/api/v1
Authentication: send your key as Authorization: Bearer fvk_live_…. Create a key in workspace Settings → API Keys (owner/admin on a paid plan).
Machine-readable spec: /api/v1/openapi.json (OpenAPI 3.1).
Initiatives
/initiativesList initiatives
List initiatives in the workspace the API key belongs to, newest first. By default archived initiatives are excluded.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| archived | query | string | no | Include only archived (`true`) or only active (`false`, default) initiatives. `true`, `false`, default `false` |
| limit | query | integer | no | Page size (1–100, default 20). ≥ 1, ≤ 100, default `20` |
| offset | query | integer | no | Number of items to skip (default 0). ≥ 0, default `0` |
Example request
curl -X GET "https://forcevue.com/api/v1/initiatives" \
-H "Authorization: Bearer fvk_live_..."Example response
{
"success": true,
"data": {
"items": [
{
"id": "00000000-0000-0000-0000-000000000000",
"title": "string",
"description": "string",
"archived": true,
"archived_at": "string",
"created_at": "string",
"updated_at": "string"
}
],
"pagination": {
"limit": 0,
"offset": 0,
"has_more": true
}
},
"meta": {
"requestId": "00000000-0000-0000-0000-000000000000",
"timestamp": "2026-01-01T00:00:00.000Z"
}
}/initiativesCreate an initiative
Create a new initiative in the API key's workspace.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
| title | string | yes | min length 1, max length 200 |
| description | string | no | max length 10000 |
Example request
curl -X POST "https://forcevue.com/api/v1/initiatives" \
-H "Authorization: Bearer fvk_live_..." \
-H "Content-Type: application/json" \
-d '{
"title": "string",
"description": "string"
}'Example response
{
"success": true,
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"title": "string",
"description": "string",
"archived": true,
"archived_at": "string",
"created_at": "string",
"updated_at": "string"
},
"meta": {
"requestId": "00000000-0000-0000-0000-000000000000",
"timestamp": "2026-01-01T00:00:00.000Z"
}
}/initiatives/{id}Get an initiative
Fetch a single initiative by id. Returns 404 if it is not in the key's workspace.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Resource identifier (UUID). uuid |
Example request
curl -X GET "https://forcevue.com/api/v1/initiatives/{id}" \
-H "Authorization: Bearer fvk_live_..."Example response
{
"success": true,
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"title": "string",
"description": "string",
"archived": true,
"archived_at": "string",
"created_at": "string",
"updated_at": "string"
},
"meta": {
"requestId": "00000000-0000-0000-0000-000000000000",
"timestamp": "2026-01-01T00:00:00.000Z"
}
}Errors
| Status | When |
|---|---|
| 404 | No initiative with that id in this workspace. |
/initiatives/{id}Update an initiative
Update an initiative's title, description, or archived state.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Resource identifier (UUID). uuid |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
| title | string | no | min length 1, max length 200 |
| description | string | null | no | |
| archived | boolean | no |
Example request
curl -X PATCH "https://forcevue.com/api/v1/initiatives/{id}" \
-H "Authorization: Bearer fvk_live_..." \
-H "Content-Type: application/json" \
-d '{
"title": "string",
"description": "string",
"archived": true
}'Example response
{
"success": true,
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"title": "string",
"description": "string",
"archived": true,
"archived_at": "string",
"created_at": "string",
"updated_at": "string"
},
"meta": {
"requestId": "00000000-0000-0000-0000-000000000000",
"timestamp": "2026-01-01T00:00:00.000Z"
}
}Errors
| Status | When |
|---|---|
| 404 | No initiative with that id in this workspace. |
/initiatives/{id}Delete an initiative
Permanently delete an initiative and its documents.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Resource identifier (UUID). uuid |
Example request
curl -X DELETE "https://forcevue.com/api/v1/initiatives/{id}" \
-H "Authorization: Bearer fvk_live_..."Example response
{
"success": true,
"data": {
"deleted": true
},
"meta": {
"requestId": "00000000-0000-0000-0000-000000000000",
"timestamp": "2026-01-01T00:00:00.000Z"
}
}Errors
| Status | When |
|---|---|
| 404 | No initiative with that id in this workspace. |
Documents
/documentsList documents
List documents in the workspace, newest first. Summaries omit content; fetch a single document to get its markdown body.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| initiative_id | query | string | no | Filter to one initiative (UUID). Required when `scope=initiative`. uuid |
| status | query | string | no | Filter by document status. `draft`, `in_review`, `approved`, `archived` |
| limit | query | integer | no | Page size (1–100, default 20). ≥ 1, ≤ 100, default `20` |
| offset | query | integer | no | Number of items to skip (default 0). ≥ 0, default `0` |
Example request
curl -X GET "https://forcevue.com/api/v1/documents" \
-H "Authorization: Bearer fvk_live_..."Example response
{
"success": true,
"data": {
"items": [
{
"id": "00000000-0000-0000-0000-000000000000",
"initiative_id": "00000000-0000-0000-0000-000000000000",
"title": "string",
"type": "business_case",
"status": "draft",
"created_at": "string",
"updated_at": "string"
}
],
"pagination": {
"limit": 0,
"offset": 0,
"has_more": true
}
},
"meta": {
"requestId": "00000000-0000-0000-0000-000000000000",
"timestamp": "2026-01-01T00:00:00.000Z"
}
}/documentsCreate a document
Create a document directly (stub or with seeded markdown). This does NOT run AI generation. Use POST /generate for that.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
| initiative_id | string | yes | uuid |
| type | string | yes | `business_case`, `prd`, `epic`, `user_story`, `launch_plan`, `release_notes`, `executive_summary`, `competitive_battlecard`, `okrs`, `ai_implementation_spec`, `ai_test_plan`, `retrospective` |
| title | string | yes | min length 1, max length 200 |
| content_markdown | string | no | max length 500000 |
Example request
curl -X POST "https://forcevue.com/api/v1/documents" \
-H "Authorization: Bearer fvk_live_..." \
-H "Content-Type: application/json" \
-d '{
"initiative_id": "00000000-0000-0000-0000-000000000000",
"type": "business_case",
"title": "string",
"content_markdown": "string"
}'Example response
{
"success": true,
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"initiative_id": "00000000-0000-0000-0000-000000000000",
"title": "string",
"type": "business_case",
"status": "draft",
"created_at": "string",
"updated_at": "string",
"content_markdown": "string",
"version": 0
},
"meta": {
"requestId": "00000000-0000-0000-0000-000000000000",
"timestamp": "2026-01-01T00:00:00.000Z"
}
}Errors
| Status | When |
|---|---|
| 404 | The referenced initiative is not in this workspace. |
/documents/{id}Get a document
Fetch a single document including its full body as markdown.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Resource identifier (UUID). uuid |
Example request
curl -X GET "https://forcevue.com/api/v1/documents/{id}" \
-H "Authorization: Bearer fvk_live_..."Example response
{
"success": true,
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"initiative_id": "00000000-0000-0000-0000-000000000000",
"title": "string",
"type": "business_case",
"status": "draft",
"created_at": "string",
"updated_at": "string",
"content_markdown": "string",
"version": 0
},
"meta": {
"requestId": "00000000-0000-0000-0000-000000000000",
"timestamp": "2026-01-01T00:00:00.000Z"
}
}Errors
| Status | When |
|---|---|
| 404 | No document with that id in this workspace. |
/documents/{id}Update a document
Update a document's title, status, or markdown content. Updating content bumps the document version (a new version row is created).
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Resource identifier (UUID). uuid |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
| title | string | no | min length 1, max length 200 |
| status | string | no | `draft`, `in_review`, `approved`, `archived` |
| content_markdown | string | no | max length 500000 |
Example request
curl -X PATCH "https://forcevue.com/api/v1/documents/{id}" \
-H "Authorization: Bearer fvk_live_..." \
-H "Content-Type: application/json" \
-d '{
"title": "string",
"status": "draft",
"content_markdown": "string"
}'Example response
{
"success": true,
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"initiative_id": "00000000-0000-0000-0000-000000000000",
"title": "string",
"type": "business_case",
"status": "draft",
"created_at": "string",
"updated_at": "string",
"content_markdown": "string",
"version": 0
},
"meta": {
"requestId": "00000000-0000-0000-0000-000000000000",
"timestamp": "2026-01-01T00:00:00.000Z"
}
}Errors
| Status | When |
|---|---|
| 404 | No document with that id in this workspace. |
/documents/{id}Delete a document
Permanently delete a document.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Resource identifier (UUID). uuid |
Example request
curl -X DELETE "https://forcevue.com/api/v1/documents/{id}" \
-H "Authorization: Bearer fvk_live_..."Example response
{
"success": true,
"data": {
"deleted": true
},
"meta": {
"requestId": "00000000-0000-0000-0000-000000000000",
"timestamp": "2026-01-01T00:00:00.000Z"
}
}Errors
| Status | When |
|---|---|
| 404 | No document with that id in this workspace. |
Context Items
/context-itemsList context items
List context items at either initiative or workspace scope. `initiative_id` is required when `scope=initiative`.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| scope | query | string | no | Which table the resource lives in: `initiative` (default) or `workspace`. `initiative`, `workspace`, default `initiative` |
| initiative_id | query | string | no | Filter to one initiative (UUID). Required when `scope=initiative`. uuid |
| label | query | string | no | Filter by context label. |
| limit | query | integer | no | Page size (1–100, default 20). ≥ 1, ≤ 100, default `20` |
| offset | query | integer | no | Number of items to skip (default 0). ≥ 0, default `0` |
Example request
curl -X GET "https://forcevue.com/api/v1/context-items" \
-H "Authorization: Bearer fvk_live_..."Example response
{
"success": true,
"data": {
"items": [
{
"id": "00000000-0000-0000-0000-000000000000",
"scope": "initiative",
"initiative_id": "00000000-0000-0000-0000-000000000000",
"label": "target_users",
"title": "string",
"content": "string",
"source_url": "string",
"created_at": "string",
"updated_at": "string"
}
],
"pagination": {
"limit": 0,
"offset": 0,
"has_more": true
}
},
"meta": {
"requestId": "00000000-0000-0000-0000-000000000000",
"timestamp": "2026-01-01T00:00:00.000Z"
}
}Errors
| Status | When |
|---|---|
| 400 | Missing `initiative_id` for an initiative-scoped request. |
/context-itemsCreate a context item
Create a context item at initiative or workspace scope.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
| scope | string | yes | `initiative`, `workspace` |
| initiative_id | string | no | uuid |
| label | string | yes | `target_users`, `key_competitors`, `market_research`, `user_feedback`, `feature_idea`, `technical_constraint`, `external_link`, `general_note`, `company_info`, `tech_stack`, `target_market`, `brand_guidelines`, `compliance_requirements` |
| title | string | yes | min length 1, max length 200 |
| content | string | yes | max length 100000 |
| source_url | string | no | uri, max length 2000 |
Example request
curl -X POST "https://forcevue.com/api/v1/context-items" \
-H "Authorization: Bearer fvk_live_..." \
-H "Content-Type: application/json" \
-d '{
"scope": "initiative",
"initiative_id": "00000000-0000-0000-0000-000000000000",
"label": "target_users",
"title": "string",
"content": "string",
"source_url": "string"
}'Example response
{
"success": true,
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"scope": "initiative",
"initiative_id": "00000000-0000-0000-0000-000000000000",
"label": "target_users",
"title": "string",
"content": "string",
"source_url": "string",
"created_at": "string",
"updated_at": "string"
},
"meta": {
"requestId": "00000000-0000-0000-0000-000000000000",
"timestamp": "2026-01-01T00:00:00.000Z"
}
}Errors
| Status | When |
|---|---|
| 404 | The referenced initiative is not in this workspace. |
/context-items/{id}Get a context item
Fetch a single context item. Pass `?scope=` to indicate which table to read.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Resource identifier (UUID). uuid |
| scope | query | string | no | Which table the resource lives in: `initiative` (default) or `workspace`. `initiative`, `workspace`, default `initiative` |
Example request
curl -X GET "https://forcevue.com/api/v1/context-items/{id}" \
-H "Authorization: Bearer fvk_live_..."Example response
{
"success": true,
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"scope": "initiative",
"initiative_id": "00000000-0000-0000-0000-000000000000",
"label": "target_users",
"title": "string",
"content": "string",
"source_url": "string",
"created_at": "string",
"updated_at": "string"
},
"meta": {
"requestId": "00000000-0000-0000-0000-000000000000",
"timestamp": "2026-01-01T00:00:00.000Z"
}
}Errors
| Status | When |
|---|---|
| 404 | No context item with that id in this workspace. |
/context-items/{id}Update a context item
Update a context item's fields. `scope` is required so the right table is targeted.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Resource identifier (UUID). uuid |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
| scope | string | yes | `initiative`, `workspace` |
| title | string | no | min length 1, max length 200 |
| content | string | no | max length 100000 |
| label | string | no | `target_users`, `key_competitors`, `market_research`, `user_feedback`, `feature_idea`, `technical_constraint`, `external_link`, `general_note`, `company_info`, `tech_stack`, `target_market`, `brand_guidelines`, `compliance_requirements` |
| source_url | string | null | no |
Example request
curl -X PATCH "https://forcevue.com/api/v1/context-items/{id}" \
-H "Authorization: Bearer fvk_live_..." \
-H "Content-Type: application/json" \
-d '{
"scope": "initiative",
"title": "string",
"content": "string",
"label": "target_users",
"source_url": "string"
}'Example response
{
"success": true,
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"scope": "initiative",
"initiative_id": "00000000-0000-0000-0000-000000000000",
"label": "target_users",
"title": "string",
"content": "string",
"source_url": "string",
"created_at": "string",
"updated_at": "string"
},
"meta": {
"requestId": "00000000-0000-0000-0000-000000000000",
"timestamp": "2026-01-01T00:00:00.000Z"
}
}Errors
| Status | When |
|---|---|
| 404 | No context item with that id in this workspace. |
/context-items/{id}Delete a context item
Delete a context item. Pass `?scope=` to indicate which table to read.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Resource identifier (UUID). uuid |
| scope | query | string | no | Which table the resource lives in: `initiative` (default) or `workspace`. `initiative`, `workspace`, default `initiative` |
Example request
curl -X DELETE "https://forcevue.com/api/v1/context-items/{id}" \
-H "Authorization: Bearer fvk_live_..."Example response
{
"success": true,
"data": {
"deleted": true
},
"meta": {
"requestId": "00000000-0000-0000-0000-000000000000",
"timestamp": "2026-01-01T00:00:00.000Z"
}
}Errors
| Status | When |
|---|---|
| 404 | No context item with that id in this workspace. |
Goals
/goalsList goals
List goals at either initiative or workspace scope. `initiative_id` is required when `scope=initiative`.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| scope | query | string | no | Which table the resource lives in: `initiative` (default) or `workspace`. `initiative`, `workspace`, default `initiative` |
| initiative_id | query | string | no | Filter to one initiative (UUID). Required when `scope=initiative`. uuid |
| limit | query | integer | no | Page size (1–100, default 20). ≥ 1, ≤ 100, default `20` |
| offset | query | integer | no | Number of items to skip (default 0). ≥ 0, default `0` |
Example request
curl -X GET "https://forcevue.com/api/v1/goals" \
-H "Authorization: Bearer fvk_live_..."Example response
{
"success": true,
"data": {
"items": [
{
"id": "00000000-0000-0000-0000-000000000000",
"scope": "initiative",
"initiative_id": "00000000-0000-0000-0000-000000000000",
"goal_type": "business_outcome",
"title": "string",
"description": "string",
"key_result": "string",
"baseline": "string",
"timeframe": "string",
"priority": 0,
"created_at": "string",
"updated_at": "string"
}
],
"pagination": {
"limit": 0,
"offset": 0,
"has_more": true
}
},
"meta": {
"requestId": "00000000-0000-0000-0000-000000000000",
"timestamp": "2026-01-01T00:00:00.000Z"
}
}Errors
| Status | When |
|---|---|
| 400 | Missing `initiative_id` for an initiative-scoped request. |
/goalsCreate a goal
Create a goal at initiative or workspace scope.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
| scope | string | yes | `initiative`, `workspace` |
| initiative_id | string | no | uuid |
| goal_type | string | yes | `business_outcome`, `user_outcome`, `success_metric`, `general`, `constraint` |
| title | string | yes | min length 1, max length 200 |
| description | string | no | max length 20000 |
| key_result | string | no | max length 2000 |
| baseline | string | no | max length 2000 |
| timeframe | string | no | max length 200 |
| priority | integer | no | ≥ 0, ≤ 1000 |
Example request
curl -X POST "https://forcevue.com/api/v1/goals" \
-H "Authorization: Bearer fvk_live_..." \
-H "Content-Type: application/json" \
-d '{
"scope": "initiative",
"initiative_id": "00000000-0000-0000-0000-000000000000",
"goal_type": "business_outcome",
"title": "string",
"description": "string",
"key_result": "string",
"baseline": "string",
"timeframe": "string",
"priority": 0
}'Example response
{
"success": true,
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"scope": "initiative",
"initiative_id": "00000000-0000-0000-0000-000000000000",
"goal_type": "business_outcome",
"title": "string",
"description": "string",
"key_result": "string",
"baseline": "string",
"timeframe": "string",
"priority": 0,
"created_at": "string",
"updated_at": "string"
},
"meta": {
"requestId": "00000000-0000-0000-0000-000000000000",
"timestamp": "2026-01-01T00:00:00.000Z"
}
}Errors
| Status | When |
|---|---|
| 404 | The referenced initiative is not in this workspace. |
/goals/{id}Get a goal
Fetch a single goal. Pass `?scope=` to indicate which table to read.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Resource identifier (UUID). uuid |
| scope | query | string | no | Which table the resource lives in: `initiative` (default) or `workspace`. `initiative`, `workspace`, default `initiative` |
Example request
curl -X GET "https://forcevue.com/api/v1/goals/{id}" \
-H "Authorization: Bearer fvk_live_..."Example response
{
"success": true,
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"scope": "initiative",
"initiative_id": "00000000-0000-0000-0000-000000000000",
"goal_type": "business_outcome",
"title": "string",
"description": "string",
"key_result": "string",
"baseline": "string",
"timeframe": "string",
"priority": 0,
"created_at": "string",
"updated_at": "string"
},
"meta": {
"requestId": "00000000-0000-0000-0000-000000000000",
"timestamp": "2026-01-01T00:00:00.000Z"
}
}Errors
| Status | When |
|---|---|
| 404 | No goal with that id in this workspace. |
/goals/{id}Update a goal
Update a goal's fields. `scope` is required so the right table is targeted.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Resource identifier (UUID). uuid |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
| scope | string | yes | `initiative`, `workspace` |
| goal_type | string | no | `business_outcome`, `user_outcome`, `success_metric`, `general`, `constraint` |
| title | string | no | min length 1, max length 200 |
| description | string | null | no | |
| key_result | string | null | no | |
| baseline | string | null | no | |
| timeframe | string | null | no | |
| priority | integer | null | no |
Example request
curl -X PATCH "https://forcevue.com/api/v1/goals/{id}" \
-H "Authorization: Bearer fvk_live_..." \
-H "Content-Type: application/json" \
-d '{
"scope": "initiative",
"goal_type": "business_outcome",
"title": "string",
"description": "string",
"key_result": "string",
"baseline": "string",
"timeframe": "string",
"priority": 0
}'Example response
{
"success": true,
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"scope": "initiative",
"initiative_id": "00000000-0000-0000-0000-000000000000",
"goal_type": "business_outcome",
"title": "string",
"description": "string",
"key_result": "string",
"baseline": "string",
"timeframe": "string",
"priority": 0,
"created_at": "string",
"updated_at": "string"
},
"meta": {
"requestId": "00000000-0000-0000-0000-000000000000",
"timestamp": "2026-01-01T00:00:00.000Z"
}
}Errors
| Status | When |
|---|---|
| 404 | No goal with that id in this workspace. |
/goals/{id}Delete a goal
Delete a goal. Pass `?scope=` to indicate which table to read.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Resource identifier (UUID). uuid |
| scope | query | string | no | Which table the resource lives in: `initiative` (default) or `workspace`. `initiative`, `workspace`, default `initiative` |
Example request
curl -X DELETE "https://forcevue.com/api/v1/goals/{id}" \
-H "Authorization: Bearer fvk_live_..."Example response
{
"success": true,
"data": {
"deleted": true
},
"meta": {
"requestId": "00000000-0000-0000-0000-000000000000",
"timestamp": "2026-01-01T00:00:00.000Z"
}
}Errors
| Status | When |
|---|---|
| 404 | No goal with that id in this workspace. |
Search
/searchSearch the workspace
Hybrid semantic + keyword search across initiatives, documents, context items, goals, and uploaded files in the key's workspace.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| q | query | string | yes | Search query (minimum 2 characters). min length 2 |
| initiative_id | query | string | no | Filter to one initiative (UUID). Required when `scope=initiative`. uuid |
| types | query | string | no | Comma-separated content types to restrict results to (e.g. `document,initiative`). |
| limit | query | integer | no | Maximum hits to return (1–50, default 20). ≥ 1, ≤ 50, default `20` |
Example request
curl -X GET "https://forcevue.com/api/v1/search?q=your+query" \
-H "Authorization: Bearer fvk_live_..."Example response
{
"success": true,
"data": {
"results": [
{
"type": "initiative",
"id": "string",
"parent_id": "string",
"title": "string",
"snippet": "string",
"url": "string",
"score": 0
}
]
},
"meta": {
"requestId": "00000000-0000-0000-0000-000000000000",
"timestamp": "2026-01-01T00:00:00.000Z"
}
}Errors
| Status | When |
|---|---|
| 400 | Query too short or invalid `types`. |
Generate
/generateGenerate a document with AI
Synchronously generate a document with ForceVue's contextual AI, using the initiative's full context (context items, goals, related docs, uploads). One call = one generation; the endpoint never retries, and every successful call consumes one unit of the monthly generation quota. Supply either `document_type` (a built-in type) or `document_type_id` (a workspace-custom type).
Request body
| Field | Type | Required | Description |
|---|---|---|---|
| initiative_id | string | yes | uuid |
| document_type | string | no | `business_case`, `prd`, `epic`, `user_story`, `launch_plan`, `release_notes`, `executive_summary`, `competitive_battlecard`, `okrs`, `ai_implementation_spec`, `ai_test_plan`, `retrospective` |
| document_type_id | string | no | uuid |
| title | string | no | min length 1, max length 200 |
| instructions | string | no | max length 10000 |
Example request
curl -X POST "https://forcevue.com/api/v1/generate" \
-H "Authorization: Bearer fvk_live_..." \
-H "Content-Type: application/json" \
-d '{
"initiative_id": "00000000-0000-0000-0000-000000000000",
"document_type": "business_case",
"document_type_id": "00000000-0000-0000-0000-000000000000",
"title": "string",
"instructions": "string"
}'Example response
{
"success": true,
"data": {
"document": {
"id": "00000000-0000-0000-0000-000000000000",
"title": "string",
"content_markdown": "string",
"url": "string"
}
},
"meta": {
"requestId": "00000000-0000-0000-0000-000000000000",
"timestamp": "2026-01-01T00:00:00.000Z"
}
}Errors
| Status | When |
|---|---|
| 404 | The referenced initiative is not in this workspace. |
| 429 | Rate limit (`RATE_LIMIT_EXCEEDED`, carries `Retry-After`) or monthly quota exhausted (`QUOTA_EXCEEDED`). |
Account
/meKey introspection
Return the resolved workspace, the authenticating key's display fields, and the current month's generation usage. Use it as a smoke test that a key works.
Example request
curl -X GET "https://forcevue.com/api/v1/me" \
-H "Authorization: Bearer fvk_live_..."Example response
{
"success": true,
"data": {
"organization": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"tier": "string"
},
"key": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"prefix": "string"
},
"usage": {
"current": 0,
"limit": 0,
"remaining": 0,
"period_end": "string"
}
},
"meta": {
"requestId": "00000000-0000-0000-0000-000000000000",
"timestamp": "2026-01-01T00:00:00.000Z"
}
}Meta
/openapi.jsonOpenAPI specification
The machine-readable OpenAPI 3.1 description of this API. Public, no authentication required.
Example request
curl -X GET "https://forcevue.com/api/v1/openapi.json"Example response
{
"success": true,
"data": {},
"meta": {
"requestId": "00000000-0000-0000-0000-000000000000",
"timestamp": "2026-01-01T00:00:00.000Z"
}
}