Skip to main content
Publish a product from the test environment to production. This is a one-way, first-publish-only operation that copies the current test version to production.
POST /v1/actions/onetime-product/publish-product
Authentication: API Key
Do not include the X-Environment header for this endpoint. Publishing is always one-way from test to production.

Request Body

FieldTypeRequiredDescription
idstringYesProduct ID (Short ID format PROD_xxx)

Example Request

const { product } = await client.onetimeProducts.publish({
  id: "PROD_3kF9mNpQrStUvWxYz1A2bC",
});

Success Response (200)

{
  "data": {
    "id": "PROD_3kF9mNpQrStUvWxYz1A2bC",
    "storeId": "STO_2aUyqjCzEIiEcYMKj7TZtw",
    "prodVersionId": "PROD_7dG4hJkLmNpQrStUvWxYz1",
    "testVersionId": "PROD_7dG4hJkLmNpQrStUvWxYz1",
    "prodStatus": "active",
    "testStatus": "active",
    "createdAt": "2026-01-15T10:30:00.000Z",
    "updatedAt": "2026-01-15T12:00:00.000Z",
    "version": {
      "id": "PROD_7dG4hJkLmNpQrStUvWxYz1",
      "productId": "PROD_3kF9mNpQrStUvWxYz1A2bC",
      "versionNumber": 1,
      "name": "Premium Template Pack",
      "description": "50 premium design templates for your next project.",
      "prices": {
        "USD": { "amount": 4900, "taxIncluded": false, "taxCategory": "digital_goods" },
        "EUR": { "amount": 4500, "taxIncluded": true, "taxCategory": "digital_goods" }
      },
      "media": [
        { "type": "image", "url": "https://example.com/templates-preview.png", "alt": "Template preview" }
      ],
      "successUrl": "https://example.com/thank-you",
      "metadata": { "category": "design", "fileCount": "50" },
      "createdAt": "2026-01-15T10:30:00.000Z"
    }
  }
}

Response Fields

Same as Create Product response.
Only the first publish is supported. Once a product has a production version, this endpoint cannot be used again for the same product. To update the production version after initial publish, use the Update Product endpoint with the X-Environment: prod header.

Error Responses

StatusErrorDescription
400Missing required field: idid not provided
400No test version foundProduct has no version in the test environment
400Test version is not activeThe test version status is inactive
400Production already has a versionProduct has already been published to production
404Product not foundProduct does not exist or is not accessible