Get product by ID
Retrieves product information including all associated prices. Response shape is identical to the `product.*` webhook payload. For per-price usage counts, call `GET /products/:id/stats`.
Retrieves product information including all associated prices. Response shape is identical to the product.* webhook payload. For per-price usage counts, call GET /products/:id/stats.
Authorization
api-key API key for merchant integrations. Send as Authorization: Bearer <your key>.
In: header
Path Parameters
Product ID
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/products/string"{ "id": "prod_abc123", "object": "product", "name": "Premium Plan", "description": "string", "image": "string", "unitLabel": "string", "active": true, "isSystemCreated": false, "metadata": { "property1": null, "property2": null }, "defaultPriceId": "string", "merchantId": "merch_xyz789", "prices": [ { "id": "price_abc123", "object": "price", "name": "string", "description": "string", "currency": "EGP", "unitAmount": 0, "type": "ONE_TIME", "recurring": {}, "customUnitAmount": {}, "stock": 0, "startDate": "string", "expirationDate": "string", "active": true, "createdAt": "string", "updatedAt": "string", "productId": "string" } ], "createdAt": "string", "updatedAt": "string"}Update a payment link PATCH
Partially updates an existing payment link. Only provided fields will be updated. Features: - Partial updates: only send fields you want to update - Updates line items with adjustable quantities (if provided, replaces all existing line items) - Updates custom fields (if provided, replaces all existing custom fields) - Updates after-completion settings (if provided, replaces existing settings) - Recalculates amount from line items when line items are updated - Validates currency consistency across line items when line items are updated Notes: - If `lineItems` is provided, all existing line items are replaced - If `customFields` is provided, all existing custom fields are replaced - If `customFields` is an empty array, all custom fields are removed - `expiresAt` can be set to `null` to remove expiration
Update product PATCH
Updates product information. Can update product data fields, default price, and image. - The `defaultPrice` field should be the ID of the Price object to set as the default price for this product - The `image` field should be a URL string (use the `/upload-url` endpoint to get a one-time upload URL first)