Signal API
Packages as MarkdownUse a clean Markdown version of this page with an agent or local tooling.

Packages

Read and update your workspace and manage immutable project and location packages.

The Bearer API key selects the workspace automatically. Package configuration cannot be updated after creation; clone a package to create a new package with different settings. Archived packages cannot be restored.
GET
/packages

Returns workspace packages in a fixed ascending order by package type, name, then ID.

Parameters

Query parameters

qstring

Search package names and descriptions.

Optional
package_typeproject | location

Return packages of one resource type.

Optional
statusactive | inactive | archived

Return packages in one lifecycle status. When omitted, packages in all statuses are returned.

Optional
pageinteger

The 1-based page number.

OptionalDefault: 1
per_pageinteger

Number of packages per page. Maximum: 100.

OptionalDefault: 25
Response

Response envelope

packages:Package[]pagination:Pagination
packagesPackage[]

Packages matching the selected filters.

paginationPagination

Pagination metadata.

Object

Package

iduuid

Package identifier.

namestring

Package display name.

descriptionstring | null

Package description.

package_typeproject | location

Resource type that can use this package.

statusactive | inactive | archived

Current package lifecycle status. Only active packages can be attached to resources or archived.

configurationPackageConfiguration

Normalized feature and capacity configuration.

created_atdatetime

Package creation time.

updated_atdatetime

Most recent package update time.

Object

PackageConfiguration

visibilityobject

Cadence, prompt limit, selected models, model tiers, citations, and sentiment.

diagnosisobject

Diagnosis feature settings.

agentsobject

Content and technical agent settings.

advancedobject

Prompt volume, Google Analytics, and fan-out settings.

pricingobject

Customer access setting.

Object

Visibility configuration

cadencemonthly | weekly | daily

Tracking schedule.

prompt_limitinteger

Maximum tracked prompts.

model_keysstring[]

Selected model keys.

Object

Feature configuration

diagnosis.enabledboolean

Whether Diagnosis, Actions, and Site Audit are enabled.

agents.content_enabledboolean

Whether the content agent is enabled.

agents.technical_enabledboolean

Whether the technical agent is enabled.

advanced.prompt_volume_enabledboolean

Whether prompt-volume analysis is enabled.

advanced.google_analytics_enabledboolean

Whether Google Analytics integration is enabled.

advanced.fanout_enabledboolean

Whether fan-out query analysis is enabled.

pricing.frontend_delivery_enabledboolean

Whether Customer access to hosted Signal UI and redirect login links is enabled.

Object

Pagination

pageinteger

Current 1-based page.

per_pageinteger

Number of records requested per page.

totalinteger

Total matching packages.

total_pagesinteger

Total available pages.

Request and response

Example requestcURL
curl --request GET \
  --url 'https://api.signal.ceyo.ai/v1/packages?q=growth&package_type=project&status=active&page=1&per_page=25' \
  --header 'Authorization: Bearer ceyo_platform_...'
Example responseJSON
{
  "packages": [
    {
    "id": "92404fd7-f096-49e9-9ab0-5ed73517d9db",
    "name": "Growth Weekly",
    "description": "Weekly visibility and diagnosis for growing brands.",
    "package_type": "project",
    "status": "active",
    "configuration": {
      "visibility": {
        "cadence": "weekly",
        "prompt_limit": 100,
        "model_keys": ["chatgpt", "claude", "perplexity", "gemini"]
      },
      "diagnosis": { "enabled": true },
      "agents": {
        "content_enabled": true,
        "technical_enabled": true
      },
      "advanced": {
        "prompt_volume_enabled": true,
        "google_analytics_enabled": false,
        "fanout_enabled": true
      },
      "pricing": {
        "frontend_delivery_enabled": true
      }
    },
    "created_at": "2026-07-30T15:05:00Z",
    "updated_at": "2026-07-30T15:05:00Z"
  }
  ],
  "pagination": {
    "page": 1,
    "per_page": 25,
    "total": 1,
    "total_pages": 1
  }
}
ErrorsResponse format and status codes
Errors

Error response envelope

errorError

Structured error payload.

Errors

Error

codestring

Stable snake_case code suitable for programmatic handling.

messagestring

Human-readable explanation of the failure.

detailsobject | array | null

Structured validation or request context when available.

request_idstring

Identifier to provide when requesting support.

Example error responseJSON
{
  "error": {
    "code": "invalid_api_key",
    "message": "The Bearer API key is invalid.",
    "details": null,
    "request_id": "req_01K1F8M7QX4R2V9N6Y3Z0A5BCT"
  }
}
Errors

Status codes

400invalid_request

The JSON body or a query parameter is malformed.

401invalid_api_key

The Bearer API key was not provided or is invalid.

403forbidden

The API key cannot perform this operation.

429rate_limit_exceeded

Too many requests were made.

POST
/packages/preview

Validates and normalizes a proposed package configuration without creating a package.

Request

Request body

package_typeproject | location

Required resource type.

configurationPackageConfigurationInput

Required proposed configuration.

Request

PackageConfigurationInput

visibilityobject

Required visibility tracking configuration.

visibility.cadencemonthly | weekly | daily

Tracking schedule.

visibility.prompt_limitinteger

Maximum tracked prompts. Minimum: 20.

visibility.model_keysstring[]

Non-empty list containing chatgpt, claude, perplexity, gemini, google_ai_mode, google_ai_overview, grok, or copilot.

diagnosis.enabledboolean

Enable Diagnosis, Actions, and Site Audit. Defaults to false.

agents.content_enabledboolean

Enable the content agent. Defaults to false and is normalized to false unless diagnosis.enabled is true.

agents.technical_enabledboolean

Enable the technical agent. Defaults to false and is normalized to false unless diagnosis.enabled is true.

listings.enabledderived

Derived from package_type: true for location packages and false for project packages. Do not send this field.

advanced.prompt_volume_enabledboolean

Enable prompt-volume analysis. Defaults to false.

advanced.google_analytics_enabledboolean

Enable Google Analytics integration. Defaults to false.

advanced.fanout_enabledboolean

Enable fan-out query analysis. Defaults to false.

pricing.frontend_delivery_enabledboolean

Enable Customer access, including hosted Signal UI and redirect login links, and apply one 25% uplift. Defaults to false.

Response

Response envelope

configuration:PackageConfiguration

Normalized public configuration.

Object

PackageConfiguration

visibilityobject

Cadence, prompt limit, selected models, model tiers, citations, and sentiment.

diagnosisobject

Diagnosis feature settings.

agentsobject

Content and technical agent settings.

advancedobject

Prompt volume, Google Analytics, and fan-out settings.

pricingobject

Customer access setting.

Object

Visibility configuration

cadencemonthly | weekly | daily

Tracking schedule.

prompt_limitinteger

Maximum tracked prompts.

model_keysstring[]

Selected model keys.

Object

Feature configuration

diagnosis.enabledboolean

Whether Diagnosis, Actions, and Site Audit are enabled.

agents.content_enabledboolean

Whether the content agent is enabled.

agents.technical_enabledboolean

Whether the technical agent is enabled.

advanced.prompt_volume_enabledboolean

Whether prompt-volume analysis is enabled.

advanced.google_analytics_enabledboolean

Whether Google Analytics integration is enabled.

advanced.fanout_enabledboolean

Whether fan-out query analysis is enabled.

pricing.frontend_delivery_enabledboolean

Whether Customer access to hosted Signal UI and redirect login links is enabled.

Request and response

Example requestcURL
curl --request POST \
  --url 'https://api.signal.ceyo.ai/v1/packages/preview' \
  --header 'Authorization: Bearer ceyo_platform_...' \
  --header 'Content-Type: application/json' \
  --data '{
  "package_type": "project",
  "configuration": {
    "visibility": {
      "cadence": "weekly",
      "prompt_limit": 100,
      "model_keys": ["chatgpt", "claude", "perplexity", "gemini"]
    },
    "diagnosis": { "enabled": true },
    "agents": {
      "content_enabled": true,
      "technical_enabled": true
    },
    "advanced": {
      "prompt_volume_enabled": true,
      "google_analytics_enabled": false,
      "fanout_enabled": true
    },
    "pricing": {
      "frontend_delivery_enabled": true
    }
  }
}'
Example responseJSON
{
  "configuration": {
      "visibility": {
        "cadence": "weekly",
        "prompt_limit": 100,
        "model_keys": ["chatgpt", "claude", "perplexity", "gemini"]
      },
      "diagnosis": { "enabled": true },
      "agents": {
        "content_enabled": true,
        "technical_enabled": true
      },
      "advanced": {
        "prompt_volume_enabled": true,
        "google_analytics_enabled": false,
        "fanout_enabled": true
      },
      "pricing": {
        "frontend_delivery_enabled": true
      }
    }
}
ErrorsResponse format and status codes
Errors

Error response envelope

errorError

Structured error payload.

Errors

Error

codestring

Stable snake_case code suitable for programmatic handling.

messagestring

Human-readable explanation of the failure.

detailsobject | array | null

Structured validation or request context when available.

request_idstring

Identifier to provide when requesting support.

Example error responseJSON
{
  "error": {
    "code": "invalid_api_key",
    "message": "The Bearer API key is invalid.",
    "details": null,
    "request_id": "req_01K1F8M7QX4R2V9N6Y3Z0A5BCT"
  }
}
Errors

Status codes

400invalid_request

The JSON body or a query parameter is malformed.

401invalid_api_key

The Bearer API key was not provided or is invalid.

403forbidden

The API key cannot perform this operation.

422validation_failed

One or more request fields are invalid.

429rate_limit_exceeded

Too many requests were made.

POST
/packages

Creates an immutable package and returns its public configuration.

Request

Request body

namestring

Required package name. Maximum: 200 characters.

descriptionstring | null

Optional description. Maximum: 5,000 characters.

package_typeproject | location

Required resource type.

configurationPackageConfigurationInput

Required feature and capacity configuration.

Request

PackageConfigurationInput

visibilityobject

Required visibility tracking configuration.

visibility.cadencemonthly | weekly | daily

Tracking schedule.

visibility.prompt_limitinteger

Maximum tracked prompts. Minimum: 20.

visibility.model_keysstring[]

Non-empty list containing chatgpt, claude, perplexity, gemini, google_ai_mode, google_ai_overview, grok, or copilot.

diagnosis.enabledboolean

Enable Diagnosis, Actions, and Site Audit. Defaults to false.

agents.content_enabledboolean

Enable the content agent. Defaults to false and is normalized to false unless diagnosis.enabled is true.

agents.technical_enabledboolean

Enable the technical agent. Defaults to false and is normalized to false unless diagnosis.enabled is true.

listings.enabledderived

Derived from package_type: true for location packages and false for project packages. Do not send this field.

advanced.prompt_volume_enabledboolean

Enable prompt-volume analysis. Defaults to false.

advanced.google_analytics_enabledboolean

Enable Google Analytics integration. Defaults to false.

advanced.fanout_enabledboolean

Enable fan-out query analysis. Defaults to false.

pricing.frontend_delivery_enabledboolean

Enable Customer access, including hosted Signal UI and redirect login links, and apply one 25% uplift. Defaults to false.

Location package exampleSending package_type: "location" derives configuration.listings.enabled: true. Listings is derived and must not be included in the request configuration.
Response

Response envelope

package:Package

The requested or resulting package.

Object

Package

iduuid

Package identifier.

namestring

Package display name.

descriptionstring | null

Package description.

package_typeproject | location

Resource type that can use this package.

statusactive | inactive | archived

Current package lifecycle status. Only active packages can be attached to resources or archived.

configurationPackageConfiguration

Normalized feature and capacity configuration.

created_atdatetime

Package creation time.

updated_atdatetime

Most recent package update time.

Object

PackageConfiguration

visibilityobject

Cadence, prompt limit, selected models, model tiers, citations, and sentiment.

diagnosisobject

Diagnosis feature settings.

agentsobject

Content and technical agent settings.

advancedobject

Prompt volume, Google Analytics, and fan-out settings.

pricingobject

Customer access setting.

Object

Visibility configuration

cadencemonthly | weekly | daily

Tracking schedule.

prompt_limitinteger

Maximum tracked prompts.

model_keysstring[]

Selected model keys.

Object

Feature configuration

diagnosis.enabledboolean

Whether Diagnosis, Actions, and Site Audit are enabled.

agents.content_enabledboolean

Whether the content agent is enabled.

agents.technical_enabledboolean

Whether the technical agent is enabled.

advanced.prompt_volume_enabledboolean

Whether prompt-volume analysis is enabled.

advanced.google_analytics_enabledboolean

Whether Google Analytics integration is enabled.

advanced.fanout_enabledboolean

Whether fan-out query analysis is enabled.

pricing.frontend_delivery_enabledboolean

Whether Customer access to hosted Signal UI and redirect login links is enabled.

201 CreatedA successful request returns HTTP 201. Package names must be unique within their package type.

Request and response

Example requestcURL
curl --request POST \
  --url 'https://api.signal.ceyo.ai/v1/packages' \
  --header 'Authorization: Bearer ceyo_platform_...' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "Growth Weekly",
  "description": "Weekly visibility and diagnosis for growing brands.",
  "package_type": "project",
  "configuration": {
    "visibility": {
      "cadence": "weekly",
      "prompt_limit": 100,
      "model_keys": ["chatgpt", "claude", "perplexity", "gemini"]
    },
    "diagnosis": { "enabled": true },
    "agents": {
      "content_enabled": true,
      "technical_enabled": true
    },
    "advanced": {
      "prompt_volume_enabled": true,
      "google_analytics_enabled": false,
      "fanout_enabled": true
    },
    "pricing": {
      "frontend_delivery_enabled": true
    }
  }
}'
Example responseJSON
{
  "package": {
    "id": "92404fd7-f096-49e9-9ab0-5ed73517d9db",
    "name": "Growth Weekly",
    "description": "Weekly visibility and diagnosis for growing brands.",
    "package_type": "project",
    "status": "active",
    "configuration": {
      "visibility": {
        "cadence": "weekly",
        "prompt_limit": 100,
        "model_keys": ["chatgpt", "claude", "perplexity", "gemini"]
      },
      "diagnosis": { "enabled": true },
      "agents": {
        "content_enabled": true,
        "technical_enabled": true
      },
      "advanced": {
        "prompt_volume_enabled": true,
        "google_analytics_enabled": false,
        "fanout_enabled": true
      },
      "pricing": {
        "frontend_delivery_enabled": true
      }
    },
    "created_at": "2026-07-30T15:05:00Z",
    "updated_at": "2026-07-30T15:05:00Z"
  }
}
ErrorsResponse format and status codes
Errors

Error response envelope

errorError

Structured error payload.

Errors

Error

codestring

Stable snake_case code suitable for programmatic handling.

messagestring

Human-readable explanation of the failure.

detailsobject | array | null

Structured validation or request context when available.

request_idstring

Identifier to provide when requesting support.

Example error responseJSON
{
  "error": {
    "code": "invalid_api_key",
    "message": "The Bearer API key is invalid.",
    "details": null,
    "request_id": "req_01K1F8M7QX4R2V9N6Y3Z0A5BCT"
  }
}
Errors

Status codes

400invalid_request

The JSON body or a query parameter is malformed.

401invalid_api_key

The Bearer API key was not provided or is invalid.

403forbidden

The API key cannot perform this operation.

422validation_failed

One or more request fields are invalid.

429rate_limit_exceeded

Too many requests were made.

GET
/packages/{package_id}

Returns one package from the workspace selected by the Bearer API key.

Parameters

Path parameters

package_iduuid

Package identifier.

Required
Response

Response envelope

package:Package

The requested or resulting package.

Object

Package

iduuid

Package identifier.

namestring

Package display name.

descriptionstring | null

Package description.

package_typeproject | location

Resource type that can use this package.

statusactive | inactive | archived

Current package lifecycle status. Only active packages can be attached to resources or archived.

configurationPackageConfiguration

Normalized feature and capacity configuration.

created_atdatetime

Package creation time.

updated_atdatetime

Most recent package update time.

Object

PackageConfiguration

visibilityobject

Cadence, prompt limit, selected models, model tiers, citations, and sentiment.

diagnosisobject

Diagnosis feature settings.

agentsobject

Content and technical agent settings.

advancedobject

Prompt volume, Google Analytics, and fan-out settings.

pricingobject

Customer access setting.

Object

Visibility configuration

cadencemonthly | weekly | daily

Tracking schedule.

prompt_limitinteger

Maximum tracked prompts.

model_keysstring[]

Selected model keys.

Object

Feature configuration

diagnosis.enabledboolean

Whether Diagnosis, Actions, and Site Audit are enabled.

agents.content_enabledboolean

Whether the content agent is enabled.

agents.technical_enabledboolean

Whether the technical agent is enabled.

advanced.prompt_volume_enabledboolean

Whether prompt-volume analysis is enabled.

advanced.google_analytics_enabledboolean

Whether Google Analytics integration is enabled.

advanced.fanout_enabledboolean

Whether fan-out query analysis is enabled.

pricing.frontend_delivery_enabledboolean

Whether Customer access to hosted Signal UI and redirect login links is enabled.

Request and response

Example requestcURL
curl --request GET \
  --url 'https://api.signal.ceyo.ai/v1/packages/92404fd7-f096-49e9-9ab0-5ed73517d9db' \
  --header 'Authorization: Bearer ceyo_platform_...'
Example responseJSON
{
  "package": {
    "id": "92404fd7-f096-49e9-9ab0-5ed73517d9db",
    "name": "Growth Weekly",
    "description": "Weekly visibility and diagnosis for growing brands.",
    "package_type": "project",
    "status": "active",
    "configuration": {
      "visibility": {
        "cadence": "weekly",
        "prompt_limit": 100,
        "model_keys": ["chatgpt", "claude", "perplexity", "gemini"]
      },
      "diagnosis": { "enabled": true },
      "agents": {
        "content_enabled": true,
        "technical_enabled": true
      },
      "advanced": {
        "prompt_volume_enabled": true,
        "google_analytics_enabled": false,
        "fanout_enabled": true
      },
      "pricing": {
        "frontend_delivery_enabled": true
      }
    },
    "created_at": "2026-07-30T15:05:00Z",
    "updated_at": "2026-07-30T15:05:00Z"
  }
}
ErrorsResponse format and status codes
Errors

Error response envelope

errorError

Structured error payload.

Errors

Error

codestring

Stable snake_case code suitable for programmatic handling.

messagestring

Human-readable explanation of the failure.

detailsobject | array | null

Structured validation or request context when available.

request_idstring

Identifier to provide when requesting support.

Example error responseJSON
{
  "error": {
    "code": "invalid_api_key",
    "message": "The Bearer API key is invalid.",
    "details": null,
    "request_id": "req_01K1F8M7QX4R2V9N6Y3Z0A5BCT"
  }
}
Errors

Status codes

401invalid_api_key

The Bearer API key was not provided or is invalid.

403forbidden

The API key cannot perform this operation.

404not_found

The requested package was not found in this workspace.

429rate_limit_exceeded

Too many requests were made.

POST
/packages/{package_id}/clone

Creates a new active package by copying the source package type and configuration.

Parameters

Path parameters

package_iduuid

Package identifier.

Required
Request

Request body

namestring

Required name for the cloned package. Maximum: 200 characters.

descriptionstring | null

Optional description. Maximum: 5,000 characters. When omitted, the source description is copied.

201 CreatedA successful request returns HTTP 201 with a new package ID and new creation and update timestamps. The clone copies package_type and configuration. Package type and configuration cannot be overridden in the request.
Response

Response envelope

package:Package

The requested or resulting package.

Object

Package

iduuid

Package identifier.

namestring

Package display name.

descriptionstring | null

Package description.

package_typeproject | location

Resource type that can use this package.

statusactive | inactive | archived

Current package lifecycle status. Only active packages can be attached to resources or archived.

configurationPackageConfiguration

Normalized feature and capacity configuration.

created_atdatetime

Package creation time.

updated_atdatetime

Most recent package update time.

Object

PackageConfiguration

visibilityobject

Cadence, prompt limit, selected models, model tiers, citations, and sentiment.

diagnosisobject

Diagnosis feature settings.

agentsobject

Content and technical agent settings.

advancedobject

Prompt volume, Google Analytics, and fan-out settings.

pricingobject

Customer access setting.

Object

Visibility configuration

cadencemonthly | weekly | daily

Tracking schedule.

prompt_limitinteger

Maximum tracked prompts.

model_keysstring[]

Selected model keys.

Object

Feature configuration

diagnosis.enabledboolean

Whether Diagnosis, Actions, and Site Audit are enabled.

agents.content_enabledboolean

Whether the content agent is enabled.

agents.technical_enabledboolean

Whether the technical agent is enabled.

advanced.prompt_volume_enabledboolean

Whether prompt-volume analysis is enabled.

advanced.google_analytics_enabledboolean

Whether Google Analytics integration is enabled.

advanced.fanout_enabledboolean

Whether fan-out query analysis is enabled.

pricing.frontend_delivery_enabledboolean

Whether Customer access to hosted Signal UI and redirect login links is enabled.

Request and response

Example requestcURL
curl --request POST \
  --url 'https://api.signal.ceyo.ai/v1/packages/92404fd7-f096-49e9-9ab0-5ed73517d9db/clone' \
  --header 'Authorization: Bearer ceyo_platform_...' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "Growth Weekly Plus",
  "description": "A new package based on Growth Weekly."
}'
Example responseJSON
{
  "package": {
    "id": "1fd73876-e220-4962-924b-a74bdb32481d",
    "name": "Growth Weekly Plus",
    "description": "A new package based on Growth Weekly.",
    "package_type": "project",
    "status": "active",
    "configuration": {
      "visibility": {
        "cadence": "weekly",
        "prompt_limit": 100,
        "model_keys": ["chatgpt", "claude", "perplexity", "gemini"]
      },
      "diagnosis": { "enabled": true },
      "agents": {
        "content_enabled": true,
        "technical_enabled": true
      },
      "advanced": {
        "prompt_volume_enabled": true,
        "google_analytics_enabled": false,
        "fanout_enabled": true
      },
      "pricing": {
        "frontend_delivery_enabled": true
      }
    },
    "created_at": "2026-07-31T10:05:00Z",
    "updated_at": "2026-07-31T10:05:00Z"
  }
}
ErrorsResponse format and status codes
Errors

Error response envelope

errorError

Structured error payload.

Errors

Error

codestring

Stable snake_case code suitable for programmatic handling.

messagestring

Human-readable explanation of the failure.

detailsobject | array | null

Structured validation or request context when available.

request_idstring

Identifier to provide when requesting support.

Example error responseJSON
{
  "error": {
    "code": "invalid_api_key",
    "message": "The Bearer API key is invalid.",
    "details": null,
    "request_id": "req_01K1F8M7QX4R2V9N6Y3Z0A5BCT"
  }
}
Errors

Status codes

400invalid_request

The JSON body or a query parameter is malformed.

401invalid_api_key

The Bearer API key was not provided or is invalid.

403forbidden

The API key cannot perform this operation.

404not_found

The requested package was not found in this workspace.

422validation_failed

One or more request fields are invalid.

429rate_limit_exceeded

Too many requests were made.

POST
/packages/{package_id}/archive

Archives an unattached active package. The request body must be an empty JSON object.

Parameters

Path parameters

package_iduuid

Package identifier.

Required
Request

Request body

{}object

Required empty JSON request body.

200 OKA successful request returns HTTP 200. Only an unattached active package can be archived. A package that is attached, already archived, or not active returns a conflict. An archived package cannot be restored.
Response

Response envelope

package:Package

The requested or resulting package.

Object

Package

iduuid

Package identifier.

namestring

Package display name.

descriptionstring | null

Package description.

package_typeproject | location

Resource type that can use this package.

statusactive | inactive | archived

Current package lifecycle status. Only active packages can be attached to resources or archived.

configurationPackageConfiguration

Normalized feature and capacity configuration.

created_atdatetime

Package creation time.

updated_atdatetime

Most recent package update time.

Object

PackageConfiguration

visibilityobject

Cadence, prompt limit, selected models, model tiers, citations, and sentiment.

diagnosisobject

Diagnosis feature settings.

agentsobject

Content and technical agent settings.

advancedobject

Prompt volume, Google Analytics, and fan-out settings.

pricingobject

Customer access setting.

Object

Visibility configuration

cadencemonthly | weekly | daily

Tracking schedule.

prompt_limitinteger

Maximum tracked prompts.

model_keysstring[]

Selected model keys.

Object

Feature configuration

diagnosis.enabledboolean

Whether Diagnosis, Actions, and Site Audit are enabled.

agents.content_enabledboolean

Whether the content agent is enabled.

agents.technical_enabledboolean

Whether the technical agent is enabled.

advanced.prompt_volume_enabledboolean

Whether prompt-volume analysis is enabled.

advanced.google_analytics_enabledboolean

Whether Google Analytics integration is enabled.

advanced.fanout_enabledboolean

Whether fan-out query analysis is enabled.

pricing.frontend_delivery_enabledboolean

Whether Customer access to hosted Signal UI and redirect login links is enabled.

Request and response

Example requestcURL
curl --request POST \
  --url 'https://api.signal.ceyo.ai/v1/packages/92404fd7-f096-49e9-9ab0-5ed73517d9db/archive' \
  --header 'Authorization: Bearer ceyo_platform_...' \
  --header 'Content-Type: application/json' \
  --data '{}'
Example responseJSON
{
  "package": {
    "id": "92404fd7-f096-49e9-9ab0-5ed73517d9db",
    "name": "Growth Weekly",
    "description": "Weekly visibility and diagnosis for growing brands.",
    "package_type": "project",
    "status": "archived",
    "configuration": {
      "visibility": {
        "cadence": "weekly",
        "prompt_limit": 100,
        "model_keys": ["chatgpt", "claude", "perplexity", "gemini"]
      },
      "diagnosis": { "enabled": true },
      "agents": {
        "content_enabled": true,
        "technical_enabled": true
      },
      "advanced": {
        "prompt_volume_enabled": true,
        "google_analytics_enabled": false,
        "fanout_enabled": true
      },
      "pricing": {
        "frontend_delivery_enabled": true
      }
    },
    "created_at": "2026-07-30T15:05:00Z",
    "updated_at": "2026-07-31T10:12:00Z"
  }
}
ErrorsResponse format and status codes
Errors

Error response envelope

errorError

Structured error payload.

Errors

Error

codestring

Stable snake_case code suitable for programmatic handling.

messagestring

Human-readable explanation of the failure.

detailsobject | array | null

Structured validation or request context when available.

request_idstring

Identifier to provide when requesting support.

Example error responseJSON
{
  "error": {
    "code": "invalid_api_key",
    "message": "The Bearer API key is invalid.",
    "details": null,
    "request_id": "req_01K1F8M7QX4R2V9N6Y3Z0A5BCT"
  }
}
Errors

Status codes

400invalid_request

The JSON body or a query parameter is malformed.

401invalid_api_key

The Bearer API key was not provided or is invalid.

403forbidden

The API key cannot perform this operation.

404not_found

The requested package was not found in this workspace.

409package_not_active | package_in_use

The package is attached to a resource, is already archived, or is not active.

429rate_limit_exceeded

Too many requests were made.