Zenedu integration
Zenedu runs online schools inside Telegram bots. With this API an agent manages a bot's subscribers (message them, tag them, set custom fields, grant or revoke offers, open or close access to products, funnels, channels and groups), reads and confirms, cancels or refunds orders, and builds products (bot courses of steps, Mini App courses of lessons), funnels, offers and payment or invite links, coupons, broadcasts, automations, custom fields and webhooks. Start with list_bots: nearly every tool needs a bot id. Lists return one page (per_page, default 30; no page parameter). Not exposed: bot creation, settings and activation, funnel steps, lesson materials, step and broadcast buttons, sections, image, cover and video uploads, file downloads, the Mini App and Web Platform builders, the shop, affiliate program changes and payouts, channel and group setup, menu-step and progress overrides, reordering, slugs, folder moves, payment method setup, order and task deletion and the Zapier routes. Authentication is the API token from Settings, Workspace, API & Webhooks, sent as a Bearer token.
Say what should happen.
The workflow builds itself.
What you can do with Zenedu
Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.
Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.
Funnel, 8 operations
activate_funnelActivate funnelPUTActivates a funnel. 409 when the bot is stopped or the funnel is empty.attach_funnel_offerAttach funnel offerPOSTAdds the funnel to an offer. grant_access decides whether current holders of the offer get it now; 409 when it is already in the offer.create_funnelCreate funnelPOSTCreates a funnel (an automated message sequence in the bot), optionally in a folder or from a template.delete_funnelDelete funnelDELETEDeletes a funnel.detach_funnel_offerDetach funnel offerDELETERemoves the funnel from an offer; returns the funnel.duplicate_funnelDuplicate funnelPOSTCreates a copy of the funnel, in the same bot or in another bot of the account.get_funnelGet funnelGETReturns one funnel: name, active and start flags, settings, access and counts.list_funnelsList funnelsGETReturns a paginated list of funnels for the specified bot.
Product, 8 operations
activate_productActivate productPUTActivates a product so subscribers can get access to it. 422 when it cannot be activated.attach_product_offerAttach product offerPOSTAdds the product to an offer, so buying the offer gives it. grant_access decides whether current holders of the offer get it now.create_productCreate productPOSTCreates an inactive product (course) for a bot (steps) or the Mini App (lessons); activate it with activate_product. Can attach an existing offer or create a new one.delete_productDelete productDELETEDeletes a product. 422 when it cannot be deleted.detach_product_offerDetach product offerDELETERemoves the product from an offer; returns the product.duplicate_productDuplicate productPOSTCreates a copy of a product in the same bot, or in another bot of the account when into_bot_id is passed.get_productGet productGETReturns one product: name, platform, active state, settings, access, offers and counts.list_productsList productsGETLists the bot's products (courses), as a page. Each has its id, platform (bot or miniApp), active state and counts.
Offer, 7 operations
activate_offerActivate offerPUTActivates an offer so it can be bought or granted again.create_offerCreate offerPOSTCreates an offer (what a subscriber buys or is granted): name, price (0 = free), currency, the products and resources it includes, payment methods and settings.delete_offerDelete offerDELETEDeletes an offer. 422 when it cannot be deleted.duplicate_offerDuplicate offerPOSTCreates a copy of an offer and returns the new offer.get_offerGet offerGETReturns one offer: price, currency, subscription period, included products and resources, payment methods and settings.grant_subscriber_offerGrant subscriber offerPOSTGives a subscriber the products and resources of an offer without payment, optionally recording an order. In a bot product the subscriber is sent the first step right away.list_offersList offersGETReturns a paginated list of offers for the specified bot.
Automation, 6 operations
activate_automationActivate automationPUTActivates an automation. 422 when it cannot be activated.create_automationCreate automationPOSTCreates a when-event-then-action automation in the bot. Read get_automation_catalog first for the event and action names and their payload fields.deactivate_automationDeactivate automationDELETEStops an automation. 422 when it cannot be stopped.delete_automationDelete automationDELETEDeletes an automation.get_automationGet automationGETReturns one automation: event, action, their payloads, conditions and active state.list_automationsList automationsGETReturns a paginated list of automations for the specified bot.
Lesson, 6 operations
activate_lessonActivate lessonPUTActivates a lesson so subscribers see it; the opening schedule is recalculated for current subscribers.create_lessonCreate lessonPOSTCreates a lesson at the end of a Mini App product. Pass active=true: a new lesson is inactive by default and subscribers do not see it.deactivate_lessonDeactivate lessonDELETEDeactivates a lesson so subscribers no longer see it; the schedule is recalculated.delete_lessonDelete lessonDELETEDeletes a lesson from a Mini App product.get_lessonGet lessonGETReturns one lesson of a Mini App product: name, text, active state, opening schedule and notification settings.list_lessonsList lessonsGETReturns all lessons of a mini-app product in order.
Webhook, 6 operations
activate_webhookActivate webhookPUTActivates a webhook subscription and clears any automatic system stop caused by repeated delivery failures.create_webhookCreate webhookPOSTSubscribes a URL to account events (orders, subscribers, tags, messages). Zenedu generates a signing secret but never returns it. Requires the account manage permission.deactivate_webhookDeactivate webhookDELETEStops a webhook subscription without deleting it.delete_webhookDelete webhookDELETEDeletes a webhook subscription; deliveries stop. Requires the account manage permission.get_webhookGet webhookGETReturns one webhook subscription: url, events, active state, last success and consecutive failures.list_webhooksList webhooksGETReturns all webhook subscriptions for the authenticated account, newest first. Requires account manage permission.
Broadcast, 5 operations
cancel_broadcastCancel broadcastDELETECancels a scheduled or in-progress broadcast.create_broadcastCreate broadcastPOSTCreates a draft broadcast (a message to many subscribers) with text, files and recipient filters. Nothing is sent until send_broadcast.delete_broadcastDelete broadcastDELETEDeletes a broadcast. Messages it already sent stay; delete them first with delete_broadcast_messages.get_broadcastGet broadcastGETReturns one broadcast: name, text, status, filters, schedule and attachments.list_broadcastsList broadcastsGETReturns a paginated list of broadcasts for the specified bot.
Coupon, 5 operations
activate_couponActivate couponPUTActivates a coupon so it can be used.create_couponCreate couponPOSTCreates a discount coupon for one or more offers: code, percent or amount, how long it applies to subscriptions, expiry and usage limit.delete_couponDelete couponDELETEDeletes a coupon. 422 when it cannot be deleted.get_couponGet couponGETReturns one coupon: code, discount, duration, expiry, usage and the offers it applies to.list_couponsList couponsGETReturns a paginated list of coupons for the bot.
Order, 5 operations
cancel_orderCancel orderPOSTCancels an order and returns it. 422 when the order cannot be cancelled.confirm_orderConfirm orderPUTConfirms an unconfirmed order (for example a manual payment you checked). 422 when the order cannot be confirmed.get_orderGet orderGETReturns one order: number, status, price, currency, payment method, customer contacts, the subscriber and the offer.list_ordersList ordersGETReturns a paginated list of orders for the specified bot.refund_orderRefund orderPOSTMarks a paid order refunded; actual_refund also returns the money through the payment provider and close_accesses revokes what the order granted.
Channel, 4 operations
attach_channel_offerAttach channel offerPOSTAdds the channel to an offer, so buying the offer gives access to it. 409 when it is already in the offer.detach_channel_offerDetach channel offerDELETERemoves the channel from an offer; returns the channel.get_channelGet channelGETReturns one Telegram channel managed by the bot: name, confirmation and active state, invite settings and offers.list_channelsList channelsGETReturns a paginated list of the bot's channels, newest first.
Funnel link, 4 operations
create_funnel_linkCreate funnel linkPOSTCreates an invite link for the funnel, with optional expiry, usage limit, access, contact request and tags.delete_funnel_linkDelete funnel linkDELETEDeletes an invite link of a funnel; it stops working.generate_funnel_linkGenerate funnel linkPOSTGenerates an invite link for a funnel. An unknown funnel answers 200 with status error and message Funnel not found, so check status.list_funnel_linksList funnel linksGETReturns the funnel links, newest first. The list is not paginated.
Group, 4 operations
attach_group_offerAttach group offerPOSTAdds the group to an offer, so buying the offer gives access to it. 409 when it is already in the offer.detach_group_offerDetach group offerDELETERemoves the group from an offer; returns the group.get_groupGet groupGETReturns one Telegram group managed by the bot: name, confirmation and active state, invite settings and offers.list_groupsList groupsGETReturns a paginated list of the bot's groups, newest first.
Offer link, 4 operations
create_offer_linkCreate offer linkPOSTCreates a payment link for an offer, with optional name, usage limit and expiry.delete_offer_linkDelete offer linkDELETEDeletes an offer payment link; it stops working.generate_offer_linkGenerate offer linkPOSTGenerates a payment link for an offer (one use by default). An unknown offer answers 200 with status error and message Offer not found, so check status.list_offer_linksList offer linksGETReturns links created by the owner for the offer, newest first. Not paginated.
Step, 4 operations
create_product_stepCreate product stepPOSTAdds a step (message, lesson, task, question, poll or quiz) at the end of a bot product. Files attach through telegram_file_ids. Without sending_time the step is never sent automatically.delete_product_stepDelete product stepDELETEDeletes a step from a bot product.get_product_stepGet product stepGETReturns a single step of the product with buttons and options.list_product_stepsList product stepsGETReturns all steps of the product ordered by sort. The list is not paginated.
Subscriber, 4 operations
block_subscriberBlock subscriberPUTBlocks a subscriber in the bot and returns the updated subscriber.delete_subscriberDelete subscriberDELETEDeletes a subscriber from the bot. This cannot be undone.get_subscriberGet subscriberGETReturns one subscriber: Telegram user id and username, name, contacts, notes, tags (comma-separated), active and blocked state, UTM tags and custom field values.list_subscribersList subscribersGETLists the bot's subscribers (anyone who started it), newest first. There is no search: match user_id (Telegram id) or username to find one.
Custom field, 3 operations
create_custom_fieldCreate custom fieldPOSTCreates a subscriber custom field (text or number) whose value set_subscriber_custom_field can then store.delete_custom_fieldDelete custom fieldDELETEDeletes a subscriber custom field.list_custom_fieldsList custom fieldsGETReturns subscriber custom fields, newest first. Not paginated.
Funnel subscriber, 3 operations
add_subscriber_to_funnelAdd subscriber to funnelPOSTAdds the subscriber to a funnel and returns their participation. 409 means they are already in it.list_funnel_subscribersList funnel subscribersGETReturns a paginated list of funnel subscribers, newest first, with their access state.remove_subscriber_from_funnelRemove subscriber from funnelDELETERemoves the subscriber from a funnel; delete_steps also deletes the messages already sent.
Subscription, 3 operations
cancel_subscriptionCancel subscriptionPOSTCancels a recurring subscription so it is no longer renewed. 422 when it cannot be cancelled.get_subscriptionGet subscriptionGETReturns one recurring subscription: status, offer, subscriber, price and billing dates.list_subscriptionsList subscriptionsGETReturns a paginated list of recurring subscriptions for the specified bot.
Bot, 2 operations
get_botGet botGETReturns one bot: name, Telegram username and link, active state, language, stop reason and menu flag.list_botsList botsGETLists every bot (Telegram bot connected to Zenedu) of the account, newest first, not paginated. Start here: data.id is the bot id every other tool needs.
Payment system, 2 operations
get_payment_systemGet payment systemGETReturns a single payment method by ID. Credentials are never returned.list_payment_systemsList payment systemsGETReturns all payment methods of the account in display order. Credentials are never returned.
Product subscriber, 2 operations
list_product_subscribersList product subscribersGETReturns a paginated list of the product's subscribers, newest first.remove_subscriber_from_productRemove subscriber from productDELETERemoves the subscriber from a product. To restart a course, remove and grant the offer again; delete_steps also deletes the messages already sent.
Task, 2 operations
approve_taskApprove taskPUTApproves a subscriber's submitted task (homework). 422 when it cannot be approved.list_tasksList tasksGETReturns a paginated list of student tasks (homework) that have messages.
Telegram file, 2 operations
list_telegram_filesList telegram filesGETLists the files you registered or sent to the bot that are not yet attached to a step or broadcast; their data.id goes in telegram_file_ids.register_telegram_fileRegister telegram filePOSTRegisters a Telegram file_id uploaded through this bot (file_id + type), or, with no body, asks you in Telegram to send a file to the bot. You must have started the bot (409 otherwise).
Affiliate link, 1 operation
list_affiliate_linksList affiliate linksGETReturns a paginated list of affiliate links with click, payment, and revenue stats.
Affiliate partner, 1 operation
list_affiliate_partnersList affiliate partnersGETReturns a paginated list of partners with affiliate stats.
Affiliate payment, 1 operation
list_affiliate_paymentsList affiliate paymentsGETReturns a paginated list of affiliate commissions from referral orders.
Affiliate program, 1 operation
get_affiliate_programGet affiliate programGETReturns the bot's affiliate (referral) program settings. 404 when the bot has none.
Automation catalog, 1 operation
get_automation_catalogGet automation catalogGETReturns the available events and actions with their target fields.
Bot command, 1 operation
list_bot_commandsList bot commandsGETLists the bot's menu commands in menu order, not paginated; data.id is the command for create_funnel_link.
Broadcast attachment, 1 operation
delete_broadcast_attachmentDelete broadcast attachmentDELETERemoves one file attachment from a broadcast and returns the updated broadcast.
Broadcast message, 1 operation
delete_broadcast_messagesDelete broadcast messagesDELETEDeletes the messages already sent by the broadcast from subscribers' chats.
Channel subscriber, 1 operation
remove_subscriber_from_channelRemove subscriber from channelDELETERemoves the subscriber from a Telegram channel the bot manages.
Folder, 1 operation
list_foldersList foldersGETLists the bot's dashboard folders sorted by name, not paginated; data.id is a folder_id for create_product and create_funnel.
Funnel access, 1 operation
activate_subscriber_funnelActivate subscriber funnelPUTResumes the subscriber's participation in the funnel.
Group subscriber, 1 operation
remove_subscriber_from_groupRemove subscriber from groupDELETERemoves the subscriber from a Telegram group the bot manages.
Offer subscriber, 1 operation
list_offer_subscribersList offer subscribersGETReturns a paginated list of subscribers who currently have access through the offer.
Product access, 1 operation
activate_subscriber_productActivate subscriber productPUTResumes the subscriber's participation in the product.
Step attachment, 1 operation
delete_product_step_attachmentDelete product step attachmentDELETERemoves one file attachment from a product step and returns the updated step.
Subscriber funnel, 1 operation
list_subscriber_funnelsList subscriber funnelsGETReturns the funnels the subscriber participates in, with progress and access.
Subscriber product, 1 operation
list_subscriber_productsList subscriber productsGETReturns the products the subscriber participates in, with progress and access.
Subscriber tag, 1 operation
add_subscriber_tagsAdd subscriber tagsPOSTAdds tags to a subscriber, creating missing tags in the bot. Existing tags are kept.
User, 1 operation
get_meGet meGETReturns the profile of the user who owns the API token. Use it to check that the token works.
Webhook event, 1 operation
list_webhook_eventsList webhook eventsGETReturns the event types available for webhook subscriptions.
Workspace, 1 operation
get_workspaceGet workspaceGETReturns the workspace of the token owner: its name and the account currency. Requires the workspace manage permission.
Showing the first 120 of 156 endpoints. The rest are in the product, searchable from the workflow builder and from chat.
Use Zenedu from Claude Code, Cursor or Codex
Connect Zenedu in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its Zenedu operations become tools the client can call, next to every other integration you connected.
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"
[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"{
"mcpServers": {
"livecontext": {
"type": "http",
"url": "https://livecontext.ai/mcp",
"headers": {
"X-API-Key": "YOUR_API_KEY"
}
}
}
}How to connect Zenedu
- Create your workspace
Sign up free. Nothing to install.
- Connect Zenedu once
Add your Zenedu connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.
- Describe the job in chat
The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.
Zenedu integration FAQ
What can you do with the Zenedu integration?
LiveContext exposes 156 operations on Zenedu, covering funnel, product, offer and automation.
