Your bot's answers can earn
One line of code adds a neat sponsored line with a button after some of your bot's replies. If anything goes wrong, the bot just answers as usual.
One line where you send the reply
import { Sidekick } from "sidekick-sdk";
const sk = new Sidekick({
apiKey: "sk_live_…",
platformId: "plt_…",
});
const result = await sk.inject({
userId: ctx.from.id,
message: llmReply,
parseMode: "HTML",
});
await ctx.reply(result.message, { reply_markup: result.keyboard });The full SDK reference lives in the docs. Open the docs
Built so your bot comes first
- / 01Never breaks your bot
Any network or server error and the user gets the original reply, untouched.
- / 02Native format
A line of text after the answer plus a button. No banners, no messages in the middle of a conversation.
- / 03Frequency under control
Ads don't appear in every message: a per-user cap sets the pace.
- / 04Campaign moderation
Every ad is reviewed before launch. Categories that don't fit your audience can be excluded.
- / 05Transparent stats
Every impression and click in your dashboard, per platform.
- / 06USDT payouts
TRC-20, ERC-20, SPL or TON. Request a withdrawal from the dashboard.
What your users see
Istanbul, Belgrade and Yerevan: direct flights, warm autumn, no visa. Cheapest a month out, flying Tuesday or Wednesday.
This is how a placement looks in a real conversation. Try it live: @example_sidekick_bot
Common questions
Ads don't appear in every message, and they read as a continuation of the answer: a line of text and a button. You can switch the integration off at any time.
Every campaign is moderated before launch. Categories that don't fit your audience can be excluded.
SDKs for Node.js and Python, one call where you send the reply. Most integrations take about twenty minutes.
In USDT to your wallet: TRC-20, ERC-20, SPL or TON. Request a withdrawal from the dashboard.
Plug your bot in today
Message us — we'll help with the integration and your first launch.