FoxCue API: Brands and brand kits and Offerings and Calls to action and more

Request examples, parameters, scopes and response statuses for FoxCue API brands and brand kits and offerings and calls to action and more.

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.

Brands and brand kits

GET /projects

List projects in this workspace

Scope: brands: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/projects?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
namestring
slugstring
domainstring
descriptionstring
created_atstring
updated_atstring
styles_seedednumber
accent_colorstring
logo_urlstring
brand_kit_jsonstring
brand_kit_revisionnumber
brand_kit_updated_atstring
[
  {
    "id": "id",
    "org_id": "workspace_id",
    "name": "example",
    "slug": "example",
    "domain": "https://example.com",
    "description": "example",
    "created_at": "2026-10-28T00:00:00.000Z",
    "updated_at": "2026-10-28T00:00:00.000Z",
    "styles_seeded": 0,
    "accent_color": "example",
    "logo_url": "https://example.com",
    "brand_kit_json": "example",
    "brand_kit_revision": 0,
    "brand_kit_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 /projects

Create projects

Scope: brands:write.

Example request

{
  "name": "example"
}

Required fields: name.

curl -X POST "https://app.foxcue.com/api/v1/projects" \
  -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
namestring
slugstring
domainstring
descriptionstring
created_atstring
updated_atstring
styles_seedednumber
accent_colorstring
logo_urlstring
brand_kit_jsonstring
brand_kit_revisionnumber
brand_kit_updated_atstring
{
  "id": "id",
  "org_id": "workspace_id",
  "name": "example",
  "slug": "example",
  "domain": "https://example.com",
  "description": "example",
  "created_at": "2026-10-28T00:00:00.000Z",
  "updated_at": "2026-10-28T00:00:00.000Z",
  "styles_seeded": 0,
  "accent_color": "example",
  "logo_url": "https://example.com",
  "brand_kit_json": "example",
  "brand_kit_revision": 0,
  "brand_kit_updated_at": "2026-10-28T00:00:00.000Z"
}
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 /projects/{id}

Get projects

Scope: brands:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

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

Response

The body is a JSON object with these fields.

FieldType
idstring
org_idstring
namestring
slugstring
domainstring
descriptionstring
created_atstring
updated_atstring
styles_seedednumber
accent_colorstring
logo_urlstring
brand_kit_jsonstring
brand_kit_revisionnumber
brand_kit_updated_atstring
{
  "id": "id",
  "org_id": "workspace_id",
  "name": "example",
  "slug": "example",
  "domain": "https://example.com",
  "description": "example",
  "created_at": "2026-10-28T00:00:00.000Z",
  "updated_at": "2026-10-28T00:00:00.000Z",
  "styles_seeded": 0,
  "accent_color": "example",
  "logo_url": "https://example.com",
  "brand_kit_json": "example",
  "brand_kit_revision": 0,
  "brand_kit_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

PATCH /projects/{id}

Update projects

Scope: brands:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "name": "example"
}
curl -X PATCH "https://app.foxcue.com/api/v1/projects/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
namestring
slugstring
domainstring
descriptionstring
created_atstring
updated_atstring
styles_seedednumber
accent_colorstring
logo_urlstring
brand_kit_jsonstring
brand_kit_revisionnumber
brand_kit_updated_atstring
{
  "id": "id",
  "org_id": "workspace_id",
  "name": "example",
  "slug": "example",
  "domain": "https://example.com",
  "description": "example",
  "created_at": "2026-10-28T00:00:00.000Z",
  "updated_at": "2026-10-28T00:00:00.000Z",
  "styles_seeded": 0,
  "accent_color": "example",
  "logo_url": "https://example.com",
  "brand_kit_json": "example",
  "brand_kit_revision": 0,
  "brand_kit_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

DELETE /projects/{id}

Delete projects

Scope: brands:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

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

Offerings

GET /offerings

List offerings in this workspace

Scope: brands: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/offerings?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
problemstring
solutionstring
proofstring
ctastring
activenumber
created_atstring
updated_atstring
[
  {
    "id": "id",
    "org_id": "workspace_id",
    "project_id": "id",
    "name": "example",
    "problem": "example",
    "solution": "example",
    "proof": "example",
    "cta": "example",
    "active": 0,
    "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 /offerings

Create offerings

Scope: brands:write.

Example request

{
  "project_id": "example",
  "name": "example",
  "active": 0
}

Required fields: project_id, name.

curl -X POST "https://app.foxcue.com/api/v1/offerings" \
  -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
problemstring
solutionstring
proofstring
ctastring
activenumber
created_atstring
updated_atstring
{
  "id": "id",
  "org_id": "workspace_id",
  "project_id": "id",
  "name": "example",
  "problem": "example",
  "solution": "example",
  "proof": "example",
  "cta": "example",
  "active": 0,
  "created_at": "2026-10-28T00:00:00.000Z",
  "updated_at": "2026-10-28T00:00:00.000Z"
}
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 /offerings/{id}

Get offerings

Scope: brands:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

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

Response

The body is a JSON object with these fields.

FieldType
idstring
org_idstring
project_idstring
namestring
problemstring
solutionstring
proofstring
ctastring
activenumber
created_atstring
updated_atstring
{
  "id": "id",
  "org_id": "workspace_id",
  "project_id": "id",
  "name": "example",
  "problem": "example",
  "solution": "example",
  "proof": "example",
  "cta": "example",
  "active": 0,
  "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

PATCH /offerings/{id}

Update offerings

Scope: brands:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "name": "example",
  "active": 0
}
curl -X PATCH "https://app.foxcue.com/api/v1/offerings/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
problemstring
solutionstring
proofstring
ctastring
activenumber
created_atstring
updated_atstring
{
  "id": "id",
  "org_id": "workspace_id",
  "project_id": "id",
  "name": "example",
  "problem": "example",
  "solution": "example",
  "proof": "example",
  "cta": "example",
  "active": 0,
  "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

DELETE /offerings/{id}

Delete offerings

Scope: brands:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

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

Calls to action

GET /ctas

List ctas in this workspace

Scope: brands: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/ctas?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
textstring
created_atstring
updated_atstring
is_defaultnumber
[
  {
    "id": "id",
    "org_id": "workspace_id",
    "project_id": "id",
    "name": "example",
    "text": "example",
    "created_at": "2026-10-28T00:00:00.000Z",
    "updated_at": "2026-10-28T00:00:00.000Z",
    "is_default": 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 /ctas

Create ctas

Scope: brands:write.

Example request

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

Required fields: project_id, name, text.

curl -X POST "https://app.foxcue.com/api/v1/ctas" \
  -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
textstring
created_atstring
updated_atstring
is_defaultnumber
{
  "id": "id",
  "org_id": "workspace_id",
  "project_id": "id",
  "name": "example",
  "text": "example",
  "created_at": "2026-10-28T00:00:00.000Z",
  "updated_at": "2026-10-28T00:00:00.000Z",
  "is_default": 0
}
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 /ctas/{id}

Get ctas

Scope: brands:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

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

Response

The body is a JSON object with these fields.

FieldType
idstring
org_idstring
project_idstring
namestring
textstring
created_atstring
updated_atstring
is_defaultnumber
{
  "id": "id",
  "org_id": "workspace_id",
  "project_id": "id",
  "name": "example",
  "text": "example",
  "created_at": "2026-10-28T00:00:00.000Z",
  "updated_at": "2026-10-28T00:00:00.000Z",
  "is_default": 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

PATCH /ctas/{id}

Update ctas

Scope: brands:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "name": "example",
  "text": "example"
}
curl -X PATCH "https://app.foxcue.com/api/v1/ctas/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
textstring
created_atstring
updated_atstring
is_defaultnumber
{
  "id": "id",
  "org_id": "workspace_id",
  "project_id": "id",
  "name": "example",
  "text": "example",
  "created_at": "2026-10-28T00:00:00.000Z",
  "updated_at": "2026-10-28T00:00:00.000Z",
  "is_default": 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

DELETE /ctas/{id}

Delete ctas

Scope: brands:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

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

Writing styles

GET /styles

List styles in this workspace

Scope: brands: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/styles?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
collection_idstring
namestring
tonestring
formatstring
length_targetstring
structurestring
brand_voicestring
dosstring
dontsstring
ctastring
examplesstring
is_defaultnumber
created_atstring
updated_atstring
system_keystring
[
  {
    "id": "id",
    "org_id": "workspace_id",
    "project_id": "id",
    "collection_id": "id",
    "name": "example",
    "tone": "example",
    "format": "example",
    "length_target": "example",
    "structure": "example",
    "brand_voice": "example",
    "dos": "example",
    "donts": "example",
    "cta": "example",
    "examples": "example",
    "is_default": 0,
    "created_at": "2026-10-28T00:00:00.000Z",
    "updated_at": "2026-10-28T00:00:00.000Z",
    "system_key": "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 /styles

Create styles

Scope: brands:write.

Example request

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

Required fields: project_id, name.

curl -X POST "https://app.foxcue.com/api/v1/styles" \
  -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
collection_idstring
namestring
tonestring
formatstring
length_targetstring
structurestring
brand_voicestring
dosstring
dontsstring
ctastring
examplesstring
is_defaultnumber
created_atstring
updated_atstring
system_keystring
{
  "id": "id",
  "org_id": "workspace_id",
  "project_id": "id",
  "collection_id": "id",
  "name": "example",
  "tone": "example",
  "format": "example",
  "length_target": "example",
  "structure": "example",
  "brand_voice": "example",
  "dos": "example",
  "donts": "example",
  "cta": "example",
  "examples": "example",
  "is_default": 0,
  "created_at": "2026-10-28T00:00:00.000Z",
  "updated_at": "2026-10-28T00:00:00.000Z",
  "system_key": "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 /styles/{id}

Get styles

Scope: brands:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

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

Response

The body is a JSON object with these fields.

FieldType
idstring
org_idstring
project_idstring
collection_idstring
namestring
tonestring
formatstring
length_targetstring
structurestring
brand_voicestring
dosstring
dontsstring
ctastring
examplesstring
is_defaultnumber
created_atstring
updated_atstring
system_keystring
{
  "id": "id",
  "org_id": "workspace_id",
  "project_id": "id",
  "collection_id": "id",
  "name": "example",
  "tone": "example",
  "format": "example",
  "length_target": "example",
  "structure": "example",
  "brand_voice": "example",
  "dos": "example",
  "donts": "example",
  "cta": "example",
  "examples": "example",
  "is_default": 0,
  "created_at": "2026-10-28T00:00:00.000Z",
  "updated_at": "2026-10-28T00:00:00.000Z",
  "system_key": "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 /styles/{id}

Update styles

Scope: brands:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "name": "example"
}
curl -X PATCH "https://app.foxcue.com/api/v1/styles/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
collection_idstring
namestring
tonestring
formatstring
length_targetstring
structurestring
brand_voicestring
dosstring
dontsstring
ctastring
examplesstring
is_defaultnumber
created_atstring
updated_atstring
system_keystring
{
  "id": "id",
  "org_id": "workspace_id",
  "project_id": "id",
  "collection_id": "id",
  "name": "example",
  "tone": "example",
  "format": "example",
  "length_target": "example",
  "structure": "example",
  "brand_voice": "example",
  "dos": "example",
  "donts": "example",
  "cta": "example",
  "examples": "example",
  "is_default": 0,
  "created_at": "2026-10-28T00:00:00.000Z",
  "updated_at": "2026-10-28T00:00:00.000Z",
  "system_key": "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 /styles/{id}

Delete styles

Scope: brands:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

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

Brands and brand kits

GET /projects/{id}/brand-kit

Read saved brand kit, revision and imported/manual provenance

Scope: brands:read.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

curl -X GET "https://app.foxcue.com/api/v1/projects/example/brand-kit" \
  -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 /projects/{id}/brand-kit

Save the brand kit with a revision check: send kit (the whole kit) or changes (only the fields to change; house or guidelines null turns them off). A stale expected_revision returns 409

Scope: brands:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "kit": {
    "schema_version": 1,
    "background_color": "#112233",
    "text_color": "#112233",
    "accent_color": "#112233",
    "secondary_color": "#112233",
    "title_font": "example",
    "body_font": "example",
    "logo_asset_id": "example",
    "tone_of_voice": "example",
    "audience": "example",
    "positioning": "example",
    "product_facts": "example",
    "preferred_terms": "example",
    "avoided_terms": "example",
    "sources": [
      {
        "type": "website",
        "url": "example",
        "label": "example",
        "imported_at": "example"
      }
    ],
    "house": {
      "background": "plain",
      "step_chip": true,
      "caption": "boxed"
    },
    "guidelines": {
      "do": [
        "example"
      ],
      "dont": [
        "example"
      ],
      "examples": [
        {
          "asset_id": "example",
          "note": "example"
        }
      ]
    }
  },
  "changes": {
    "background_color": "#112233",
    "text_color": "#112233",
    "accent_color": "#112233"
  },
  "expected_revision": 0,
  "remove_legacy_logo": true
}

Required fields: expected_revision.

curl -X PATCH "https://app.foxcue.com/api/v1/projects/example/brand-kit" \
  -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 /projects/{id}/brand-kit/import-website

Import editable website candidate; does not approve it

Scope: brands:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "url": "example"
}

Required fields: url.

curl -X POST "https://app.foxcue.com/api/v1/projects/example/brand-kit/import-website" \
  -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

Copy public raster logo into owned workspace media

Scope: brands:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

{
  "url": "example"
}

Required fields: url.

curl -X POST "https://app.foxcue.com/api/v1/projects/example/brand-kit/import-logo" \
  -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 /projects/{id}/brand-kit/import-image

Import raster brand candidate; does not approve it

Scope: brands:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

Body is raw bytes (image/png), not JSON.

curl -X POST "https://app.foxcue.com/api/v1/projects/example/brand-kit/import-image" \
  -H "Authorization: Bearer <workspace API key>" \
  --data-binary @file

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

Calls to action

POST /ctas/{id}/default

Make this call to action the brand default; the previous default is cleared

Scope: brands:write.

Parameters

NameInRequiredTypeRules
idpathyesstring

Example request

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

On this page