Skip to main content
POST
/
v3
/
orders
Place an order - v3
curl --request POST \
  --url https://api.snappy.com/public-api/v3/orders \
  --header 'Content-Type: application/json' \
  --header 'X-Api-Key: <api-key>' \
  --data '
{
  "billingMethodId": "87654321",
  "variantId": "variant_abc123",
  "recipient": {
    "firstName": "John",
    "lastName": "Doe",
    "email": "john.doe@example.com",
    "phone": "+12133734253"
  },
  "shippingAddress": {
    "address1": "123 Main St",
    "address2": "Apt 4B",
    "city": "New York",
    "provinceCode": "NY",
    "postalCode": "10001",
    "countryCode": "US"
  },
  "idempotencyKey": "order-2026-05-13-abc",
  "metadata": {
    "externalRecipientId": "crm-user-987"
  }
}
'
{
  "data": {
    "id": "G7nR4bD9mK",
    "status": "active",
    "trackingLink": "https://gift.snappy.com/choose/G7nR4bD9mK?utm_source=l&utm_medium=i&utm_campaign=l2fX39ZvaM"
  }
}

Authorizations

X-Api-Key
string
header
required

Company Level Authentication

Include your API key in the X-Api-Key header for every request:

X-Api-Key: YOUR_API_KEY

Headers

snappy-account-id
string

Optional account identifier for swag validation/filtering.

Example:

"acc123456"

snappy-company-id
string

Optional company identifier for swag validation/filtering.

Example:

"cmp123456"

Body

application/json

Request body for placing an order via the Direct Fulfillment integration. The account is identified by the Snappy-Account-Id header.

billingMethodId
string
required

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.

Pattern: ^[A-Za-z0-9]{8,}$
Example:

"87654321"

variantId
string
required

The ID of the specific product variant to order. Use GET /v3/products to browse available products and retrieve variant IDs.

Minimum string length: 1
Example:

"variant_abc123"

recipient
object
required

Order recipient's contact information.

Example:
{
"firstName": "John",
"lastName": "Doe",
"email": "john.doe@example.com",
"phone": "+12133734253"
}
shippingAddress
object
required

Physical shipping address for order delivery.

Example:
{
"address1": "123 Main St",
"address2": "Apt 4B",
"city": "New York",
"provinceCode": "NY",
"postalCode": "10001",
"countryCode": "US"
}
idempotencyKey
string
required

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.

Required string length: 1 - 120
Example:

"order-2026-05-13-abc"

tags
string[]

Optional tags for grouping and filtering orders in reports.

Example:
["q4-campaign", "vip"]
metadata
object

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.

Example:
{
"key1": "value1",
"key2": "value2",
"externalRecipientId": "crm-user-987",
"campaign": "q4-vip"
}

Response

Order placed.

Successful response returned after an order is placed.

data
object
required

Details of the placed order.

Last modified on June 17, 2026