Foyer API pages

Foyer API

Authentication and permissions

Each key belongs to one Foyer member and can only see that member's account. You choose what each key may do when you make it.

API keys

Permissions (scopes)

A request without the permission it needs gets 403 insufficient_scope, with the missing permission in details.required_scope.

PermissionShown asWhat it coversPlan
calls:readSee your calls, summaries and voicemails listCalls, outcomes and summaries, the voicemails list, the review queue, call counts, and search over names, numbers and summaries.Every plan
transcripts:readRead conversations and voicemail textThe screening conversation, voicemail text and the recorded call's transcript. Search also looks inside them.Every plan
audio:readListen to recordingsLinks that play a recording for five minutes. Off unless you tick it.Every plan
contacts:readSee your contacts and how Foyer treats each oneContacts, approved and blocked callers, remembered callers and personal greetings.Every plan
settings:readSee your settings, numbers and what your host knowsEvery setting, your Foyer number and forwarding lines, your notes and the facts your host knows.Every plan
calls:writeMark, archive, refile and report callsMark read or unread, archive, mark a voicemail heard, refile a call and report spam.Concierge or Chief of Staff
contacts:writeChange how Foyer treats callersAdd contacts, approve or block callers, screen a contact like a stranger for a while, and manage personal greetings.Concierge or Chief of Staff
settings:writeChange your Foyer settingsAny setting you can change in the app: screening, greeting, voice, recording, ringing, notifications, pausing and your lines.Concierge or Chief of Staff
notes:writeAdd and edit notes and facts for your hostTell your host things and accept, edit or drop the facts it has learned.Concierge or Chief of Staff

Two things to know:

Plans

PlanPriceWhat the API and connector can do
Doorman$5.99 a monthRead: calls, voicemails, transcripts, contacts, settings and search
Concierge$12.99 a monthRead and change: everything Doorman reads, plus every setting you can change in the app
Chief of Staff$19.99 a monthRead and change, the same as Concierge

On Doorman, a request that would change something gets 403 plan_does_not_include_writes, and nothing on your account changes. A key made with write permissions keeps them, and they work again after an upgrade. The free first month and complimentary access count as Chief of Staff.

To see what the key in use may do right now, call GET /v1/me. It returns the key's permissions, access.writes_allowed and your limits.

Sign-in for connectors

Claude, ChatGPT and other assistants connect through the MCP connector instead of a key: you sign in with your Foyer account and approve the permissions on a consent screen. The same permissions and limits apply. See Connect Claude or ChatGPT.

Errors

Every error has the same shape: {"error": {"code": "…", "message": "…", "status": 403, "details": {}}}. code is stable; message is written for people and may change.

StatusCodeWhat it means
400invalid_requestSomething is missing, or a value is not one Foyer accepts.
401unauthorizedNo key, or the key is wrong, revoked or expired.
402plan_requiredThis feature is not in your plan.
403insufficient_scopeThe key lacks the permission named in details.required_scope.
403plan_does_not_include_writesYour plan reads only. Nothing was changed.
403api_not_enabledThe API is not open on this account yet. During the preview it is open to preview members only.
403forbiddenThe app itself refuses this change, for example a feature that is not available on this line.
404not_found, media_not_foundNo such call, contact or recording on this account.
409conflict, key_limitThe change conflicts with the account's current state, or you already have 10 active keys.
410link_expiredA recording link expired, or the key that made it lost audio:read. Ask for a new one.
429rate_limitedOver a limit. Wait the seconds in the Retry-After header. See Limits.
500, 503server_error, unavailableSomething failed on Foyer's side. Safe to retry later.

Good practice