FoxCue API: Strategy, keywords and citation checks

Request examples, parameters, scopes and response statuses for FoxCue API strategy, keywords and citation checks.

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.

Strategy, keywords and citation checks

GET /strategy/silos

List strategy silos; optional project_id

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
project_idquerynostringminLength 1

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/silos?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 /strategy/silos

Create an audience/workflow strategy silo

Scope: strategy:write.

Example request

{
  "project_id": "example",
  "name": "example",
  "objective": "example",
  "audience": "example",
  "geography": "example",
  "language": "example"
}

Required fields: project_id, name, objective.

curl -X POST "https://app.foxcue.com/api/v1/strategy/silos" \
  -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 /strategy/silos/{id}

Read silo and source IDs; source metadata additionally requires knowledge:read, source bodies use Knowledge GET

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/silos/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 /strategy/silos/{id}

Update silo with revision check

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "name": "example",
  "objective": "example",
  "audience": "example",
  "geography": "example",
  "language": "example",
  "expected_revision": 0,
  "status": "active"
}

Required fields: expected_revision.

curl -X PATCH "https://app.foxcue.com/api/v1/strategy/silos/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

PUT /strategy/silos/{id}/sources

Replace only manually owned silo sources with revision CAS; preserve connection subscriptions

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "source_ids": [
    "example"
  ],
  "expected_revision": 0
}

Required fields: source_ids, expected_revision.

curl -X PUT "https://app.foxcue.com/api/v1/strategy/silos/example/sources" \
  -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 /strategy/silos/{id}/coverage

Read factual audience/workflow topic coverage (not demand scores)

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/silos/example/coverage" \
  -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 /strategy/topics

List topics in required silo_id

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
silo_idqueryyesstringminLength 1

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/topics?silo_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 /strategy/topics

Create a silo topic

Scope: strategy:write.

Example request

{
  "silo_id": "example",
  "title": "example",
  "question": "example",
  "industry_id": "example",
  "workflow_id": "example",
  "audience_role_id": "example"
}

Required fields: silo_id, title, question.

curl -X POST "https://app.foxcue.com/api/v1/strategy/topics" \
  -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 /strategy/topics/{id}

Read topic, targets, evidence and briefs

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

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

Response

The body is a JSON object with these fields.

FieldType
topicJSON
targetsJSON
evidenceJSON
briefsJSON
{
  "topic": "example",
  "targets": "example",
  "evidence": "example",
  "briefs": "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 /strategy/topics/{id}

Update topic with revision check

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "expected_revision": 0,
  "industry_id": "example",
  "workflow_id": "example",
  "audience_role_id": "example"
}

Required fields: expected_revision.

curl -X PATCH "https://app.foxcue.com/api/v1/strategy/topics/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 /strategy/topics/{id}/targets

Add a manually supplied or suggested query target

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "text": "example",
  "platform": "google",
  "locale": "example",
  "origin": "manual"
}

Required fields: text.

curl -X POST "https://app.foxcue.com/api/v1/strategy/topics/example/targets" \
  -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 /strategy/topics/{id}/evidence

Add evidence with metric/unit/method provenance

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "title": "example",
  "kind": "search",
  "notes": "example",
  "url": "example"
}

Required fields: title.

curl -X POST "https://app.foxcue.com/api/v1/strategy/topics/example/evidence" \
  -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 /strategy/topics/{id}/briefs

Create a revisioned content brief

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "title": "example",
  "primary_question": "example",
  "answer_requirements": [
    {
      "approval_id": "example",
      "target_id": "example",
      "topic_id": "example",
      "source_id": "example",
      "source_revision": 1,
      "question": "example",
      "entities": [
        "example"
      ],
      "required_answers": [
        "example"
      ]
    }
  ],
  "article_lineage": {
    "project_id": "example",
    "source": {
      "id": "example",
      "title": "example",
      "revision": 0,
      "revision_id": "example",
      "page_id": "example"
    },
    "targets": [
      {
        "id": "example",
        "text": "example",
        "platform": "example",
        "locale": "example",
        "topic_id": "example"
      }
    ],
    "topic_ids": [
      "example"
    ],
    "target_hash": "example"
  },
  "planning_silo_id": "example"
}

Required fields: title, primary_question.

curl -X POST "https://app.foxcue.com/api/v1/strategy/topics/example/briefs" \
  -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 /strategy/briefs/{id}

Read content brief and review state

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/briefs/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 /strategy/briefs/{id}

Revise a content brief

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "expected_revision": 0,
  "answer_requirements": [
    {
      "approval_id": "example",
      "target_id": "example",
      "topic_id": "example",
      "source_id": "example",
      "source_revision": 1,
      "question": "example",
      "entities": [
        "example"
      ],
      "required_answers": [
        "example"
      ]
    }
  ],
  "article_lineage": {
    "project_id": "example",
    "source": {
      "id": "example",
      "title": "example",
      "revision": 0,
      "revision_id": "example",
      "page_id": "example"
    },
    "targets": [
      {
        "id": "example",
        "text": "example",
        "platform": "example",
        "locale": "example",
        "topic_id": "example"
      }
    ],
    "topic_ids": [
      "example"
    ],
    "target_hash": "example"
  },
  "planning_silo_id": "example"
}

Required fields: expected_revision.

curl -X PATCH "https://app.foxcue.com/api/v1/strategy/briefs/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 /strategy/briefs/{id}/context

Preview selected generation context and its hash

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/briefs/example/context" \
  -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 /strategy/briefs/{id}/content

Create one draft from a reviewed brief/context hash; body idempotency_key required

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "expected_revision": 0,
  "context_hash": "example-value",
  "idempotency_key": "example-"
}

Required fields: expected_revision, context_hash, idempotency_key.

curl -X POST "https://app.foxcue.com/api/v1/strategy/briefs/example/content" \
  -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
script_idJSON
script_urlstring
context_snapshot_idJSON
{
  "script_id": "id",
  "script_url": "https://example.com",
  "context_snapshot_id": "id"
}
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 /strategy/dimensions

List shared brand dimensions and workflow parents

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
project_idqueryyesstringminLength 1; maxLength 100

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/dimensions?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 /strategy/dimensions

Create or reuse a shared industry/workflow/audience role/journey stage

Scope: strategy:write.

Example request

{
  "project_id": "example",
  "kind": "industry",
  "name": "example"
}

Required fields: project_id, kind, name.

curl -X POST "https://app.foxcue.com/api/v1/strategy/dimensions" \
  -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 /strategy/totals

Count distinct canonical brand intents and existing script deliverables

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
project_idqueryyesstringminLength 1; maxLength 100

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/totals?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

PUT /strategy/silos/{id}/scope

Replace typed scope with explicit workflow descendant inclusion and revision guard

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "industry_ids": [
    "example"
  ],
  "workflow_ids": [
    "example"
  ],
  "audience_role_ids": [
    "example"
  ],
  "include_workflow_descendants": true,
  "expected_revision": 0
}

Required fields: industry_ids, workflow_ids, audience_role_ids, include_workflow_descendants, expected_revision.

curl -X PUT "https://app.foxcue.com/api/v1/strategy/silos/example/scope" \
  -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

PUT /strategy/topics/{id}/silos/{siloId}

Link an existing canonical topic to another same-brand silo

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring
siloIdpathyesstring

Example request

{
  "expected_revision": 0
}

Required fields: expected_revision.

curl -X PUT "https://app.foxcue.com/api/v1/strategy/topics/example/silos/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
topicJSON
targetsJSON
evidenceJSON
briefsJSON
{
  "topic": "example",
  "targets": "example",
  "evidence": "example",
  "briefs": "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 /strategy/topics/{id}/silos/{siloId}

Archive a topic membership; retain authored brief and legacy lineage

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring
siloIdpathyesstring

Example request

{
  "expected_revision": 0
}

Required fields: expected_revision.

curl -X DELETE "https://app.foxcue.com/api/v1/strategy/topics/example/silos/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
topicJSON
targetsJSON
evidenceJSON
briefsJSON
{
  "topic": "example",
  "targets": "example",
  "evidence": "example",
  "briefs": "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

PUT /strategy/workflows/{id}/parent

Set or clear one same-brand workflow parent with cycle and revision checks

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "parent_id": "example",
  "expected_revision": 0
}

Required fields: parent_id, expected_revision.

curl -X PUT "https://app.foxcue.com/api/v1/strategy/workflows/example/parent" \
  -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 /strategy/silos/{id}/source-links

Add source links with origin and revision CAS

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "document_ids": [
    "example"
  ],
  "origin": "manual",
  "connection_id": "example",
  "expected_revision": 0
}

Required fields: document_ids, origin, expected_revision.

curl -X POST "https://app.foxcue.com/api/v1/strategy/silos/example/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

POST /strategy/silos/{id}/source-exclusions

Exclude one connection source so future refresh does not restore it

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "document_id": "example",
  "connection_id": "example",
  "expected_revision": 0
}

Required fields: document_id, connection_id, expected_revision.

curl -X POST "https://app.foxcue.com/api/v1/strategy/silos/example/source-exclusions" \
  -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 /strategy/silos/{id}/source-unlink

Unlink one canonical source from this silo with revision CAS; preserve documents, other silos and automatic-owner exclusions

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "document_id": "example",
  "expected_revision": 0
}

Required fields: document_id, expected_revision.

curl -X POST "https://app.foxcue.com/api/v1/strategy/silos/example/source-unlink" \
  -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 /strategy/growth/workspace

Read scoped page discovery, approved targets and sampled citation evidence; knowledge/performance access is revalidated

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
project_idqueryyesstringminLength 1; maxLength 100
silo_idqueryyesstringminLength 1; maxLength 100
source_idquerynostringminLength 1; maxLength 100

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/growth/workspace?project_id=example&silo_id=example&source_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 /strategy/growth/history

Read captured answers and exact source/video citation history for approved targets

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
project_idqueryyesstringminLength 1; maxLength 100
silo_idqueryyesstringminLength 1; maxLength 100
source_idquerynostringminLength 1; maxLength 100

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/growth/history?project_id=example&silo_id=example&source_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 /strategy/growth/discover

Discover proposed keywords and buyer questions from current public sources; additionally requires knowledge:read and generation:write

Scope: strategy:write.

Example request

{
  "project_id": "example",
  "silo_id": "example",
  "source_id": "example",
  "idempotency_key": "example-",
  "expected_source_revision": 1
}

Required fields: project_id, silo_id, idempotency_key.

curl -X POST "https://app.foxcue.com/api/v1/strategy/growth/discover" \
  -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 /strategy/growth/approve

Explicitly approve edited discovery candidates or dismiss them with source revision and idempotency preconditions

Scope: strategy:write.

Example request

{
  "project_id": "example",
  "silo_id": "example",
  "source_id": "example",
  "discovery_id": "example",
  "idempotency_key": "example-",
  "expected_source_revision": 1,
  "locale": "example",
  "candidates": [
    {
      "id": "example",
      "action": "approve",
      "text": "example",
      "question": "example",
      "entities": [
        "example"
      ],
      "required_answers": [
        "example"
      ]
    }
  ]
}

Required fields: project_id, silo_id, discovery_id, idempotency_key, candidates.

curl -X POST "https://app.foxcue.com/api/v1/strategy/growth/approve" \
  -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 /strategy/growth/checks

Run bounded paid AI citation checks on approved targets; preserve the same idempotency key after uncertain acknowledgment

Scope: performance:write.

Example request

{
  "project_id": "example",
  "silo_id": "example",
  "source_id": "example",
  "idempotency_key": "example-",
  "target_ids": [
    "example"
  ],
  "engines": [
    "chatgpt"
  ],
  "max_cost_usd": 0.01
}

Required fields: project_id, silo_id, idempotency_key, target_ids, engines.

curl -X POST "https://app.foxcue.com/api/v1/strategy/growth/checks" \
  -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 /strategy/growth/schedules

Schedule approved-target checks under an explicit cadence and finite spend budget

Scope: performance:write.

Example request

{
  "project_id": "example",
  "silo_id": "example",
  "source_id": "example",
  "idempotency_key": "example-",
  "target_ids": [
    "example"
  ],
  "engines": [
    "chatgpt"
  ],
  "cadence_hours": 24,
  "max_cost_usd": 0.01,
  "budget_usd": 0.01
}

Required fields: project_id, silo_id, idempotency_key, target_ids, engines, cadence_hours, max_cost_usd, budget_usd.

curl -X POST "https://app.foxcue.com/api/v1/strategy/growth/schedules" \
  -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 /strategy/growth/schedules/{id}

Pause or resume a scoped citation schedule

Scope: performance:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "project_id": "example",
  "silo_id": "example",
  "source_id": "example",
  "paused": true
}

Required fields: project_id, silo_id, paused.

curl -X PATCH "https://app.foxcue.com/api/v1/strategy/growth/schedules/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 /strategy/articles/{sourceId}/silos

Read actual article silo memberships; also requires knowledge:read

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
sourceIdpathyesstring

Example request

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

Response

The body is a JSON object with these fields.

FieldType
source_idJSON
project_idJSON
page_scope_idJSON
silosJSON
{
  "source_id": "id",
  "project_id": "id",
  "page_scope_id": "id",
  "silos": "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 /strategy/silos/{siloId}/articles/{sourceId}

Read current public article and authored keyword targets; also requires knowledge:read

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
siloIdpathyesstring
sourceIdpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/silos/example/articles/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 /strategy/silos/{siloId}/articles/{sourceId}/keywords

Save a manual article keyword and explicit topic/page association; also requires strategy:read and knowledge:read. No demand measurement is implied

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
siloIdpathyesstring
sourceIdpathyesstring

Example request

{
  "text": "example",
  "platform": "google",
  "locale": "example",
  "topic_id": "example",
  "expected_source_revision": 0,
  "idempotency_key": "example-"
}

Required fields: text, expected_source_revision, idempotency_key.

curl -X POST "https://app.foxcue.com/api/v1/strategy/silos/example/articles/example/keywords" \
  -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

DELETE /strategy/silos/{siloId}/articles/{sourceId}/keywords/{targetId}

Archive this article keyword association with current target hash; retain target/topic history. Also requires strategy:read and knowledge:read

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
siloIdpathyesstring
sourceIdpathyesstring
targetIdpathyesstring

Example request

{
  "expected_target_hash": "example-value"
}

Required fields: expected_target_hash.

curl -X DELETE "https://app.foxcue.com/api/v1/strategy/silos/example/articles/example/keywords/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 /strategy/silos/{siloId}/articles/{sourceId}/decision-plan

Read latest authorized article-focused video ideas for the selected target set; also requires knowledge:read

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
siloIdpathyesstring
sourceIdpathyesstring
target_idsquerynostringmaxLength 20199

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/silos/example/articles/example/decision-plan?target_ids=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 /strategy/silos/{siloId}/opportunities

List current authorized video ideas across latest page/keyword and question scopes. Also requires knowledge:read. Pagination counts scope plans, not candidates

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
siloIdpathyesstring
limitquerynointegerminimum 1; maximum 20
include_earlierqueryno
offsetquerynointegerminimum 0; maximum 100000

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/silos/example/opportunities?limit=example&include_earlier=example&offset=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

The body is a JSON object with these fields.

FieldType
itemsarray
plansJSON
has_moreboolean
limitnumber
offsetnumber
{
  "items": [],
  "plans": "example",
  "has_more": false,
  "limit": 0,
  "offset": 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 /strategy/silos/{siloId}/opportunities/find

Find video opportunities for explicit active silo questions or an exact article/keyword revision. Also requires strategy:read, knowledge:read and generation:write. Uses the configured bounded model budget

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
siloIdpathyesstring

Example request

{
  "input": {
    "silo_id": "example",
    "current": {
      "start_date": "example",
      "end_date": "example",
      "timezone": "example"
    },
    "comparison": {
      "start_date": "example",
      "end_date": "example",
      "timezone": "example"
    },
    "capacity_minutes": 1,
    "max_videos": 1,
    "policy_version": "example",
    "idempotency_key": "example-",
    "discovery_mode": "silo_gaps",
    "max_suggestions": 1,
    "topic_ids": [
      "example"
    ]
  },
  "format_limits": {
    "educational": 0,
    "walkthrough": 0,
    "demo": 0,
    "comparison": 0,
    "short": 0
  }
}

Required fields: input.

curl -X POST "https://app.foxcue.com/api/v1/strategy/silos/example/opportunities/find" \
  -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 /strategy/videos/capabilities

Discover authored video stages, formats, declaration proof and retention boundaries

Scope: strategy:read.

Example request

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

Response

The body is a JSON object with these fields.

FieldType
canonical_identityboolean
stagesJSON
formatsJSON
publication_providersarray
publication_declarationsstring
automatic_publishingboolean
provider_historystring
authored_historystring
private_analytics_accessstring
{
  "canonical_identity": false,
  "stages": "example",
  "formats": "example",
  "publication_providers": [],
  "publication_declarations": "example",
  "automatic_publishing": false,
  "provider_history": "example",
  "authored_history": "example",
  "private_analytics_access": "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 /strategy/videos

List canonical authored deliverables; silo and intent filters never clone a video

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
project_idquerynostringminLength 1; maxLength 100
silo_idquerynostringminLength 1; maxLength 100
topic_idquerynostringminLength 1; maxLength 100
stagequerynostringone of planned, scripting, production, ready_to_publish, published, archived
formatquerynostringone of educational, walkthrough, demo, comparison, short
publishedquerynostringone of true, false
qquerynostringmaxLength 200
limitquerynointegerminimum 1; maximum 100
offsetquerynointegerminimum 0; maximum 100000

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/videos?project_id=example&silo_id=example&topic_id=example&stage=example&format=example&published=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 /strategy/videos

Plan one intentional video format with existing intent/silo IDs and a stable body request key

Scope: strategy:write.

Example request

{
  "project_id": "example",
  "planning_silo_id": "example",
  "topic_ids": [
    "example"
  ],
  "silo_ids": [
    "example"
  ],
  "label": "example",
  "format": "educational",
  "idempotency_key": "example-"
}

Required fields: project_id, planning_silo_id, topic_ids, silo_ids, format, idempotency_key.

curl -X POST "https://app.foxcue.com/api/v1/strategy/videos" \
  -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 /strategy/videos/intake-publication

Atomically classify a new authored video and record its user-reported YouTube URL/date; duplicate or invalid declarations leave no planned item

Scope: strategy:write.

Example request

{
  "project_id": "example",
  "planning_silo_id": "example",
  "topic_ids": [
    "example"
  ],
  "silo_ids": [
    "example"
  ],
  "label": "example",
  "format": "educational",
  "idempotency_key": "example-",
  "url": "example",
  "published_at": "example"
}

Required fields: project_id, planning_silo_id, topic_ids, silo_ids, format, idempotency_key, url, published_at.

curl -X POST "https://app.foxcue.com/api/v1/strategy/videos/intake-publication" \
  -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 /strategy/videos/{id}

Read authored identity, typed lineage and transition history; provider proof additionally requires performance:read

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/videos/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 /strategy/videos/{id}/stage

Change production stage using revision and reason; render completion alone cannot publish

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "stage": "planned",
  "expected_revision": 0,
  "reason": "example"
}

Required fields: stage, expected_revision, reason.

curl -X PATCH "https://app.foxcue.com/api/v1/strategy/videos/example/stage" \
  -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

PUT /strategy/videos/{id}/classification

Revise authored label and intent/silo associations with CAS; archived associations retain history

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "planning_silo_id": "example",
  "topic_ids": [
    "example"
  ],
  "silo_ids": [
    "example"
  ],
  "label": "example",
  "expected_revision": 0
}

Required fields: planning_silo_id, topic_ids, silo_ids, expected_revision.

curl -X PUT "https://app.foxcue.com/api/v1/strategy/videos/example/classification" \
  -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

PUT /strategy/videos/{id}/lineage

Attach existing same-brand brief/script/video-output IDs without copying production work

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "brief_ids": [
    "example"
  ],
  "script_ids": [
    "example"
  ],
  "output_ids": [
    "example"
  ],
  "expected_revision": 0
}

Required fields: expected_revision.

curl -X PUT "https://app.foxcue.com/api/v1/strategy/videos/example/lineage" \
  -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 /strategy/videos/{id}/publications

Declare a supported YouTube URL and publication date as user-reported with revision and request key; never uploads

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "url": "example",
  "published_at": "example",
  "expected_revision": 0,
  "idempotency_key": "example-"
}

Required fields: url, published_at, expected_revision, idempotency_key.

curl -X POST "https://app.foxcue.com/api/v1/strategy/videos/example/publications" \
  -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 /strategy/publications/{id}/adopt

Classify visible imported Performance inventory; additionally requires performance:read; provider metadata stays revocable

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "project_id": "example",
  "planning_silo_id": "example",
  "topic_ids": [
    "example"
  ],
  "silo_ids": [
    "example"
  ],
  "label": "example",
  "format": "educational",
  "idempotency_key": "example-"
}

Required fields: project_id, planning_silo_id, topic_ids, silo_ids, format, idempotency_key.

curl -X POST "https://app.foxcue.com/api/v1/strategy/publications/example/adopt" \
  -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 /strategy/policy

Read inherited brand/silo editorial policy and estimated effort templates

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
project_idqueryyesstringminLength 1; maxLength 100
silo_idquerynostringminLength 1; maxLength 100

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/policy?project_id=example&silo_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

PUT /strategy/policy

Save sparse authored policy overrides with revision guard; objective remains qualified leads and demos

Scope: strategy:write.

Example request

{
  "project_id": "example",
  "silo_id": "example",
  "expected_revision": 0,
  "overrides": {
    "min_buyer_fit": 2,
    "min_solution_fit": 2,
    "weights": {
      "buyer_fit": 0,
      "solution_fit": 0,
      "need_support": 0,
      "outcome_support": 0,
      "video_suitability": 0,
      "differentiation": 0
    },
    "max_evidence_age_days": 1,
    "exploration_slots": 0
  },
  "effort_templates": {
    "educational": 1,
    "walkthrough": 1,
    "demo": 1,
    "comparison": 1,
    "short": 1
  },
  "planning_defaults": {
    "capacity_minutes": 1,
    "max_videos": 1
  }
}

Required fields: project_id, expected_revision, overrides, effort_templates.

curl -X PUT "https://app.foxcue.com/api/v1/strategy/policy" \
  -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
{
  "id": "id",
  "revision": "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 /strategy/policy/history

Read paginated authored policy revisions

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
project_idqueryyesstringminLength 1; maxLength 100
silo_idquerynostringminLength 1; maxLength 100
limitquerynointegerminimum 1; maximum 100
offsetquerynointegerminimum 0; maximum 100000

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/policy/history?project_id=example&silo_id=example&limit=example&offset=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

The body is a JSON object with these fields.

FieldType
itemsarray
has_moreboolean
limitnumber
offsetnumber
{
  "items": [],
  "has_more": false,
  "limit": 0,
  "offset": 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 /strategy/candidates/{id}/accept

Accept an authorized decision candidate with revision and stable request identity; evidence access remains required

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "planning_silo_id": "example",
  "expected_revision": 0,
  "idempotency_key": "example-"
}

Required fields: planning_silo_id, expected_revision, idempotency_key.

curl -X POST "https://app.foxcue.com/api/v1/strategy/candidates/example/accept" \
  -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 /strategy/videos/{id}/script

Resume staged brief/draft/optional generation handoff; also requires scripts:write, knowledge:read, and generation:write when generating

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "expected_revision": 0,
  "generate": true,
  "generation_mode": "single",
  "writing_skill": {
    "ref": "example",
    "revision": "example"
  },
  "length_target": "example",
  "model": "example",
  "idempotency_key": "example-"
}

Required fields: expected_revision, generate, generation_mode, idempotency_key.

curl -X POST "https://app.foxcue.com/api/v1/strategy/videos/example/script" \
  -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 /strategy/generation-jobs/{id}

Read the existing durable generation command and retained draft result

Scope: jobs:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

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

Response

A job is JSON with these fields. operation is one of script.generate, script.generate_long, article.generate, slides.generate, or video.render. status is queued, running, done, error, or cancelled.

FieldType
idstring
operationstring
statusstring
stagestring
resultobject or null
error_codestring or null
created_atstring
updated_atstring
{
  "id": "id",
  "operation": "script.generate",
  "status": "queued",
  "stage": "example",
  "result": null,
  "error_code": null,
  "created_at": "2026-10-28T00:00:00.000Z",
  "updated_at": "2026-10-28T00:00:00.000Z"
}
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 /strategy/generation-jobs/{id}/cancel

Cancel the existing durable command; uncertain started work is never automatically retried

Scope: jobs:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X POST "https://app.foxcue.com/api/v1/strategy/generation-jobs/example/cancel" \
  -H "Authorization: Bearer <workspace API key>"

Response

A job is JSON with these fields. operation is one of script.generate, script.generate_long, article.generate, slides.generate, or video.render. status is queued, running, done, error, or cancelled.

FieldType
idstring
operationstring
statusstring
stagestring
resultobject or null
error_codestring or null
created_atstring
updated_atstring
{
  "id": "id",
  "operation": "script.generate",
  "status": "queued",
  "stage": "example",
  "result": null,
  "error_code": null,
  "created_at": "2026-10-28T00:00:00.000Z",
  "updated_at": "2026-10-28T00:00:00.000Z"
}
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 /strategy/decisions/configuration

Read AI availability and UTC suggestion usage; workspace allowances are not enforced during evaluation

Scope: strategy: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/strategy/decisions/configuration?project_id=example&script_id=example&collection_id=example&scope_type=example&scope_id=example&kind=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

PUT /strategy/decisions/configuration

Compatibility settings only; saved allowance fields do not restrict evaluation suggestions. Owner-only; additionally requires generation:write

Scope: strategy:write.

Example request

{
  "expected_revision": 0,
  "enabled": true,
  "daily_token_budget": 0,
  "max_calls_per_run": 1,
  "model": "example"
}

Required fields: expected_revision, enabled, daily_token_budget, max_calls_per_run.

curl -X PUT "https://app.foxcue.com/api/v1/strategy/decisions/configuration" \
  -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
revisionJSON
{
  "revision": "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 /strategy/decisions/runs

List durable strategy run receipts

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
project_idqueryyesstringminLength 1; maxLength 100
silo_idquerynostringminLength 1; maxLength 100
source_idquerynostringminLength 1; maxLength 100
target_idsqueryno
limitquerynointegerminimum 1; maximum 100
offsetquerynointegerminimum 0; maximum 100000

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/decisions/runs?project_id=example&silo_id=example&source_id=example&target_ids=example&limit=example&offset=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

The body is a JSON object with these fields.

FieldType
itemsarray
has_moreboolean
limitnumber
offsetnumber
{
  "items": [],
  "has_more": false,
  "limit": 0,
  "offset": 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 /strategy/decisions/runs

Queue a qualified-leads-and-demos portfolio; additionally requires strategy:read, knowledge:read, generation:write and current private evidence permissions

Scope: strategy:write.

Example request

{
  "input": {
    "silo_id": "example",
    "current": {
      "start_date": "example",
      "end_date": "example",
      "timezone": "example"
    },
    "comparison": {
      "start_date": "example",
      "end_date": "example",
      "timezone": "example"
    },
    "capacity_minutes": 1,
    "max_videos": 1,
    "policy_version": "example",
    "idempotency_key": "example-",
    "discovery_mode": "silo_gaps",
    "max_suggestions": 1,
    "topic_ids": [
      "example"
    ]
  },
  "format_limits": {
    "educational": 0,
    "walkthrough": 0,
    "demo": 0,
    "comparison": 0,
    "short": 0
  }
}

Required fields: input.

curl -X POST "https://app.foxcue.com/api/v1/strategy/decisions/runs" \
  -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 /strategy/decisions/runs/{id}

Read a safe decision run receipt

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/decisions/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 /strategy/decisions/runs/{id}/cancel

Cancel queued/running planning and fence late output

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{}
curl -X POST "https://app.foxcue.com/api/v1/strategy/decisions/runs/example/cancel" \
  -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 /strategy/decisions/plans/{id}

Read saved portfolio with evidence revalidation; restricted or stale context never returns private payload

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/decisions/plans/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 /strategy/decisions/plans/{id}/evidence

Read exact private feature values, sample bases, source references and windows after current plan evidence revalidation; additionally requires knowledge:read and included private evidence permissions

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

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

Response

The body is a JSON object with these fields.

FieldType
plan_idJSON
evidence_stateJSON
contextnull
{
  "plan_id": "id",
  "evidence_state": "example",
  "context": 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 /strategy/silos/{id}/decision-plan

Read current saved portfolio, preserving the previous plan after a failed refresh

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/silos/example/decision-plan" \
  -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 /strategy/candidates/{id}/feedback

Save, defer, dismiss, restore or override effort with revision checks; effort overrides require a reason

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "expected_revision": 0,
  "action": "save",
  "reason": "example",
  "effort_minutes": 1
}

Required fields: expected_revision, action.

curl -X POST "https://app.foxcue.com/api/v1/strategy/candidates/example/feedback" \
  -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
stateJSON
{
  "id": "id",
  "revision": "example",
  "state": "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 /strategy/prompt-targets

List authored prompt families and target links; these are not observed queries or demand

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
project_idqueryyesstringminLength 1; maxLength 256
silo_idquerynostringminLength 1; maxLength 256
intent_idquerynostringminLength 1; maxLength 256
after_idquerynostringminLength 1; maxLength 256
limitquerynointegerminimum 1; maximum 500

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/prompt-targets?project_id=example&silo_id=example&intent_id=example&after_id=example&limit=example" \
  -H "Authorization: Bearer <workspace API key>"

Response

The body is a JSON object with these fields.

FieldType
targetsJSON
next_cursorJSON
{
  "targets": "example",
  "next_cursor": "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

PUT /strategy/prompt-targets

Create or explicitly revise an authored prompt target using CAS and an idempotent request key

Scope: strategy:write.

Example request

{
  "project_id": "example",
  "expected_revision": 0,
  "text": "example",
  "intent_ids": [
    "example"
  ],
  "origin": "human",
  "engine": "example",
  "surface": "example",
  "locale": "example",
  "idempotency_key": "example-",
  "id": "example",
  "silo_ids": [
    "example"
  ],
  "model": "example"
}

Required fields: project_id, expected_revision, text, intent_ids, origin, engine, surface, locale, idempotency_key.

curl -X PUT "https://app.foxcue.com/api/v1/strategy/prompt-targets" \
  -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 /strategy/prompt-targets/{id}

Read one current authored prompt target and independent canonical associations

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/prompt-targets/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 /strategy/intents

Enumerate the complete canonical intent universe through active relational memberships

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
project_idqueryyesstringminLength 1; maxLength 100
silo_idquerynostringminLength 1; maxLength 100
statusquerynostringone of proposed, confirmed

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/intents?project_id=example&silo_id=example&status=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 /strategy/intent-mappings

Review typed proposed/confirmed intent relationships; private links require current performance grants

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
project_idqueryyesstringminLength 1; maxLength 100
silo_idquerynostringminLength 1; maxLength 100
statusquerynostringone of proposed, confirmed

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/intent-mappings?project_id=example&silo_id=example&status=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 /strategy/intent-mappings/propose

Suggest links using retained vectors or honest lexical matching; never calls a provider or changes observations

Scope: strategy:write.

Example request

{
  "project_id": "example",
  "observation_batch_ids": [
    "example"
  ],
  "source_revision_ids": [
    "example"
  ]
}

Required fields: project_id, observation_batch_ids, source_revision_ids.

curl -X POST "https://app.foxcue.com/api/v1/strategy/intent-mappings/propose" \
  -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 /strategy/intent-mappings/index

Explicit semantic indexing opt-in; additionally requires generation:write, evidence permissions and a configured bounded budget fence

Scope: strategy:write.

Example request

{
  "project_id": "example",
  "observation_batch_ids": [
    "example"
  ],
  "source_revision_ids": [
    "example"
  ],
  "semantic_indexing": true,
  "max_batches": 1,
  "max_characters": 1
}

Required fields: project_id, observation_batch_ids, source_revision_ids, semantic_indexing, max_batches, max_characters.

curl -X POST "https://app.foxcue.com/api/v1/strategy/intent-mappings/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
createdJSON
reusedJSON
pendingJSON
warningsarray
{
  "created": "example",
  "reused": "example",
  "pending": "example",
  "warnings": []
}
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 /strategy/intent-mappings/{id}/confirm

Confirm current evidence with CAS; title-only video coverage becomes explicit human classification

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "expected_revision": 0
}

Required fields: expected_revision.

curl -X POST "https://app.foxcue.com/api/v1/strategy/intent-mappings/example/confirm" \
  -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 /strategy/intent-mappings/{id}/re-review

Explicitly recapture retained confirmed support as proposed with CAS and current evidence permissions; preserve prior confirmation audit, then require confirmation

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "expected_revision": 0
}

Required fields: expected_revision.

curl -X POST "https://app.foxcue.com/api/v1/strategy/intent-mappings/example/re-review" \
  -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 /strategy/intents/merge

Explicit same-brand CAS merge retaining aliases, original briefs, lineage and history; never automatically merges

Scope: strategy:write.

Example request

{
  "survivor_id": "example",
  "merged_ids": [
    "example"
  ],
  "expected_revisions": {}
}

Required fields: survivor_id, merged_ids, expected_revisions.

curl -X POST "https://app.foxcue.com/api/v1/strategy/intents/merge" \
  -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
survivor_idJSON
{
  "survivor_id": "id"
}
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 /strategy/intents/split

Explicit CAS split of selected mapping IDs into a new topic identity; retain original brief and mapping audit references

Scope: strategy:write.

Example request

{
  "intent_id": "example",
  "expected_revision": 0,
  "title": "example",
  "question": "example",
  "labels": {
    "industry_id": "example",
    "workflow_id": "example",
    "audience_role_id": "example",
    "journey_stage_id": "example"
  },
  "mapping_ids": [
    "example"
  ],
  "expected_mapping_revisions": {}
}

Required fields: intent_id, expected_revision, title, question, mapping_ids, expected_mapping_revisions.

curl -X POST "https://app.foxcue.com/api/v1/strategy/intents/split" \
  -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
original_idJSON
intent_idJSON
{
  "original_id": "id",
  "intent_id": "id"
}
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 /strategy/silos/{siloId}/keyword-runs

Start a keyword research run (discover, enrich or refresh) for a silo. Budget defaults to $1 discover/refresh and $0.50 enrich (max $10); the run stops before passing it. One active run per silo; body idempotency_key required. Also requires strategy:read and generation:write

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
siloIdpathyesstring

Example request

{
  "kind": "discover",
  "seeds": [
    "example"
  ],
  "budget_usd": 0.01,
  "depth": "quick",
  "idempotency_key": "example-"
}

Required fields: kind, idempotency_key.

curl -X POST "https://app.foxcue.com/api/v1/strategy/silos/example/keyword-runs" \
  -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 /strategy/keyword-runs/{runId}

Poll a keyword research run: status, stage, progress counts, budget_usd and spent_usd (provider-reported spend from receipts)

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
runIdpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/keyword-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 /strategy/silos/{siloId}/keywords

Read keyword research results for a silo: latest run, keyword groups, targeted summary and brand channels

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
siloIdpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/silos/example/keywords" \
  -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 /strategy/silos/{siloId}/keyword-groups/{groupId}

Read one keyword group with its searches, measurements and next step

Scope: strategy:read.

Parameters

NameInRequiredTypeRules
siloIdpathyesstring
groupIdpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/strategy/silos/example/keyword-groups/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

PUT /strategy/silos/{siloId}/keyword-targets

Target keywords: choose groups and the searches inside them to target, or exclude/keep groups. Also requires strategy:read

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
siloIdpathyesstring

Example request

{
  "targeted": [
    {
      "group_id": "example",
      "keywords": [
        "example"
      ]
    }
  ],
  "excluded_group_ids": [
    "example"
  ],
  "kept_group_ids": [
    "example"
  ],
  "idempotency_key": "example-"
}

Required fields: targeted, idempotency_key.

curl -X PUT "https://app.foxcue.com/api/v1/strategy/silos/example/keyword-targets" \
  -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 /strategy/silos/{siloId}/keyword-groups/{groupId}/opportunity

Add a keyword group to this silo's video opportunities; body idempotency_key required. Also requires strategy:read and knowledge:read

Scope: strategy:write.

Parameters

NameInRequiredTypeRules
siloIdpathyesstring
groupIdpathyesstring

Example request

{
  "idempotency_key": "example-"
}

Required fields: idempotency_key.

curl -X POST "https://app.foxcue.com/api/v1/strategy/silos/example/keyword-groups/example/opportunity" \
  -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
opportunity_idJSON
{
  "opportunity_id": "id"
}
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

Strategy, keywords and citation checksGET /strategy/silosParametersExample requestResponsePOST /strategy/silosExample requestResponseGET /strategy/silos/{id}ParametersExample requestResponsePATCH /strategy/silos/{id}ParametersExample requestResponsePUT /strategy/silos/{id}/sourcesParametersExample requestResponseGET /strategy/silos/{id}/coverageParametersExample requestResponseGET /strategy/topicsParametersExample requestResponsePOST /strategy/topicsExample requestResponseGET /strategy/topics/{id}ParametersExample requestResponsePATCH /strategy/topics/{id}ParametersExample requestResponsePOST /strategy/topics/{id}/targetsParametersExample requestResponsePOST /strategy/topics/{id}/evidenceParametersExample requestResponsePOST /strategy/topics/{id}/briefsParametersExample requestResponseGET /strategy/briefs/{id}ParametersExample requestResponsePATCH /strategy/briefs/{id}ParametersExample requestResponseGET /strategy/briefs/{id}/contextParametersExample requestResponsePOST /strategy/briefs/{id}/contentParametersExample requestResponseGET /strategy/dimensionsParametersExample requestResponsePOST /strategy/dimensionsExample requestResponseGET /strategy/totalsParametersExample requestResponsePUT /strategy/silos/{id}/scopeParametersExample requestResponsePUT /strategy/topics/{id}/silos/{siloId}ParametersExample requestResponseDELETE /strategy/topics/{id}/silos/{siloId}ParametersExample requestResponsePUT /strategy/workflows/{id}/parentParametersExample requestResponsePOST /strategy/silos/{id}/source-linksParametersExample requestResponsePOST /strategy/silos/{id}/source-exclusionsParametersExample requestResponsePOST /strategy/silos/{id}/source-unlinkParametersExample requestResponseGET /strategy/growth/workspaceParametersExample requestResponseGET /strategy/growth/historyParametersExample requestResponsePOST /strategy/growth/discoverExample requestResponsePOST /strategy/growth/approveExample requestResponsePOST /strategy/growth/checksExample requestResponsePOST /strategy/growth/schedulesExample requestResponsePATCH /strategy/growth/schedules/{id}ParametersExample requestResponseGET /strategy/articles/{sourceId}/silosParametersExample requestResponseGET /strategy/silos/{siloId}/articles/{sourceId}ParametersExample requestResponsePOST /strategy/silos/{siloId}/articles/{sourceId}/keywordsParametersExample requestResponseDELETE /strategy/silos/{siloId}/articles/{sourceId}/keywords/{targetId}ParametersExample requestResponseGET /strategy/silos/{siloId}/articles/{sourceId}/decision-planParametersExample requestResponseGET /strategy/silos/{siloId}/opportunitiesParametersExample requestResponsePOST /strategy/silos/{siloId}/opportunities/findParametersExample requestResponseGET /strategy/videos/capabilitiesExample requestResponseGET /strategy/videosParametersExample requestResponsePOST /strategy/videosExample requestResponsePOST /strategy/videos/intake-publicationExample requestResponseGET /strategy/videos/{id}ParametersExample requestResponsePATCH /strategy/videos/{id}/stageParametersExample requestResponsePUT /strategy/videos/{id}/classificationParametersExample requestResponsePUT /strategy/videos/{id}/lineageParametersExample requestResponsePOST /strategy/videos/{id}/publicationsParametersExample requestResponsePOST /strategy/publications/{id}/adoptParametersExample requestResponseGET /strategy/policyParametersExample requestResponsePUT /strategy/policyExample requestResponseGET /strategy/policy/historyParametersExample requestResponsePOST /strategy/candidates/{id}/acceptParametersExample requestResponsePOST /strategy/videos/{id}/scriptParametersExample requestResponseGET /strategy/generation-jobs/{id}ParametersExample requestResponsePOST /strategy/generation-jobs/{id}/cancelParametersExample requestResponseGET /strategy/decisions/configurationParametersExample requestResponsePUT /strategy/decisions/configurationExample requestResponseGET /strategy/decisions/runsParametersExample requestResponsePOST /strategy/decisions/runsExample requestResponseGET /strategy/decisions/runs/{id}ParametersExample requestResponsePOST /strategy/decisions/runs/{id}/cancelParametersExample requestResponseGET /strategy/decisions/plans/{id}ParametersExample requestResponseGET /strategy/decisions/plans/{id}/evidenceParametersExample requestResponseGET /strategy/silos/{id}/decision-planParametersExample requestResponsePOST /strategy/candidates/{id}/feedbackParametersExample requestResponseGET /strategy/prompt-targetsParametersExample requestResponsePUT /strategy/prompt-targetsExample requestResponseGET /strategy/prompt-targets/{id}ParametersExample requestResponseGET /strategy/intentsParametersExample requestResponseGET /strategy/intent-mappingsParametersExample requestResponsePOST /strategy/intent-mappings/proposeExample requestResponsePOST /strategy/intent-mappings/indexExample requestResponsePOST /strategy/intent-mappings/{id}/confirmParametersExample requestResponsePOST /strategy/intent-mappings/{id}/re-reviewParametersExample requestResponsePOST /strategy/intents/mergeExample requestResponsePOST /strategy/intents/splitExample requestResponsePOST /strategy/silos/{siloId}/keyword-runsParametersExample requestResponseGET /strategy/keyword-runs/{runId}ParametersExample requestResponseGET /strategy/silos/{siloId}/keywordsParametersExample requestResponseGET /strategy/silos/{siloId}/keyword-groups/{groupId}ParametersExample requestResponsePUT /strategy/silos/{siloId}/keyword-targetsParametersExample requestResponsePOST /strategy/silos/{siloId}/keyword-groups/{groupId}/opportunityParametersExample requestResponseRelated articles