Skip to Content
🚀Agentic Commerce Protocol is now live! Instant Checkout is available in ChatGPT. Learn more →
DocumentationAPI ReferenceAPI Reference

API Reference

Complete reference for all ACP endpoints and data types.

Base URL

https://your-domain.com/acp/v1

Authentication

All requests must include signature headers:

HeaderDescription
signatureHMAC-SHA256 signature (Base64)
timestampUnix timestamp of request
agent-idUnique agent identifier

Endpoints

Create Checkout Session

POST /checkout_sessions

Request Body:

interface CreateSessionRequest { cart_items: CartItem[]; buyer_context?: BuyerContext; currency?: string; // Default: "USD" } interface CartItem { product_id: string; quantity: number; variant_id?: string; } interface BuyerContext { shipping_address?: Address; billing_address?: Address; email?: string; }

Response:

interface CheckoutSession { checkout_session_id: string; state: SessionState; cart: Cart; totals: Totals; shipping_options?: ShippingOption[]; expires_at: string; // ISO 8601 }

Get Session

GET /checkout_sessions/{session_id}

Response: CheckoutSession


Update Session

PATCH /checkout_sessions/{session_id}

Request Body:

interface UpdateSessionRequest { buyer_context?: BuyerContext; selected_shipping_option?: string; }

Response: CheckoutSession


Complete Checkout

POST /checkout_sessions/{session_id}/complete

Request Body:

interface CompleteRequest { payment_data: PaymentData; } interface PaymentData { token: string; // Shared Payment Token provider: string; // "stripe" }

Response:

interface CompletedSession extends CheckoutSession { state: "completed"; order: Order; } interface Order { order_id: string; order_number: string; status: OrderStatus; estimated_delivery?: string; tracking_url?: string; }

Cancel Session

POST /checkout_sessions/{session_id}/cancel

Response: CheckoutSession with state: "cancelled"

Data Types

SessionState

type SessionState = | "not_ready_for_payment" | "ready_for_payment" | "completed" | "cancelled" | "expired";

OrderStatus

type OrderStatus = | "pending" | "confirmed" | "processing" | "shipped" | "delivered" | "cancelled";

Address

interface Address { name: string; line1: string; line2?: string; city: string; state: string; postal_code: string; country: string; // ISO 3166-1 alpha-2 }

Totals

interface Totals { items_base_amount: number; discount?: number; subtotal: number; shipping?: number; tax: number; total: number; }

Error Responses

All errors follow this format:

interface ErrorResponse { error: { code: string; message: string; details?: Record<string, unknown>; }; }

See Error Codes for the complete list.

Rate Limits

TierRequests/minBurst
Standard10020
Premium1000100

Rate limit headers:

  • X-RateLimit-Limit
  • X-RateLimit-Remaining
  • X-RateLimit-Reset

Versioning

The API uses URL path versioning. Current version: v1

Breaking changes will increment the version. Non-breaking additions may occur without version change.

Specification maintained by OpenAI and Stripe

AboutPrivacyTermsRSS

Apache 2.0 · Open Source