Skip to content

Guides and tools

Network operator MCP

Manage hosted offers, advertisers, publisher access, conversion reviews, and network reports.

Server URLhttps://lp.thriftler.com/mcp/network

Browse 20 tools →

Connect your assistant

MCP lets an assistant call AFFMAX tools using your account permissions. Use a client that supports remote HTTP MCP servers and bearer authentication.

  1. In Settings > API Tokens > Connect an agent, choose Network operator. Use a team token for a team with the network plan feature.
  2. Add the server URL above to your client and set Authorization: Bearer YOUR_TOKEN. Replace YOUR_TOKEN with your token.
  3. Reconnect the client to load the tool list. Keep the token in your client's secret configuration.

Example configuration for clients that accept mcpServers JSON. Your client's settings format may differ.

{
    "mcpServers": {
        "affmax-operator": {
            "url": "https://lp.thriftler.com/mcp/network",
            "headers": {
                "Authorization": "Bearer YOUR_TOKEN"
            }
        }
    }
}

For integrations, the tool catalog JSON contains the registered tool definitions and input schemas. Your connected client discovers these through MCP tools/list.

Permissions

netops:read
Connect and read hosted offers, advertisers, publishers, held conversions, and network reports.
netops:write
Create and update network records, import offers, generate guidelines, attach creatives, and retrieve advertiser handouts.
netops:money
Release or reject held conversions. Preview the change first, then execute with confirm: true.

All calls are scoped to the token's team and require its network plan feature. The netops:read permission is required to connect, including when you also have write or money permissions.

For held conversions, call the release or reject tool without confirm to preview the change. Call again with confirm: true to execute. Advertiser handouts contain integration credentials and require netops:write.

Read the network MCP guide for offer onboarding and review workflows.

Troubleshooting

  • Cannot connect: check the server URL, bearer header, and token. Publisher and team tokens belong to different servers. Revoked tokens must be replaced.
  • Permission denied: check the abilities above and your account's access. Seeing a tool in the list does not grant permission to call it.
  • Invalid arguments: use the tool's input schema below and the error's field details to correct the request.

Tool reference

Names, descriptions, and schemas come from the registered tools. Open a tool to inspect its arguments and complete JSON Schema.

apply_network_operationsArguments

Apply a batch of network-inventory operations atomically (all-or-nothing). Ops: create_advertiser, create_hosted_offer, update_hosted_offer, set_guidelines, attach_creatives, grant_access. A create op may carry `as` to alias its result for a later op (`advertiser_ref`/`hosted_offer_ref`); create_hosted_offer may carry `template_hosted_offer_id` to clone an existing offer's structure (never its status, is_listed, or description/vertical/guidelines unless `inherit_copy: true`) with the op's own fields as overrides; blank copy is generated from destination_url after the batch commits. Returns per-op results or the failing op index.

operationsarray · required
Ordered list of network operations; each item is an object with an `op` key plus that op's parameters.
Full input schema
{
    "properties": {
        "operations": {
            "description": "Ordered list of network operations; each item is an object with an `op` key plus that op's parameters.",
            "items": {
                "type": "object"
            },
            "type": "array"
        }
    },
    "type": "object",
    "required": [
        "operations"
    ]
}
attach_creativesArguments

Attach one or more team-owned creatives to a hosted offer, appending to its existing creative sort order.

hosted_offer_idinteger · required
The hosted offer to attach creatives to.
creative_idsarray · required
Creative ids to attach (team-owned only).
Full input schema
{
    "properties": {
        "hosted_offer_id": {
            "description": "The hosted offer to attach creatives to.",
            "type": "integer"
        },
        "creative_ids": {
            "description": "Creative ids to attach (team-owned only).",
            "type": "array"
        }
    },
    "type": "object",
    "required": [
        "hosted_offer_id",
        "creative_ids"
    ]
}
create_advertiserArguments

Create an advertiser. Returns its id, postback_token (returned only here — store it), and the absolute /api/npb/{slug} postback URL.

namestring · required
Advertiser display name.
contact_namestring · optional
Optional contact name.
contact_emailstring · optional
Optional contact email.
credit_limit_centsinteger · optional
Optional credit limit in cents.
Full input schema
{
    "properties": {
        "name": {
            "description": "Advertiser display name.",
            "type": "string"
        },
        "contact_name": {
            "description": "Optional contact name.",
            "type": "string"
        },
        "contact_email": {
            "description": "Optional contact email.",
            "type": "string"
        },
        "credit_limit_cents": {
            "description": "Optional credit limit in cents.",
            "type": "integer"
        }
    },
    "type": "object",
    "required": [
        "name"
    ]
}
create_hosted_offerArguments

Create a hosted offer (network inventory). Defaults to Draft status. Requires a demand_type-matching ref: lead_buyers needs funnel_id, upstream needs source_offer_id, advertiser_postback needs advertiser_id (or advertiser_ref from an earlier batch op) plus destination_url. Pass template_hosted_offer_id to clone an existing offer's structure (demand config, payout, caps, targeting, schedule) and override only the fields you send. A clone is always draft and unlisted unless you send status / is_listed, and it does not copy the template's description, vertical or guidelines unless you send inherit_copy: true. Description, vertical and guidelines left blank are generated from destination_url in the background.

namestring · required
Offer display name.
demand_typestring · optional
lead_buyers | upstream | advertiser_postback. Required unless template_hosted_offer_id is given.
template_hosted_offer_idinteger · optional
Existing hosted offer to clone as the starting structure (demand config, advertiser, payout, caps, targeting, schedule, traffic flags). Never copied: status (defaults to draft), is_listed (defaults to false), and description/vertical/guidelines unless inherit_copy is true. Any other field you pass overrides the copied value.
inherit_copyboolean · optional
With template_hosted_offer_id: also copy the template's description, vertical and guidelines. Leave false when the clone is about a different topic; blank copy is generated from destination_url.
descriptionstring · optional
Optional offer description.
verticalstring · optional
Optional vertical label.
geo_allowedarray · optional
Optional list of allowed geo codes.
funnel_idinteger · optional
Required when demand_type is lead_buyers.
source_offer_idinteger · optional
Required when demand_type is upstream.
advertiser_idinteger · optional
Required when demand_type is advertiser_postback (or use advertiser_ref).
advertiser_refstring · optional
Batch alias of an advertiser created earlier in the same apply_network_operations call.
destination_urlstring · optional
Required when demand_type is advertiser_postback.
payout_typestring · optional
cpl | cpa | revshare_percent
payout_amountnumber · optional
Flat payout amount (for cpl/cpa).
payout_percentnumber · optional
Payout percent 0-100 (for revshare_percent).
event_payoutsobject · optional
Optional per-event payout config.
guidelinesobject · optional
Optional compliance guidelines payload.
daily_conversion_capinteger · optional
Optional daily conversion cap.
weekly_conversion_capinteger · optional
Optional weekly conversion cap.
monthly_conversion_capinteger · optional
Optional monthly conversion cap.
daily_click_capinteger · optional
Optional daily click cap.
monthly_click_capinteger · optional
Optional monthly click cap.
schedule_modestring · optional
off | hard | soft
scheduleobject · optional
Optional schedule config.
requires_approvalboolean · optional
Whether publisher access requires manual approval.
is_listedboolean · optional
Whether the offer is listed for publishers to discover.
auto_approve_conversionsboolean · optional
Whether conversions auto-approve.
statusstring · optional
draft | active | paused | archived — defaults to draft.
fail_traffic_urlstring · optional
Optional fail-traffic redirect URL.
Full input schema
{
    "properties": {
        "name": {
            "description": "Offer display name.",
            "type": "string"
        },
        "demand_type": {
            "description": "lead_buyers | upstream | advertiser_postback. Required unless template_hosted_offer_id is given.",
            "type": "string"
        },
        "template_hosted_offer_id": {
            "description": "Existing hosted offer to clone as the starting structure (demand config, advertiser, payout, caps, targeting, schedule, traffic flags). Never copied: status (defaults to draft), is_listed (defaults to false), and description/vertical/guidelines unless inherit_copy is true. Any other field you pass overrides the copied value.",
            "type": "integer"
        },
        "inherit_copy": {
            "description": "With template_hosted_offer_id: also copy the template's description, vertical and guidelines. Leave false when the clone is about a different topic; blank copy is generated from destination_url.",
            "type": "boolean"
        },
        "description": {
            "description": "Optional offer description.",
            "type": "string"
        },
        "vertical": {
            "description": "Optional vertical label.",
            "type": "string"
        },
        "geo_allowed": {
            "description": "Optional list of allowed geo codes.",
            "type": "array"
        },
        "funnel_id": {
            "description": "Required when demand_type is lead_buyers.",
            "type": "integer"
        },
        "source_offer_id": {
            "description": "Required when demand_type is upstream.",
            "type": "integer"
        },
        "advertiser_id": {
            "description": "Required when demand_type is advertiser_postback (or use advertiser_ref).",
            "type": "integer"
        },
        "advertiser_ref": {
            "description": "Batch alias of an advertiser created earlier in the same apply_network_operations call.",
            "type": "string"
        },
        "destination_url": {
            "description": "Required when demand_type is advertiser_postback.",
            "type": "string"
        },
        "payout_type": {
            "description": "cpl | cpa | revshare_percent",
            "type": "string"
        },
        "payout_amount": {
            "description": "Flat payout amount (for cpl/cpa).",
            "type": "number"
        },
        "payout_percent": {
            "description": "Payout percent 0-100 (for revshare_percent).",
            "type": "number"
        },
        "event_payouts": {
            "description": "Optional per-event payout config.",
            "type": "object"
        },
        "guidelines": {
            "description": "Optional compliance guidelines payload.",
            "type": "object"
        },
        "daily_conversion_cap": {
            "description": "Optional daily conversion cap.",
            "type": "integer"
        },
        "weekly_conversion_cap": {
            "description": "Optional weekly conversion cap.",
            "type": "integer"
        },
        "monthly_conversion_cap": {
            "description": "Optional monthly conversion cap.",
            "type": "integer"
        },
        "daily_click_cap": {
            "description": "Optional daily click cap.",
            "type": "integer"
        },
        "monthly_click_cap": {
            "description": "Optional monthly click cap.",
            "type": "integer"
        },
        "schedule_mode": {
            "description": "off | hard | soft",
            "type": "string"
        },
        "schedule": {
            "description": "Optional schedule config.",
            "type": "object"
        },
        "requires_approval": {
            "description": "Whether publisher access requires manual approval.",
            "type": "boolean"
        },
        "is_listed": {
            "description": "Whether the offer is listed for publishers to discover.",
            "type": "boolean"
        },
        "auto_approve_conversions": {
            "description": "Whether conversions auto-approve.",
            "type": "boolean"
        },
        "status": {
            "description": "draft | active | paused | archived — defaults to draft.",
            "type": "string"
        },
        "fail_traffic_url": {
            "description": "Optional fail-traffic redirect URL.",
            "type": "string"
        }
    },
    "type": "object",
    "required": [
        "name"
    ]
}
generate_offer_guidelinesArguments

Generate publisher compliance guidelines (banned claims, required disclosures, allowed/blocked traffic as canonical tokens) for a hosted offer from raw content, a URL, or an existing hosted offer. Mirrors the network's house style from an existing offer's guidelines automatically (override with style_hosted_offer_id). Optionally persist onto the hosted offer with write:true.

hosted_offer_idinteger · optional
Existing hosted offer to source content from and/or persist guidelines onto.
urlstring · optional
An advertiser offer/landing page URL to fetch source content from.
contentstring · optional
Raw source content (offer description, landing page copy, etc.) to generate guidelines from.
writeboolean · optional
When true and hosted_offer_id is present, persist the generated guidelines onto the hosted offer. Default false.
style_hosted_offer_idinteger · optional
Existing hosted offer whose guidelines act as the house-style reference (standing traffic policy, boilerplate disclosures, notes structure). Defaults to the team's most recently updated offer that has guidelines.
Full input schema
{
    "properties": {
        "hosted_offer_id": {
            "description": "Existing hosted offer to source content from and/or persist guidelines onto.",
            "type": "integer"
        },
        "url": {
            "description": "An advertiser offer/landing page URL to fetch source content from.",
            "type": "string"
        },
        "content": {
            "description": "Raw source content (offer description, landing page copy, etc.) to generate guidelines from.",
            "type": "string"
        },
        "write": {
            "description": "When true and hosted_offer_id is present, persist the generated guidelines onto the hosted offer. Default false.",
            "type": "boolean"
        },
        "style_hosted_offer_id": {
            "description": "Existing hosted offer whose guidelines act as the house-style reference (standing traffic policy, boilerplate disclosures, notes structure). Defaults to the team's most recently updated offer that has guidelines.",
            "type": "integer"
        }
    },
    "type": "object"
}
get_advertiser_handoutArguments

Return the ready-to-send advertiser postback handout (markdown) for one advertiser, with the network slug and the advertiser postback token filled in.

advertiser_idinteger · required
The advertiser to render the handout for.
Full input schema
{
    "properties": {
        "advertiser_id": {
            "description": "The advertiser to render the handout for.",
            "type": "integer"
        }
    },
    "type": "object",
    "required": [
        "advertiser_id"
    ]
}
get_hosted_offerArguments

Get one hosted offer's full detail (demand config, caps, schedule, guidelines, targeting) by id.

hosted_offer_idinteger · required
The id of the hosted offer to fetch.
Full input schema
{
    "properties": {
        "hosted_offer_id": {
            "description": "The id of the hosted offer to fetch.",
            "type": "integer"
        }
    },
    "type": "object",
    "required": [
        "hosted_offer_id"
    ]
}
get_publisherArguments

Get one publisher's detail, including traffic-quality rollups (recent daily snapshots + a summary average), by id.

publisher_idinteger · required
The id of the publisher to fetch.
Full input schema
{
    "properties": {
        "publisher_id": {
            "description": "The id of the publisher to fetch.",
            "type": "integer"
        }
    },
    "type": "object",
    "required": [
        "publisher_id"
    ]
}
import_offer_from_urlArguments

Fetch an advertiser offer URL and LLM-parse it into a structured summary (name, description, vertical, geo/payout hints, claims found, excerpt). Optionally create a consumer Offer under a team network account for upstream wrapping.

urlstring · required
The advertiser offer/landing page URL to import.
create_consumer_offerboolean · optional
Also create a consumer Offer (upstream wrapping).
network_account_idinteger · optional
Team NetworkAccount to attach the consumer Offer to (required when create_consumer_offer is true).
Full input schema
{
    "properties": {
        "url": {
            "description": "The advertiser offer/landing page URL to import.",
            "type": "string"
        },
        "create_consumer_offer": {
            "description": "Also create a consumer Offer (upstream wrapping).",
            "type": "boolean"
        },
        "network_account_id": {
            "description": "Team NetworkAccount to attach the consumer Offer to (required when create_consumer_offer is true).",
            "type": "integer"
        }
    },
    "type": "object",
    "required": [
        "url"
    ]
}
list_advertisersArguments

List the current team's advertisers (id, name, contacts, credit standing, hosted-offer count) so intake can reference an advertiser_id. Never includes the postback token — use get_advertiser_handout for that.

is_activeboolean · optional
Optional filter: true = active advertisers only, false = inactive only.
Full input schema
{
    "properties": {
        "is_active": {
            "description": "Optional filter: true = active advertisers only, false = inactive only.",
            "type": "boolean"
        }
    },
    "type": "object"
}
list_held_conversionsArguments

List the current team Held conversions (the fraud/cap review queue) with fraud signals, revenue, and payout. Optionally filter by publisher or offer.

publisher_idinteger · optional
Optional publisher filter.
hosted_offer_idinteger · optional
Optional hosted offer filter.
limitinteger · optional
Max rows to return (default 50, max 200).
Full input schema
{
    "properties": {
        "publisher_id": {
            "description": "Optional publisher filter.",
            "type": "integer"
        },
        "hosted_offer_id": {
            "description": "Optional hosted offer filter.",
            "type": "integer"
        },
        "limit": {
            "description": "Max rows to return (default 50, max 200).",
            "type": "integer"
        }
    },
    "type": "object"
}
list_hosted_offersArguments

List the current team's hosted offers (id, name, status, vertical, demand type, payout terms). Optionally filter by status or vertical.

statusstring · optional
Optional status filter: draft, active, paused, or archived.
verticalstring · optional
Optional vertical filter (exact match).
Full input schema
{
    "properties": {
        "status": {
            "description": "Optional status filter: draft, active, paused, or archived.",
            "type": "string"
        },
        "vertical": {
            "description": "Optional vertical filter (exact match).",
            "type": "string"
        }
    },
    "type": "object"
}
list_publishersArguments

List the current team's publishers (id, name, company, status, payout method). Optionally filter by status.

statusstring · optional
Optional status filter: invited, active, or paused.
Full input schema
{
    "properties": {
        "status": {
            "description": "Optional status filter: invited, active, or paused.",
            "type": "string"
        }
    },
    "type": "object"
}
network_reportArguments

Run a group-by breakdown + window totals over the team's network (publisher, hosted_offer, advertiser, sub1, or geo dimension) for a date range, mirroring the Network Reports page.

fromstring · required
Start date (Y-m-d).
tostring · required
End date (Y-m-d), inclusive.
dimensionstring · optional
Group-by dimension: publisher (default), hosted_offer, advertiser, sub1, or geo.
publisher_idinteger · optional
Optional publisher filter.
hosted_offer_idinteger · optional
Optional hosted offer filter.
advertiser_idinteger · optional
Optional advertiser filter.
sub1string · optional
Optional sub1 filter.
geostring · optional
Optional geo/country filter.
statusarray · optional
Optional conversion status filter (pending, approved, held, rejected, reversed).
Full input schema
{
    "properties": {
        "from": {
            "description": "Start date (Y-m-d).",
            "type": "string"
        },
        "to": {
            "description": "End date (Y-m-d), inclusive.",
            "type": "string"
        },
        "dimension": {
            "description": "Group-by dimension: publisher (default), hosted_offer, advertiser, sub1, or geo.",
            "type": "string"
        },
        "publisher_id": {
            "description": "Optional publisher filter.",
            "type": "integer"
        },
        "hosted_offer_id": {
            "description": "Optional hosted offer filter.",
            "type": "integer"
        },
        "advertiser_id": {
            "description": "Optional advertiser filter.",
            "type": "integer"
        },
        "sub1": {
            "description": "Optional sub1 filter.",
            "type": "string"
        },
        "geo": {
            "description": "Optional geo/country filter.",
            "type": "string"
        },
        "status": {
            "description": "Optional conversion status filter (pending, approved, held, rejected, reversed).",
            "items": {
                "type": "string"
            },
            "type": "array"
        }
    },
    "type": "object",
    "required": [
        "from",
        "to"
    ]
}
reject_held_conversionArguments

Reject a Held conversion as fraud (terminal). Without confirm:true, returns a preview only. With confirm:true, requires the netops:money ability and executes.

conversion_idinteger · required
The Held conversion to reject.
reasonstring · required
Rejection reason (fraud), max 120 chars.
confirmboolean · optional
Set true to execute; omit/false to preview only.
Full input schema
{
    "properties": {
        "conversion_id": {
            "description": "The Held conversion to reject.",
            "type": "integer"
        },
        "reason": {
            "description": "Rejection reason (fraud), max 120 chars.",
            "type": "string"
        },
        "confirm": {
            "description": "Set true to execute; omit/false to preview only.",
            "type": "boolean"
        }
    },
    "type": "object",
    "required": [
        "conversion_id",
        "reason"
    ]
}
release_held_conversionArguments

Release a Held conversion to Approved. Without confirm:true, returns a preview only. With confirm:true, requires the netops:money ability and executes.

conversion_idinteger · required
The Held conversion to release.
confirmboolean · optional
Set true to execute; omit/false to preview only.
Full input schema
{
    "properties": {
        "conversion_id": {
            "description": "The Held conversion to release.",
            "type": "integer"
        },
        "confirm": {
            "description": "Set true to execute; omit/false to preview only.",
            "type": "boolean"
        }
    },
    "type": "object",
    "required": [
        "conversion_id"
    ]
}
set_offer_availabilityArguments

Set a hosted offer available (Active) or unavailable (Paused). Rejects Archived offers (terminal state, not a runtime toggle).

hosted_offer_idinteger · required
The hosted offer to toggle.
availableboolean · required
true = Active, false = Paused.
Full input schema
{
    "properties": {
        "hosted_offer_id": {
            "description": "The hosted offer to toggle.",
            "type": "integer"
        },
        "available": {
            "description": "true = Active, false = Paused.",
            "type": "boolean"
        }
    },
    "type": "object",
    "required": [
        "hosted_offer_id",
        "available"
    ]
}
update_hosted_offerArguments

Update a hosted offer's fields (partial patch). Only the fields you pass are changed. Requires netops:write.

hosted_offer_idinteger · required
The hosted offer to update.
namestring · optional
Offer display name.
demand_typestring · optional
lead_buyers | upstream | advertiser_postback
descriptionstring · optional
Offer description.
verticalstring · optional
Vertical label.
geo_allowedarray · optional
List of allowed geo codes.
funnel_idinteger · optional
Required when demand_type is lead_buyers.
source_offer_idinteger · optional
Required when demand_type is upstream.
advertiser_idinteger · optional
Required when demand_type is advertiser_postback (or use advertiser_ref).
advertiser_refstring · optional
Batch alias of an advertiser created earlier in the same apply_network_operations call.
destination_urlstring · optional
Required when demand_type is advertiser_postback.
payout_typestring · optional
cpl | cpa | revshare_percent
payout_amountnumber · optional
Flat payout amount (for cpl/cpa).
payout_percentnumber · optional
Payout percent 0-100 (for revshare_percent).
event_payoutsobject · optional
Per-event payout config.
guidelinesobject · optional
Compliance guidelines payload.
daily_conversion_capinteger · optional
Daily conversion cap.
weekly_conversion_capinteger · optional
Weekly conversion cap.
monthly_conversion_capinteger · optional
Monthly conversion cap.
daily_click_capinteger · optional
Daily click cap.
monthly_click_capinteger · optional
Monthly click cap.
schedule_modestring · optional
off | hard | soft
scheduleobject · optional
Schedule config.
requires_approvalboolean · optional
Whether publisher access requires manual approval.
is_listedboolean · optional
Whether the offer is listed for publishers to discover.
auto_approve_conversionsboolean · optional
Whether conversions auto-approve.
statusstring · optional
draft | active | paused | archived
fail_traffic_urlstring · optional
Fail-traffic redirect URL.
Full input schema
{
    "properties": {
        "hosted_offer_id": {
            "description": "The hosted offer to update.",
            "type": "integer"
        },
        "name": {
            "description": "Offer display name.",
            "type": "string"
        },
        "demand_type": {
            "description": "lead_buyers | upstream | advertiser_postback",
            "type": "string"
        },
        "description": {
            "description": "Offer description.",
            "type": "string"
        },
        "vertical": {
            "description": "Vertical label.",
            "type": "string"
        },
        "geo_allowed": {
            "description": "List of allowed geo codes.",
            "type": "array"
        },
        "funnel_id": {
            "description": "Required when demand_type is lead_buyers.",
            "type": "integer"
        },
        "source_offer_id": {
            "description": "Required when demand_type is upstream.",
            "type": "integer"
        },
        "advertiser_id": {
            "description": "Required when demand_type is advertiser_postback (or use advertiser_ref).",
            "type": "integer"
        },
        "advertiser_ref": {
            "description": "Batch alias of an advertiser created earlier in the same apply_network_operations call.",
            "type": "string"
        },
        "destination_url": {
            "description": "Required when demand_type is advertiser_postback.",
            "type": "string"
        },
        "payout_type": {
            "description": "cpl | cpa | revshare_percent",
            "type": "string"
        },
        "payout_amount": {
            "description": "Flat payout amount (for cpl/cpa).",
            "type": "number"
        },
        "payout_percent": {
            "description": "Payout percent 0-100 (for revshare_percent).",
            "type": "number"
        },
        "event_payouts": {
            "description": "Per-event payout config.",
            "type": "object"
        },
        "guidelines": {
            "description": "Compliance guidelines payload.",
            "type": "object"
        },
        "daily_conversion_cap": {
            "description": "Daily conversion cap.",
            "type": "integer"
        },
        "weekly_conversion_cap": {
            "description": "Weekly conversion cap.",
            "type": "integer"
        },
        "monthly_conversion_cap": {
            "description": "Monthly conversion cap.",
            "type": "integer"
        },
        "daily_click_cap": {
            "description": "Daily click cap.",
            "type": "integer"
        },
        "monthly_click_cap": {
            "description": "Monthly click cap.",
            "type": "integer"
        },
        "schedule_mode": {
            "description": "off | hard | soft",
            "type": "string"
        },
        "schedule": {
            "description": "Schedule config.",
            "type": "object"
        },
        "requires_approval": {
            "description": "Whether publisher access requires manual approval.",
            "type": "boolean"
        },
        "is_listed": {
            "description": "Whether the offer is listed for publishers to discover.",
            "type": "boolean"
        },
        "auto_approve_conversions": {
            "description": "Whether conversions auto-approve.",
            "type": "boolean"
        },
        "status": {
            "description": "draft | active | paused | archived",
            "type": "string"
        },
        "fail_traffic_url": {
            "description": "Fail-traffic redirect URL.",
            "type": "string"
        }
    },
    "type": "object",
    "required": [
        "hosted_offer_id"
    ]
}
update_publisherArguments

Set or clear a publisher's default payout: default_payout_percent (revshare offers) and/or default_payout_amount (flat cpl/cpa/cpc offers). It applies to future conversions when the publisher has no access override and no tier payout on the offer, ahead of payout rules and the offer base. Only the fields you send change; send null to clear.

publisher_idinteger · required
The publisher to update.
default_payout_percentnumber · optional
Default revshare percent 0-100 for revshare offers, or null to clear.
default_payout_amountnumber · optional
Default flat payout in USD for cpl/cpa/cpc offers, or null to clear.
Full input schema
{
    "properties": {
        "publisher_id": {
            "description": "The publisher to update.",
            "type": "integer"
        },
        "default_payout_percent": {
            "description": "Default revshare percent 0-100 for revshare offers, or null to clear.",
            "type": "number"
        },
        "default_payout_amount": {
            "description": "Default flat payout in USD for cpl/cpa/cpc offers, or null to clear.",
            "type": "number"
        }
    },
    "type": "object",
    "required": [
        "publisher_id"
    ]
}
upsert_hosted_offer_accessArguments

Grant (or edit) a publisher access to a hosted offer: optionally transition status (approved/rejected/revoked) and/or set per-publisher payout/cap overrides. Creates the access row on first touch.

hosted_offer_idinteger · required
The hosted offer to grant/edit access to.
publisher_idinteger · required
The publisher receiving/holding access.
statusstring · optional
Optional status transition: approved (from pending), rejected (from pending), or revoked (from approved).
payout_amount_overridenumber · optional
Optional flat payout override for this publisher on this offer.
payout_percent_overridenumber · optional
Optional revshare percent override (0-100) for this publisher on this offer.
daily_conversion_cap_overrideinteger · optional
Optional daily conversion cap override.
monthly_conversion_cap_overrideinteger · optional
Optional monthly conversion cap override.
daily_click_cap_overrideinteger · optional
Optional daily click cap override.
Full input schema
{
    "properties": {
        "hosted_offer_id": {
            "description": "The hosted offer to grant/edit access to.",
            "type": "integer"
        },
        "publisher_id": {
            "description": "The publisher receiving/holding access.",
            "type": "integer"
        },
        "status": {
            "description": "Optional status transition: approved (from pending), rejected (from pending), or revoked (from approved).",
            "type": "string"
        },
        "payout_amount_override": {
            "description": "Optional flat payout override for this publisher on this offer.",
            "type": "number"
        },
        "payout_percent_override": {
            "description": "Optional revshare percent override (0-100) for this publisher on this offer.",
            "type": "number"
        },
        "daily_conversion_cap_override": {
            "description": "Optional daily conversion cap override.",
            "type": "integer"
        },
        "monthly_conversion_cap_override": {
            "description": "Optional monthly conversion cap override.",
            "type": "integer"
        },
        "daily_click_cap_override": {
            "description": "Optional daily click cap override.",
            "type": "integer"
        }
    },
    "type": "object",
    "required": [
        "hosted_offer_id",
        "publisher_id"
    ]
}