API Reference
Complete reference for all ACP endpoints and data types.
Base URL
https://your-domain.com/acp/v1Authentication
All requests must include signature headers:
| Header | Description |
|---|---|
signature | HMAC-SHA256 signature (Base64) |
timestamp | Unix timestamp of request |
agent-id | Unique agent identifier |
Endpoints
Create Checkout Session
POST /checkout_sessionsRequest 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}/completeRequest 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}/cancelResponse: 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
| Tier | Requests/min | Burst |
|---|---|---|
| Standard | 100 | 20 |
| Premium | 1000 | 100 |
Rate limit headers:
X-RateLimit-LimitX-RateLimit-RemainingX-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.