Karauti API documentation
/
Sign in

Product updates

Turn on Send product updates on your Webhooks page and we POST one call per product whenever a product changes — new SKU, cost change, name change, in or out of stock. Set a separate URL there to keep them off your order callback.

{ "event": "product.updated", "data": { "code": "UNIFF25", "name": "25 Diamonds", "game": { "code": "ff", "name": "Free Fire", "region": "BD" }, "supplier": "unipin", "cost": 20, "cost_unit": "UP", "available": true, "connected": true, "kind": "topup", "inputs": [ "user_id" ], "sort": 16, "updated_at": 1788239464 }, "meta": { "unix_timestamp": 1788239464 } }

data is one row of the product list, so the same importer handles both. connected is as of the change; after you link or remove a supplier account, read the list again.

Updates arrive for every supplier. If you imported one supplier, skip callbacks whose data.supplier is not that one.

meta.unix_timestamp

When the product changed, not when we sent it. Store it, and discard any callback older than the one you already hold.

Warning

Without that check you will overwrite good data with stale data. Failures retry at +1m and +5m, so two quick changes can reach you in the wrong order.

product.removed

{ "event": "product.removed", "data": { "code": "UNIFF25" }, "meta": { "unix_timestamp": 1788239464 } }

Stop selling it. Orders against it are rejected.

Verifying

Signed like an order callback — see Verifying. The t in the signature is when we signed this attempt, so on a retry it is later than meta.unix_timestamp. t guards replay; meta.unix_timestamp tells you how old the data is.

Answering

You returnWhat we do
2xxAccepted.
Anything elseRetried at +1m and +5m, then dropped. Catch up with updated_since.
Note

Callbacks come from 103.235.196.125. Allowlist it if you like, but verify the signature regardless.