Skip to main content
POST
Approve a PENDING submission. For non-retainer campaigns, approval creates one CAMPAIGN_REWARD earning in READY_FOR_PAYMENT and queues the partner approval email. Requires write:affiliates. Foreign-team IDs return 404. The same operation is available through the affonso_approve_campaign_submission MCP tool.

Path Parameters

string
required
Encoded campaign id
string
required
Encoded submission id. No public REST endpoint, MCP tool, or webhook lists campaign submissions or returns their ids, so get it from the submission in Affonso. This endpoint returns it as id.

Body Parameters

The body is optional. Unknown body fields are rejected.
number
Reward amount. Required for custom and range campaigns. Minimum 0.01, maximum 999,999.99. The amount is not checked against the published reward_amount_min / reward_amount_max of a range campaign. Ignored for flat_rate (the campaign’s reward_amount is used) and retainer campaigns.
boolean
Only applies when this approval reaches the campaign’s max_budget and closes the campaign. When true, all PENDING applications are rejected. When omitted or false, they stay open.

Response

Returns the approved submission object.
boolean
Always true for successful responses
object
The submission.

Earning

For flat_rate, custom, and range campaigns, approval creates one earning in the same transaction:
  • earning_type is CAMPAIGN_REWARD, with status READY_FOR_PAYMENT and no hold period.
  • The amount is the approved reward amount, in your team’s currency.
  • The earning’s description is the campaign name.
Retainer proof submissions create no earning. Retainer earnings are created per period and approved separately with Approve Retainer Period.

Partner email

When approval creates an earning, the partner approval email is queued in the same transaction. No email is queued when the campaign-submission-approved email notification is disabled, when the program has no portal settings, or when the affiliate has no valid email address. None of these affect earning creation.

Max budget

If the approved amount brings the campaign’s approved reward spend to or above its owner max_budget, the approval still succeeds. A campaign with status ACTIVE or SCHEDULED is then moved to ENDED and campaign_closed_by_budget is true. Submissions of an ENDED campaign can still be approved.

Notes

  • Requires write:affiliates.
  • There is no public endpoint for listing submissions. The affonso_approve_campaign_submission MCP tool has the same limitation.
  • Approving an already APPROVED submission is idempotent (HTTP 200). It returns the existing submission with its earning_id and earning_status, creates no new earning or email, and reports campaign_closed_by_budget as false and rejected_pending_applications as 0.
  • A REJECTED submission returns CONFLICT (HTTP 409). If a concurrent call reviews the submission first, the call may also return CONFLICT with “This submission was already reviewed”.
  • custom and range campaigns without an amount return VALIDATION_ERROR (HTTP 400) with field amount. An amount below 0.01 or above 999,999.99 fails body validation and returns VALIDATION_ERROR (HTTP 400) with details, before the submission is claimed, so no earning is created.