Partial deduct
Hard rate limit: 1 request / 5 seconds per API client (money_write bucket).
Requires Idempotency-Key (same key within 24h replays first response).
Each item also requires unique_id UUID stored on the row; reuse → 409 DUPLICATE_UNIQUE_ID.
Failed requests also count. Over limit → 429 RATE_LIMITED + Retry-After.
Scope: ad_accounts:deduct.
Active accounts only; amount <= 60% of balance; HK/Package blocked.
Each item meta_id is the Meta ad account id (act_ prefix optional). Each item requires unique_id; reuse → 409 DUPLICATE_UNIQUE_ID.
Webhook
We POST this JSON to the webhook_url saved in Developer Settings. This is not an endpoint you call.
unique_id is the item id from the request. status is success or fail. reason is present on fail only.(api_client, unique_id, type) for about 24 hours. Any 2xx from your URL counts as received.type is deduct and status is success. After an admin denies, status is fail.{ "type": "deduct", "unique_id": "550e8400-e29b-41d4-a716-446655440002", "status": "success" }
{ "type": "deduct", "unique_id": "550e8400-e29b-41d4-a716-446655440002", "status": "fail", "reason": "denied" }