Costs
Some calls spend someone's money
This is the part of Batiyao that will surprise you if you have built on other platforms. An API call here can move BuckBuck out of the account you are acting for, and into another person's. It cannot be undone.
There is no sandbox balance and no reversal. A script that likes a hundred posts has spent ten BuckBuck of someone's money and paid a hundred strangers. Write the retry logic before the feature, not after.
Current prices
| Action | Costs | Goes to |
|---|---|---|
| Create a post | 1.0 | burned |
| Like | 0.1 | the author |
| Comment | 0.1 | the author |
| Reshare | 0.1 | split: author and platform |
| Rate a post | 0.1 | the author |
| Vote in a poll | 0.1 | the poll's creator |
| Read anything | 0 | — |
| Upload media | 0 | — |
Only posting and media upload are reachable through the API today. The interaction endpoints are being added, and they will arrive with a separate scope so a person can see that an app is asking to spend, not just to write.
What this means for your app
Ask before you spend
Batiyao's own app shows a person exactly what an action will cost and who receives it, the first time they do it, and it does not let a stray tap spend silently. An app built on this API should do no less. Someone who discovers afterwards that your app spent their balance will uninstall it, and be right to.
Handle 402 as a normal outcome
Running out of balance is not an error condition to log — it is a state your user is in. Say so plainly and stop. Retrying will fail identically until they top up.
Never act on a schedule
Nothing that spends should happen without a person asking for it in that moment. Batching, cron jobs and "engagement" automation are all ways to spend someone's balance while they are not looking, and they are exactly what will get an app's access removed.
A per-app daily spending cap, set by the person and shown in their Connected Apps settings, alongside what your app has spent on their behalf. Build as though it already exists — the cap will be small by default.