Skip to main content
POST /voyage starts or joins a voyage for an ecommerce domain. A voyage crawls the site, builds product extraction, and publishes the resulting catalog. Once the voyage completes, its products are available through the regular search and lookup endpoints. Voyages are shared by domain. If another organization already requested the same domain, or the domain already has a live catalog, the API returns the existing voyage instead of starting a duplicate. Responses never identify the other organizations participating in a shared voyage.

Request

Body parameters

string
required
Registrable domain or full public URL. Octogen lowercases the host and removes its scheme, path, port, and leading www. before starting the voyage.

Example

Response

The response uses the same VoyageTask shape for both success cases:
string
required
Stable task identifier. Pass it to GET /voyage/{task_id} to check progress.
string
required
Normalized registrable domain.
"queued" | "running" | "in_review" | "completed" | "failed" | "cancelled"
required
Machine-readable voyage status.
"discovering_site" | "sampling_products" | "building_extraction" | "in_review" | "publishing_catalog" | "complete" | "failed"
required
Current pipeline phase.
string
required
Human-readable label for the current phase.
integer
required
Monotonic progress value from 0 to 100.
datetime | null
When the voyage was created.
datetime | null
When the voyage state was last updated.
datetime | null
When the voyage reached a terminal state.
object | null
Populated when the voyage fails, with a stable code and safe message.
object | null
Populated after the catalog is live. Includes catalog, productCount, and the supported search and lookup endpoint paths.

Example response

Repeating the request while a voyage is in progress returns the same task and does not create a duplicate.

Errors

Only a newly started voyage consumes voyage quota. Joining an existing voyage consumes neither concurrent nor monthly quota.