Offers
Create offer
Creates a pending offer without publishing it.
POST
/offersoffers:writeBEHAVIOR
The change is validated and persisted in the key account before responding. Query the returned resource as the source of truth.
EFFECT
It can change the resource and emit the corresponding domain event.
REPETITION
On network failure, confirm the resource status before retrying. Automatically redo only 429 and 5xx with backoff and jitter.
Request
urlstring · bodyOriginal HTTPS URL for the product.uri · maxLength 2000mandatorytitlestring · bodyPublic title of the offer.minLength 3 · maxLength 240mandatorymarketplacestring · bodySource marketplace.maxLength 40optionalpricenumber · bodyCurrent price.optionaloriginal_pricenumber · bodyPrevious price.optionalcurrencystring · bodyISO 4217 currency.minLength 3 · maxLength 8 · default BRLoptionalimagestring · bodyHTTPS URL of the image.urioptionalstorestring · bodyStore name.optionalcategorystring · bodyCategory.optionalcouponstring · bodyCoupon code.optionalcopystring · bodyEditorial text of the offer.maxLength 6000optionalstatusstring · bodyCurated status.optionalAuthorization
Bearer ach_live_...Accept
application/jsonScope
offers:writeExecutable example
curl
curl -X POST 'https://achadu.com/api/v1/offers' \
-H 'Authorization: Bearer ach_live_...' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data '{
"url": "https://example.com/product",
"title": "Air fryer 5L",
"marketplace": "string",
"price": 329.9,
"original_price": 329.9
}'Response and errors
Every response includes request_id. Lists add pagination; mutable resources return the persisted state after the operation.
201 application/json
{
"data": {
"id": "off_01J...",
"marketplace": "amazon",
"title": "Air fryer 5L",
"url": "https://example.com/product",
"price": 329.9,
"currency": "BRL",
"review_status": "pending",
"created_at": "2026-08-31T18:20:00.000Z"
},
"created": true,
"request_id": "req_01J..."
}201Resource created and persisted.400Invalid parameter, body or transition.401Missing, invalid, expired or revoked key.402The account plan does not release this interface.403A chave precisa do escopo offers:write.404Feature does not exist in this account.409The current state prevents this operation.413The JSON body exceeds 128 KB.429The 120 requests per minute window has been exceeded.