API pipeline: Make a project Pro
Goal: make a project Pro from your balance (one month at a time) or from a slot of your Pro plan; extend it, stop auto-renew, or end it now.
Pro is what runs campaigns: a campaign starts only on a project with active Pro (a new project can get one free 7-day starter radar: API pipeline: Receive a free 7-day starter radar for your project and watch its matches), and Telegram account oracles need a Pro project.
Steps
1. Price and plan. GET /v0/my/plan → "project_usd": "18.00", and whether a plan with free slots is active (active, projects, slots). A free plan slot is used instead of paying: API pipeline: Buy a Pro plan for up to 10 projects
2. Balance. GET /v0/my/funds/check-balance → {"balance": "31.00", …}.
3. Quote with a coupon (optional). GET /v0/my/coupons/quote?coupon=<clip>&target=pro&project=<project> → {"list_usd": 18.0, "discount_usd": 9.0, "charged_usd": 9.0, "enough": true, …}. Coupons: API pipeline: Redeem a coupon
4. Activate.
POST /v0/my/projects/<project>/pro
{} (or {"coupon": "<clip>"})
→ {"nonce": "<project>", "membership": "Pro", "pro_until": "2026-11-15T10:00:00Z", "auto_renew": true, …,
"list_usd": 18.0, "discount_usd": 0.0, "charged_usd": 18.0}
5. Extend. The same call while Pro adds one month after the current end.
6. Stop auto-renew. DELETE /v0/my/projects/<project>/pro → "auto_renew": false; Pro stays until pro_until.
7. End now. POST /v0/my/projects/<project>/pro/deactivate → "membership": "Free"; the project's campaigns and oracles stop at once; the paid month is not refunded.
Behind
- Renewal: on the same day of the next month, 18 USDT from the balance, while
auto_renewis on. - Balance short at renewal: the project becomes Free, its campaigns and oracles stop, and @CabiChatBot tells you. Top up and activate again.
Rules
- Insufficient balance → 400
insufficient funds: 18 USDT required for Pro membership. - Your plan has a free slot → 400
your plan has a free slot — use it for this project. - On a plan slot: activate → 400
project is on a plan slot; deactivate → 400project is on a plan slot — release the slot instead. - Only your own projects → else 404.
API surface
| Endpoint | Purpose | FE | AI / oracle |
|---|---|---|---|
GET /v0/my/plan |
Price, plan slots | yes | yes |
GET /v0/my/coupons/quote |
Price with a coupon | yes | yes |
POST /v0/my/projects/{nonce}/pro |
Activate or extend | yes | yes |
DELETE /v0/my/projects/{nonce}/pro |
Stop auto-renew | yes | yes |
POST /v0/my/projects/{nonce}/pro/deactivate |
End now | no | yes |
POST/DELETE /v0/my/plan/projects/{nonce} |
Use / release a plan slot | yes | yes |
Index: API pipelines — index