Support

About the Shopping API

View as Markdown

Authentication, required headers, the checkout state machine, and the error model for the Shopping API.

Overview

The Shopping API lets platforms browse GoDaddy products, create checkout sessions for buyers, and retrieve completed orders.

Beta API

The Shopping API is in beta. Its schemas and supported product flows might change before general availability.

How the API is structured

Three resource groups cover the full purchase flow:

Resource groupBase pathPurpose
Catalog/v1/shopping/catalog/...Browse products, retrieve pricing and variant detail
Checkout/v1/shopping/checkout-sessions/...Create sessions, attach buyer identity and payment, complete the purchase
Orders/v1/shopping/orders/...Retrieve completed order detail after a checkout completes

A typical integration searches the catalog, creates a checkout, selects payment, accepts required agreements, completes the checkout to place an order, and retrieves the order.

Authentication

Every request needs an Authorization header. Generate a Personal Access Token (PAT) with the scopes you need.

ScopeGrants access to
shopping.catalog:readCatalog search, lookup, and product detail
shopping.checkout:executeCreate, update, and complete checkout sessions
shopping.order:readRetrieve completed orders

Go to How to authenticate for PAT generation and storage.

Required headers

Every Shopping API request requires these headers in addition to Authorization:

HeaderRequiredDescription
Request-IdYesA unique identifier for tracing the request. Use a UUID per call.
Idempotency-KeyYes — on all checkout write operationsRequired on POST /checkout-sessions, PUT /checkout-sessions/{id}, and POST /checkout-sessions/{id}/complete. Prevents duplicate operations on retry. Not required on catalog or order read operations.

The following example sends the common headers:

Authorization: Bearer $GODADDY_PAT
Request-Id: $(uuidgen)

Checkout state machine

A checkout session uses these states during a successful purchase:

Rendering diagram...
StateMeaning
incompleteMissing a selected eligible payment instrument or required line-item fields.
ready_for_completeAll required fields are present and an eligible payment instrument is selected.
completedThe purchase created an order. The response includes order.id and order.permalink_url.

After completion, GET /orders/{id} might return 404 order_not_found while the order read model updates. Retry the order read with bounded backoff.

GET /checkout-sessions/{id} might return 404 checkout_not_found after completion as completed sessions might be cleared. Use the completion response's order.id as the purchase confirmation.

Error responses

The API usually uses HTTP status codes for broad error categories and messages[].code for specific conditions. A 2xx response can also contain an error envelope:

StatusMeaningExample codes
400The request is missing or has invalid fields.invalid_request, validation_error
401The credential is missing, invalid, or expired.Authentication codes can vary by edge.
403The credential lacks the required scope.insufficient_scope
404The product, checkout, or order does not exist or is not visible yet.product_not_found, checkout_not_found, order_not_found
422The request is valid JSON but cannot be processed.item_not_found, invalid_domain, invalid_term, unsupported_currency
429The caller exceeded a rate limit.Check Retry-After before retrying.

Error responses use the error_response envelope:

{
  "ucp": { "version": "2026-04-08", "status": "error" },
  "messages": [
    {
      "type": "error",
      "code": "invalid_request",
      "content_type": "plain",
      "content": "line_items[0].item.id is required."
    }
  ]
}

Successful responses can omit ucp.status. Error responses set it to error. Check the HTTP status and ucp.status on every response, then match messages[].code; do not match the human-readable content.

Go to Handle errors for GoDaddy's standard error handling guidance.

Agent & Automation Notes

PermissionsShopping Catalog, Shopping Checkout, Shopping Orders
Scopesshopping.catalog:read, shopping.checkout:execute, shopping.order:read
Rate limitRate-limited per credential. Go to /docs/api-users/rate-limits for current values.
On failureFor 401 or 403 responses, verify the credential, scopes, and expiry. Retry an unchanged checkout write with its original Idempotency-Key. Use a new key after changing the request.

Last updated on

How is this guide?

On this page