get_publish_status

What buyers see, unpublished changes, and what blocks a publish.

GET/v1/guides/{productId}/publish
MCP tool get_publish_statusScope: readStableSince 2026-09-29
Markdown

Whether the guide is live, the live version and when it went live, whether the draft holds changes buyers do not see yet (and the last edit time), whether a publish is still building (pendingSince), blocking: the publish gates, the same check publish_changes enforces, and warnings that do not block (facts past their review-by date, link problems). Read it before publish_changes, and poll it afterwards until pendingSince is null and published.version went up. Any key can read it.

curl "https://sceniq.earth/api/v1/guides/j5738kd1q9x2m7v4c6b8n0p3r5t1w9y2/publish" \
  -H "Authorization: Bearer $SCENIQ_API_KEY"

Path parameters

Returns

200 OK with PublishStatus: What buyers see and what a publish would do.

  • productIdstring · guide idrequired

    The guide's id.

  • namestringrequired

    The guide's title.

  • statusstringrequired

    draft, published or archived.

    draftpublishedarchived
  • livebooleanrequired

    true when the guide is on sale.

  • publishedobject or nullrequired

    What buyers see, or null before the first build.

    Show 2 fields
    • publishedAtnumberrequired

      When the live version went live (Unix time in milliseconds).

    • versionnumber or nullrequired

      The live version's number.

  • hasUnpublishedChangesbooleanrequired

    true when the draft holds changes buyers do not see yet.

  • lastEditAtnumber or nullrequired

    When the draft last changed.

  • pendingSincenumber or nullrequired

    When a publish started building; null when none is running.

  • blockingarray of PublishGaterequired

    The publish gates that are open.

    Show 2 fieldsof PublishGate
    • codestringrequired

      Which gate is open.

      agreement_outdatedno_spotsmissing_coordinatesmissing_photosno_price
    • messagestringrequired

      What to fix, in plain words.

  • warningsarray of objectsrequired

    Problems that do not block: review_due, stale_facts, link_problems.

    Show 2 fields
    • codestringrequired

      A stable code for the warning (see the readiness guide for the list).

    • messagestringrequired

      What it means, in plain words.

  • canPublishChangesbooleanrequired

    true when publish_changes would queue a build now.

  • nextStepstringrequired

    One sentence on what to do next.

  • reviewUrlstringrequired

    The guide in the studio.

Response 200
{
  "productId": "j5738kd1q9x2m7v4c6b8n0p3r5t1w9y2",
  "name": "American West: Parks at First Light",
  "status": "published",
  "live": true,
  "published": {
    "publishedAt": 1790241240000,
    "version": 3
  },
  "lastEditAt": 1790586840000,
  "blocking": [],
  "warnings": [
    {
      "code": "link_problems",
      "message": "1 link(s) look dead, parked or redirected; see get_link_report"
    }
  ],
  "reviewUrl": "https://creators.sceniq.earth/products/j5738kd1q9x2m7v4c6b8n0p3r5t1w9y2",
  "hasUnpublishedChanges": true,
  "pendingSince": null,
  "canPublishChanges": true,
  "nextStep": "Ready. Call publish_changes only when the creator asked you to publish."
}

Errors

Every error is { error: { code, message } }. Act on the code.

  • 400invalid_argumentA required field is missing, a field is unknown, or a value does not match its type (the Convex validator's path and value are in the message).
  • 401unauthenticatedThe request carries no key. Send it as Authorization: Bearer sk_sceniq_... (or X-Api-Key).
  • 401invalid_api_keyThe key is unknown, revoked or expired.
  • 403forbiddenThe key belongs to a creator account that is no longer active.
  • 404not_foundThe id does not exist or belongs to another creator. The two answers are identical on purpose, so ids never reveal what exists.
  • 429rate_limitedOver a limit: requests per key per minute, per creator per hour, uploads per key per minute, or check_links per guide per hour.
  • 500internal_errorAn unexpected failure. The message is hidden on purpose.