Merchants must create products before they can be included in a Checkout. Each product response includes an eligibility_type field with one of:

  • sigis_eligible
  • lmn_eligible
  • vision_eligible
  • not_eligible

Create a Product

POST /v1/products
Content-Type: application/json
Authorization: Bearer <merchant_api_token>
Idempotency-Key: <uuid-v4>

Body

{
  "name": "Blood Pressure Monitor",
  "upc": "001230000",
  "gtin": "00000000000000",
  "category": "medical_device",
  "description": "Bluetooth BP cuff",
  "external_id": "123-abc"
}

Success 201

{
  "product_id": "prod_abc123",
  "name": "Blood Pressure Monitor",
  "eligibility_type": "sigis_eligible",
  "created_at": "2025-06-05T12:00:00Z"
}

List Products

GET /v1/products
Authorization: Bearer <merchant_api_token>

Optional query parameters: limit, starting_after.


Retrieve a Product

GET /v1/products/{product_id}
Authorization: Bearer <merchant_api_token>

Update a Product

PUT /v1/products/{product_id}
Content-Type: application/json
Authorization: Bearer <merchant_api_token>
Idempotency-Key: <uuid-v4>

Pass only the fields you want to change.


Delete a Product

DELETE /v1/products/{product_id}
Authorization: Bearer <merchant_api_token>

Returns 204 No Content on success.


Batch Eligibility Lookup

Send up to 100 product IDs per call.

GET /v1/products/eligibility?ids=prod_1,prod_2,prod_3
Authorization: Bearer <merchant_api_token>

Success 200

{
  "results": [
    { "product_id": "prod_1", "eligibility_type": "sigis_eligible" },
    { "product_id": "prod_2", "eligibility_type": "not_eligible" },
    { "product_id": "prod_3", "eligibility_type": "vision_eligible" }
  ]
}

Subscribe to the productStatusChange webhook to stay in sync with SIGIS updates.