Mintegral Ads
Use the bundled CLI to call the official Mintegral AppGrowth Open API. Do not construct ad hoc HTTP requests.
Requirements
- Require Python 3.10 or newer.
- Run commands through
scripts/mintegral_ads.sh.
- Read
MINTEGRAL_ACCESS_KEY and MINTEGRAL_API_KEY from the environment.
- Keep API hosts fixed to
ss-api.mintegral.com and, for uploads only, ss-storage-api.mintegral.com.
- Never print, save, or pass either credential on the command line.
- Read references/api.md before using an unfamiliar action or payload.
Acquire both credentials from Mintegral AppGrowth under Account > Basic Information. The script derives the short-lived request token in memory for every request.
Safety Rules
- Execute GET actions directly when the user requests the data.
- Preview every mutation by default. Require the user's explicit authorization, then rerun with
--execute.
- Identify the exact campaign, offer, creative set, audience, or publisher ID before mutation.
- On execution, automatically retrieve the affected campaign or offer and require
maintain_by=ADV when Mintegral returns that field.
- Require
--acknowledge-full-replacement for bid, budget, and publisher-target actions. These APIs can replace complete regional or publisher settings.
- Preview full-replacement actions against the live current object. Copy the returned
replacement_plan_hash only after reviewing before and replacement_diff; require that hash during execution. Never reuse it with a changed payload.
- Require
--confirm-delete in addition to --execute for deletion.
- Use an owner-only JSON payload file for tracking URLs, audience identifiers, or large payloads.
- Do not automatically retry mutations. Retry only safe reads after rate-limit or transient server errors.
- Treat HTTP 2xx as insufficient: require response
code=200.
- Re-read the affected object after a successful campaign or offer mutation and compare the requested fields. Treat
verified=false as incomplete verification even when the mutation response returned code=200.
- Treat reports, tracking links, audience files, advertiser identifiers, and campaign configuration as sensitive.
Workflow
Check configuration without exposing credentials:
bash <skill-path>/scripts/mintegral_ads.sh check
Inspect the available fixed actions:
bash <skill-path>/scripts/mintegral_ads.sh list-actions
bash <skill-path>/scripts/mintegral_ads.sh describe --action offer-budget
Read the current object before proposing a mutation:
bash <skill-path>/scripts/mintegral_ads.sh call \
--action offers \
--params-json '{"offer_id":123,"limit":10}'
Store the final payload in a JSON file, preview it, explain the impact, and ask for explicit execution approval:
bash <skill-path>/scripts/mintegral_ads.sh call \
--action offer-status \
--params-file /secure/path/offer-status.json
After approval, execute the identical payload:
bash <skill-path>/scripts/mintegral_ads.sh call \
--action offer-status \
--params-file /secure/path/offer-status.json \
--execute
Summarize changed IDs, previous state, returned state, and verification result. Save raw JSON with --output when useful.
Common Actions
| Action |
Behavior |
balance |
Read account balance |
campaigns / offers / creative-sets |
Read campaigns, offers, or creative sets |
report |
Read performance data |
campaign-create / campaign-update |
Create or update a campaign |
offer-create / offer-update |
Create or update an offer |
offer-status |
Start or stop an offer |
offer-bid |
Replace default, geo, or publisher bids; require replacement acknowledgement |
offer-budget |
Replace offer budget configuration; require replacement acknowledgement |
publisher-target |
Replace publisher allow/block settings; require replacement acknowledgement |
tracking-update |
Update click and impression tracking URLs |
audience-target |
Update included and excluded target-audience IDs |
target-goal |
Update Target-ROAS or Target-CPE goals through the v3 endpoint |
creative-set-create / creative-set-update |
Create or update a creative set |
creative-set-delete |
Delete a creative set; require delete confirmation |
creative-upload / playable-upload |
Upload a creative file and return its Mintegral MD5 |
Payload Examples
Pause an offer:
{"offer_id": 123, "status": "STOPPED"}
Replace regional bids:
{
"offer_id": 123,
"bid_rate": 3.2,
"bid_rate_by_location": [
{"country_code": "US", "bid_rate": 4.1},
{"country_code": "JP", "bid_rate": 4.5}
]
}
Preview that payload with configured credentials. Review before, replacement_diff, and the returned replacement_plan_hash. Execute the exact same payload only after checking that it contains every regional override that must remain:
bash <skill-path>/scripts/mintegral_ads.sh call \
--action offer-bid \
--params-file /secure/path/bids.json \
--acknowledge-full-replacement \
--replacement-plan-hash '<hash from the immediately preceding preview>' \
--execute
If the payload or live Offer changes after preview, discard the hash, preview again, and review the new diff.
Upload a creative after previewing the local file path:
bash <skill-path>/scripts/mintegral_ads.sh call \
--action creative-upload \
--file /absolute/path/video.mp4
bash <skill-path>/scripts/mintegral_ads.sh call \
--action creative-upload \
--file /absolute/path/video.mp4 \
--execute
Failure Handling
- On missing credentials, explain where to obtain them and ask the user to export the two environment variables. Never ask them to paste secrets into a command argument.
- On
maintain_by=AM, stop: the account manager owns the object and the API caller cannot safely update it.
- On permission denied for publisher-level bidding or targeting, tell the user to request the advanced feature from their Mintegral account manager.
- On a stale timestamp or authentication error, verify local clock accuracy and credential pairing without printing either value.
- On
code=207 for reports, reduce the date window to at most eight days and exclude today/future dates.
- On replacement plan hash mismatch, stop and preview again. Do not bypass the mismatch or reuse an older hash.
- On
verified=false, show the mismatched fields and do not claim the requested state is active.
- On uncertain fields or enum values, consult the current official documentation and update this skill before execution; do not guess.
1---2name: mintegral-ads3description: Query and safely manage Mintegral AppGrowth advertising through the official Open API. Use when the user wants Mintegral account balance, performance reports, campaigns, offers, creatives, or creative sets, or wants to create or update campaigns and offers, start or stop delivery, change bids, budgets, publisher targeting, tracking URLs, audience targeting, optimization goals, or creative sets.4---56# Mintegral Ads78Use the bundled CLI to call the official Mintegral AppGrowth Open API. Do not construct ad hoc HTTP requests.910## Requirements1112- Require Python 3.10 or newer.13- Run commands through `scripts/mintegral_ads.sh`.14- Read `MINTEGRAL_ACCESS_KEY` and `MINTEGRAL_API_KEY` from the environment.15- Keep API hosts fixed to `ss-api.mintegral.com` and, for uploads only, `ss-storage-api.mintegral.com`.16- Never print, save, or pass either credential on the command line.17- Read [references/api.md](references/api.md) before using an unfamiliar action or payload.1819Acquire both credentials from Mintegral AppGrowth under **Account > Basic Information**. The script derives the short-lived request token in memory for every request.2021## Safety Rules2223- Execute GET actions directly when the user requests the data.24- Preview every mutation by default. Require the user's explicit authorization, then rerun with `--execute`.25- Identify the exact campaign, offer, creative set, audience, or publisher ID before mutation.26- On execution, automatically retrieve the affected campaign or offer and require `maintain_by=ADV` when Mintegral returns that field.27- Require `--acknowledge-full-replacement` for bid, budget, and publisher-target actions. These APIs can replace complete regional or publisher settings.28- Preview full-replacement actions against the live current object. Copy the returned `replacement_plan_hash` only after reviewing `before` and `replacement_diff`; require that hash during execution. Never reuse it with a changed payload.29- Require `--confirm-delete` in addition to `--execute` for deletion.30- Use an owner-only JSON payload file for tracking URLs, audience identifiers, or large payloads.31- Do not automatically retry mutations. Retry only safe reads after rate-limit or transient server errors.32- Treat HTTP 2xx as insufficient: require response `code=200`.33- Re-read the affected object after a successful campaign or offer mutation and compare the requested fields. Treat `verified=false` as incomplete verification even when the mutation response returned `code=200`.34- Treat reports, tracking links, audience files, advertiser identifiers, and campaign configuration as sensitive.3536## Workflow37381. Check configuration without exposing credentials:3940 ```bash41 bash <skill-path>/scripts/mintegral_ads.sh check42 ```43442. Inspect the available fixed actions:4546 ```bash47 bash <skill-path>/scripts/mintegral_ads.sh list-actions48 bash <skill-path>/scripts/mintegral_ads.sh describe --action offer-budget49 ```50513. Read the current object before proposing a mutation:5253 ```bash54 bash <skill-path>/scripts/mintegral_ads.sh call \55 --action offers \56 --params-json '{"offer_id":123,"limit":10}'57 ```58594. Store the final payload in a JSON file, preview it, explain the impact, and ask for explicit execution approval:6061 ```bash62 bash <skill-path>/scripts/mintegral_ads.sh call \63 --action offer-status \64 --params-file /secure/path/offer-status.json65 ```66675. After approval, execute the identical payload:6869 ```bash70 bash <skill-path>/scripts/mintegral_ads.sh call \71 --action offer-status \72 --params-file /secure/path/offer-status.json \73 --execute74 ```75766. Summarize changed IDs, previous state, returned state, and verification result. Save raw JSON with `--output` when useful.7778## Common Actions7980| Action | Behavior |81| --- | --- |82| `balance` | Read account balance |83| `campaigns` / `offers` / `creative-sets` | Read campaigns, offers, or creative sets |84| `report` | Read performance data |85| `campaign-create` / `campaign-update` | Create or update a campaign |86| `offer-create` / `offer-update` | Create or update an offer |87| `offer-status` | Start or stop an offer |88| `offer-bid` | Replace default, geo, or publisher bids; require replacement acknowledgement |89| `offer-budget` | Replace offer budget configuration; require replacement acknowledgement |90| `publisher-target` | Replace publisher allow/block settings; require replacement acknowledgement |91| `tracking-update` | Update click and impression tracking URLs |92| `audience-target` | Update included and excluded target-audience IDs |93| `target-goal` | Update Target-ROAS or Target-CPE goals through the v3 endpoint |94| `creative-set-create` / `creative-set-update` | Create or update a creative set |95| `creative-set-delete` | Delete a creative set; require delete confirmation |96| `creative-upload` / `playable-upload` | Upload a creative file and return its Mintegral MD5 |9798## Payload Examples99100Pause an offer:101102```json103{"offer_id": 123, "status": "STOPPED"}104```105106Replace regional bids:107108```json109{110 "offer_id": 123,111 "bid_rate": 3.2,112 "bid_rate_by_location": [113 {"country_code": "US", "bid_rate": 4.1},114 {"country_code": "JP", "bid_rate": 4.5}115 ]116}117```118119Preview that payload with configured credentials. Review `before`, `replacement_diff`, and the returned `replacement_plan_hash`. Execute the exact same payload only after checking that it contains every regional override that must remain:120121```bash122bash <skill-path>/scripts/mintegral_ads.sh call \123 --action offer-bid \124 --params-file /secure/path/bids.json \125 --acknowledge-full-replacement \126 --replacement-plan-hash '<hash from the immediately preceding preview>' \127 --execute128```129130If the payload or live Offer changes after preview, discard the hash, preview again, and review the new diff.131132Upload a creative after previewing the local file path:133134```bash135bash <skill-path>/scripts/mintegral_ads.sh call \136 --action creative-upload \137 --file /absolute/path/video.mp4138139bash <skill-path>/scripts/mintegral_ads.sh call \140 --action creative-upload \141 --file /absolute/path/video.mp4 \142 --execute143```144145## Failure Handling146147- On missing credentials, explain where to obtain them and ask the user to export the two environment variables. Never ask them to paste secrets into a command argument.148- On `maintain_by=AM`, stop: the account manager owns the object and the API caller cannot safely update it.149- On permission denied for publisher-level bidding or targeting, tell the user to request the advanced feature from their Mintegral account manager.150- On a stale timestamp or authentication error, verify local clock accuracy and credential pairing without printing either value.151- On `code=207` for reports, reduce the date window to at most eight days and exclude today/future dates.152- On replacement plan hash mismatch, stop and preview again. Do not bypass the mismatch or reuse an older hash.153- On `verified=false`, show the mismatched fields and do not claim the requested state is active.154- On uncertain fields or enum values, consult the current official documentation and update this skill before execution; do not guess.