The Poke API allows you to send messages programmatically from your applications, scripts, and automation tools. Messages sent via the API are processed by Poke with full access to email, calendar, reminders, and connected integrations.Use cases:
Any service that can POST a webhook can delegate to Poke - no need to wait for native integrations.Example: Typeform submission → Poke
Copy
// Typeform webhook handlerapp.post("/typeform-webhook", async (req, res) => { const { name, email, company } = req.body.form_response.answers; await fetch("https://poke.com/api/v1/inbound-sms/webhook", { method: "POST", headers: { Authorization: `Bearer ${process.env.POKE_API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ message: `New lead: ${name} from ${company}. Research their company, draft personalized follow-up email, and add meeting to my calendar next week.`, }), }); res.sendStatus(200);});
Example: Custom CRM event
Copy
# When deal closes in your CRMdef on_deal_closed(customer_info): message = f""" {customer_info['name']} just closed! - Send onboarding email with login details - Schedule kickoff call for next week - Create project in Notion - Set 30/60/90 day check-in reminders """ requests.post( 'https://poke.com/api/v1/inbound-sms/webhook', headers={'Authorization': f'Bearer {POKE_API_KEY}', 'Content-Type': 'application/json'}, json={'message': message} )
Use environment variables - Store your API key in POKE_API_KEY instead of hardcoding it.Be specific - “Email John about Q1 review, suggest Tuesday or Wednesday” works better than “Contact John”.Include context - Pass URLs, file paths, or selections so Poke knows what to act on.Test first - Send {"message": "test"} before building automation.
Keep your API key secure. Use environment variables, never commit keys to Git,
and revoke immediately if compromised. You can create multiple API keys - if one
is compromised, just revoke that key.