Draft. This page may change before it is final.

Troubleshooting

Your agent is the first line of support. It can call carnival_status and carnival_logs, and every error comes with a code, a hint and a page about it.

First steps

  1. On a result with isError: true, read error.code and error.hint, and the page at error.docs_url. Fix the input and call again; repeat an unchanged call only when error.retryable is true.
  2. For a deploy, carnival_logs with deploy_id shows its steps and its content-check result.
  3. For a site, carnival_status with site shows its status, files and latest deploy, and carnival_logs with site shows its events and which of its links lead to missing files.
  4. Never retry in a loop. When a result gives retry_after_seconds, tell the user and try again after that.

Playbook

Symptom Agent does Typical fix
Deploy returned isError Read error.code/hint; carnival_logs {deploy_id} Fix the input; retry only if retryable (same idempotency_key)
Page or image missing on live site carnival_logs {site} → traffic.top_missing_paths (only paths the site's own files link to) Add the file or fix the relative link; update with site
"Lights are out" (410) carnival_status {site} → expired/ended New deploy (new URL); tell the user. Dashboard Redeploy is for live sites only
suspended / removed carnival_status {site} → status_reason Tell the user; don't republish; appeal via support@carnival.dev (a fair-use stop: its next_step and site.suspended event say it was the traffic, not the content)
No free slot LIVE_SITE_LIMIT_REACHED with live_sites Update an existing site, or the user ends one at the dashboard
DEPLOYS_PAUSED, REJECTION_COOLDOWN, RATE_LIMITED Read retry_after_seconds Tell the user; retry later, never loop

Connecting

Deploy failed

Read error.code and error.hint. The common causes:

Timeouts

Content rejected

CONTENT_REJECTED means the content check stopped the publish, and filter.reasons says why:

A site can also go live with notices in filter.reasons or warnings: Carnival may review it. Apply the fixes as an update (site=<slug>) so it isn't taken down.

After 5 rejections in one day (UTC), publishing pauses for 24 hours: REJECTION_COOLDOWN.

No free slot

LIVE_SITE_LIMIT_REACHED: all 3 live-site slots are in use, and live_sites lists them. Update one of those sites by passing its slug as site (no extra slot), or ask the user to end one at the dashboard. Agents can't end sites.

Page or image missing

carnival_logs with site returns traffic.top_missing_paths: the missing files the site's own pages link to, with counts (other not-found requests count as (other)). The counts are estimates and can trail by about a minute.

An update doesn't show

The lights are out (410)

The site's address says the lights are out: carnival_status with site shows expired or ended. Its files are deleted, and the address can't come back. Publish again without site (a new site, a new URL, 7 new days) and tell the user. The dashboard's Redeploy works on live sites only.

Suspended or removed

carnival_status with site shows status_reason: the category and how to appeal. Tell the user. Don't republish the content, at that address or a new one, and don't open another account. The user can appeal at support@carnival.dev.

If Carnival took the site offline for its traffic (fair use on the free plan), its next_step and its site.suspended event say so: it was the traffic, not the content.

ACCOUNT_SUSPENDED means the whole account can't publish: the user checks Carnival's email or writes to support@carnival.dev.

Paused or rate limited

DEPLOYS_PAUSED (maintenance; live sites are fine), RATE_LIMITED (error.limit names the limit) and REJECTION_COOLDOWN: read error.retry_after_seconds, tell the user when publishing works again (in their own time zone), and try again after that. Never retry in a loop.

For a publish limit, combine the remaining changes into one update. For new_sites_per_day, update an existing site instead. Limits has the numbers.

Still stuck

Email support@carnival.dev with the request_id from the error, the site's URL and what the agent tried. A person replies within 2 business days. See Support.

This page as Markdown