FoxCue API: Collections and Legacy knowledge documents and Sources, transcripts and business context

Request examples, parameters, scopes and response statuses for FoxCue API collections and legacy knowledge documents and sources, transcripts and business context.

These operations are copied from the live OpenAPI schema at GET /api/v1/openapi.json (2026-10-28, 297 operations). Each example request is built from that operation's schema: required fields, and optional fields when the object is small. Response bodies are not in that schema. Where the JSON shape is known, it is listed below with an example. Shared errors are on Limits and errors.

Send Authorization: Bearer <workspace API key>. Base URL: https://app.foxcue.com/api/v1.

Collections

GET /collections

List collections in this workspace

Scope: sources:read.

Parameters

NameInRequiredTypeRules
project_idquerynostring
script_idquerynostring
collection_idquerynostring
scope_typequerynostring
scope_idquerynostring
kindquerynostring
limitquerynostring
offsetquerynostring

Example request

curl -X GET "https://app.foxcue.com/api/v1/collections?project_id=example&script_id=example&collection_id=example&scope_type=example&scope_id=example&kind=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

The body is a JSON array of these fields. limit is 1–100 (default 50) and offset starts at 0. The array has no total.

FieldType
idstring
org_idstring
project_idstring
namestring
slugstring
descriptionstring
modestring
created_atstring
updated_atstring
anglestring
source_typestring
source_urlstring
source_briefstring
[
  {
    "id": "id",
    "org_id": "workspace_id",
    "project_id": "id",
    "name": "example",
    "slug": "example",
    "description": "example",
    "mode": "example",
    "created_at": "2026-10-28T00:00:00.000Z",
    "updated_at": "2026-10-28T00:00:00.000Z",
    "angle": "example",
    "source_type": "example",
    "source_url": "https://example.com",
    "source_brief": "example"
  }
]
StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /collections

Create collections

Scope: sources:write.

Example request

{
  "project_id": "example",
  "name": "example",
  "mode": "promo",
  "source_type": "reddit"
}

Required fields: project_id, name.

curl -X POST "https://app.foxcue.com/api/v1/collections" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

The body is a JSON object with these fields.

FieldType
idstring
org_idstring
project_idstring
namestring
slugstring
descriptionstring
modestring
created_atstring
updated_atstring
anglestring
source_typestring
source_urlstring
source_briefstring
{
  "id": "id",
  "org_id": "workspace_id",
  "project_id": "id",
  "name": "example",
  "slug": "example",
  "description": "example",
  "mode": "example",
  "created_at": "2026-10-28T00:00:00.000Z",
  "updated_at": "2026-10-28T00:00:00.000Z",
  "angle": "example",
  "source_type": "example",
  "source_url": "https://example.com",
  "source_brief": "example"
}
StatusMeaning
201Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /collections/{id}

Get collections

Scope: sources:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/collections/example" \
  -H "Authorization: Bearer <workspace API key>"

Response

The body is a JSON object with these fields.

FieldType
idstring
org_idstring
project_idstring
namestring
slugstring
descriptionstring
modestring
created_atstring
updated_atstring
anglestring
source_typestring
source_urlstring
source_briefstring
{
  "id": "id",
  "org_id": "workspace_id",
  "project_id": "id",
  "name": "example",
  "slug": "example",
  "description": "example",
  "mode": "example",
  "created_at": "2026-10-28T00:00:00.000Z",
  "updated_at": "2026-10-28T00:00:00.000Z",
  "angle": "example",
  "source_type": "example",
  "source_url": "https://example.com",
  "source_brief": "example"
}
StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

PATCH /collections/{id}

Update collections

Scope: sources:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "name": "example",
  "mode": "promo",
  "source_type": "reddit"
}
curl -X PATCH "https://app.foxcue.com/api/v1/collections/example" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

The body is a JSON object with these fields.

FieldType
idstring
org_idstring
project_idstring
namestring
slugstring
descriptionstring
modestring
created_atstring
updated_atstring
anglestring
source_typestring
source_urlstring
source_briefstring
{
  "id": "id",
  "org_id": "workspace_id",
  "project_id": "id",
  "name": "example",
  "slug": "example",
  "description": "example",
  "mode": "example",
  "created_at": "2026-10-28T00:00:00.000Z",
  "updated_at": "2026-10-28T00:00:00.000Z",
  "angle": "example",
  "source_type": "example",
  "source_url": "https://example.com",
  "source_brief": "example"
}
StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

DELETE /collections/{id}

Delete collections

Scope: sources:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X DELETE "https://app.foxcue.com/api/v1/collections/example" \
  -H "Authorization: Bearer <workspace API key>"

Response

Success returns no JSON body.

StatusMeaning
204Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

Legacy knowledge documents

GET /knowledge

List knowledge in this workspace

Scope: sources:read.

Parameters

NameInRequiredTypeRules
project_idquerynostring
script_idquerynostring
collection_idquerynostring
scope_typequerynostring
scope_idquerynostring
kindquerynostring
limitquerynostring
offsetquerynostring

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge?project_id=example&script_id=example&collection_id=example&scope_type=example&scope_id=example&kind=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

The body is a JSON array of these fields. limit is 1–100 (default 50) and offset starts at 0. The array has no total.

FieldType
idstring
org_idstring
scope_typestring
scope_idstring
kindstring
titlestring
contentstring
content_formatstring
source_urlstring
fetched_atstring
created_atstring
categorystring
[
  {
    "id": "id",
    "org_id": "workspace_id",
    "scope_type": "example",
    "scope_id": "id",
    "kind": "example",
    "title": "example",
    "content": "example",
    "content_format": "example",
    "source_url": "https://example.com",
    "fetched_at": "2026-10-28T00:00:00.000Z",
    "created_at": "2026-10-28T00:00:00.000Z",
    "category": "example"
  }
]
StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge

Create knowledge

Scope: sources:write.

Example request

{
  "scope_type": "project",
  "scope_id": "example",
  "kind": "md",
  "category": "reference",
  "title": "example",
  "content": "example",
  "visibility": "internal"
}

Required fields: scope_type, scope_id, kind, title.

curl -X POST "https://app.foxcue.com/api/v1/knowledge" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
201Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge/{id}

Get knowledge

Scope: sources:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge/example" \
  -H "Authorization: Bearer <workspace API key>"

Response

The body is a JSON object with these fields.

FieldType
idstring
org_idstring
scope_typestring
scope_idstring
kindstring
titlestring
contentstring
content_formatstring
source_urlstring
fetched_atstring
created_atstring
categorystring
{
  "id": "id",
  "org_id": "workspace_id",
  "scope_type": "example",
  "scope_id": "id",
  "kind": "example",
  "title": "example",
  "content": "example",
  "content_format": "example",
  "source_url": "https://example.com",
  "fetched_at": "2026-10-28T00:00:00.000Z",
  "created_at": "2026-10-28T00:00:00.000Z",
  "category": "example"
}
StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

PATCH /knowledge/{id}

Update knowledge

Scope: sources:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "title": "example",
  "category": "reference",
  "content": "example",
  "visibility": "internal"
}
curl -X PATCH "https://app.foxcue.com/api/v1/knowledge/example" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

DELETE /knowledge/{id}

Delete knowledge

Scope: sources:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X DELETE "https://app.foxcue.com/api/v1/knowledge/example" \
  -H "Authorization: Bearer <workspace API key>"

Response

Success returns no JSON body.

StatusMeaning
204Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

Sources, transcripts and business context

GET /knowledge-hub/source-library

Read a canonical source library page with availability, revision and separate indexing status

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
project_idquerynostringminLength 1; maxLength 100
after_document_idquerynostringminLength 1; maxLength 100
limitquerynointegerminimum 1; maximum 500
compactqueryno
qquerynostringmaxLength 500
collectionquerynostringminLength 1; maxLength 200

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/source-library?project_id=example&after_document_id=example&limit=example&compact=example&q=example&collection=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

The body is a JSON object with these fields.

FieldType
itemsarray
next_cursornull
{
  "items": [],
  "next_cursor": null
}
StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/source-manifest

Read full-scope fingerprint and paginated current source manifest; silo selection additionally requires strategy:read

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
project_idqueryyesstringminLength 1; maxLength 100
silo_idquerynostringminLength 1; maxLength 100
purposequeryyesstringone of internal_planning, public_writing
after_document_idquerynostringminLength 1; maxLength 100
limitquerynointegerminimum 1; maximum 500

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/source-manifest?project_id=example&silo_id=example&purpose=example&after_document_id=example&limit=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

The body is a JSON object with these fields.

FieldType
sourcesJSON
next_cursorJSON
fingerprintJSON
totalnumber
{
  "sources": "example",
  "next_cursor": "example",
  "fingerprint": "example",
  "total": 0
}
StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/transcripts

Import an idempotent original internal call; optional silo link requires strategy:write

Scope: knowledge:write.

Example request

{
  "project_id": "example",
  "title": "example",
  "content": "example",
  "idempotency_key": "example-",
  "silo_id": "example",
  "silo_expected_revision": 1,
  "call_date": "example"
}

Required fields: project_id, title, content, idempotency_key.

curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/transcripts" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
201Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/transcripts/{id}

Read original call, genuine turn locators and current index status

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/transcripts/example" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/sources/{id}/index

Index a current approved public learning or original call through the existing bounded owner; additionally requires generation:write

Scope: knowledge:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "expected_revision": 1,
  "idempotency_key": "example-",
  "max_chunks": 1,
  "max_embedding_calls": 1,
  "after_chunk_id": "example"
}

Required fields: expected_revision, idempotency_key.

curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/sources/example/index" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

The body is a JSON object with these fields.

FieldType
projectIdJSON
revisionIdJSON
grantJSON
claimedJSON
{
  "projectId": "example",
  "revisionId": "example",
  "grant": "example",
  "claimed": "example"
}
StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/transcripts/{id}/index

Explicitly index a bounded current transcript through the existing embedding owner; requires generation:write

Scope: knowledge:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "expected_revision": 1,
  "idempotency_key": "example-",
  "max_chunks": 1,
  "max_embedding_calls": 1,
  "after_chunk_id": "example"
}

Required fields: expected_revision, idempotency_key.

curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/transcripts/example/index" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/transcripts/{id}/public-learnings

Approve a separate de-identified learning with exact current raw evidence; customer calls cannot prove product capability

Scope: knowledge:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "expected_revision": 1,
  "title": "example",
  "content": "example-va",
  "classification": "customer_operation",
  "deidentified": true,
  "review_note": "example-va",
  "evidence": [
    {
      "chunk_id": "example",
      "start_offset": 0,
      "end_offset": 1,
      "quote": "example"
    }
  ],
  "silo_id": "example",
  "silo_expected_revision": 1
}

Required fields: expected_revision, title, content, classification, deidentified, review_note, evidence.

curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/transcripts/example/public-learnings" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
201Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/specific-evidence

Retrieve authorized exact and optionally semantic evidence with genuine locators, neighbors, coverage and honest index warnings; semantic requires generation:write

Scope: knowledge:read.

Example request

{
  "project_id": "example",
  "query": "example",
  "purpose": "internal_qa",
  "silo_id": "example",
  "source_ids": [
    "example"
  ],
  "limit": 1,
  "semantic": true,
  "max_embedding_calls": 1
}

Required fields: project_id, query.

curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/specific-evidence" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/business-map

Read the current source-backed product graph, coverage and applicability basis

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
project_idqueryyesstringminLength 1

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/business-map?project_id=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

The body is a JSON object with these fields.

FieldType
mapJSON
latest_runJSON
{
  "map": "example",
  "latest_run": "example"
}
StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/business-model

Read brand-authored positioning and declared model branches separately from website evidence

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
project_idqueryyesstringminLength 1

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/business-model?project_id=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

The body is a JSON object with these fields.

FieldType
project_idJSON
revisionnumber
positioningJSON
audienceJSON
nodesarray
edgesarray
entity_overridesJSON
source_link_overridesarray
updated_atnull
{
  "project_id": "id",
  "revision": 0,
  "positioning": "example",
  "audience": "example",
  "nodes": [],
  "edges": [],
  "entity_overrides": "example",
  "source_link_overrides": [],
  "updated_at": null
}
StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

PUT /knowledge-hub/business-model

Save brand-authored contextual model with optimistic revision; additionally requires brands:write

Scope: knowledge:write.

Example request

{
  "project_id": "example",
  "expected_revision": 0,
  "positioning": "example",
  "audience": "example",
  "nodes": [
    {
      "id": "example",
      "kind": "product",
      "name": "example",
      "description": "example",
      "area": "front_office",
      "parent_id": "example",
      "problem": "example",
      "solution": "example",
      "workflows": [
        "example"
      ],
      "benefits": [
        "example"
      ]
    }
  ],
  "edges": [
    {
      "from_id": "example",
      "to_id": "example",
      "relation": "contains",
      "rationale": "example"
    }
  ],
  "entity_overrides": {},
  "source_link_overrides": [
    {
      "entity_id": "example",
      "document_id": "example",
      "action": "include"
    }
  ]
}

Required fields: project_id, expected_revision, positioning, audience, nodes, edges.

curl -X PUT "https://app.foxcue.com/api/v1/knowledge-hub/business-model" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/business-map/build

Extract a source-backed product map with bounded, cached model calls; additionally requires generation:write

Scope: knowledge:write.

Example request

{
  "project_id": "example",
  "idempotency_key": "example-"
}

Required fields: project_id, idempotency_key.

curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/business-map/build" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
202Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/business-map/runs/{id}

Read product-map job progress

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/business-map/runs/example" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/business-map/runs/{id}/cancel

Stop product-map publication

Scope: knowledge:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{}
curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/business-map/runs/example/cancel" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/catalogue/status

Read cheap mapping progress, source fingerprint and model revision without loading the full graph

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
project_idqueryyesstringminLength 1

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/catalogue/status?project_id=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/catalogue

Read the current editable source catalogue and mapping coverage

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
project_idqueryyesstringminLength 1

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/catalogue?project_id=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/catalogue/build

Queue bounded source-content extraction; additionally requires generation:write

Scope: knowledge:write.

Example request

{
  "project_id": "example",
  "idempotency_key": "example-"
}

Required fields: project_id, idempotency_key.

curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/catalogue/build" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
202Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/catalogue/runs/{id}

Read durable source-mapping progress

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/catalogue/runs/example" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/catalogue/runs/{id}/cancel

Cancel source mapping and fence publication

Scope: knowledge:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{}
curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/catalogue/runs/example/cancel" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/catalogue/entities/{id}

Read current edited entity facts, citations and selected relationships on demand

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
idpathyesstring
project_idqueryyesstringminLength 1; maxLength 200
audience_idquerynostringminLength 1; maxLength 200

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/catalogue/entities/example?project_id=example&audience_id=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

PATCH /knowledge-hub/catalogue/entities/{id}

Edit or clear a generated entity override with model revision CAS; additionally requires brands:write

Scope: knowledge:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "project_id": "example",
  "expected_revision": 0,
  "name": "example",
  "description": "example",
  "aliases": [
    "example"
  ]
}

Required fields: project_id, expected_revision.

curl -X PATCH "https://app.foxcue.com/api/v1/knowledge-hub/catalogue/entities/example" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/catalogue/entities/{id}/sources

List current related source pages by content type with mapping basis and pagination; include_excluded reveals restorable current-source associations

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
idpathyesstring
project_idqueryyesstringminLength 1; maxLength 200
typequerynostringone of all, website, documentation, blog, case_study, other
audience_idquerynostringminLength 1; maxLength 200
include_excludedquerynoboolean
limitquerynointegerminimum 1; maximum 200
cursorquerynostringmaxLength 200

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/catalogue/entities/example/sources?project_id=example&type=example&audience_id=example&include_excluded=example&limit=example&cursor=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

Include, exclude or reset a source association override with model revision CAS; additionally requires brands:write

Scope: knowledge:write.

Example request

{
  "entity_id": "example",
  "document_id": "example",
  "action": "include",
  "project_id": "example",
  "expected_revision": 0
}

Required fields: entity_id, document_id, action, project_id, expected_revision.

curl -X PUT "https://app.foxcue.com/api/v1/knowledge-hub/catalogue/source-links" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/catalogue/collections

Read origin collections and custom folders without copying sources

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
project_idqueryyesstringminLength 1

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/catalogue/collections?project_id=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/catalogue/collections

Create a custom source folder in this brand

Scope: knowledge:write.

Example request

{
  "project_id": "example",
  "name": "example",
  "parent_id": "example"
}

Required fields: project_id, name.

curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/catalogue/collections" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
201Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

PUT /knowledge-hub/catalogue/collections/{id}/members

Replace same-brand folder membership using the current folder revision

Scope: knowledge:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "expected_revision": 1,
  "document_ids": [
    "example"
  ]
}

Required fields: expected_revision, document_ids.

curl -X PUT "https://app.foxcue.com/api/v1/knowledge-hub/catalogue/collections/example/members" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/business-research/config

Read managed industry-research availability

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
project_idquerynostringminLength 1

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/business-research/config?project_id=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/business-research

List industry research separately from verified product support

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
project_idqueryyesstringminLength 1

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/business-research?project_id=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/business-research

Research a current public capability/industry cell; additionally requires generation:write

Scope: knowledge:write.

Example request

{
  "project_id": "example",
  "capability_id": "example",
  "industry_id": "example",
  "idempotency_key": "example-"
}

Required fields: project_id, capability_id, industry_id, idempotency_key.

curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/business-research" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
202Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/business-research/runs/{id}

Read industry research job and cited result

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/business-research/runs/example" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/business-research/runs/{id}/cancel

Stop industry research publication

Scope: knowledge:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{}
curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/business-research/runs/example/cancel" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/sources

List revisioned sources; optional project_id

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
project_idquerynostringminLength 1

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/sources?project_id=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/sources

Import source text or an individual public URL; use connections for complete website/docs intake

Scope: knowledge:write.

Example request

{
  "project_id": "example",
  "title": "example",
  "content": "example",
  "source_type": "note",
  "source_url": "example",
  "visibility": "internal"
}

Required fields: project_id, title.

curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/sources" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
201Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/source-pages

Import one canonical source page without AI generation; optional silo attachment also requires strategy:write and silo revision

Scope: knowledge:write.

Example request

{
  "project_id": "example",
  "url": "example",
  "title": "example",
  "markdown": "example",
  "fetched_at": "example",
  "extraction_version": "example",
  "origin": "manual_url",
  "visibility": "internal",
  "requested_url": "example",
  "connection_id": "example",
  "etag": "example"
}

Required fields: project_id, url, title, markdown, fetched_at, extraction_version, origin, visibility.

curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/source-pages" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

The body is a JSON object with these fields.

FieldType
page_idJSON
document_idJSON
revisionJSON
outcomestring
review_reasonJSON
{
  "page_id": "id",
  "document_id": "id",
  "revision": "example",
  "outcome": "example",
  "review_reason": "example"
}
StatusMeaning
201Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/sources/{id}

Read source and revision history

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/sources/example" \
  -H "Authorization: Bearer <workspace API key>"

Response

The body is a JSON object with these fields.

FieldType
sourceJSON
revisionsJSON
{
  "source": "example",
  "revisions": "example"
}
StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

PATCH /knowledge-hub/sources/{id}

Update source with revision precondition

Scope: knowledge:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "expected_revision": 0,
  "project_id": "example",
  "title": "example",
  "content": "example",
  "source_type": "note",
  "visibility": "internal"
}

Required fields: expected_revision.

curl -X PATCH "https://app.foxcue.com/api/v1/knowledge-hub/sources/example" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

DELETE /knowledge-hub/sources/{id}

Move a source to Trash while preserving immutable revisions

Scope: knowledge:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "expected_revision": 1
}

Required fields: expected_revision.

curl -X DELETE "https://app.foxcue.com/api/v1/knowledge-hub/sources/example" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
204Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/sources/{id}/revisions/{revision}

Read an immutable source revision

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
idpathyesstring
revisionpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/sources/example/revisions/example" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/search

Search current source passages using PostgreSQL full-text search; legacy semantic flags are accepted without model or embedding calls

Scope: knowledge:read.

Example request

{
  "project_id": "example",
  "query": "example",
  "silo_id": "example",
  "limit": 1,
  "public_only": true,
  "source_ids": [
    "example"
  ],
  "semantic": true,
  "max_embedding_calls": 1
}

Required fields: project_id, query.

curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/search" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/context

List business context and review states

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
project_idquerynostringminLength 1

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/context?project_id=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/context

Propose source-backed business context

Scope: knowledge:write.

Example request

{
  "project_id": "example",
  "title": "example",
  "kind": "company",
  "content": "example",
  "source_ids": [
    "example"
  ]
}

Required fields: project_id, title, kind, content.

curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/context" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
201Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

PATCH /knowledge-hub/context/{id}

Edit context and return it to review

Scope: knowledge:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "title": "example",
  "kind": "company",
  "content": "example",
  "source_ids": [
    "example"
  ],
  "expected_revision": 0
}

Required fields: expected_revision.

curl -X PATCH "https://app.foxcue.com/api/v1/knowledge-hub/context/example" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/context/{id}/approve

Approve human-reviewed context with current revision

Scope: knowledge:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "expected_revision": 1
}

Required fields: expected_revision.

curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/context/example/approve" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/people

List content people and expertise

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
project_idquerynostringminLength 1

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/people?project_id=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/people

Add a content person

Scope: knowledge:write.

Example request

{
  "project_id": "example",
  "name": "example",
  "role": "example",
  "bio": "example",
  "expertise": "example",
  "speaking_preferences": "example"
}

Required fields: project_id, name.

curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/people" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
201Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

PATCH /knowledge-hub/people/{id}

Update a content person with revision check

Scope: knowledge:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "name": "example",
  "role": "example",
  "bio": "example",
  "expertise": "example",
  "speaking_preferences": "example",
  "expected_revision": 0
}

Required fields: expected_revision.

curl -X PATCH "https://app.foxcue.com/api/v1/knowledge-hub/people/example" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/understand

Compatibility source mapping without model or embedding calls; website/docs intake uses connections and silo creation uses strategy routes

Scope: knowledge:write.

Example request

{
  "project_id": "example",
  "website_url": "example",
  "docs_urls": [
    "example"
  ],
  "silo_names": [
    "example"
  ],
  "idempotency_key": "example-"
}

Required fields: project_id, idempotency_key.

curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/understand" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
202Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/understand/{id}

Read durable understanding progress and safe errors

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/understand/example" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/understand/{id}/cancel

Cancel catalogue mapping; historical analysis runs remain read only

Scope: knowledge:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{}
curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/understand/example/cancel" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/business-context

Read automatically generated business context, citations, freshness and latest run

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
project_idqueryyesstringminLength 1

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/business-context?project_id=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

The body is a JSON object with these fields.

FieldType
contextJSON
latest_runJSON
{
  "context": "example",
  "latest_run": "example"
}
StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/context-preview

Assemble relevant public-safe business context for a brand/silo/question

Scope: knowledge:read.

Example request

{
  "project_id": "example",
  "script_id": "example",
  "query": "example",
  "silo_id": "example",
  "source_ids": [
    "example"
  ]
}

Required fields: project_id, query.

curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/context-preview" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/crawler

Read Jina Reader configuration availability

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
project_idquerynostringminLength 1

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/crawler?project_id=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/connections

List refreshable website, blog and documentation connections

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
project_idquerynostringminLength 1

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/connections?project_id=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/connections

Connect a website/sitemap and queue resumable crawling and cheap catalogue mapping without model or embedding calls; observed brand identity imports additionally require brands:write

Scope: knowledge:write.

Example request

{
  "project_id": "example",
  "url": "example",
  "kind": "website",
  "idempotency_key": "example",
  "name": "example",
  "refresh_interval_hours": 0,
  "seed_urls": [
    "example"
  ]
}

Required fields: project_id, url, kind, idempotency_key.

curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/connections" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
201Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/connections/{id}

Read connection, imported pages and durable refresh history

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/connections/example" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

PATCH /knowledge-hub/connections/{id}

Update scope/cadence or pause/resume with revision guard; remembered initiator permissions are checked

Scope: knowledge:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "expected_revision": 1,
  "refresh_interval_hours": 0,
  "include_paths": [
    "example"
  ],
  "exclude_paths": [
    "example"
  ],
  "status": "active",
  "seed_urls": [
    "example"
  ],
  "allowed_origins": [
    "example"
  ],
  "visibility": "internal",
  "generation_budget": 0
}

Required fields: expected_revision.

curl -X PATCH "https://app.foxcue.com/api/v1/knowledge-hub/connections/example" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/connections/{id}/refresh

Queue an idempotent resumable crawl and cheap source mapping without model or embedding calls

Scope: knowledge:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "idempotency_key": "example",
  "retry_failed": true
}

Required fields: idempotency_key.

curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/connections/example/refresh" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
202Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/connection-runs/{id}

Read refresh progress and safe errors

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/connection-runs/example" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/bootstrap

Create or fill a brand from observed website name, description, colors, fonts and assets without AI or embedding calls; additionally requires brands:write

Scope: knowledge:write.

Example request

{
  "asset_purposes": [
    "logo"
  ],
  "url": "example",
  "project_id": "example",
  "idempotency_key": "example-"
}

Required fields: url, idempotency_key.

curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/bootstrap" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

The body is a JSON object with these fields.

FieldType
project_idJSON
connectionJSON
runJSON
{
  "project_id": "id",
  "connection": "example",
  "run": "example"
}
StatusMeaning
202Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/brand-import

Read website-import provenance, manual override suggestions and owned imported image assets

Scope: brands:read.

Parameters

NameInRequiredTypeRules
project_idqueryyesstringminLength 1

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/brand-import?project_id=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/source-connections

List shared source connections

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
project_idquerynostringminLength 1

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/source-connections?project_id=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/source-connections

Connect website/sitemap/URL list without hidden AI; include/exclude patterns are path prefixes

Scope: knowledge:write.

Example request

{
  "project_id": "example",
  "kind": "website",
  "seed_urls": [
    "example"
  ],
  "allowed_origins": [
    "example"
  ],
  "name": "example",
  "include_patterns": [
    "example"
  ],
  "exclude_patterns": [
    "example"
  ]
}

Required fields: project_id, kind, seed_urls, allowed_origins.

curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/source-connections" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

The body is a JSON object with these fields.

FieldType
idJSON
revisionJSON
connectionJSON
runJSON
{
  "id": "id",
  "revision": "example",
  "connection": "example",
  "run": "example"
}
StatusMeaning
201Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/source-connections/{id}

Read shared connection pages and resumable progress

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/source-connections/example" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

PATCH /knowledge-hub/source-connections/{id}

Update shared source configuration or pause/resume using revision CAS

Scope: knowledge:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "expected_revision": 1,
  "seed_urls": [
    "example"
  ],
  "allowed_origins": [
    "example"
  ],
  "include_patterns": [
    "example"
  ],
  "exclude_patterns": [
    "example"
  ],
  "interval_hours": 1,
  "visibility": "internal",
  "generation_budget": 0,
  "status": "active"
}

Required fields: expected_revision.

curl -X PATCH "https://app.foxcue.com/api/v1/knowledge-hub/source-connections/example" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

DELETE /knowledge-hub/source-connections/{id}

Disconnect and fence refresh while retaining imported source/run history

Scope: knowledge:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "expected_revision": 1
}

Required fields: expected_revision.

curl -X DELETE "https://app.foxcue.com/api/v1/knowledge-hub/source-connections/example" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/source-connections/{id}/sync

Queue a coalesced idempotent source sync

Scope: knowledge:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "idempotency_key": "example",
  "retry_failed": true
}

Required fields: idempotency_key.

curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/source-connections/example/sync" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
202Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/source-sync-runs/{id}

Read inventory completeness, remaining work and safe errors

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/source-sync-runs/example" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/source-connections/{id}/subscriptions

List connection-to-silo subscriptions

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/source-connections/example/subscriptions" \
  -H "Authorization: Bearer <workspace API key>"

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

POST /knowledge-hub/source-connections/{id}/subscriptions

Subscribe/unsubscribe a same-brand silo; additionally requires strategy:write and silo revision

Scope: knowledge:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "silo_id": "example",
  "expected_revision": 1,
  "active": true
}

Required fields: silo_id, expected_revision.

curl -X POST "https://app.foxcue.com/api/v1/knowledge-hub/source-connections/example/subscriptions" \
  -H "Authorization: Bearer <workspace API key>" \
  -H "Content-Type: application/json" \
  -d @body.json

Response

StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/sources/{id}/revisions/{revision}/markdown

Export the saved immutable source revision as Markdown and .md filename

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
idpathyesstring
revisionpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/sources/example/revisions/example/markdown" \
  -H "Authorization: Bearer <workspace API key>"

Response

The body is a JSON object with these fields.

FieldType
filenamestring
content_typestring
contentJSON
{
  "filename": "example",
  "content_type": "example",
  "content": "example"
}
StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

GET /knowledge-hub/sources/{id}/revisions/{revision}/export.md

Download a saved immutable source revision as .md

Scope: knowledge:read.

Parameters

NameInRequiredTypeRules
idpathyesstring
revisionpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/knowledge-hub/sources/example/revisions/example/export.md" \
  -H "Authorization: Bearer <workspace API key>"

Response

The body is a JSON object with these fields.

FieldType
filenamestring
content_typestring
contentJSON
{
  "filename": "example",
  "content_type": "example",
  "content": "example"
}
StatusMeaning
200Success
400Invalid request
401Invalid, expired or revoked key
403Missing scope
404Resource not found in workspace
409Revision or idempotency conflict
429Rate or active-job limit exceeded

On this page

CollectionsGET /collectionsParametersExample requestResponsePOST /collectionsExample requestResponseGET /collections/{id}ParametersExample requestResponsePATCH /collections/{id}ParametersExample requestResponseDELETE /collections/{id}ParametersExample requestResponseLegacy knowledge documentsGET /knowledgeParametersExample requestResponsePOST /knowledgeExample requestResponseGET /knowledge/{id}ParametersExample requestResponsePATCH /knowledge/{id}ParametersExample requestResponseDELETE /knowledge/{id}ParametersExample requestResponseSources, transcripts and business contextGET /knowledge-hub/source-libraryParametersExample requestResponseGET /knowledge-hub/source-manifestParametersExample requestResponsePOST /knowledge-hub/transcriptsExample requestResponseGET /knowledge-hub/transcripts/{id}ParametersExample requestResponsePOST /knowledge-hub/sources/{id}/indexParametersExample requestResponsePOST /knowledge-hub/transcripts/{id}/indexParametersExample requestResponsePOST /knowledge-hub/transcripts/{id}/public-learningsParametersExample requestResponsePOST /knowledge-hub/specific-evidenceExample requestResponseGET /knowledge-hub/business-mapParametersExample requestResponseGET /knowledge-hub/business-modelParametersExample requestResponsePUT /knowledge-hub/business-modelExample requestResponsePOST /knowledge-hub/business-map/buildExample requestResponseGET /knowledge-hub/business-map/runs/{id}ParametersExample requestResponsePOST /knowledge-hub/business-map/runs/{id}/cancelParametersExample requestResponseGET /knowledge-hub/catalogue/statusParametersExample requestResponseGET /knowledge-hub/catalogueParametersExample requestResponsePOST /knowledge-hub/catalogue/buildExample requestResponseGET /knowledge-hub/catalogue/runs/{id}ParametersExample requestResponsePOST /knowledge-hub/catalogue/runs/{id}/cancelParametersExample requestResponseGET /knowledge-hub/catalogue/entities/{id}ParametersExample requestResponsePATCH /knowledge-hub/catalogue/entities/{id}ParametersExample requestResponseGET /knowledge-hub/catalogue/entities/{id}/sourcesParametersExample requestResponsePUT /knowledge-hub/catalogue/source-linksExample requestResponseGET /knowledge-hub/catalogue/collectionsParametersExample requestResponsePOST /knowledge-hub/catalogue/collectionsExample requestResponsePUT /knowledge-hub/catalogue/collections/{id}/membersParametersExample requestResponseGET /knowledge-hub/business-research/configParametersExample requestResponseGET /knowledge-hub/business-researchParametersExample requestResponsePOST /knowledge-hub/business-researchExample requestResponseGET /knowledge-hub/business-research/runs/{id}ParametersExample requestResponsePOST /knowledge-hub/business-research/runs/{id}/cancelParametersExample requestResponseGET /knowledge-hub/sourcesParametersExample requestResponsePOST /knowledge-hub/sourcesExample requestResponsePOST /knowledge-hub/source-pagesExample requestResponseGET /knowledge-hub/sources/{id}ParametersExample requestResponsePATCH /knowledge-hub/sources/{id}ParametersExample requestResponseDELETE /knowledge-hub/sources/{id}ParametersExample requestResponseGET /knowledge-hub/sources/{id}/revisions/{revision}ParametersExample requestResponsePOST /knowledge-hub/searchExample requestResponseGET /knowledge-hub/contextParametersExample requestResponsePOST /knowledge-hub/contextExample requestResponsePATCH /knowledge-hub/context/{id}ParametersExample requestResponsePOST /knowledge-hub/context/{id}/approveParametersExample requestResponseGET /knowledge-hub/peopleParametersExample requestResponsePOST /knowledge-hub/peopleExample requestResponsePATCH /knowledge-hub/people/{id}ParametersExample requestResponsePOST /knowledge-hub/understandExample requestResponseGET /knowledge-hub/understand/{id}ParametersExample requestResponsePOST /knowledge-hub/understand/{id}/cancelParametersExample requestResponseGET /knowledge-hub/business-contextParametersExample requestResponsePOST /knowledge-hub/context-previewExample requestResponseGET /knowledge-hub/crawlerParametersExample requestResponseGET /knowledge-hub/connectionsParametersExample requestResponsePOST /knowledge-hub/connectionsExample requestResponseGET /knowledge-hub/connections/{id}ParametersExample requestResponsePATCH /knowledge-hub/connections/{id}ParametersExample requestResponsePOST /knowledge-hub/connections/{id}/refreshParametersExample requestResponseGET /knowledge-hub/connection-runs/{id}ParametersExample requestResponsePOST /knowledge-hub/bootstrapExample requestResponseGET /knowledge-hub/brand-importParametersExample requestResponseGET /knowledge-hub/source-connectionsParametersExample requestResponsePOST /knowledge-hub/source-connectionsExample requestResponseGET /knowledge-hub/source-connections/{id}ParametersExample requestResponsePATCH /knowledge-hub/source-connections/{id}ParametersExample requestResponseDELETE /knowledge-hub/source-connections/{id}ParametersExample requestResponsePOST /knowledge-hub/source-connections/{id}/syncParametersExample requestResponseGET /knowledge-hub/source-sync-runs/{id}ParametersExample requestResponseGET /knowledge-hub/source-connections/{id}/subscriptionsParametersExample requestResponsePOST /knowledge-hub/source-connections/{id}/subscriptionsParametersExample requestResponseGET /knowledge-hub/sources/{id}/revisions/{revision}/markdownParametersExample requestResponseGET /knowledge-hub/sources/{id}/revisions/{revision}/export.mdParametersExample requestResponseRelated articles