Zinc API Error Reference

June 28, 2026 · View on GitHub

HTTP Status Codes

CodeMeaning
200Success
201Created
400Bad Request
401Unauthorized
402Payment Required
403Forbidden
404Not Found
409Conflict (duplicate)
422Validation error
500Internal Server Error
502Bad Gateway

Error Response Format

{ "error": { "code": "error_code", "message": "Human-readable message", "details": { "field": "context" } } }

The error object is nested under error — read body.error.code, not body.code. details is null when there's no field-level context.

API Error Codes

General

  • not_found — Resource not found
  • validation_error — Bad/missing parameter (check details)
  • bad_request — Malformed request
  • already_exists — Duplicate (e.g. idempotency key)
  • internal_error — Server-side issue

Authentication

  • unauthorized, forbidden, invalid_token, token_expired

Wallet & Payment

  • insufficient_funds — Low wallet balance (details include required/available in cents)
  • payment_failed, payment_method_required, invalid_payment_method

Order Request

  • invalid_shipping_address — Address validation failed
  • url_unreachable — Product URL inaccessible
  • invalid_variant — Variant not found
  • out_of_stock, shipping_unavailable, non_us_retailer, order_not_cancellable

External

  • external_service_error

Order Processing Error Types

These appear in error_type field on failed orders:

Product

product_not_found, product_out_of_stock, product_unavailable, invalid_product_url, product_variant_required, product_variant_unavailable, product_quantity_unavailable

Price

max_price_exceeded

Cart & Checkout

add_to_cart_failed, cart_empty, checkout_blocked, checkout_failed

Shipping

shipping_address_invalid, shipping_unavailable, shipping_method_unavailable

Payment

payment_declined, payment_method_invalid, payment_failed

Account

login_failed, session_expired, account_locked, account_verification_required

Retailer

retailer_unavailable, retailer_not_supported, retailer_rate_limited

Quantity

quantity_limit_exceeded, order_limit_exceeded