Skip to main content
GET
/
v2
/
products
List Products
curl --request GET \
  --url https://api.example.com/v2/products

List Products

Returns a paginated list of products, ordered by creation date (most recent first). Supports filtering by status, eligibility, and more.

Authentication

Authorization: Bearer glm_test_YOUR_API_KEY

Query Parameters

ParameterTypeDescription
limitintegerNumber of results per page (default: 10, max: 100)
starting_afterintegerCursor for pagination (product ID)
statusenumFilter by status: active, inactive, archived
hsa_fsa_eligiblebooleanFilter by HSA/FSA eligibility (true/false)
merchant_product_idstringFilter by your product ID
created_aftertimestampFilter products created after this date
created_beforetimestampFilter products created before this date

Request

GET /v2/products?limit=10&status=active

Response

{
  "data": [
    {
      "id": 12345,
      "name": "Digital Blood Pressure Monitor",
      "tagline": "FDA-approved automatic BP monitor",
      "price": 4995,
      "currency": "USD",
      "merchant_product_id": "BP-MONITOR-001",
      "status": "active",
      "eligibility": {
        "hsa_fsa_eligible": true,
        "message": "SIGIS verified - Medical device"
      },
      "images": [
        {
          "id": 567,
          "url": "https://cdn.example.com/bp-monitor.jpg",
          "is_primary": true
        }
      ],
      "created_at": "2025-10-18T14:30:00Z"
    },
    {
      "id": 12346,
      "name": "Digital Thermometer",
      "price": 2995,
      "currency": "USD",
      "merchant_product_id": "THERM-001",
      "status": "active",
      "eligibility": {
        "hsa_fsa_eligible": true,
        "message": "SIGIS verified - Medical device"
      },
      "created_at": "2025-10-17T10:00:00Z"
    }
  ],
  "has_more": true,
  "next_cursor": 12346
}

Response Fields

FieldTypeDescription
dataarrayArray of product objects
has_morebooleanWhether more results are available
next_cursorintegerCursor for next page (use as starting_after)

Examples

List All Products

curl https://api.withgale.com/v2/products \
  -H "Authorization: Bearer glm_test_YOUR_API_KEY"

Filter by Status

curl "https://api.withgale.com/v2/products?status=active&limit=50" \
  -H "Authorization: Bearer glm_test_YOUR_API_KEY"

Filter by HSA/FSA Eligibility

curl "https://api.withgale.com/v2/products?hsa_fsa_eligible=true" \
  -H "Authorization: Bearer glm_test_YOUR_API_KEY"

Pagination

Use cursor-based pagination for large datasets. Pass the next_cursor value from the previous response as the starting_after parameter:
curl "https://api.withgale.com/v2/products?limit=100&starting_after=12345" \
  -H "Authorization: Bearer glm_test_YOUR_API_KEY"

Errors

Status CodeError CodeDescription
400invalid_requestInvalid query parameters
401unauthorizedInvalid or missing API key
429rate_limit_exceededToo many requests
Example error:
{
  "error": {
    "code": "invalid_request",
    "message": "Invalid status value",
    "param": "status"
  }
}