Skip to main content
POST
/
v2
/
products
Create Product
curl --request POST \
  --url https://api.example.com/v2/products

Create Product

Create a new product in your catalog. Gale automatically checks HSA/FSA eligibility via the SIGIS database using the product’s UPC code or name.

Authentication

Authorization: Bearer glm_test_YOUR_API_KEY

Request Body

{
  "name": "Digital Blood Pressure Monitor",
  "tagline": "FDA-approved automatic BP monitor",
  "description": "Clinically validated blood pressure monitor with Bluetooth connectivity. Features automatic inflation, irregular heartbeat detection, and memory for 200 readings. Includes carrying case and 4 AAA batteries.",
  "price": 4995,
  "currency": "USD",
  "merchant_product_id": "BP-MONITOR-001",
  "upc_code_or_gtin": "14567890123456",
  "images": [
    "https://cdn.example.com/bp-monitor-1.jpg",
    "https://cdn.example.com/bp-monitor-2.jpg"
  ],
  "metadata": {
    "category": "medical_devices",
    "brand": "HealthTech Pro",
    "weight": "0.5 lbs"
  }
}

Parameters

All monetary amounts are integers in cents (e.g., 4995 = $49.95).
ParameterTypeRequiredDescription
namestringYesProduct name (max 255 chars)
taglinestringNoShort description (max 255 chars)
descriptionstringNoFull product description (supports markdown)
priceintegerYesPrice in cents (e.g., 4995 = $49.95)
currencystringYesISO 4217 currency code (e.g., “USD”)
merchant_product_idstringNoYour reference ID for this product
upc_code_or_gtinstringNoUPC or GTIN barcode (used for eligibility check)
imagesarrayNoArray of image URLs (max 10)
metadataobjectNoCustom key-value pairs

Response

{
  "id": 12345,
  "name": "Digital Blood Pressure Monitor",
  "tagline": "FDA-approved automatic BP monitor",
  "description": "Clinically validated blood pressure monitor with Bluetooth connectivity. Features automatic inflation, irregular heartbeat detection, and memory for 200 readings. Includes carrying case and 4 AAA batteries.",
  "price": 4995,
  "currency": "USD",
  "merchant_product_id": "BP-MONITOR-001",
  "upc_code_or_gtin": "14567890123456",
  "status": "active",
  "eligibility": {
    "hsa_fsa_eligible": true,
    "message": "SIGIS verified - Medical device"
  },
  "images": [
    {
      "id": 567,
      "url": "https://cdn.example.com/bp-monitor-1.jpg",
      "is_primary": true
    },
    {
      "id": 568,
      "url": "https://cdn.example.com/bp-monitor-2.jpg",
      "is_primary": false
    }
  ],
  "metadata": {
    "category": "medical_devices",
    "brand": "HealthTech Pro",
    "weight": "0.5 lbs"
  },
  "created_at": "2025-10-18T14:30:00Z",
  "updated_at": "2025-10-18T14:30:00Z"
}
See Product Object for complete field descriptions.

Examples

Basic Product

curl -X POST https://api.withgale.com/v2/products \
  -H "Authorization: Bearer glm_test_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Digital Thermometer",
    "description": "Fast and accurate digital thermometer",
    "price": 2995,
    "currency": "USD"
  }'

Complete Product with UPC

curl -X POST https://api.withgale.com/v2/products \
  -H "Authorization: Bearer glm_test_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Premium Blood Pressure Monitor",
    "tagline": "Professional-grade BP monitoring",
    "description": "Clinically validated automatic blood pressure monitor with advanced features.",
    "price": 4995,
    "currency": "USD",
    "merchant_product_id": "BP-MONITOR-PRO",
    "upc_code_or_gtin": "14567890123456",
    "images": [
      "https://cdn.example.com/bp-monitor-1.jpg",
      "https://cdn.example.com/bp-monitor-2.jpg"
    ],
    "metadata": {
      "category": "medical_devices",
      "brand": "HealthTech",
      "features": "bluetooth,memory,irregular_detection"
    }
  }'

Webhooks

Product creation triggers the following webhook event:
{
  "type": "product.created",
  "data": {
    "id": 12345,
    "name": "Digital Blood Pressure Monitor",
    "eligibility": {
      "hsa_fsa_eligible": true,
      "message": "SIGIS verified - Medical device"
    }
  }
}
See Webhooks Reference for details.

Errors

Status CodeError CodeDescription
400invalid_requestMissing or invalid parameters
400invalid_pricePrice must be positive integer
400invalid_currencyUnsupported currency code
401unauthorizedInvalid or missing API key
422validation_errorField validation failed
429rate_limit_exceededToo many requests
Example error:
{
  "error": {
    "code": "validation_error",
    "message": "Invalid product data",
    "details": [
      {
        "field": "name",
        "message": "Name is required"
      },
      {
        "field": "price",
        "message": "Price must be a positive integer"
      }
    ]
  }
}