Skip to main content
The Write API lets you do from code what you do in the partner cabinet: start, stop and update RevShare campaigns, accept, reject and stop CPL orders, and start delivering to a client’s CPL offer from Find Offers.

Scope

Every write is a thin proxy to the platform: the same ownership checks, limits, cooldowns and validation messages as in the cabinet apply. Nothing here spends money; writes commit delivery, not payment.

Rules

  • Full-access key. The key from Tools -> API must be a Full key. Read-only keys receive error_code 403 with the message This API key is read-only.
  • POST with a JSON body. Send Content-Type: application/json. Form bodies are accepted too.
  • Public ids only. campaign_id is a revc_… id, order_id is a cplo_… id, exactly as the list endpoints return them. Numeric internal ids are rejected with 404.
  • Rate limit: 30 requests per minute per account (shared by all its keys), separate from the 120 per minute for reads. Over the limit you get error_code 429 and a Retry-After header.
  • Every write returns the updated object in data, in the same shape as the matching list endpoint (/api/marketer/revshare/campaigns for campaigns, /api/marketer/cpl/orders for orders), so you can update your local copy without a second request. Some answers also carry a message with the platform’s confirmation text.

Response envelope

All responses return HTTP 200. Check status:

Campaign starts

Campaign starts (revshare/campaigns/start, cpl/campaigns/start) run one at a time per account, the same as in the cabinet. A start sent while another one is still running answers:
Wait a few seconds and retry. Do not retry in a tight loop: the write rate limit counts these attempts.

503: service temporarily unavailable

A write is forwarded to the platform. When the platform does not answer in time you get error_code 503 with message Service is temporarily unavailable. The action may still have been applied. Before repeating a campaign start, check the matching read endpoint (revshare/campaigns with of_account_id, or cpl/orders with client_offer_id) so you do not start the campaign twice.

Example