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

get/initiatives

List initiatives

List initiatives in the workspace the API key belongs to, newest first. By default archived initiatives are excluded.

Requires API keyRate limit: 100 requests / minute

Parameters

ParameterInTypeRequiredDescription
archivedquerystringnoInclude only archived (`true`) or only active (`false`, default) initiatives.
`true`, `false`, default `false`
limitqueryintegernoPage size (1–100, default 20).
≥ 1, ≤ 100, default `20`
offsetqueryintegernoNumber of items to skip (default 0).
≥ 0, default `0`

Example request

curl
curl -X GET "https://forcevue.com/api/v1/initiatives" \
  -H "Authorization: Bearer fvk_live_..."

Example response

200 application/json
{
  "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"
  }
}
post/initiatives

Create an initiative

Create a new initiative in the API key's workspace.

Requires API keyRate limit: 100 requests / minute

Request body

FieldTypeRequiredDescription
titlestringyes
min length 1, max length 200
descriptionstringno
max length 10000

Example request

curl
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

200 application/json
{
  "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"
  }
}
get/initiatives/{id}

Get an initiative

Fetch a single initiative by id. Returns 404 if it is not in the key's workspace.

Requires API keyRate limit: 100 requests / minute

Parameters

ParameterInTypeRequiredDescription
idpathstringyesResource identifier (UUID).
uuid

Example request

curl
curl -X GET "https://forcevue.com/api/v1/initiatives/{id}" \
  -H "Authorization: Bearer fvk_live_..."

Example response

200 application/json
{
  "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

StatusWhen
404No initiative with that id in this workspace.
patch/initiatives/{id}

Update an initiative

Update an initiative's title, description, or archived state.

Requires API keyRate limit: 100 requests / minute

Parameters

ParameterInTypeRequiredDescription
idpathstringyesResource identifier (UUID).
uuid

Request body

FieldTypeRequiredDescription
titlestringno
min length 1, max length 200
descriptionstring | nullno
archivedbooleanno

Example request

curl
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

200 application/json
{
  "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

StatusWhen
404No initiative with that id in this workspace.
delete/initiatives/{id}

Delete an initiative

Permanently delete an initiative and its documents.

Requires API keyRate limit: 100 requests / minute

Parameters

ParameterInTypeRequiredDescription
idpathstringyesResource identifier (UUID).
uuid

Example request

curl
curl -X DELETE "https://forcevue.com/api/v1/initiatives/{id}" \
  -H "Authorization: Bearer fvk_live_..."

Example response

200 application/json
{
  "success": true,
  "data": {
    "deleted": true
  },
  "meta": {
    "requestId": "00000000-0000-0000-0000-000000000000",
    "timestamp": "2026-01-01T00:00:00.000Z"
  }
}

Errors

StatusWhen
404No initiative with that id in this workspace.

Documents

get/documents

List documents

List documents in the workspace, newest first. Summaries omit content; fetch a single document to get its markdown body.

Requires API keyRate limit: 100 requests / minute

Parameters

ParameterInTypeRequiredDescription
initiative_idquerystringnoFilter to one initiative (UUID). Required when `scope=initiative`.
uuid
statusquerystringnoFilter by document status.
`draft`, `in_review`, `approved`, `archived`
limitqueryintegernoPage size (1–100, default 20).
≥ 1, ≤ 100, default `20`
offsetqueryintegernoNumber of items to skip (default 0).
≥ 0, default `0`

Example request

curl
curl -X GET "https://forcevue.com/api/v1/documents" \
  -H "Authorization: Bearer fvk_live_..."

Example response

200 application/json
{
  "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"
  }
}
post/documents

Create a document

Create a document directly (stub or with seeded markdown). This does NOT run AI generation. Use POST /generate for that.

Requires API keyRate limit: 100 requests / minute

Request body

FieldTypeRequiredDescription
initiative_idstringyes
uuid
typestringyes
`business_case`, `prd`, `epic`, `user_story`, `launch_plan`, `release_notes`, `executive_summary`, `competitive_battlecard`, `okrs`, `ai_implementation_spec`, `ai_test_plan`, `retrospective`
titlestringyes
min length 1, max length 200
content_markdownstringno
max length 500000

Example request

curl
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

200 application/json
{
  "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

StatusWhen
404The referenced initiative is not in this workspace.
get/documents/{id}

Get a document

Fetch a single document including its full body as markdown.

Requires API keyRate limit: 100 requests / minute

Parameters

ParameterInTypeRequiredDescription
idpathstringyesResource identifier (UUID).
uuid

Example request

curl
curl -X GET "https://forcevue.com/api/v1/documents/{id}" \
  -H "Authorization: Bearer fvk_live_..."

Example response

200 application/json
{
  "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

StatusWhen
404No document with that id in this workspace.
patch/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).

Requires API keyRate limit: 100 requests / minute

Parameters

ParameterInTypeRequiredDescription
idpathstringyesResource identifier (UUID).
uuid

Request body

FieldTypeRequiredDescription
titlestringno
min length 1, max length 200
statusstringno
`draft`, `in_review`, `approved`, `archived`
content_markdownstringno
max length 500000

Example request

curl
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

200 application/json
{
  "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

StatusWhen
404No document with that id in this workspace.
delete/documents/{id}

Delete a document

Permanently delete a document.

Requires API keyRate limit: 100 requests / minute

Parameters

ParameterInTypeRequiredDescription
idpathstringyesResource identifier (UUID).
uuid

Example request

curl
curl -X DELETE "https://forcevue.com/api/v1/documents/{id}" \
  -H "Authorization: Bearer fvk_live_..."

Example response

200 application/json
{
  "success": true,
  "data": {
    "deleted": true
  },
  "meta": {
    "requestId": "00000000-0000-0000-0000-000000000000",
    "timestamp": "2026-01-01T00:00:00.000Z"
  }
}

Errors

StatusWhen
404No document with that id in this workspace.

Context Items

get/context-items

List context items

List context items at either initiative or workspace scope. `initiative_id` is required when `scope=initiative`.

Requires API keyRate limit: 100 requests / minute

Parameters

ParameterInTypeRequiredDescription
scopequerystringnoWhich table the resource lives in: `initiative` (default) or `workspace`.
`initiative`, `workspace`, default `initiative`
initiative_idquerystringnoFilter to one initiative (UUID). Required when `scope=initiative`.
uuid
labelquerystringnoFilter by context label.
limitqueryintegernoPage size (1–100, default 20).
≥ 1, ≤ 100, default `20`
offsetqueryintegernoNumber of items to skip (default 0).
≥ 0, default `0`

Example request

curl
curl -X GET "https://forcevue.com/api/v1/context-items" \
  -H "Authorization: Bearer fvk_live_..."

Example response

200 application/json
{
  "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

StatusWhen
400Missing `initiative_id` for an initiative-scoped request.
post/context-items

Create a context item

Create a context item at initiative or workspace scope.

Requires API keyRate limit: 100 requests / minute

Request body

FieldTypeRequiredDescription
scopestringyes
`initiative`, `workspace`
initiative_idstringno
uuid
labelstringyes
`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`
titlestringyes
min length 1, max length 200
contentstringyes
max length 100000
source_urlstringno
uri, max length 2000

Example request

curl
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

200 application/json
{
  "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

StatusWhen
404The referenced initiative is not in this workspace.
get/context-items/{id}

Get a context item

Fetch a single context item. Pass `?scope=` to indicate which table to read.

Requires API keyRate limit: 100 requests / minute

Parameters

ParameterInTypeRequiredDescription
idpathstringyesResource identifier (UUID).
uuid
scopequerystringnoWhich table the resource lives in: `initiative` (default) or `workspace`.
`initiative`, `workspace`, default `initiative`

Example request

curl
curl -X GET "https://forcevue.com/api/v1/context-items/{id}" \
  -H "Authorization: Bearer fvk_live_..."

Example response

200 application/json
{
  "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

StatusWhen
404No context item with that id in this workspace.
patch/context-items/{id}

Update a context item

Update a context item's fields. `scope` is required so the right table is targeted.

Requires API keyRate limit: 100 requests / minute

Parameters

ParameterInTypeRequiredDescription
idpathstringyesResource identifier (UUID).
uuid

Request body

FieldTypeRequiredDescription
scopestringyes
`initiative`, `workspace`
titlestringno
min length 1, max length 200
contentstringno
max length 100000
labelstringno
`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_urlstring | nullno

Example request

curl
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

200 application/json
{
  "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

StatusWhen
404No context item with that id in this workspace.
delete/context-items/{id}

Delete a context item

Delete a context item. Pass `?scope=` to indicate which table to read.

Requires API keyRate limit: 100 requests / minute

Parameters

ParameterInTypeRequiredDescription
idpathstringyesResource identifier (UUID).
uuid
scopequerystringnoWhich table the resource lives in: `initiative` (default) or `workspace`.
`initiative`, `workspace`, default `initiative`

Example request

curl
curl -X DELETE "https://forcevue.com/api/v1/context-items/{id}" \
  -H "Authorization: Bearer fvk_live_..."

Example response

200 application/json
{
  "success": true,
  "data": {
    "deleted": true
  },
  "meta": {
    "requestId": "00000000-0000-0000-0000-000000000000",
    "timestamp": "2026-01-01T00:00:00.000Z"
  }
}

Errors

StatusWhen
404No context item with that id in this workspace.

Goals

get/goals

List goals

List goals at either initiative or workspace scope. `initiative_id` is required when `scope=initiative`.

Requires API keyRate limit: 100 requests / minute

Parameters

ParameterInTypeRequiredDescription
scopequerystringnoWhich table the resource lives in: `initiative` (default) or `workspace`.
`initiative`, `workspace`, default `initiative`
initiative_idquerystringnoFilter to one initiative (UUID). Required when `scope=initiative`.
uuid
limitqueryintegernoPage size (1–100, default 20).
≥ 1, ≤ 100, default `20`
offsetqueryintegernoNumber of items to skip (default 0).
≥ 0, default `0`

Example request

curl
curl -X GET "https://forcevue.com/api/v1/goals" \
  -H "Authorization: Bearer fvk_live_..."

Example response

200 application/json
{
  "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

StatusWhen
400Missing `initiative_id` for an initiative-scoped request.
post/goals

Create a goal

Create a goal at initiative or workspace scope.

Requires API keyRate limit: 100 requests / minute

Request body

FieldTypeRequiredDescription
scopestringyes
`initiative`, `workspace`
initiative_idstringno
uuid
goal_typestringyes
`business_outcome`, `user_outcome`, `success_metric`, `general`, `constraint`
titlestringyes
min length 1, max length 200
descriptionstringno
max length 20000
key_resultstringno
max length 2000
baselinestringno
max length 2000
timeframestringno
max length 200
priorityintegerno
≥ 0, ≤ 1000

Example request

curl
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

200 application/json
{
  "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

StatusWhen
404The referenced initiative is not in this workspace.
get/goals/{id}

Get a goal

Fetch a single goal. Pass `?scope=` to indicate which table to read.

Requires API keyRate limit: 100 requests / minute

Parameters

ParameterInTypeRequiredDescription
idpathstringyesResource identifier (UUID).
uuid
scopequerystringnoWhich table the resource lives in: `initiative` (default) or `workspace`.
`initiative`, `workspace`, default `initiative`

Example request

curl
curl -X GET "https://forcevue.com/api/v1/goals/{id}" \
  -H "Authorization: Bearer fvk_live_..."

Example response

200 application/json
{
  "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

StatusWhen
404No goal with that id in this workspace.
patch/goals/{id}

Update a goal

Update a goal's fields. `scope` is required so the right table is targeted.

Requires API keyRate limit: 100 requests / minute

Parameters

ParameterInTypeRequiredDescription
idpathstringyesResource identifier (UUID).
uuid

Request body

FieldTypeRequiredDescription
scopestringyes
`initiative`, `workspace`
goal_typestringno
`business_outcome`, `user_outcome`, `success_metric`, `general`, `constraint`
titlestringno
min length 1, max length 200
descriptionstring | nullno
key_resultstring | nullno
baselinestring | nullno
timeframestring | nullno
priorityinteger | nullno

Example request

curl
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

200 application/json
{
  "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

StatusWhen
404No goal with that id in this workspace.
delete/goals/{id}

Delete a goal

Delete a goal. Pass `?scope=` to indicate which table to read.

Requires API keyRate limit: 100 requests / minute

Parameters

ParameterInTypeRequiredDescription
idpathstringyesResource identifier (UUID).
uuid
scopequerystringnoWhich table the resource lives in: `initiative` (default) or `workspace`.
`initiative`, `workspace`, default `initiative`

Example request

curl
curl -X DELETE "https://forcevue.com/api/v1/goals/{id}" \
  -H "Authorization: Bearer fvk_live_..."

Example response

200 application/json
{
  "success": true,
  "data": {
    "deleted": true
  },
  "meta": {
    "requestId": "00000000-0000-0000-0000-000000000000",
    "timestamp": "2026-01-01T00:00:00.000Z"
  }
}

Errors

StatusWhen
404No goal with that id in this workspace.

Generate

post/generate

Generate 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).

Requires API keyRate limit: Tier AI bucket

Request body

FieldTypeRequiredDescription
initiative_idstringyes
uuid
document_typestringno
`business_case`, `prd`, `epic`, `user_story`, `launch_plan`, `release_notes`, `executive_summary`, `competitive_battlecard`, `okrs`, `ai_implementation_spec`, `ai_test_plan`, `retrospective`
document_type_idstringno
uuid
titlestringno
min length 1, max length 200
instructionsstringno
max length 10000

Example request

curl
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

200 application/json
{
  "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

StatusWhen
404The referenced initiative is not in this workspace.
429Rate limit (`RATE_LIMIT_EXCEEDED`, carries `Retry-After`) or monthly quota exhausted (`QUOTA_EXCEEDED`).

Account

get/me

Key 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.

Requires API keyRate limit: 100 requests / minute

Example request

curl
curl -X GET "https://forcevue.com/api/v1/me" \
  -H "Authorization: Bearer fvk_live_..."

Example response

200 application/json
{
  "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

get/openapi.json

OpenAPI specification

The machine-readable OpenAPI 3.1 description of this API. Public, no authentication required.

PublicRate limit: None

Example request

curl
curl -X GET "https://forcevue.com/api/v1/openapi.json"

Example response

200 application/json
{
  "success": true,
  "data": {},
  "meta": {
    "requestId": "00000000-0000-0000-0000-000000000000",
    "timestamp": "2026-01-01T00:00:00.000Z"
  }
}