Skip to content
Reponse.ai LogoDocs
DocsAPISDKsGuides

Search Documentation

Search for an article...

Getting Started

  • Overview
  • Architecture
  • Installation
  • Authentication
  • First Request

Products & Collections

  • Products — List
  • Products — Get
  • Products — Metafields
  • Collections — List
  • Collections — Get
  • Collections — Products

Cart & Checkout

  • Cart — Create
  • Cart — Get
  • Cart — Add Item
  • Cart — Update Item
  • Cart — Remove Item
  • Cart — Apply Promotion
  • Checkout — Stripe
  • Checkout — Payment Intent
  • Checkout — ACP

Orders & Fulfillment

  • Orders — Create
  • Orders — Get
  • Orders — Confirm
  • Orders — Cancel
  • Orders — Fulfill
  • Orders — Refund

Commerce

  • Inventory — Get
  • Inventory — Update
  • Shipping — Rates
  • Discounts — List
  • Discounts — Create
  • Discounts — Validate
  • Subscriptions — Manage

Loyalty & Gift Cards

  • Loyalty — Balance
  • Loyalty — Redeem
  • Loyalty — Referral
  • Gift Cards — List
  • Gift Cards — Redeem

Tickets & Support

  • Tickets — List
  • Tickets — Create
  • Tickets — Reply

Platform

  • Product Feed — JSON
  • Product Feed — CSV
  • Theme — Get
  • Approvals — Execute
  • Approvals — Reject
  • Geocode

SDKs

  • SDK Overview
  • TypeScript SDK
  • React Hooks

Guides

  • Chat Widget
  • Shopify Sync
  • Storefront Starter
  • Loyalty Program
  • Discounts & Promotions
  • Subscriptions
  • Klaviyo Integration
  • Custom Domains
  • Agentic Commerce (ACP)
  • A2A Protocol
  • AI Engines
  • MCP Server

Webhooks

  • Webhooks Overview
  • Events Reference
  • Shopify Webhooks
  • Stripe Webhooks
  • Reviews (Stamped / Trustpilot)
  • Logistics
  • Email Inbound

Resources

  • Environment Variables
  • Rate Limits
  • Changelog
DocsGetting StartedAuthentication

Authentication

How to authenticate with the Reponse API.

3 min read/Last updated Jul 22, 2026
On this page

Overview

The Reponse API uses Bearer authentication. Every request must include your workspace API key in the `Authorization` header. Keys are scoped to a single workspace and grant access to all resources within that workspace.

Prerequisites

  • A Reponse account with at least one workspace
  • An API key generated from the dashboard

Step 1 — Generate an API Key

Navigate to **Settings → API Keys** in your workspace dashboard. Click **Create key**, give it a label (e.g. `production-backend`), and copy the value immediately — it will not be shown again.

Step 2 — Include the Key in Requests

Pass the key as a Bearer token in the `Authorization` header:

Authorization: Bearer <your_api_key>

cURL Example

bash
curl -X GET https://api.reponse.ai/v1/catalog/products \
  -H "Authorization: Bearer rp_live_abc123..."

TypeScript Example

typescript
const response = await fetch("https://api.reponse.ai/v1/catalog/products", {
  headers: {
    Authorization: `Bearer ${process.env.REPONSE_API_KEY}`,
  },
});

Key Types

PrefixEnvironmentDescription
rp_test_SandboxOperates on test data. Safe for development.
rp_live_ProductionFull access to live workspace data.

Test keys return realistic responses but never mutate production data. Use them during development and in CI pipelines.

Rate-Limit Headers

Every response includes rate-limit metadata so your application can self-throttle:

HeaderDescription
X-RateLimit-LimitMaximum requests allowed in the current window.
X-RateLimit-RemainingRequests remaining before throttling.
X-RateLimit-ResetUnix timestamp when the window resets.
Retry-AfterSeconds to wait (present only on 429 responses).

Key Rotation

You can have up to five active keys per workspace. To rotate a key:

  1. Create a new key in the dashboard.
  2. Deploy the new key to your servers.
  3. Revoke the old key once all traffic uses the new one.

Revoked keys return `401 Unauthorized` immediately.

Security Best Practices

  • Never expose live keys in client-side code. Use them only from a server or proxy requests through your backend.
  • Store keys in environment variables (REPONSE_API_KEY), not in source control.
  • Use test keys (rp_test_) for local development and CI.
  • Rotate keys periodically and after any team-member departure.

Storefront Public Auth

Storefront applications (e.g. the Next.js starter) can access **read-only catalog endpoints** and **shopping operations** (carts, checkout, shipping) without an API key by passing a `x-workspace-id` header instead.

This keeps the onboarding frictionless: merchants only need their Workspace ID to launch a storefront. Sensitive admin endpoints (orders management, inventory writes, CRM) still require a full API key.

How it Works

Pass your Workspace ID in the `x-workspace-id` header:

bash
curl -X GET https://api.reponse.ai/v1/products \
  -H "x-workspace-id: your-workspace-uuid"

Or as a query parameter:

GET https://api.reponse.ai/v1/products?workspace_id=your-workspace-uuid

Public Endpoints

The following endpoints accept `x-workspace-id` authentication:

EndpointMethodsDescription
/v1/productsGETList products
/v1/products/:idGETProduct detail
/v1/collectionsGETList collections
/v1/collections/:handleGETCollection detail
/v1/collections/:handle/productsGETProducts in a collection
/v1/cartsPOSTCreate cart
/v1/carts/:idGET, PATCHRead/update cart
/v1/carts/:id/itemsPOSTAdd items
/v1/carts/:id/items/:lineIdPUT, DELETEUpdate/remove items
/v1/carts/:id/promotionsPOST, DELETEApply/remove promotions
/v1/checkout/*POSTStripe, intent, ACP checkout
/v1/shipping/ratesGETCalculate shipping
/v1/discounts/validatePOSTValidate a discount code
/v1/policiesGETLegal policies
/v1/themeGETStorefront theme config

All other endpoints require a Bearer API key.

Rate Limits

Public-auth requests are rate-limited per IP address:

TierLimitApplies to
Read120 requests/minuteGET endpoints
Write30 requests/minutePOST, PUT, PATCH, DELETE
Checkout5 requests/5 minutes/checkout/* endpoints

Requests authenticated with a Bearer API key are not rate-limited.

SDK Usage

The `@reponseai/sdk` supports both authentication modes:

typescript
import { Reponse, client } from "@reponseai/sdk";

// Option A: API key auth (admin/backend)
const reponse = new Reponse({ apiKey: process.env.REPONSE_API_KEY! });

// Option B: Public auth (storefront)
client.setConfig({
  baseUrl: "https://reponse.ai/api",
  headers: { "x-workspace-id": process.env.NEXT_PUBLIC_WORKSPACE_ID! },
});

Troubleshooting

IssueSolution
401 UnauthorizedVerify the key is correct and has not been revoked.
403 ForbiddenThe key does not have access to the requested workspace.
429 Too Many RequestsYou exceeded the rate limit. Wait for Retry-After seconds.
Key not shown after creationKeys are displayed only once. Generate a new one if lost.
PreviousInstallation
NextFirst Request