Special Offers API
Create promotions on existing products — "offers of the day", limited time deals or special bundles. Each offer references one or more products from the same business and can be published or kept as a draft.
Base URL
All URLs referenced in the documentation use the following base:
Offer Management
Endpoints for listing, creating, updating, and deleting special offers.
List special offers
Retrieve special offers with pagination and filters.
searchmatches title, description and banner text.is_publishedacceptstrueorfalse.active=truereturns only published offers within their active window.
Retrieve special offers.
curl -X GET "https://api.meetandrock.com/v1/dev/special-offers?page=1&limit=10&active=true" \ -H "Authorization: Bearer YOUR_API_KEY"Create special offer
Create a special offer that references one or more products in your business.
Required fields: title, discount_value, product_ids. Optional: description, banner_text, discount_type (percentage, fixed, price), start_at, end_at, is_published.
Create a special offer linked to existing products.
curl -X POST "https://api.meetandrock.com/v1/dev/special-offers" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "title": "Offer of the Day", "description": "Limited time daily special", "banner_text": "Save 20% today!", "discount_type": "percentage", "discount_value": 20, "start_at": "2026-05-01T00:00:00.000Z", "end_at": "2026-05-01T23:59:59.000Z", "product_ids": ["PROD_1", "PROD_2"], "is_published": true }'Get special offer
Fetch a single offer by id including the linked products with their images and category.
Get a special offer with linked products.
curl -X GET "https://api.meetandrock.com/v1/dev/special-offers/OFFER_ID" \ -H "Authorization: Bearer YOUR_API_KEY"Update special offer
Partially update offer fields. When product_ids is provided, the product list is replaced atomically.
Update an existing offer.
curl -X PUT "https://api.meetandrock.com/v1/dev/special-offers/OFFER_ID" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "title": "Updated title", "discount_value": 30, "product_ids": ["PROD_1"] }'Delete special offer
Permanently remove an offer. The linked products are not deleted.
Delete a special offer.
curl -X DELETE "https://api.meetandrock.com/v1/dev/special-offers/OFFER_ID" \ -H "Authorization: Bearer YOUR_API_KEY"Publishing
Drafts are not visible to customers. Publish or unpublish offers with the dedicated lifecycle endpoints.
Publish offer
Publish a draft offer. Sets is_published to true and stamps published_at.
Publish a draft offer.
curl -X POST "https://api.meetandrock.com/v1/dev/special-offers/OFFER_ID/publish" \ -H "Authorization: Bearer YOUR_API_KEY"Unpublish offer
Move an offer back to draft state.
Move an offer back to draft.
curl -X POST "https://api.meetandrock.com/v1/dev/special-offers/OFFER_ID/unpublish" \ -H "Authorization: Bearer YOUR_API_KEY"Linking products
Use these endpoints to add or remove products on an existing offer without replacing the entire list. All product ids must belong to the same business as the offer.
Attach products
Add additional products to the offer. Existing links are preserved; duplicates are ignored.
Add products to a special offer.
curl -X POST "https://api.meetandrock.com/v1/dev/special-offers/OFFER_ID/products" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "product_ids": ["PROD_3", "PROD_4"] }'Detach products
Remove specific products from the offer.
Remove specific products from an offer.
curl -X DELETE "https://api.meetandrock.com/v1/dev/special-offers/OFFER_ID/products" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "product_ids": ["PROD_3"] }'Filters & pagination
All list endpoints support standard page and limit pagination, returning a pagination object with total, page and limit.
Error responses
400 Bad Request
{
"message": "Some products do not belong to this business: PROD_X"
}404 Not Found
{ "message": "Special offer not found" }