Every team runs on a dozen tools that don't talk to each other. Your events live in Luma, revenue in Stripe, meeting notes in Granola, pipeline in Pipedrive — and the person who has to reconcile them is you, at 11pm, with fourteen tabs open.
Miles already had native integrations for the big ones — Gmail, Google Calendar, Docs, Sheets, Slack, SendGrid, Instantly, Recall.ai. But "native" doesn't scale to the long tail, and the long tail is where your actual work lives. So we built Connected APIs: point Miles at any REST API that takes an API key, tell it how the API works in plain English, and it becomes something Miles can use — from Slack, or inside an agent run.
No Zapier. No webhooks to wire. No code. Two minutes in Settings.
How it works
Three fields and a paste. That's genuinely it.
Add the key as a secret
Settings → Environment. Name it LUMA_API_KEY. It's encrypted at rest and injected server-side — Miles the model never sees the value, and neither does Slack.
Register the API
Settings → Connected APIs. Name, base URL, how it authenticates (Bearer / header / query / Basic), which secret — and usage notes: the endpoints and quirks, in plain English. Paste ours from the cookbook.
Ask Miles
Mention @Miles (Work) in Slack, or use it in an agent. Miles reads your notes, picks the endpoint, calls it, and answers. Reads run instantly. Anything that changes data shows you the exact request and waits for your Confirm.
The usage notes are the trick. They're not config — they're the same paragraph you'd Slack a new hire: "Guest list is GET /v1/events/guests/list?event_id=…; checked-in means checked_in_at is set; paginate with next_cursor." Miles reads them on every call, so it hits real endpoints instead of guessing. And when it learns something the notes didn't cover — a required parameter, a pagination quirk — it can save that back to the notes itself, so the next call (yours or your agents') skips the trial and error.
Five things you can do today
We verified fourteen APIs against their vendors' docs and wrote the notes for you. These five are the ones that made us grin. Each card is copy-paste ready — the full notes are in the cookbook.
Luma — events
Every RSVP, approval, check-in and registration answer, from Slack. Guest-list questions are all plain reads, so they answer instantly. Adding or approving guests asks for a Confirm.
Stripe — revenue
The founder questions — what came in, who's late, who churned — without opening the dashboard. Create a read-only restricted key and writes fail by design; you get the answers, not the risk.
Northwind — $3,500 · 5 days late
Granola — meeting notes
Your Granola notes and full transcripts, on demand, from Slack. Miles pulls the note, reads what was actually said, and does the thing Granola doesn't — the follow-up.
2. We propose two dates for the webinar in September
3. Intro to their DevRel lead (you owe this one)
Pipedrive — pipeline
A CRM where every read is a true GET, which means the Slack conversation never stalls. Pipeline totals, stale deals, activity gaps — instantly. Logging a call or moving a stage asks for a Confirm.
Fathom — call recordings
The most accessible meeting-notes recipe: Fathom's API is included on its free plan. Summaries, action items, and transcripts by customer domain — ask across every call with an account, not just one.
Aug 12 — asked for annual pricing before committing
Aug 15 — wants the Team tier features at Pro price for a pilot
…and nine more, ready to paste
Same two-minute setup. Some of these implement reads as POST requests — Miles treats those the way it treats every write and asks for a Confirm first. It's a feature, not a bug: you always see exactly what's about to be sent.
"Look up sarah@weka.vc — deals, last activity — then log a note and move Acme to Contract Sent."
"Summarize the Q3 GTM plan page, and create a page with today's meeting recap."
"Rows in the RSVP base where Status is Confirmed. Add these ten candidates to the Pipeline table."
"Who booked demos this week, and what did they answer in the intake question?"
"New waitlist signups since Monday. Summarize this week's NPS responses."
"Open and click rates for the last four issues. Add these webinar registrants as subscribers, utm_source=luma."
"Who's in Onsite for the AE role, and when are their interviews? Add a note to Marcus's profile."
"Companies we talked to this month with no next step. Log a note on Acme."
"PRs waiting more than three days for review — add them to this week's sprint board."
Built so you can hand it a key
Giving an AI your Stripe key should feel uncomfortable. We designed Connected APIs so it doesn't have to.
The model never sees the key
Requests are assembled server-side and the secret is injected on the way out. Miles reasons about what to ask, never with what. Nothing to leak into a Slack thread or a transcript.
Writes wait for you
Every POST, PUT, PATCH, and DELETE stages a Confirm card showing the exact method, URL, and body. Nothing fires until you click. Reads run instantly, because reads can't hurt you.
Fenced by design
A connection can only call paths under its registered base URL, auth headers can't be overridden, and everything an API returns is treated as data — if a response contains instructions aimed at Miles, it reports them, it doesn't follow them.
{ "event_id": "evt-9k2…", "guests": [{ "email": "jane@acme.com" }], "approval_status": "approved" }
A few honest notes
- Where it runs. Connected APIs work from Slack — mention
@Miles (Work), the team bot, on the Team plan — and inside agent runs (Pro and up). The in-app chat can set up a connection for you — "connect me to Luma" — but the calls happen in Slack and agents. - Static keys only, for now. If a service authenticates with OAuth and short-lived tokens — Salesforce, Greenhouse's new API, Outreach — Connected APIs can't refresh those yet. It's next on the list, and the same work unlocks a native Zapier app.
- Not a Zapier replacement — a Zapier escape. Zapier moves data between tools on a schedule. This lets you ask a question across tools and get an answer, right now, in the place you already work. Different job. (You can still wire Miles into Zapier via our public API and webhooks.)
What's next
This is the first post on the Miles blog, and Connected APIs is the kind of feature we'll keep coming back to — every new recipe makes Miles more useful for someone. Next up: OAuth connections, a native Zapier listing, and recipes people ask for. Tell us which tool you're stitching together by hand at 11pm — support@heymiles.app — and there's a decent chance the notes are already written.