Place order
Use this endpoint to create a new order for a specific product variant on behalf of a recipient via the Direct Fulfillment integration. Use this when you already know the recipient’s shipping address and the exact variant to ship - V3 collapses gift creation and order placement into a single idempotent call.
Required fields:
billingMethodId- the Billing Method that will pay for the order. Must belong to the specified Account. Use GET /v3/billing-methods to discover available methods.variantId- the specific product variant to order. Use GET /v3/products to browse variants.recipient- recipient contact information. Requires firstName, lastName, email, and phone (E.164 format).shippingAddress- physical shipping address. Requires address1, city, provinceCode (2-3 uppercase letters), postalCode, and countryCode (ISO 3166-1 alpha-2).idempotencyKey- a stable, caller-generated key (1-120 characters). Replaying the same request with the same key returns the original order without creating a duplicate.
Optional fields:
accountId- the Account placing the order. May be supplied here in the body or via the Snappy-Account-Id header (header takes precedence when both are provided).tags- array of strings for grouping orders in reports (e.g. [“q4-campaign”, “vip”]).metadata- key-value object for caller-supplied passthrough data. Up to 50 pairs; keys up to 40 chars; values up to 500 chars.Snappy-Company-Idheader - optional company scoping.
Behavior Notes:
- The response is minimal: . Use GET /v3/orders/ to retrieve the full Order with line items, fulfillments, and tracking detail.
statusis always active immediately after a successful placement.- The Billing Method is debited on successful order creation. If it has insufficient funds at the time of the request, the order is not processed (422).
- Returns
422for business-rule violations (insufficient funds, variant unavailable in the recipient’s country, variant not found, etc.). - Returns
404if the referencedaccountId,billingMethodId, orvariantIddoes not exist or is not accessible to the calling Company. address2on the shipping address is optional but recommended (apartment, suite, floor, etc.) - incomplete addresses are a leading cause of fulfillment failures.
Permissions
- Requires:
gifts:createororders:create
Authorizations
Company Level Authentication
Include your API key in the X-Api-Key header for every request:
X-Api-Key: YOUR_API_KEYHeaders
Optional account identifier for swag validation/filtering.
"acc123456"
Optional company identifier for swag validation/filtering.
"cmp123456"
Body
Request body for placing an order via the Direct Fulfillment integration. The account is identified by the Snappy-Account-Id header.
The ID of the billing method that will pay for the order. Must belong to the specified account. Contact your Snappy account manager to retrieve your billing method IDs.
^[A-Za-z0-9]{8,}$"87654321"
The ID of the specific product variant to order. Use GET /v3/products to browse available products and retrieve variant IDs.
1"variant_abc123"
Order recipient's contact information.
{
"firstName": "John",
"lastName": "Doe",
"email": "john.doe@example.com",
"phone": "+12133734253"
}Physical shipping address for order delivery.
{
"address1": "123 Main St",
"address2": "Apt 4B",
"city": "New York",
"provinceCode": "NY",
"postalCode": "10001",
"countryCode": "US"
}A unique key used to prevent duplicate orders. If a request with the same key has already succeeded for this company, the original order is returned without creating a duplicate. Use a stable, caller-generated identifier such as your internal order ID.
1 - 120"order-2026-05-13-abc"
Optional tags for grouping and filtering orders in reports.
["q4-campaign", "vip"]Optional custom key-value pairs attached to the order. Use this to store additional information such as externalRecipientId for correlating with your internal systems. Maximum 50 pairs, keys up to 40 characters, values up to 500 characters.
{
"key1": "value1",
"key2": "value2",
"externalRecipientId": "crm-user-987",
"campaign": "q4-vip"
}Response
Order placed.
Successful response returned after an order is placed.
Details of the placed order.