everyapp 0.2.2 → 0.3.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +6 -77
- package/bin/everyapp.js +235 -0
- package/dist/access-LGEN3ABJ.js +1 -0
- package/dist/activity-RSD4D66F.js +12 -0
- package/dist/apps-4RCFXT74.js +13 -0
- package/dist/chunk-23HJ5I2A.js +2 -0
- package/dist/chunk-2Y5Q6A5K.js +6 -0
- package/dist/chunk-4JRIS6S6.js +1 -0
- package/dist/chunk-5PTNYZK6.js +4 -0
- package/dist/chunk-6OGVO7QK.js +6 -0
- package/dist/chunk-6PGUCTJ6.js +11 -0
- package/dist/chunk-AGTCKFRB.js +22 -0
- package/dist/chunk-BHMRY53V.js +2 -0
- package/dist/chunk-CB4U7H2G.js +4 -0
- package/dist/chunk-CCWBPAKH.js +4 -0
- package/dist/chunk-CZTEDWZ2.js +22 -0
- package/dist/chunk-CZXHKPRZ.js +2 -0
- package/dist/chunk-E3EPK27P.js +10 -0
- package/dist/chunk-EGEWRFVY.js +1 -0
- package/dist/chunk-ELK7QZ2M.js +1 -0
- package/dist/chunk-FJJSSVET.js +33 -0
- package/dist/chunk-GKBPYVP3.js +25 -0
- package/dist/chunk-H6QQMY7B.js +18 -0
- package/dist/chunk-H7PDL3X5.js +1 -0
- package/dist/chunk-HOUHG236.js +20 -0
- package/dist/chunk-IFCPALVC.js +46 -0
- package/dist/chunk-IUOBIB5M.js +30 -0
- package/dist/chunk-J35DDCNU.js +1 -0
- package/dist/chunk-J455FAEN.js +7 -0
- package/dist/chunk-JYKRUS5C.js +1 -0
- package/dist/chunk-LXYMDZER.js +1 -0
- package/dist/chunk-LYNBZ7RV.js +57 -0
- package/dist/chunk-M2QQ2UD7.js +132 -0
- package/dist/chunk-N4E5YE4X.js +5 -0
- package/dist/chunk-N5GQLGEC.js +2 -0
- package/dist/chunk-NFU4YFXB.js +1 -0
- package/dist/chunk-OM2HDWVP.js +1 -0
- package/dist/chunk-ONLNJXVQ.js +32 -0
- package/dist/chunk-OP4DYXYI.js +2 -0
- package/dist/chunk-PNLU5U3P.js +1 -0
- package/dist/chunk-PS7S74DG.js +6 -0
- package/dist/chunk-RMF4YGD6.js +98 -0
- package/dist/chunk-T2GD7RHS.js +10 -0
- package/dist/chunk-TLRM3P7V.js +15 -0
- package/dist/chunk-W3JCQHHU.js +1 -0
- package/dist/chunk-WOVS3GV5.js +10 -0
- package/dist/chunk-YHJZMJYZ.js +1 -0
- package/dist/chunk-ZECBN24L.js +15 -0
- package/dist/chunk-ZEXVHB22.js +2 -0
- package/dist/chunk-ZFCUH5PK.js +7 -0
- package/dist/configure-F7UZCJUG.js +8 -0
- package/dist/create-2E5HVWYK.js +22 -0
- package/dist/db-HEQVTDTM.js +9 -0
- package/dist/delete-XCSIQIRS.js +3 -0
- package/dist/deploy-3QOZEZHC.js +1 -0
- package/dist/dev-JL3ZP5BT.js +86 -0
- package/dist/email-RLZFUFUN.js +10 -0
- package/dist/events-2V5VRBWP.js +15 -0
- package/dist/groups-HDG5DVFY.js +8 -0
- package/dist/index.js +97 -1
- package/dist/install-Z5FYXUYM.js +1 -0
- package/dist/login-KHJBC64Z.js +1 -0
- package/dist/mcp-EFDUKJ5V.js +1 -0
- package/dist/provider-EOI5PTFH.js +13 -0
- package/dist/release-74J5ZIL3.js +1 -0
- package/dist/restore-FFGYV7NO.js +3 -0
- package/dist/secret-7FKKTLHB.js +1 -0
- package/dist/setup-PAKRCAFO.js +1 -0
- package/dist/signin-AP3D4XM4.js +12 -0
- package/dist/status-RMWNHOEK.js +4 -0
- package/dist/teardown-E4JNKAZJ.js +22 -0
- package/dist/update-DWVZFNPS.js +1 -0
- package/dist/workspace-CJC5I66L.js +21 -0
- package/package.json +19 -16
- package/skills/build-every-app/SKILL.md +199 -0
- package/skills/build-every-app/patterns.md +140 -0
- package/skills/everyapp/SKILL.md +292 -0
- package/skills/everyapp/mcp.md +350 -0
- package/skills/everyapp/security-review.md +61 -0
- package/skills/everyapp/setup/README.md +274 -0
- package/skills/everyapp/setup/access.md +178 -0
- package/skills/everyapp/setup/context.md +117 -0
- package/skills/everyapp/setup/dataforseo.md +287 -0
- package/skills/everyapp/setup/email.md +366 -0
- package/skills/everyapp/setup/gateway.md +243 -0
- package/skills/everyapp/setup/google.md +360 -0
- package/skills/everyapp/setup/microsoft-365.md +281 -0
- package/skills/everyapp/setup/openai.md +318 -0
- package/skills/everyapp/setup/openrouter.md +309 -0
- package/skills/everyapp/setup/providers.md +1253 -0
- package/skills/everyapp/setup/remote-mcp.md +199 -0
- package/skills/everyapp/setup/signin-apple.md +178 -0
- package/skills/everyapp/setup/signin-cloudflare.md +148 -0
- package/skills/everyapp/setup/signin-github.md +139 -0
- package/skills/everyapp/setup/signin-google.md +178 -0
- package/skills/everyapp/setup/signin-microsoft.md +183 -0
- package/skills/everyapp/setup/signin-oidc.md +163 -0
- package/skills/everyapp/setup/slack.md +344 -0
- package/skills/everyapp/setup/workers-ai.md +138 -0
- package/bin/__everyapp_bash_complete.js +0 -12
- package/dist/bash-complete.js +0 -3
- package/dist/chunk-7BOQJFI5.js +0 -8
- package/dist/chunk-7YVJFS4A.js +0 -1
- package/dist/chunk-BIXKPCDH.js +0 -2
- package/dist/chunk-DLGPLHBH.js +0 -47
- package/dist/chunk-FD6K2YA7.js +0 -9
- package/dist/chunk-GAJEQYJH.js +0 -39
- package/dist/chunk-O2KDOP5R.js +0 -13
- package/dist/chunk-OI2MBGBG.js +0 -4
- package/dist/chunk-POSDLD3G.js +0 -8
- package/dist/chunk-RB5D2R45.js +0 -1
- package/dist/chunk-U4LIQ5VR.js +0 -1
- package/dist/chunk-VEYSNPDH.js +0 -3
- package/dist/chunk-VP6SKW44.js +0 -7
- package/dist/chunk-WO3NE7ZU.js +0 -7
- package/dist/chunk-XTO2VTPY.js +0 -6
- package/dist/chunk-YJ2DKIZS.js +0 -1
- package/dist/create-DYQ3NBWJ.js +0 -22
- package/dist/deploy-PYTCMDGV.js +0 -7
- package/dist/deploy-RMAHOA4Z.js +0 -55
- package/dist/dev-SAE237FS.js +0 -0
- package/dist/generateConfig-46Z3ERF3.js +0 -1
- package/dist/login-B6EF3SMX.js +0 -1
- package/dist/logout-XMKZBLNV.js +0 -1
- package/dist/remoteD1Shell-A67JMO3H.js +0 -6
- package/dist/setupLocal-TZJUW5ES.js +0 -6
- package/gateway/every-app-gateway-build.tar.gz +0 -0
|
@@ -0,0 +1,1253 @@
|
|
|
1
|
+
<!-- generated: pnpm -C packages/cli docs:update writes this file from the built-in catalog (packages/sdk/src/internal/capabilities.ts, through packages/cli/src/docs/providersCatalog.ts). Edit the catalog, never this file: a test fails CI when it is stale. -->
|
|
2
|
+
|
|
3
|
+
# Every catalog provider: its settings, its key and one check
|
|
4
|
+
|
|
5
|
+
For a coding agent setting up a provider the Gateway's built-in catalog has. Each provider is a section under its id, so `setup/providers.md#<id>` points at it. Where the provider has a file of its own in this folder (its **Guide**), follow that file and read this section as its summary. Read [README.md](README.md) first: its rules hold here too, above all that a key never goes through the chat.
|
|
6
|
+
|
|
7
|
+
A provider registered on one Gateway (`pnpm everyapp provider add`) is not in this file: `pnpm everyapp provider show <id>` prints its whole spec (its hint, settings, hosts, where the key comes from and its smoke request). The catalog has 73 providers: 47 API-key, 8 AI, 18 OAuth clients.
|
|
8
|
+
|
|
9
|
+
The smoke request needs the key, so it runs where the key is: the person's terminal, with the variable they read in hidden, or through the app that uses it. It is one call that costs nothing (unless marked charged).
|
|
10
|
+
|
|
11
|
+
## How a value gets in
|
|
12
|
+
|
|
13
|
+
The three ways of [README.md](README.md), one line each (the rules, and the codes a failure carries, are there):
|
|
14
|
+
|
|
15
|
+
- **The person types it**, in their own terminal in the `every-app` folder: `pnpm everyapp configure <app id>` (everything the app needs) or `pnpm everyapp secret set NAME` (one name), each value at a hidden prompt.
|
|
16
|
+
- **A command produced it**: pipe it straight in, `… | pnpm everyapp secret set NAME --json`, so it is never shown.
|
|
17
|
+
- **It is in an environment variable** the person read in hidden: `pnpm everyapp secret set NAME --from-env NAME --json`, or `pnpm everyapp configure <app id> --from-env --json`.
|
|
18
|
+
|
|
19
|
+
## Providers
|
|
20
|
+
|
|
21
|
+
| Id | Name | Kind | Settings | Guide |
|
|
22
|
+
| --- | --- | --- | --- | --- |
|
|
23
|
+
| [`dataforseo`](#dataforseo) | DataForSEO | API key | `DATAFORSEO_API_KEY` | [dataforseo.md](dataforseo.md) |
|
|
24
|
+
| [`context`](#context) | Context.dev | API key | `CONTEXT_API_KEY` | [context.md](context.md) |
|
|
25
|
+
| [`stripe`](#stripe) | Stripe | API key | `STRIPE_API_KEY` | |
|
|
26
|
+
| [`lemonsqueezy`](#lemonsqueezy) | Lemon Squeezy | API key | `LEMONSQUEEZY_API_KEY` | |
|
|
27
|
+
| [`paddle`](#paddle) | Paddle | API key | `PADDLE_API_KEY` | |
|
|
28
|
+
| [`shopify`](#shopify) | Shopify | API key | `SHOPIFY_API_TOKEN`, `SHOPIFY_HOST` | |
|
|
29
|
+
| [`plaid`](#plaid) | Plaid | API key | `PLAID_SECRET` | |
|
|
30
|
+
| [`attio`](#attio) | Attio | API key | `ATTIO_API_KEY` | |
|
|
31
|
+
| [`hubspot`](#hubspot) | HubSpot | API key | `HUBSPOT_API_TOKEN` | |
|
|
32
|
+
| [`pipedrive`](#pipedrive) | Pipedrive | API key | `PIPEDRIVE_API_TOKEN` | |
|
|
33
|
+
| [`airtable`](#airtable) | Airtable | API key | `AIRTABLE_API_TOKEN` | |
|
|
34
|
+
| [`notion`](#notion) | Notion | API key | `NOTION_API_TOKEN` | |
|
|
35
|
+
| [`postmark`](#postmark) | Postmark | API key | `POSTMARK_API_TOKEN` | |
|
|
36
|
+
| [`sendgrid`](#sendgrid) | SendGrid | API key | `SENDGRID_API_KEY` | |
|
|
37
|
+
| [`twilio`](#twilio) | Twilio | API key | `TWILIO_API_SECRET`, `TWILIO_API_KEY` | |
|
|
38
|
+
| [`intercom`](#intercom) | Intercom | API key | `INTERCOM_API_TOKEN` | |
|
|
39
|
+
| [`crisp`](#crisp) | Crisp | API key | `CRISP_API_KEY`, `CRISP_API_IDENTIFIER` | |
|
|
40
|
+
| [`linear`](#linear) | Linear | API key | `LINEAR_API_KEY` | |
|
|
41
|
+
| [`github`](#github) | GitHub | API key | `GITHUB_API_TOKEN` | |
|
|
42
|
+
| [`gitlab`](#gitlab) | GitLab | API key | `GITLAB_API_TOKEN` | |
|
|
43
|
+
| [`vercel`](#vercel) | Vercel | API key | `VERCEL_API_TOKEN` | |
|
|
44
|
+
| [`cloudflare`](#cloudflare) | Cloudflare | API key | `CLOUDFLARE_PROVIDER_API_TOKEN` | |
|
|
45
|
+
| [`posthog`](#posthog) | PostHog | API key | `POSTHOG_PERSONAL_API_KEY` | |
|
|
46
|
+
| [`mixpanel`](#mixpanel) | Mixpanel | API key | `MIXPANEL_SERVICE_ACCOUNT_SECRET`, `MIXPANEL_SERVICE_ACCOUNT_USERNAME` | |
|
|
47
|
+
| [`segment`](#segment) | Segment | API key | `SEGMENT_WRITE_KEY` | |
|
|
48
|
+
| [`supabase`](#supabase) | Supabase | API key | `SUPABASE_SECRET_KEY`, `SUPABASE_HOST` | |
|
|
49
|
+
| [`turso`](#turso) | Turso | API key | `TURSO_API_TOKEN` | |
|
|
50
|
+
| [`turso-db`](#turso-db) | Turso database | API key | `TURSO_DB_AUTH_TOKEN`, `TURSO_DB_HOST` | |
|
|
51
|
+
| [`neon`](#neon) | Neon | API key | `NEON_API_KEY` | |
|
|
52
|
+
| [`pinecone`](#pinecone) | Pinecone | API key | `PINECONE_API_KEY`, `PINECONE_HOST` | |
|
|
53
|
+
| [`mapbox`](#mapbox) | Mapbox | API key | `MAPBOX_ACCESS_TOKEN` | |
|
|
54
|
+
| [`openweather`](#openweather) | OpenWeather | API key | `OPENWEATHER_API_KEY` | |
|
|
55
|
+
| [`voyage`](#voyage) | Voyage AI | API key | `VOYAGE_API_KEY` | |
|
|
56
|
+
| [`perplexity`](#perplexity) | Perplexity | API key | `PERPLEXITY_API_KEY` | |
|
|
57
|
+
| [`jina`](#jina) | Jina AI | API key | `JINA_API_KEY` | |
|
|
58
|
+
| [`replicate`](#replicate) | Replicate | API key | `REPLICATE_API_TOKEN` | |
|
|
59
|
+
| [`huggingface`](#huggingface) | Hugging Face Inference | API key | `HUGGINGFACE_API_TOKEN` | |
|
|
60
|
+
| [`firecrawl`](#firecrawl) | Firecrawl | API key | `FIRECRAWL_API_KEY` | |
|
|
61
|
+
| [`exa`](#exa) | Exa | API key | `EXA_API_KEY` | |
|
|
62
|
+
| [`tavily`](#tavily) | Tavily | API key | `TAVILY_API_KEY` | |
|
|
63
|
+
| [`serper`](#serper) | Serper | API key | `SERPER_API_KEY` | |
|
|
64
|
+
| [`brave-search`](#brave-search) | Brave Search | API key | `BRAVE_SEARCH_API_KEY` | |
|
|
65
|
+
| [`apify`](#apify) | Apify | API key | `APIFY_API_TOKEN` | |
|
|
66
|
+
| [`deepgram`](#deepgram) | Deepgram | API key | `DEEPGRAM_API_KEY` | |
|
|
67
|
+
| [`elevenlabs`](#elevenlabs) | ElevenLabs | API key | `ELEVENLABS_API_KEY` | |
|
|
68
|
+
| [`assemblyai`](#assemblyai) | AssemblyAI | API key | `ASSEMBLYAI_API_KEY` | |
|
|
69
|
+
| [`newsapi`](#newsapi) | NewsAPI | API key | `NEWSAPI_API_KEY` | |
|
|
70
|
+
| [`openai`](#openai) | OpenAI | AI | `OPENAI_API_KEY` | [openai.md](openai.md) |
|
|
71
|
+
| [`openrouter`](#openrouter) | OpenRouter | AI | `OPENROUTER_API_KEY` | [openrouter.md](openrouter.md) |
|
|
72
|
+
| [`workers-ai`](#workers-ai) | Workers AI | AI | `WORKERS_AI_API_TOKEN`, `CLOUDFLARE_ACCOUNT_ID` (set by `everyapp setup`) | [workers-ai.md](workers-ai.md) |
|
|
73
|
+
| [`anthropic`](#anthropic) | Anthropic | AI | `ANTHROPIC_API_KEY` | |
|
|
74
|
+
| [`gemini`](#gemini) | Google Gemini | AI | `GEMINI_API_KEY` | |
|
|
75
|
+
| [`mistral`](#mistral) | Mistral AI | AI | `MISTRAL_API_KEY` | |
|
|
76
|
+
| [`groq`](#groq) | Groq | AI | `GROQ_API_KEY` | |
|
|
77
|
+
| [`cohere`](#cohere) | Cohere | AI | `COHERE_API_KEY` | |
|
|
78
|
+
| [`linkedin`](#linkedin) | LinkedIn | OAuth client | `LINKEDIN_CLIENT_ID`, `LINKEDIN_CLIENT_SECRET` | |
|
|
79
|
+
| [`facebook`](#facebook) | Facebook | OAuth client | `FACEBOOK_APP_ID`, `FACEBOOK_APP_SECRET` | |
|
|
80
|
+
| [`instagram`](#instagram) | Instagram | OAuth client | `INSTAGRAM_APP_ID`, `INSTAGRAM_APP_SECRET` | |
|
|
81
|
+
| [`threads`](#threads) | Threads | OAuth client | `THREADS_APP_ID`, `THREADS_APP_SECRET` | |
|
|
82
|
+
| [`youtube`](#youtube) | YouTube | OAuth client | `YOUTUBE_CLIENT_ID`, `YOUTUBE_CLIENT_SECRET` | [google.md](google.md) |
|
|
83
|
+
| [`tiktok`](#tiktok) | TikTok | OAuth client | `TIKTOK_CLIENT_ID`, `TIKTOK_CLIENT_SECRET` | |
|
|
84
|
+
| [`tiktok-business`](#tiktok-business) | TikTok Business | OAuth client | `TIKTOK_BUSINESS_CLIENT_ID`, `TIKTOK_BUSINESS_CLIENT_SECRET` | |
|
|
85
|
+
| [`reddit`](#reddit) | Reddit | OAuth client | `REDDIT_CLIENT_ID`, `REDDIT_CLIENT_SECRET` | |
|
|
86
|
+
| [`pinterest`](#pinterest) | Pinterest | OAuth client | `PINTEREST_CLIENT_ID`, `PINTEREST_CLIENT_SECRET` | |
|
|
87
|
+
| [`discord`](#discord) | Discord | OAuth client | `DISCORD_CLIENT_ID`, `DISCORD_CLIENT_SECRET` | |
|
|
88
|
+
| [`slack`](#slack) | Slack | OAuth client | `SLACK_CLIENT_ID`, `SLACK_CLIENT_SECRET` | [slack.md](slack.md) |
|
|
89
|
+
| [`mastodon`](#mastodon) | Mastodon | OAuth client | `MASTODON_CLIENT_ID`, `MASTODON_CLIENT_SECRET`, `MASTODON_URL` | |
|
|
90
|
+
| [`kick`](#kick) | Kick | OAuth client | `KICK_CLIENT_ID`, `KICK_CLIENT_SECRET` | |
|
|
91
|
+
| [`twitch`](#twitch) | Twitch | OAuth client | `TWITCH_CLIENT_ID`, `TWITCH_CLIENT_SECRET` | |
|
|
92
|
+
| [`tumblr`](#tumblr) | Tumblr | OAuth client | `TUMBLR_CLIENT_ID`, `TUMBLR_CLIENT_SECRET` | |
|
|
93
|
+
| [`dribbble`](#dribbble) | Dribbble | OAuth client | `DRIBBBLE_CLIENT_ID`, `DRIBBBLE_CLIENT_SECRET` | |
|
|
94
|
+
| [`google-workspace`](#google-workspace) | Google (Gmail, Calendar, Search Console and Analytics) | OAuth client | `GOOGLE_WORKSPACE_CLIENT_ID`, `GOOGLE_WORKSPACE_CLIENT_SECRET` | [google.md](google.md) |
|
|
95
|
+
| [`microsoft-365`](#microsoft-365) | Microsoft 365 (Outlook mail and calendar) | OAuth client | `MICROSOFT_365_CLIENT_ID`, `MICROSOFT_365_CLIENT_SECRET` | [microsoft-365.md](microsoft-365.md) |
|
|
96
|
+
|
|
97
|
+
Gateway services have no key of this kind: `email`, `members` (sending mail is [email.md](email.md); the members list needs nothing).
|
|
98
|
+
|
|
99
|
+
## API-key providers
|
|
100
|
+
|
|
101
|
+
### dataforseo
|
|
102
|
+
|
|
103
|
+
**DataForSEO** (`api_key`): SEO data: keyword metrics, live search results, domain rankings, backlinks.
|
|
104
|
+
|
|
105
|
+
- **Settings:** `DATAFORSEO_API_KEY`
|
|
106
|
+
- **What the key is:** The API login and password from API Access, as login:password (or that pair base64-encoded); the Gateway sends them as HTTP Basic. login:password, or its base64; never the dashboard sign-in password.
|
|
107
|
+
- **Where the key comes from:** https://app.dataforseo.com/api-access
|
|
108
|
+
- **API reference:** https://docs.dataforseo.com/v3/
|
|
109
|
+
- **How it is sent:** `Authorization: Basic <DATAFORSEO_API_KEY>`, the value `login:password` base64-encoded (or sent as it is when it holds no colon: already encoded), to `api.dataforseo.com`, `sandbox.dataforseo.com` only, over https
|
|
110
|
+
- **What apps may do:** access `read`; GET, POST on any grant; account-wide paths refused: `tasks_ready`, `tasks_fixed`, `id_list`, `errors`, `appendix/user_data`, `appendix/webhook_resend`
|
|
111
|
+
- **Smoke request:** `GET https://api.dataforseo.com/v3/appendix/user_data`, expecting 200; free. Account-wide, so the Gateway refuses it for apps; run it from the person's terminal.
|
|
112
|
+
- **Cost:** per call. A Google SERP $0.002 per 10 results; a Labs task $0.012 plus $0.00012 per item. The Gateway reads each answer's `cost` field (US dollars) into the usage counters.
|
|
113
|
+
- **Rate:** not recorded
|
|
114
|
+
- **Verified:** 2026-10-25, live
|
|
115
|
+
- **Set it:** `pnpm everyapp secret set DATAFORSEO_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
116
|
+
- **Guide:** [dataforseo.md](dataforseo.md)
|
|
117
|
+
|
|
118
|
+
### context
|
|
119
|
+
|
|
120
|
+
**Context.dev** (`api_key`): Scrapes and renders web pages, JavaScript included.
|
|
121
|
+
|
|
122
|
+
- **Settings:** `CONTEXT_API_KEY`
|
|
123
|
+
- **What the key is:** An API key from the Context.dev dashboard; the Gateway puts it on every call as a bearer token.
|
|
124
|
+
- **Where the key comes from:** https://context.dev/
|
|
125
|
+
- **How it is sent:** `Authorization: Bearer <CONTEXT_API_KEY>`, to `api.context.dev` only, over https
|
|
126
|
+
- **What apps may do:** access `read`; GET, POST on any grant
|
|
127
|
+
- **Smoke request:** none recorded
|
|
128
|
+
- **Cost:** not recorded
|
|
129
|
+
- **Rate:** not recorded
|
|
130
|
+
- **Verified:** 2026-10-25, live
|
|
131
|
+
- **Set it:** `pnpm everyapp secret set CONTEXT_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
132
|
+
- **Guide:** [context.md](context.md)
|
|
133
|
+
|
|
134
|
+
### stripe
|
|
135
|
+
|
|
136
|
+
**Stripe** (`api_key`): Payments: customers, subscriptions, invoices, charges and payouts.
|
|
137
|
+
|
|
138
|
+
- **Settings:** `STRIPE_API_KEY`
|
|
139
|
+
- **What the key is:** A restricted API key from the API keys page of the Stripe dashboard, with only the permissions the app needs. The Gateway sends it as a bearer token. A restricted key (rk_live_...) with only the permissions the app needs; a sandbox key (rk_test_... or sk_test_...) to try it.
|
|
140
|
+
- **Where the key comes from:** https://dashboard.stripe.com/apikeys
|
|
141
|
+
- **API reference:** https://docs.stripe.com/api
|
|
142
|
+
- **How it is sent:** `Authorization: Bearer <STRIPE_API_KEY>`, to `api.stripe.com`, `files.stripe.com` only, over https
|
|
143
|
+
- **What apps may do:** access `read`, `write`; GET, HEAD on any grant, and POST, DELETE for an entry with `access: "write"`; account-wide paths refused: `v1/account`, `v1/accounts`, `v2/core/accounts`, `v1/webhook_endpoints`, `v2/core/event_destinations`, `v1/apps/secrets`; data `account` (served on a self-hosted Gateway only)
|
|
144
|
+
- **Smoke request:** `GET https://api.stripe.com/v1/balance`, expecting 200; free. A restricted key needs Balance read for this one.
|
|
145
|
+
- **Cost:** per call. No per-call price; reads should average under 500 per transaction over 30 days, with at least 10,000 a month allowed.
|
|
146
|
+
- **Rate:** 100 a second. Live mode, per account; sandbox 25/s; most single endpoints 25/s; Search 20/s.
|
|
147
|
+
- **Verified:** 2026-10-25, docs
|
|
148
|
+
- **Set it:** `pnpm everyapp secret set STRIPE_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
149
|
+
- **Guide:** none beyond this section
|
|
150
|
+
|
|
151
|
+
### lemonsqueezy
|
|
152
|
+
|
|
153
|
+
**Lemon Squeezy** (`api_key`): Merchant of record for software: stores, products, orders, subscriptions, license keys.
|
|
154
|
+
|
|
155
|
+
- **Settings:** `LEMONSQUEEZY_API_KEY`
|
|
156
|
+
- **What the key is:** An API key from Settings > API in Lemon Squeezy; the Gateway sends it as a bearer token. The API is JSON:API, so the app sends Accept and Content-Type application/vnd.api+json. An API key from Settings > API; a test mode key reaches test mode store data only.
|
|
157
|
+
- **Where the key comes from:** https://app.lemonsqueezy.com/settings/api
|
|
158
|
+
- **API reference:** https://docs.lemonsqueezy.com/api
|
|
159
|
+
- **How it is sent:** `Authorization: Bearer <LEMONSQUEEZY_API_KEY>`, to `api.lemonsqueezy.com` only, over https
|
|
160
|
+
- **What apps may do:** access `read`, `write`; GET, HEAD on any grant, and POST, PATCH, DELETE for an entry with `access: "write"`; account-wide paths refused: `v1/users`, `v1/webhooks`; data `account` (served on a self-hosted Gateway only)
|
|
161
|
+
- **Smoke request:** `GET https://api.lemonsqueezy.com/v1/users/me`, expecting 200; free. Account-wide, so the Gateway refuses it for apps; run it from the person's terminal.
|
|
162
|
+
- **Cost:** not recorded
|
|
163
|
+
- **Rate:** 300 a minute. 300 API calls per minute.
|
|
164
|
+
- **Verified:** 2026-10-25, docs
|
|
165
|
+
- **Set it:** `pnpm everyapp secret set LEMONSQUEEZY_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
166
|
+
- **Guide:** none beyond this section
|
|
167
|
+
|
|
168
|
+
### paddle
|
|
169
|
+
|
|
170
|
+
**Paddle** (`api_key`): Paddle Billing: products, prices, customers, subscriptions and transactions.
|
|
171
|
+
|
|
172
|
+
- **Settings:** `PADDLE_API_KEY`
|
|
173
|
+
- **What the key is:** An API key from Paddle > My account > Settings > Authentication (API keys tab), with only the permissions the app needs; the Gateway sends it as a bearer token. Live and sandbox are separate hosts with separate keys. An API key (pdl_live_apikey_... or pdl_sdbx_apikey_...) with only the permissions the app needs; a sandbox key works on the sandbox host only.
|
|
174
|
+
- **Where the key comes from:** https://developer.paddle.com/api-reference/about/authentication/
|
|
175
|
+
- **API reference:** https://developer.paddle.com/api-reference/
|
|
176
|
+
- **How it is sent:** `Authorization: Bearer <PADDLE_API_KEY>`, to `api.paddle.com`, `sandbox-api.paddle.com` only, over https
|
|
177
|
+
- **What apps may do:** access `read`, `write`; GET, HEAD on any grant, and POST, PATCH, DELETE for an entry with `access: "write"`; account-wide paths refused: `account`, `settings`, `notification-settings`, `notifications`, `simulations`, `simulation-runs`, `client-tokens`, `checkout-domains`, `verifications`; data `account` (served on a self-hosted Gateway only)
|
|
178
|
+
- **Smoke request:** `GET https://api.paddle.com/event-types`, expecting 200; free. Paddle's own first request: needs no permissions. Send it to sandbox-api.paddle.com with a sandbox key.
|
|
179
|
+
- **Cost:** not recorded
|
|
180
|
+
- **Rate:** 240 a minute. Per IP address; pricing previews 1,000 a minute; 20 immediate-charge updates per subscription an hour.
|
|
181
|
+
- **Verified:** 2026-10-25, docs
|
|
182
|
+
- **Set it:** `pnpm everyapp secret set PADDLE_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
183
|
+
- **Guide:** none beyond this section
|
|
184
|
+
|
|
185
|
+
### shopify
|
|
186
|
+
|
|
187
|
+
**Shopify** (`api_key`): One store's Admin API (GraphQL): products, orders, customers and inventory.
|
|
188
|
+
|
|
189
|
+
- **Settings:** `SHOPIFY_API_TOKEN`, `SHOPIFY_HOST`
|
|
190
|
+
- **What the key is:** An Admin API access token from a custom app created in the store's admin, sent in the X-Shopify-Access-Token header to the store's myshopify.com host. Shopify no longer lets stores create new admin custom apps, and Dev Dashboard tokens expire after 24 hours, which the Gateway can't refresh yet. SHOPIFY_API_TOKEN: The Admin API access token of a custom app made in the store's admin (Apps > Develop apps > the app > API credentials); it is shown once. SHOPIFY_HOST: The store's own host, like your-store.myshopify.com.
|
|
191
|
+
- **Where the key comes from:** https://shopify.dev/docs/apps/build/authentication-authorization/legacy/admin-custom-apps
|
|
192
|
+
- **API reference:** https://shopify.dev/docs/api/admin-graphql
|
|
193
|
+
- **How it is sent:** `X-Shopify-Access-Token: <SHOPIFY_API_TOKEN>`, to the host `<SHOPIFY_HOST>` names (a bare host or an https origin) only, over https
|
|
194
|
+
- **What apps may do:** access `write`; on any grant, and POST for an entry with `access: "write"`; account-wide paths refused: `webhooks`, `storefront_access_tokens`; data `account` (served on a self-hosted Gateway only)
|
|
195
|
+
- **Smoke request:** `GET https://<SHOPIFY_HOST>/admin/api/2026-10/shop.json`, expecting 200; free. The legacy REST read of the store; the Gateway forwards no GET for this entry, so run it from the person's terminal.
|
|
196
|
+
- **Cost:** not recorded
|
|
197
|
+
- **Rate:** GraphQL cost points per second by plan: Standard 100, Advanced 200, Plus 1,000, enterprise 2,000.
|
|
198
|
+
- **Verified:** 2026-10-25, docs
|
|
199
|
+
- **Set it:** `pnpm everyapp secret set SHOPIFY_API_TOKEN SHOPIFY_HOST`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
200
|
+
- **Guide:** none beyond this section
|
|
201
|
+
|
|
202
|
+
### plaid
|
|
203
|
+
|
|
204
|
+
**Plaid** (`api_key`): Bank data: accounts, balances, transactions and identity, for the Items an app links.
|
|
205
|
+
|
|
206
|
+
- **Settings:** `PLAID_SECRET`
|
|
207
|
+
- **What the key is:** Plaid needs a client_id and a secret on every call, in the JSON body or in the PLAID-CLIENT-ID and PLAID-SECRET headers. The Gateway puts on one header, so the app would have to send PLAID-CLIENT-ID itself. Every endpoint is a POST. The secret for one environment (Sandbox or Production) from the Keys page of the Plaid Dashboard.
|
|
208
|
+
- **Where the key comes from:** https://dashboard.plaid.com/developers/keys
|
|
209
|
+
- **API reference:** https://plaid.com/docs/api/
|
|
210
|
+
- **How it is sent:** `PLAID-SECRET: <PLAID_SECRET>`, to `sandbox.plaid.com`, `production.plaid.com` only, over https
|
|
211
|
+
- **What apps may do:** access `read`; POST on any grant; account-wide paths refused: `item/webhook/update`, `item/access_token/invalidate`, `item/remove`, `webhook_verification_key`, `dashboard_user`, `transfer`, `payment_initiation`; data `account` (served on a self-hosted Gateway only)
|
|
212
|
+
- **Smoke request:** none recorded
|
|
213
|
+
- **Cost:** not recorded
|
|
214
|
+
- **Rate:** Set per endpoint and per Item: /accounts/get allows 15 a minute per Item and 15,000 a minute per client.
|
|
215
|
+
- **Verified:** no: not checked against the provider's docs
|
|
216
|
+
- **Set it:** `pnpm everyapp secret set PLAID_SECRET`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
217
|
+
- **Guide:** none beyond this section
|
|
218
|
+
|
|
219
|
+
### attio
|
|
220
|
+
|
|
221
|
+
**Attio** (`api_key`): CRM: people, companies, deals, lists, notes and tasks in one Attio workspace.
|
|
222
|
+
|
|
223
|
+
- **Settings:** `ATTIO_API_KEY`
|
|
224
|
+
- **What the key is:** An access token a workspace admin makes under Workspace settings > Developers, scoped to what the app needs; the Gateway sends it as a bearer token. Listing and searching records are POSTs, so an app that lists records needs write access. An access token from Workspace settings > Developers, with only the scopes the app needs.
|
|
225
|
+
- **Where the key comes from:** https://attio.com/help/reference/apps/generating-an-api-key
|
|
226
|
+
- **API reference:** https://docs.attio.com/rest-api/overview
|
|
227
|
+
- **How it is sent:** `Authorization: Bearer <ATTIO_API_KEY>`, to `api.attio.com` only, over https
|
|
228
|
+
- **What apps may do:** access `read`, `write`; GET, HEAD on any grant, and POST, PUT, PATCH, DELETE for an entry with `access: "write"`; account-wide paths refused: `v2/self`, `v2/webhooks`, `v2/workspace_members`; data `account` (served on a self-hosted Gateway only)
|
|
229
|
+
- **Smoke request:** `GET https://api.attio.com/v2/objects`, expecting 200; free. Lists the workspace's objects; needs the object_configuration:read scope. /v2/self answers 200 even for a revoked token.
|
|
230
|
+
- **Cost:** not recorded
|
|
231
|
+
- **Rate:** 100 a second. 100 reads and 25 writes per second; listing records and entries also has score-based limits.
|
|
232
|
+
- **Verified:** 2026-10-25, docs
|
|
233
|
+
- **Set it:** `pnpm everyapp secret set ATTIO_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
234
|
+
- **Guide:** none beyond this section
|
|
235
|
+
|
|
236
|
+
### hubspot
|
|
237
|
+
|
|
238
|
+
**HubSpot** (`api_key`): CRM and marketing: contacts, companies, deals, tickets and more in one HubSpot account.
|
|
239
|
+
|
|
240
|
+
- **Settings:** `HUBSPOT_API_TOKEN`
|
|
241
|
+
- **What the key is:** An access token from a HubSpot legacy private app (Development > Legacy apps > Create legacy app > Private), scoped to what the app needs; the Gateway sends it as a bearer token. CRM search is a POST, so an app that searches needs write access. The access token of a legacy private app (Development > Legacy apps > the app > Auth), with only the scopes the app needs.
|
|
242
|
+
- **Where the key comes from:** https://developers.hubspot.com/docs/apps/legacy-apps/private-apps/overview
|
|
243
|
+
- **API reference:** https://developers.hubspot.com/docs/api-reference/latest/overview
|
|
244
|
+
- **How it is sent:** `Authorization: Bearer <HUBSPOT_API_TOKEN>`, to `api.hubapi.com` only, over https
|
|
245
|
+
- **What apps may do:** access `read`, `write`; GET, HEAD on any grant, and POST, PUT, PATCH, DELETE for an entry with `access: "write"`; account-wide paths refused: `account-info`, `settings/users`, `settings/v3/users`, `settings/teams`, `app-webhooks`, `webhooks`, `webhooks-journal`, `oauth`; data `account` (served on a self-hosted Gateway only)
|
|
246
|
+
- **Smoke request:** `GET https://api.hubapi.com/account-info/2026-09/details`, expecting 200; free. Account-wide, so the Gateway refuses it for apps; run it from the person's terminal.
|
|
247
|
+
- **Cost:** not recorded
|
|
248
|
+
- **Rate:** 250000 a day. Private apps on Free and Starter: 100 per 10 seconds per app and 250,000 a day per account; Pro 190 and 625,000; Enterprise 190 and 1,000,000.
|
|
249
|
+
- **Verified:** 2026-10-25, docs
|
|
250
|
+
- **Set it:** `pnpm everyapp secret set HUBSPOT_API_TOKEN`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
251
|
+
- **Guide:** none beyond this section
|
|
252
|
+
|
|
253
|
+
### pipedrive
|
|
254
|
+
|
|
255
|
+
**Pipedrive** (`api_key`): Sales CRM: deals, persons, organizations, activities and pipelines.
|
|
256
|
+
|
|
257
|
+
- **Settings:** `PIPEDRIVE_API_TOKEN`
|
|
258
|
+
- **What the key is:** A personal API token from Settings > Personal preferences > API in Pipedrive; the Gateway sends it in the x-api-token header. If API is missing there, an admin enables it for the person's permission set. Your personal API token from Settings > Personal preferences > API; it acts as you, and each company you belong to has its own.
|
|
259
|
+
- **Where the key comes from:** https://app.pipedrive.com/settings/api
|
|
260
|
+
- **API reference:** https://developers.pipedrive.com/docs/api/v1
|
|
261
|
+
- **How it is sent:** `x-api-token: <PIPEDRIVE_API_TOKEN>`, to `api.pipedrive.com` only, over https
|
|
262
|
+
- **What apps may do:** access `read`, `write`; GET, HEAD on any grant, and POST, PUT, PATCH, DELETE for an entry with `access: "write"`; account-wide paths refused: `v1/users`, `v1/webhooks`, `v1/billing`, `v1/permissionsets`, `v1/roles`, `v1/usersettings`, `v1/userconnections`, `v1/legacyteams`; data `account` (served on a self-hosted Gateway only)
|
|
263
|
+
- **Smoke request:** `GET https://api.pipedrive.com/v1/users/me`, expecting 200; free. Account-wide, so the Gateway refuses it for apps; run it from the person's terminal.
|
|
264
|
+
- **Cost:** per call. Each endpoint spends API tokens from a daily company budget of 30,000 x plan multiplier (1 to 7) x seats.
|
|
265
|
+
- **Rate:** Per API token: 20 (Lite) to 120 (Ultimate) requests per 2 seconds; Search 10 per 2 seconds.
|
|
266
|
+
- **Verified:** 2026-10-25, docs
|
|
267
|
+
- **Set it:** `pnpm everyapp secret set PIPEDRIVE_API_TOKEN`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
268
|
+
- **Guide:** none beyond this section
|
|
269
|
+
|
|
270
|
+
### airtable
|
|
271
|
+
|
|
272
|
+
**Airtable** (`api_key`): Bases, tables and records in the Airtable workspaces a token can reach.
|
|
273
|
+
|
|
274
|
+
- **Settings:** `AIRTABLE_API_TOKEN`
|
|
275
|
+
- **What the key is:** A personal access token from airtable.com/create/tokens, limited to the scopes and bases the app needs; the Gateway sends it as a bearer token. Listing records by POST (listRecords) needs write access; the GET form doesn't. A personal access token limited to the scopes and bases the app needs.
|
|
276
|
+
- **Where the key comes from:** https://airtable.com/create/tokens
|
|
277
|
+
- **API reference:** https://airtable.com/developers/web/api/introduction
|
|
278
|
+
- **How it is sent:** `Authorization: Bearer <AIRTABLE_API_TOKEN>`, to `api.airtable.com` only, over https
|
|
279
|
+
- **What apps may do:** access `read`, `write`; GET, HEAD on any grant, and POST, PUT, PATCH, DELETE for an entry with `access: "write"`; account-wide paths refused: `v0/meta/whoami`, `v0/meta/enterpriseaccounts`, `v0/meta/workspaces`, `v0/meta/groups`, `v0/bases`, `scim`, `collaborators`, `invites`, `shares`, `blockinstallations`; data `account` (served on a self-hosted Gateway only)
|
|
280
|
+
- **Smoke request:** `GET https://api.airtable.com/v0/meta/whoami`, expecting 200; free. Account-wide, so the Gateway refuses it for apps; run it from the person's terminal.
|
|
281
|
+
- **Cost:** not recorded
|
|
282
|
+
- **Rate:** 5 a second. 5 requests per second per base; 50 per second across all of one user's personal access tokens.
|
|
283
|
+
- **Verified:** 2026-10-25, docs
|
|
284
|
+
- **Set it:** `pnpm everyapp secret set AIRTABLE_API_TOKEN`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
285
|
+
- **Guide:** none beyond this section
|
|
286
|
+
|
|
287
|
+
### notion
|
|
288
|
+
|
|
289
|
+
**Notion** (`api_key`): Pages, databases and blocks that a Notion connection has been given.
|
|
290
|
+
|
|
291
|
+
- **Settings:** `NOTION_API_TOKEN`
|
|
292
|
+
- **What the key is:** An internal connection's API token (a workspace owner creates the connection in Notion's developer portal), sent as a bearer token; it reaches only pages shared with it. The app sends the Notion-Version header itself. Search and data source queries are POSTs, so an app that queries needs write access. The API token on an internal connection's Configuration tab; share the pages it should reach with the connection.
|
|
293
|
+
- **Where the key comes from:** https://app.notion.com/developers/connections
|
|
294
|
+
- **API reference:** https://developers.notion.com/reference/intro
|
|
295
|
+
- **How it is sent:** `Authorization: Bearer <NOTION_API_TOKEN>`, to `api.notion.com` only, over https
|
|
296
|
+
- **What apps may do:** access `read`, `write`; GET, HEAD on any grant, and POST, PATCH, DELETE for an entry with `access: "write"`; account-wide paths refused: `v1/users`, `v1/oauth`, `admin`; data `account` (served on a self-hosted Gateway only)
|
|
297
|
+
- **Smoke request:** `GET https://api.notion.com/v1/users/me`, expecting 200; free. Send Notion-Version: 2026-03-11 with it; account-wide, so run it from the person's terminal.
|
|
298
|
+
- **Cost:** not recorded
|
|
299
|
+
- **Rate:** 180 a minute. Per connection: 180 a minute, 600 on Business and Enterprise; data source queries about 3 per second.
|
|
300
|
+
- **Verified:** 2026-10-25, docs
|
|
301
|
+
- **Set it:** `pnpm everyapp secret set NOTION_API_TOKEN`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
302
|
+
- **Guide:** none beyond this section
|
|
303
|
+
|
|
304
|
+
### postmark
|
|
305
|
+
|
|
306
|
+
**Postmark** (`api_key`): Transactional email: single, batch and templated messages from one Postmark server.
|
|
307
|
+
|
|
308
|
+
- **Settings:** `POSTMARK_API_TOKEN`
|
|
309
|
+
- **What the key is:** A Server API token from the API Tokens tab of the Postmark server the app sends from; the Gateway sends it in the X-Postmark-Server-Token header. A Server API token from the server's API Tokens tab, never the Account API token.
|
|
310
|
+
- **Where the key comes from:** https://postmarkapp.com/support/article/1008-what-are-the-account-and-server-api-tokens
|
|
311
|
+
- **API reference:** https://postmarkapp.com/developer/api/overview
|
|
312
|
+
- **How it is sent:** `X-Postmark-Server-Token: <POSTMARK_API_TOKEN>`, to `api.postmarkapp.com` only, over https
|
|
313
|
+
- **What apps may do:** access `write`; on any grant, and POST for an entry with `access: "write"`; account-wide paths refused: `server`, `servers`, `domains`, `senders`, `webhooks`, `message-streams`, `triggers`, `data-removals`; data `account` (served on a self-hosted Gateway only)
|
|
314
|
+
- **Smoke request:** `GET https://api.postmarkapp.com/server`, expecting 200; free. Returns the server's settings; account-wide, so run it from a terminal.
|
|
315
|
+
- **Cost:** not recorded
|
|
316
|
+
- **Rate:** not recorded
|
|
317
|
+
- **Verified:** 2026-10-25, docs
|
|
318
|
+
- **Set it:** `pnpm everyapp secret set POSTMARK_API_TOKEN`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
319
|
+
- **Guide:** none beyond this section
|
|
320
|
+
|
|
321
|
+
### sendgrid
|
|
322
|
+
|
|
323
|
+
**SendGrid** (`api_key`): Twilio SendGrid email: send transactional and marketing mail through the v3 Mail Send API.
|
|
324
|
+
|
|
325
|
+
- **Settings:** `SENDGRID_API_KEY`
|
|
326
|
+
- **What the key is:** An API key from Settings > API Keys in SendGrid, sent as a bearer token; Custom Access with Mail Send alone is enough to send. EU regional subusers call api.eu.sendgrid.com. A Custom Access key with Mail Send only, never a Full Access key.
|
|
327
|
+
- **Where the key comes from:** https://app.sendgrid.com/settings/api_keys
|
|
328
|
+
- **API reference:** https://www.twilio.com/docs/sendgrid/api-reference
|
|
329
|
+
- **How it is sent:** `Authorization: Bearer <SENDGRID_API_KEY>`, to `api.sendgrid.com`, `api.eu.sendgrid.com` only, over https
|
|
330
|
+
- **What apps may do:** access `write`; on any grant, and POST for an entry with `access: "write"`; account-wide paths refused: `api_keys`, `scopes`, `user`, `subusers`, `teammates`, `sso`, `access_settings`, `whitelabel`, `ips`, `send_ips`, `partners`, `partner_settings`, `alerts`, `mail_settings`, `tracking_settings`, `verified_senders`, `senders`, `marketing/integrations`, `recipients/erasejob`; data `account` (served on a self-hosted Gateway only)
|
|
331
|
+
- **Smoke request:** `GET https://api.sendgrid.com/v3/scopes`, expecting 200; free. Lists the key's own scopes (the docs don't say whether a Mail-Send-only key may call it); account-wide, so run it from a terminal.
|
|
332
|
+
- **Cost:** not recorded
|
|
333
|
+
- **Rate:** Each endpoint has its own limit; answers carry X-RateLimit-Limit, -Remaining and -Reset.
|
|
334
|
+
- **Verified:** 2026-10-25, docs
|
|
335
|
+
- **Set it:** `pnpm everyapp secret set SENDGRID_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
336
|
+
- **Guide:** none beyond this section
|
|
337
|
+
|
|
338
|
+
### twilio
|
|
339
|
+
|
|
340
|
+
**Twilio** (`api_key`): SMS, MMS and voice: send text messages and place calls from your Twilio numbers.
|
|
341
|
+
|
|
342
|
+
- **Settings:** `TWILIO_API_SECRET`, `TWILIO_API_KEY`
|
|
343
|
+
- **What the key is:** A Standard or Restricted API key from Account settings > API keys & auth tokens in the Twilio Console, sent as HTTP Basic (the key's SID and secret); a Standard key can't reach the Accounts or Keys resources. Every path names the account, so the app puts its Account SID in it: /2010-04-01/Accounts/<Account SID>/Messages.json, with a form-encoded body. TWILIO_API_SECRET: The API key's secret, shown once when the key is created. TWILIO_API_KEY: The SID of a Standard or Restricted API key, never a Main key or the Auth Token.
|
|
344
|
+
- **Where the key comes from:** https://www.twilio.com/docs/iam/api-keys/keys-in-console
|
|
345
|
+
- **API reference:** https://www.twilio.com/docs/usage/requests-to-twilio
|
|
346
|
+
- **How it is sent:** `Authorization: Basic base64(<TWILIO_API_KEY>:<TWILIO_API_SECRET>)`, to `api.twilio.com` only, over https
|
|
347
|
+
- **What apps may do:** access `write`; on any grant, and POST for an entry with `access: "write"`; account-wide paths refused: `keys`, `signingkeys`, `incomingphonenumbers`, `outgoingcallerids`, `applications`, `connectapps`, `authorizedconnectapps`, `addresses`, `sip`, `usage`, `balance`; data `account` (served on a self-hosted Gateway only)
|
|
348
|
+
- **Smoke request:** none recorded
|
|
349
|
+
- **Cost:** not recorded
|
|
350
|
+
- **Rate:** not recorded
|
|
351
|
+
- **Verified:** 2026-10-25, docs
|
|
352
|
+
- **Set it:** `pnpm everyapp secret set TWILIO_API_SECRET TWILIO_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
353
|
+
- **Guide:** none beyond this section
|
|
354
|
+
|
|
355
|
+
### intercom
|
|
356
|
+
|
|
357
|
+
**Intercom** (`api_key`): Customer messaging: contacts, companies, conversations, tickets and help center articles.
|
|
358
|
+
|
|
359
|
+
- **Settings:** `INTERCOM_API_TOKEN`
|
|
360
|
+
- **What the key is:** The Access Token of a private app in your workspace's Developer Hub, sent as a bearer token. Searching contacts, conversations or tickets is a POST, so an app that searches asks for write. The Access Token on your private app's Configure > Authentication page in the Developer Hub.
|
|
361
|
+
- **Where the key comes from:** https://app.intercom.com/a/apps/_/developer-hub
|
|
362
|
+
- **API reference:** https://developers.intercom.com/docs/build-an-integration/learn-more/rest-apis
|
|
363
|
+
- **How it is sent:** `Authorization: Bearer <INTERCOM_API_TOKEN>`, to `api.intercom.io`, `api.eu.intercom.io`, `api.au.intercom.io` only, over https
|
|
364
|
+
- **What apps may do:** access `read`, `write`; GET, HEAD on any grant, and POST, PUT, PATCH, DELETE for an entry with `access: "write"`; account-wide paths refused: `me`, `admins`, `teams`, `export`, `download`, `ip_allowlist`; data `account` (served on a self-hosted Gateway only)
|
|
365
|
+
- **Smoke request:** `GET https://api.intercom.io/me`, expecting 200; free. Returns the admin behind the token; account-wide, so run it from a terminal.
|
|
366
|
+
- **Cost:** not recorded
|
|
367
|
+
- **Rate:** 10000 a minute. Per workspace, shared by its private apps; 25,000 a minute across all apps; counted in 10-second windows.
|
|
368
|
+
- **Verified:** 2026-10-25, docs
|
|
369
|
+
- **Set it:** `pnpm everyapp secret set INTERCOM_API_TOKEN`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
370
|
+
- **Guide:** none beyond this section
|
|
371
|
+
|
|
372
|
+
### crisp
|
|
373
|
+
|
|
374
|
+
**Crisp** (`api_key`): Customer chat: conversations, messages, people and visitors of one Crisp workspace.
|
|
375
|
+
|
|
376
|
+
- **Settings:** `CRISP_API_KEY`, `CRISP_API_IDENTIFIER`
|
|
377
|
+
- **What the key is:** A website token, which the workspace owner generates under Settings > Workspace Settings > Advanced configuration > API Token. The Gateway sends the identifier and key as HTTP Basic; the app sends X-Crisp-Tier: website on every call. CRISP_API_KEY: The token's key, shown once when the workspace owner generates it. CRISP_API_IDENTIFIER: The token's identifier, shown beside the key.
|
|
378
|
+
- **Where the key comes from:** https://docs.crisp.chat/guides/rest-api/authentication/website-token/
|
|
379
|
+
- **API reference:** https://docs.crisp.chat/references/rest-api/v1/
|
|
380
|
+
- **How it is sent:** `Authorization: Basic base64(<CRISP_API_IDENTIFIER>:<CRISP_API_KEY>)`, to `api.crisp.chat` only, over https
|
|
381
|
+
- **What apps may do:** access `read`, `write`; GET, HEAD on any grant, and POST, PUT, PATCH, DELETE for an entry with `access: "write"`; account-wide paths refused: `operators`, `operator`, `teams`, `team`, `settings`, `verify`, `audit`, `plans`, `plugins`, `plugin`, `connect`; data `account` (served on a self-hosted Gateway only)
|
|
382
|
+
- **Smoke request:** none recorded
|
|
383
|
+
- **Cost:** not recorded
|
|
384
|
+
- **Rate:** 10000 a day. The website token's daily quota.
|
|
385
|
+
- **Verified:** 2026-10-25, docs
|
|
386
|
+
- **Set it:** `pnpm everyapp secret set CRISP_API_KEY CRISP_API_IDENTIFIER`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
387
|
+
- **Guide:** none beyond this section
|
|
388
|
+
|
|
389
|
+
### linear
|
|
390
|
+
|
|
391
|
+
**Linear** (`api_key`): Issue tracking over GraphQL: issues, projects, cycles, comments and teams.
|
|
392
|
+
|
|
393
|
+
- **Settings:** `LINEAR_API_KEY`
|
|
394
|
+
- **What the key is:** A personal API key from Settings > Account > Security & access; the Gateway sends it as the Authorization header with no Bearer word. Every call is a POST to /graphql, queries included, so the app asks for write. A personal API key, restricted to the permissions and teams the app needs.
|
|
395
|
+
- **Where the key comes from:** https://linear.app/settings/account/security
|
|
396
|
+
- **API reference:** https://linear.app/developers/graphql
|
|
397
|
+
- **How it is sent:** `Authorization: <LINEAR_API_KEY>`, to `api.linear.app` only, over https
|
|
398
|
+
- **What apps may do:** access `write`; on any grant, and POST for an entry with `access: "write"`; data `account` (served on a self-hosted Gateway only)
|
|
399
|
+
- **Smoke request:** none recorded
|
|
400
|
+
- **Cost:** not recorded
|
|
401
|
+
- **Rate:** 2,500 requests and 3,000,000 complexity points an hour per API key.
|
|
402
|
+
- **Verified:** 2026-10-25, docs
|
|
403
|
+
- **Set it:** `pnpm everyapp secret set LINEAR_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
404
|
+
- **Guide:** none beyond this section
|
|
405
|
+
|
|
406
|
+
### github
|
|
407
|
+
|
|
408
|
+
**GitHub** (`api_key`): Code hosting: repositories, issues, pull requests, Actions and releases through the REST API.
|
|
409
|
+
|
|
410
|
+
- **Settings:** `GITHUB_API_TOKEN`
|
|
411
|
+
- **What the key is:** A fine-grained personal access token from Settings > Developer settings, limited to one owner, the repositories the app needs and the least permissions; sent as a bearer token. GraphQL is a POST to /graphql, so it needs write. A fine-grained personal access token limited to the repositories and permissions the app needs.
|
|
412
|
+
- **Where the key comes from:** https://github.com/settings/personal-access-tokens/new
|
|
413
|
+
- **API reference:** https://docs.github.com/en/rest
|
|
414
|
+
- **How it is sent:** `Authorization: Bearer <GITHUB_API_TOKEN>`, to `api.github.com` only, over https
|
|
415
|
+
- **What apps may do:** access `read`, `write`; GET, HEAD on any grant, and POST, PUT, PATCH, DELETE for an entry with `access: "write"`; account-wide paths refused: `user/email`, `user/emails`, `user/public_emails`, `user/gpg_keys`, `user/ssh_signing_keys`, `user/social_accounts`, `keys`, `hooks`, `secrets`, `members`, `memberships`, `invitations`, `failed_invitations`, `collaborators`, `outside_collaborators`, `blocks`, `installations`, `personal-access-tokens`, `personal-access-token-requests`, `credential-authorizations`, `audit-log`, `billing`; data `account` (served on a self-hosted Gateway only)
|
|
416
|
+
- **Smoke request:** `GET https://api.github.com/user`, expecting 200; free. Returns the token's owner; 401 means the token is wrong.
|
|
417
|
+
- **Cost:** not recorded
|
|
418
|
+
- **Rate:** 5,000 requests an hour per token; at most 100 concurrent requests and 900 points a minute across REST endpoints.
|
|
419
|
+
- **Verified:** 2026-10-25, docs
|
|
420
|
+
- **Set it:** `pnpm everyapp secret set GITHUB_API_TOKEN`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
421
|
+
- **Guide:** none beyond this section
|
|
422
|
+
|
|
423
|
+
### gitlab
|
|
424
|
+
|
|
425
|
+
**GitLab** (`api_key`): Code hosting on GitLab.com: projects, issues, merge requests, pipelines and releases.
|
|
426
|
+
|
|
427
|
+
- **Settings:** `GITLAB_API_TOKEN`
|
|
428
|
+
- **What the key is:** A personal, project or group access token from GitLab.com, sent in the PRIVATE-TOKEN header; read_api is enough to read. Paths start with /api/v4. A self-managed GitLab needs its own registered provider. A personal, project or group access token with read_api, or api when the app writes.
|
|
429
|
+
- **Where the key comes from:** https://gitlab.com/-/user_settings/personal_access_tokens
|
|
430
|
+
- **API reference:** https://docs.gitlab.com/api/rest/
|
|
431
|
+
- **How it is sent:** `PRIVATE-TOKEN: <GITLAB_API_TOKEN>`, to `gitlab.com` only, over https
|
|
432
|
+
- **What apps may do:** access `read`, `write`; GET, HEAD on any grant, and POST, PUT, PATCH, DELETE for an entry with `access: "write"`; account-wide paths refused: `user`, `personal_access_tokens`, `access_tokens`, `deploy_tokens`, `deploy_keys`, `project_deploy_keys`, `hooks`, `members`, `pending_members`, `billable_members`, `invitations`, `variables`, `audit_events`; data `account` (served on a self-hosted Gateway only)
|
|
433
|
+
- **Smoke request:** `GET https://gitlab.com/api/v4/personal_access_tokens/self`, expecting 200; free. Describes a personal access token itself (401 when it is wrong or revoked); account-wide, so run it from a terminal.
|
|
434
|
+
- **Cost:** not recorded
|
|
435
|
+
- **Rate:** 2000 a minute. Authenticated API traffic per user on GitLab.com.
|
|
436
|
+
- **Verified:** 2026-10-25, docs
|
|
437
|
+
- **Set it:** `pnpm everyapp secret set GITLAB_API_TOKEN`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
438
|
+
- **Guide:** none beyond this section
|
|
439
|
+
|
|
440
|
+
### vercel
|
|
441
|
+
|
|
442
|
+
**Vercel** (`api_key`): Frontend hosting: projects, deployments, domains and logs through the Vercel REST API.
|
|
443
|
+
|
|
444
|
+
- **Settings:** `VERCEL_API_TOKEN`
|
|
445
|
+
- **What the key is:** An access token from your account's Tokens page, sent as a bearer token; scope it to one team or one project. A team- or project-scoped token needs no teamId parameter. An access token scoped to one team or one project, never Full Account.
|
|
446
|
+
- **Where the key comes from:** https://vercel.com/account/tokens
|
|
447
|
+
- **API reference:** https://vercel.com/docs/rest-api
|
|
448
|
+
- **How it is sent:** `Authorization: Bearer <VERCEL_API_TOKEN>`, to `api.vercel.com` only, over https
|
|
449
|
+
- **What apps may do:** access `read`, `write`; GET, HEAD on any grant, and POST, PUT, PATCH, DELETE for an entry with `access: "write"`; account-wide paths refused: `user`, `teams`, `members`, `organizations`, `access-groups`, `billing`, `webhooks`, `drains`, `env`, `v3/events`, `v1/events`, `v1/integrations`, `installations`, `connect`, `kms`, `api-keys`, `ai-gateway`, `token`, `tokens`, `registrar`, `transfer-request`; data `account` (served on a self-hosted Gateway only)
|
|
450
|
+
- **Smoke request:** `GET https://api.vercel.com/v10/projects`, expecting 200; free. Lists the projects the token can reach.
|
|
451
|
+
- **Cost:** not recorded
|
|
452
|
+
- **Rate:** Limits are per action (deployments, domains, teams), listed on Vercel's limits page.
|
|
453
|
+
- **Verified:** 2026-10-25, docs
|
|
454
|
+
- **Set it:** `pnpm everyapp secret set VERCEL_API_TOKEN`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
455
|
+
- **Guide:** none beyond this section
|
|
456
|
+
|
|
457
|
+
### cloudflare
|
|
458
|
+
|
|
459
|
+
**Cloudflare** (`api_key`): Cloudflare's API: zones, DNS, Workers, R2, D1, KV and the rest of an account.
|
|
460
|
+
|
|
461
|
+
- **Settings:** `CLOUDFLARE_PROVIDER_API_TOKEN`
|
|
462
|
+
- **What the key is:** An API token from My Profile > API Tokens with only the permissions the app needs; the Gateway sends it as a bearer token. A token on the Gateway's own account can read and change the Gateway, so keep it narrow or use another account. A user or account-owned API token scoped to the zones and permissions the app needs, never a Global API Key.
|
|
463
|
+
- **Where the key comes from:** https://dash.cloudflare.com/profile/api-tokens
|
|
464
|
+
- **API reference:** https://developers.cloudflare.com/api/
|
|
465
|
+
- **How it is sent:** `Authorization: Bearer <CLOUDFLARE_PROVIDER_API_TOKEN>`, to `api.cloudflare.com` only, over https
|
|
466
|
+
- **What apps may do:** access `read`, `write`; GET, HEAD on any grant, and POST, PUT, PATCH, DELETE for an entry with `access: "write"`; account-wide paths refused: `client/v4/user`, `client/v4/memberships`, `client/v4/organizations`, `client/v4/tenants`, `members`, `tokens`, `roles`, `iam`, `subscriptions`, `payment-methods`, `pay-invoice`, `receipts`, `invoices`, `client-secret`, `billing`, `logs/audit`, `audit_logs`, `alerting/v3/destinations/webhooks`, `ai/run`, `ai/v1`; data `account` (served on a self-hosted Gateway only)
|
|
467
|
+
- **Smoke request:** `GET https://api.cloudflare.com/client/v4/user/tokens/verify`, expecting 200; free. For a user token; account-owned tokens use /client/v4/accounts/<id>/tokens/verify. Account-wide, so run it from the person's terminal.
|
|
468
|
+
- **Cost:** not recorded
|
|
469
|
+
- **Rate:** 1,200 requests per 5 minutes per user or account token; 200 a second per IP; GraphQL by query cost, at most 320 per 5 minutes.
|
|
470
|
+
- **Verified:** 2026-10-25, docs
|
|
471
|
+
- **Set it:** `pnpm everyapp secret set CLOUDFLARE_PROVIDER_API_TOKEN`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
472
|
+
- **Guide:** none beyond this section
|
|
473
|
+
|
|
474
|
+
### posthog
|
|
475
|
+
|
|
476
|
+
**PostHog** (`api_key`): Product analytics: insights, feature flags, persons, cohorts, experiments and HogQL queries.
|
|
477
|
+
|
|
478
|
+
- **Settings:** `POSTHOG_PERSONAL_API_KEY`
|
|
479
|
+
- **What the key is:** A personal API key from Settings > Personal API keys, with only the scopes the app needs; the Gateway sends it as a bearer token to us.posthog.com or eu.posthog.com. HogQL queries are POSTs, so an app that runs them asks for write. A personal API key (phx_...) with only the scopes the app needs, from the region the project lives in; never the project token.
|
|
480
|
+
- **Where the key comes from:** https://us.posthog.com/settings/user-api-keys
|
|
481
|
+
- **API reference:** https://posthog.com/docs/api
|
|
482
|
+
- **How it is sent:** `Authorization: Bearer <POSTHOG_PERSONAL_API_KEY>`, to `us.posthog.com`, `eu.posthog.com` only, over https
|
|
483
|
+
- **What apps may do:** access `read`, `write`; GET, HEAD on any grant, and POST, PUT, PATCH, DELETE for an entry with `access: "write"`; account-wide paths refused: `api/users`, `api/user`, `api/organizations`, `api/billing`, `api/revoke_leaked_key`, `project_secret_api_keys`, `billing`, `activity_log`, `advanced_activity_logs`, `hog_functions`, `batch_exports`, `integrations`; data `account` (served on a self-hosted Gateway only)
|
|
484
|
+
- **Smoke request:** `GET https://us.posthog.com/api/users/@me/`, expecting 200; free. Needs the user:read scope; use eu.posthog.com for an EU project. Account-wide, so run it from the person's terminal.
|
|
485
|
+
- **Cost:** not recorded
|
|
486
|
+
- **Rate:** 480 a minute. Create, read, update and delete endpoints 480 a minute and 4,800 an hour; analytics endpoints 240 a minute; the query endpoint 2,400 an hour.
|
|
487
|
+
- **Verified:** 2026-10-25, docs
|
|
488
|
+
- **Set it:** `pnpm everyapp secret set POSTHOG_PERSONAL_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
489
|
+
- **Guide:** none beyond this section
|
|
490
|
+
|
|
491
|
+
### mixpanel
|
|
492
|
+
|
|
493
|
+
**Mixpanel** (`api_key`): Product analytics: saved reports, profiles, raw event export and event import.
|
|
494
|
+
|
|
495
|
+
- **Settings:** `MIXPANEL_SERVICE_ACCOUNT_SECRET`, `MIXPANEL_SERVICE_ACCOUNT_USERNAME`
|
|
496
|
+
- **What the key is:** A service account from Organization Settings > Service Accounts; the Gateway sends its username and secret as HTTP Basic. Most calls also need the project_id parameter, and an EU or India project uses its own hosts. MIXPANEL_SERVICE_ACCOUNT_USERNAME: The service account's username, shown when it is created in Organization Settings > Service Accounts. MIXPANEL_SERVICE_ACCOUNT_SECRET: The service account's secret, shown once when it is created; give the account the narrowest role and only the projects the app needs.
|
|
497
|
+
- **Where the key comes from:** https://mixpanel.com/settings/org#serviceaccounts
|
|
498
|
+
- **API reference:** https://docs.mixpanel.com/reference/overview
|
|
499
|
+
- **How it is sent:** `Authorization: Basic base64(<MIXPANEL_SERVICE_ACCOUNT_USERNAME>:<MIXPANEL_SERVICE_ACCOUNT_SECRET>)`, to `mixpanel.com`, `eu.mixpanel.com`, `in.mixpanel.com`, `data.mixpanel.com`, `data-eu.mixpanel.com`, `data-in.mixpanel.com`, `api.mixpanel.com`, `api-eu.mixpanel.com`, `api-in.mixpanel.com` only, over https
|
|
500
|
+
- **What apps may do:** access `read`, `write`; GET, HEAD on any grant, and POST, PUT, PATCH, DELETE for an entry with `access: "write"`; account-wide paths refused: `api/app/me`, `api/app/organizations`, `service-accounts`, `data-retrievals`, `data-deletions`, `nessie`; data `account` (served on a self-hosted Gateway only)
|
|
501
|
+
- **Smoke request:** `GET https://mixpanel.com/api/app/me`, expecting 200; free. Lists the organizations and projects the service account reaches. Account-wide, so run it from the person's terminal.
|
|
502
|
+
- **Cost:** not recorded
|
|
503
|
+
- **Rate:** Per project: Query API 60 queries an hour, 5 at once; Raw Data Export 60 an hour, 3 a second, 100 at once; ingestion about 2 GB a minute.
|
|
504
|
+
- **Verified:** 2026-10-25, docs
|
|
505
|
+
- **Set it:** `pnpm everyapp secret set MIXPANEL_SERVICE_ACCOUNT_SECRET MIXPANEL_SERVICE_ACCOUNT_USERNAME`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
506
|
+
- **Guide:** none beyond this section
|
|
507
|
+
|
|
508
|
+
### segment
|
|
509
|
+
|
|
510
|
+
**Segment** (`api_key`): Sends identify, track, page, group and alias events to a Segment source.
|
|
511
|
+
|
|
512
|
+
- **Settings:** `SEGMENT_WRITE_KEY`
|
|
513
|
+
- **What the key is:** The write key of an HTTP API source, from the source's Settings > API Keys; the Gateway sends it as the Basic username with an empty password. It only sends events; an EU workspace uses events.eu1.segmentapis.com. The write key of an HTTP API source, from the source's Settings > API Keys.
|
|
514
|
+
- **Where the key comes from:** https://www.twilio.com/docs/segment/connections/find-writekey
|
|
515
|
+
- **API reference:** https://www.twilio.com/docs/segment/connections/sources/catalog/libraries/server/http-api
|
|
516
|
+
- **How it is sent:** `Authorization: Basic base64(<SEGMENT_WRITE_KEY>:)`, to `api.segment.io`, `events.eu1.segmentapis.com` only, over https
|
|
517
|
+
- **What apps may do:** access `write`; on any grant, and POST for an entry with `access: "write"`; data `account` (served on a self-hosted Gateway only)
|
|
518
|
+
- **Smoke request:** none recorded
|
|
519
|
+
- **Cost:** not recorded
|
|
520
|
+
- **Rate:** 1000 a second. Recommended ceiling per workspace; 32 KB per call, 500 KB and 2,500 events per batch.
|
|
521
|
+
- **Verified:** 2026-10-25, docs
|
|
522
|
+
- **Set it:** `pnpm everyapp secret set SEGMENT_WRITE_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
523
|
+
- **Guide:** none beyond this section
|
|
524
|
+
|
|
525
|
+
### supabase
|
|
526
|
+
|
|
527
|
+
**Supabase** (`api_key`): A Supabase project's Postgres REST API and Storage, with its secret key.
|
|
528
|
+
|
|
529
|
+
- **Settings:** `SUPABASE_SECRET_KEY`, `SUPABASE_HOST`
|
|
530
|
+
- **What the key is:** A secret key (sb_secret_...) from Settings > API Keys and the project's host; the Gateway sends the key in the apikey header. The key bypasses Row Level Security, and RPC calls are POSTs, so they need write. SUPABASE_SECRET_KEY: A secret key (sb_secret_...) from Settings > API Keys, made for this Gateway alone; it bypasses Row Level Security. SUPABASE_HOST: The project's host, <project-ref>.supabase.co, from the project URL.
|
|
531
|
+
- **Where the key comes from:** https://supabase.com/dashboard/project/_/settings/api-keys
|
|
532
|
+
- **API reference:** https://supabase.com/docs/guides/api
|
|
533
|
+
- **How it is sent:** `apikey: <SUPABASE_SECRET_KEY>`, to the host `<SUPABASE_HOST>` names (a bare host or an https origin) only, over https
|
|
534
|
+
- **What apps may do:** access `read`, `write`; GET, HEAD on any grant, and POST, PUT, PATCH, DELETE for an entry with `access: "write"`; account-wide paths refused: `auth/v1/admin`, `pg`; data `account` (served on a self-hosted Gateway only)
|
|
535
|
+
- **Smoke request:** `GET https://<SUPABASE_HOST>/rest/v1/`, expecting 200; free. The REST API's OpenAPI root, which only a secret key may read; sent to the host in SUPABASE_HOST.
|
|
536
|
+
- **Cost:** not recorded
|
|
537
|
+
- **Rate:** not recorded
|
|
538
|
+
- **Verified:** 2026-10-25, docs
|
|
539
|
+
- **Set it:** `pnpm everyapp secret set SUPABASE_SECRET_KEY SUPABASE_HOST`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
540
|
+
- **Guide:** none beyond this section
|
|
541
|
+
|
|
542
|
+
### turso
|
|
543
|
+
|
|
544
|
+
**Turso** (`api_key`): Turso's Platform API: databases, groups, locations and usage for one organization.
|
|
545
|
+
|
|
546
|
+
- **Settings:** `TURSO_API_TOKEN`
|
|
547
|
+
- **What the key is:** An organization-scoped Platform API token (turso auth api-tokens mint <name> --org <org>); the Gateway sends it as a bearer token to api.turso.tech. It manages databases and cannot query them: that is the turso-db entry. An organization-scoped or group-scoped Platform API token from turso auth api-tokens mint <name> --org <org>; never an unrestricted one.
|
|
548
|
+
- **Where the key comes from:** https://docs.turso.tech/api-reference/authentication
|
|
549
|
+
- **API reference:** https://docs.turso.tech/api-reference/introduction
|
|
550
|
+
- **How it is sent:** `Authorization: Bearer <TURSO_API_TOKEN>`, to `api.turso.tech` only, over https
|
|
551
|
+
- **What apps may do:** access `read`, `write`; GET, HEAD on any grant, and POST, PATCH, DELETE for an entry with `access: "write"`; account-wide paths refused: `auth`, `api-tokens`, `members`, `invites`, `invoices`, `subscription`, `plans`, `audit-logs`, `v1/user`; data `account` (served on a self-hosted Gateway only)
|
|
552
|
+
- **Smoke request:** `GET https://api.turso.tech/v1/auth/validate`, expecting 200; free. Account-wide, so run it from the person's terminal.
|
|
553
|
+
- **Cost:** not recorded
|
|
554
|
+
- **Rate:** not recorded
|
|
555
|
+
- **Verified:** 2026-10-25, docs
|
|
556
|
+
- **Set it:** `pnpm everyapp secret set TURSO_API_TOKEN`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
557
|
+
- **Guide:** none beyond this section
|
|
558
|
+
|
|
559
|
+
### turso-db
|
|
560
|
+
|
|
561
|
+
**Turso database** (`api_key`): SQL over HTTP to one Turso database: queries, dumps and migration status.
|
|
562
|
+
|
|
563
|
+
- **Settings:** `TURSO_DB_AUTH_TOKEN`, `TURSO_DB_HOST`
|
|
564
|
+
- **What the key is:** A database token (turso db tokens create <db>) and the database's HTTP host; the Gateway sends the token as a bearer token. Every query is a POST to /v2/pipeline, so an app that queries asks for write; a --read-only token keeps it to reads. TURSO_DB_AUTH_TOKEN: A database token from turso db tokens create <db>, with --read-only or fine-grained permissions when the app only reads. TURSO_DB_HOST: The database's HTTP host, <db>-<org>.turso.io, from turso db show <db> --http-url.
|
|
565
|
+
- **Where the key comes from:** https://docs.turso.tech/sdk/authorization/tokens
|
|
566
|
+
- **API reference:** https://docs.turso.tech/sdk/http/reference
|
|
567
|
+
- **How it is sent:** `Authorization: Bearer <TURSO_DB_AUTH_TOKEN>`, to the host `<TURSO_DB_HOST>` names (a bare host or an https origin) only, over https
|
|
568
|
+
- **What apps may do:** access `read`, `write`; GET, HEAD on any grant, and POST for an entry with `access: "write"`; data `account` (served on a self-hosted Gateway only)
|
|
569
|
+
- **Smoke request:** none recorded
|
|
570
|
+
- **Cost:** not recorded
|
|
571
|
+
- **Rate:** not recorded
|
|
572
|
+
- **Verified:** 2026-10-25, docs
|
|
573
|
+
- **Set it:** `pnpm everyapp secret set TURSO_DB_AUTH_TOKEN TURSO_DB_HOST`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
574
|
+
- **Guide:** none beyond this section
|
|
575
|
+
|
|
576
|
+
### neon
|
|
577
|
+
|
|
578
|
+
**Neon** (`api_key`): Neon's management API: Postgres projects, branches, databases, roles and endpoints.
|
|
579
|
+
|
|
580
|
+
- **Settings:** `NEON_API_KEY`
|
|
581
|
+
- **What the key is:** A project-scoped or organization API key from Settings > API keys; the Gateway sends it as a bearer token to console.neon.tech. It manages projects and branches; the database itself takes Postgres credentials, not this key. A project-scoped or organization API key from Settings > API keys; a project-scoped key reaches one project only.
|
|
582
|
+
- **Where the key comes from:** https://neon.com/docs/manage/api-keys
|
|
583
|
+
- **API reference:** https://neon.com/docs/reference/api
|
|
584
|
+
- **How it is sent:** `Authorization: Bearer <NEON_API_KEY>`, to `console.neon.tech` only, over https
|
|
585
|
+
- **What apps may do:** access `read`, `write`; GET, HEAD on any grant, and POST, PUT, PATCH, DELETE for an entry with `access: "write"`; account-wide paths refused: `api/v2/auth`, `api/v2/organizations`, `users/me`, `api_keys`, `members`, `invitations`, `permissions`, `transfer_requests`, `billing`, `consumption_history`, `connection_uri`, `reveal_password`, `reset_password`, `credentials`, `realtime/secret`, `rotate_secret`, `auth/keys`, `auth/webhooks`, `oauth_providers`, `email_server`, `email_provider`, `auth/plugins`; data `account` (served on a self-hosted Gateway only)
|
|
586
|
+
- **Smoke request:** `GET https://console.neon.tech/api/v2/auth`, expecting 200; free. Says which credential and identity the key is. Account-wide, so run it from the person's terminal.
|
|
587
|
+
- **Cost:** not recorded
|
|
588
|
+
- **Rate:** 700 a minute. About 11 a second, with bursts of 40 a second per route.
|
|
589
|
+
- **Verified:** 2026-10-25, docs
|
|
590
|
+
- **Set it:** `pnpm everyapp secret set NEON_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
591
|
+
- **Guide:** none beyond this section
|
|
592
|
+
|
|
593
|
+
### pinecone
|
|
594
|
+
|
|
595
|
+
**Pinecone** (`api_key`): Vector database: indexes, namespaces, vectors and documents, plus hosted embedding and rerank.
|
|
596
|
+
|
|
597
|
+
- **Settings:** `PINECONE_API_KEY`, `PINECONE_HOST`
|
|
598
|
+
- **What the key is:** An API key from the project's API keys page and the host of the index the app uses; the Gateway sends the key in the Api-Key header to api.pinecone.io and that host. Query, search, embed and rerank are POSTs, so an app that uses them asks for write. PINECONE_API_KEY: An API key from the project's API keys page in the Pinecone console. PINECONE_HOST: The host of the index the app uses, <index>-<id>.svc.<env>.pinecone.io, from describe_index or the console.
|
|
599
|
+
- **Where the key comes from:** https://app.pinecone.io/organizations/-/projects/-/keys
|
|
600
|
+
- **API reference:** https://docs.pinecone.io/reference/api/introduction
|
|
601
|
+
- **How it is sent:** `Api-Key: <PINECONE_API_KEY>`, to `api.pinecone.io`, the host `<PINECONE_HOST>` names (a bare host or an https origin) only, over https
|
|
602
|
+
- **What apps may do:** access `read`, `write`; GET, HEAD on any grant, and POST, PATCH, DELETE for an entry with `access: "write"`; account-wide paths refused: `admin`, `api-keys`; data `account` (served on a self-hosted Gateway only)
|
|
603
|
+
- **Smoke request:** `GET https://api.pinecone.io/indexes`, expecting 200; free. Lists the project's indexes; the app sends X-Pinecone-Api-Version itself.
|
|
604
|
+
- **Cost:** not recorded
|
|
605
|
+
- **Rate:** not recorded
|
|
606
|
+
- **Verified:** 2026-10-25, docs
|
|
607
|
+
- **Set it:** `pnpm everyapp secret set PINECONE_API_KEY PINECONE_HOST`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
608
|
+
- **Guide:** none beyond this section
|
|
609
|
+
|
|
610
|
+
### mapbox
|
|
611
|
+
|
|
612
|
+
**Mapbox** (`api_key`): Maps and location: geocoding, directions, styles, tilesets and datasets.
|
|
613
|
+
|
|
614
|
+
- **Settings:** `MAPBOX_ACCESS_TOKEN`
|
|
615
|
+
- **What the key is:** An access token from Access tokens in the Mapbox console, with only the scopes the app needs; the Gateway adds it to every call as the access_token parameter. An access token with only the scopes the app needs, from Access tokens in the Mapbox console.
|
|
616
|
+
- **Where the key comes from:** https://console.mapbox.com/account/access-tokens/
|
|
617
|
+
- **API reference:** https://docs.mapbox.com/api/overview/
|
|
618
|
+
- **How it is sent:** `?access_token=<MAPBOX_ACCESS_TOKEN>` on the URL, in place of any the app sent, to `api.mapbox.com` only, over https
|
|
619
|
+
- **What apps may do:** access `read`, `write`; GET, HEAD on any grant, and POST, PUT, PATCH, DELETE for an entry with `access: "write"`; account-wide paths refused: `tokens`; data `account` (served on a self-hosted Gateway only)
|
|
620
|
+
- **Smoke request:** none recorded
|
|
621
|
+
- **Cost:** not recorded
|
|
622
|
+
- **Rate:** Per token and per API: Geocoding 1,000 a minute, Directions 300, Static Images 1,250; the Tokens API 100 a minute per account.
|
|
623
|
+
- **Verified:** 2026-10-25, docs
|
|
624
|
+
- **Set it:** `pnpm everyapp secret set MAPBOX_ACCESS_TOKEN`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
625
|
+
- **Guide:** none beyond this section
|
|
626
|
+
|
|
627
|
+
### openweather
|
|
628
|
+
|
|
629
|
+
**OpenWeather** (`api_key`): Weather data: current conditions, forecasts, One Call, history and weather map tiles.
|
|
630
|
+
|
|
631
|
+
- **Settings:** `OPENWEATHER_API_KEY`
|
|
632
|
+
- **What the key is:** An API key from the API keys tab of your OpenWeather account; the Gateway adds it to every call as the appid parameter. Paid products (hourly forecast, history, Weather Maps 2.0) need a plan that includes them. An API key from the API keys tab of the OpenWeather account; a new key can take up to two hours to activate.
|
|
633
|
+
- **Where the key comes from:** https://home.openweathermap.org/api_keys
|
|
634
|
+
- **API reference:** https://openweathermap.org/api
|
|
635
|
+
- **How it is sent:** `?appid=<OPENWEATHER_API_KEY>` on the URL, in place of any the app sent, to `api.openweathermap.org`, `pro.openweathermap.org`, `history.openweathermap.org`, `tile.openweathermap.org`, `maps.openweathermap.org` only, over https
|
|
636
|
+
- **What apps may do:** access `read`; GET, HEAD on any grant; account-wide paths refused: `data/3/stations`, `data/3/measurements`; data `per-call`
|
|
637
|
+
- **Smoke request:** `GET https://api.openweathermap.org/data/2.5/weather?lat=51.51&lon=-0.13`, expecting 200; free. Counts one call against the plan's quota; free within it. A bad or not yet active key answers 401.
|
|
638
|
+
- **Cost:** per call. One Call API 3.0 includes 1,000 calls a day free, then is paid per call.
|
|
639
|
+
- **Rate:** 60 a minute. The Free plan answers 429 past 60 calls a minute.
|
|
640
|
+
- **Verified:** 2026-10-25, docs
|
|
641
|
+
- **Set it:** `pnpm everyapp secret set OPENWEATHER_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
642
|
+
- **Guide:** none beyond this section
|
|
643
|
+
|
|
644
|
+
### voyage
|
|
645
|
+
|
|
646
|
+
**Voyage AI** (`api_key`): Embeddings and rerankers for search and retrieval: text, code, multimodal, contextualized chunks.
|
|
647
|
+
|
|
648
|
+
- **Settings:** `VOYAGE_API_KEY`
|
|
649
|
+
- **What the key is:** A secret key from the Voyage dashboard; the Gateway sends it as a bearer token. Apps POST to /v1/embeddings, /v1/multimodalembeddings, /v1/contextualizedembeddings and /v1/rerank. A secret key from API keys in the Voyage dashboard.
|
|
650
|
+
- **Where the key comes from:** https://dashboard.voyageai.com/organization/api-keys
|
|
651
|
+
- **API reference:** https://docs.voyageai.com/reference/embeddings-api
|
|
652
|
+
- **How it is sent:** `Authorization: Bearer <VOYAGE_API_KEY>`, to `api.voyageai.com` only, over https
|
|
653
|
+
- **What apps may do:** access `read`; POST on any grant; account-wide paths refused: `v1/files`, `v1/batches`; data `per-call`
|
|
654
|
+
- **Smoke request:** `GET https://api.voyageai.com/v1/batches`, expecting 200; free. Lists the organization's batches, so the Gateway refuses it for apps; run it from the person's terminal.
|
|
655
|
+
- **Cost:** per token. voyage-4 $0.06 per million tokens; the first 200 million tokens of the voyage-4 family are free per account.
|
|
656
|
+
- **Rate:** 2000 a minute. 2,000 requests a minute at tier 1, doubled at tier 2, tripled at tier 3; tokens per minute vary by model.
|
|
657
|
+
- **Verified:** 2026-10-25, docs
|
|
658
|
+
- **Set it:** `pnpm everyapp secret set VOYAGE_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
659
|
+
- **Guide:** none beyond this section
|
|
660
|
+
|
|
661
|
+
### perplexity
|
|
662
|
+
|
|
663
|
+
**Perplexity** (`api_key`): Web-grounded answers from the Agent API, raw web search results, and embeddings.
|
|
664
|
+
|
|
665
|
+
- **Settings:** `PERPLEXITY_API_KEY`
|
|
666
|
+
- **What the key is:** An API key from the Perplexity console; the Gateway sends it as a bearer token. Apps POST to /v1/agent for researched answers and /search for result lists, and GET /v1/agent/{id} to poll a background run. An API key from the project's API keys page in the Perplexity console.
|
|
667
|
+
- **Where the key comes from:** https://console.perplexity.ai/project/keys
|
|
668
|
+
- **API reference:** https://docs.perplexity.ai/api-reference/agent-post
|
|
669
|
+
- **How it is sent:** `Authorization: Bearer <PERPLEXITY_API_KEY>`, to `api.perplexity.ai` only, over https
|
|
670
|
+
- **What apps may do:** access `read`; GET, POST on any grant; account-wide paths refused: `v1/batches`, `v1/files`, `v1/skills`, `v1/analytics`, `v2/analytics`, `generate_auth_token`, `revoke_auth_token`; data `per-call`
|
|
671
|
+
- **Smoke request:** `GET https://api.perplexity.ai/orchestrator/v1/models`, expecting 200; free
|
|
672
|
+
- **Cost:** per token. Agent API per token plus tool fees (web_search $0.0025 a call); Search API $5 per 1,000 requests.
|
|
673
|
+
- **Rate:** not recorded
|
|
674
|
+
- **Verified:** 2026-10-25, docs
|
|
675
|
+
- **Set it:** `pnpm everyapp secret set PERPLEXITY_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
676
|
+
- **Guide:** none beyond this section
|
|
677
|
+
|
|
678
|
+
### jina
|
|
679
|
+
|
|
680
|
+
**Jina AI** (`api_key`): Reads web pages as Markdown, searches the web, and embeds and reranks text and images.
|
|
681
|
+
|
|
682
|
+
- **Settings:** `JINA_API_KEY`
|
|
683
|
+
- **What the key is:** An API key from the Jina API dashboard; the Gateway sends it as a bearer token. Reader is r.jina.ai (POST {"url": ...}), Search is s.jina.ai, and embeddings and rerank are on api.jina.ai. A key starting jina_, from Manage API Key in the Jina API dashboard.
|
|
684
|
+
- **Where the key comes from:** https://jina.ai/api-dashboard/key-manager
|
|
685
|
+
- **API reference:** https://docs.jina.ai/
|
|
686
|
+
- **How it is sent:** `Authorization: Bearer <JINA_API_KEY>`, to `api.jina.ai`, `r.jina.ai`, `s.jina.ai` only, over https
|
|
687
|
+
- **What apps may do:** access `read`; GET, POST on any grant; account-wide paths refused: `v1/batches`, `echo`; data `per-call`
|
|
688
|
+
- **Smoke request:** `GET https://api.jina.ai/v1/batches`, expecting 200; free. Lists the account's batch jobs, so the Gateway refuses it for apps; run it from the person's terminal.
|
|
689
|
+
- **Cost:** per token. Billed in tokens against the account balance; GET /v1/models lists each model's price.
|
|
690
|
+
- **Rate:** Reader 500 requests a minute, Search 100, embeddings and rerank 500; premium keys get ten times more.
|
|
691
|
+
- **Verified:** 2026-10-25, docs
|
|
692
|
+
- **Set it:** `pnpm everyapp secret set JINA_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
693
|
+
- **Guide:** none beyond this section
|
|
694
|
+
|
|
695
|
+
### replicate
|
|
696
|
+
|
|
697
|
+
**Replicate** (`api_key`): Runs open-source and official models by API: images, video, audio and language.
|
|
698
|
+
|
|
699
|
+
- **Settings:** `REPLICATE_API_TOKEN`
|
|
700
|
+
- **What the key is:** An API token from Replicate's API tokens page; the Gateway sends it as a bearer token. Apps POST to /v1/models/{owner}/{name}/predictions or /v1/predictions with Prefer: wait (up to 60 seconds), or pass a webhook URL for longer runs. An API token from the API tokens page of the Replicate account.
|
|
701
|
+
- **Where the key comes from:** https://replicate.com/account/api-tokens
|
|
702
|
+
- **API reference:** https://replicate.com/docs/reference/http
|
|
703
|
+
- **How it is sent:** `Authorization: Bearer <REPLICATE_API_TOKEN>`, to `api.replicate.com` only, over https
|
|
704
|
+
- **What apps may do:** access `read`; POST on any grant; account-wide paths refused: `v1/account`, `v1/deployments`, `v1/files`, `v1/webhooks`, `trainings`; data `per-call`
|
|
705
|
+
- **Smoke request:** `GET https://api.replicate.com/v1/account`, expecting 200; free. Account-wide, so the Gateway refuses it for apps; run it from the person's terminal.
|
|
706
|
+
- **Cost:** not recorded
|
|
707
|
+
- **Rate:** 600 a minute. Creating predictions 600 a minute; every other endpoint 3,000 a minute.
|
|
708
|
+
- **Verified:** 2026-10-25, docs
|
|
709
|
+
- **Set it:** `pnpm everyapp secret set REPLICATE_API_TOKEN`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
710
|
+
- **Guide:** none beyond this section
|
|
711
|
+
|
|
712
|
+
### huggingface
|
|
713
|
+
|
|
714
|
+
**Hugging Face Inference** (`api_key`): Open models from Hugging Face's inference providers through one router: chat, embeddings, images, speech.
|
|
715
|
+
|
|
716
|
+
- **Settings:** `HUGGINGFACE_API_TOKEN`
|
|
717
|
+
- **What the key is:** A fine-grained access token from Hugging Face settings with the Inference Providers permission; the Gateway sends it as a bearer token. Apps POST OpenAI-style chat to /v1/chat/completions, or other tasks under /<provider>/, such as /hf-inference/models/<model>. A fine-grained token with only the Make calls to Inference Providers permission.
|
|
718
|
+
- **Where the key comes from:** https://huggingface.co/settings/tokens/new?ownUserPermissions=inference.serverless.write&tokenType=fineGrained
|
|
719
|
+
- **API reference:** https://huggingface.co/docs/inference-providers/index
|
|
720
|
+
- **How it is sent:** `Authorization: Bearer <HUGGINGFACE_API_TOKEN>`, to `router.huggingface.co` only, over https
|
|
721
|
+
- **What apps may do:** access `read`; GET, POST on any grant; data `per-call`
|
|
722
|
+
- **Smoke request:** none recorded
|
|
723
|
+
- **Cost:** per call. Pay as you go at each provider's own rate with no markup; PRO accounts get $2 of compute credits a month.
|
|
724
|
+
- **Rate:** not recorded
|
|
725
|
+
- **Verified:** 2026-10-25, docs
|
|
726
|
+
- **Set it:** `pnpm everyapp secret set HUGGINGFACE_API_TOKEN`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
727
|
+
- **Guide:** none beyond this section
|
|
728
|
+
|
|
729
|
+
### firecrawl
|
|
730
|
+
|
|
731
|
+
**Firecrawl** (`api_key`): Scrapes, crawls, maps and searches the web, returning clean markdown or structured data.
|
|
732
|
+
|
|
733
|
+
- **Settings:** `FIRECRAWL_API_KEY`
|
|
734
|
+
- **What the key is:** An API key from Firecrawl's API keys page; the Gateway sends it as a bearer token. Scrape, crawl, map, search and extract are POSTs and job status is a GET; cancelling a crawl or batch (DELETE) needs write. An API key from Firecrawl's API keys page; it starts with fc-.
|
|
735
|
+
- **Where the key comes from:** https://www.firecrawl.dev/app/api-keys
|
|
736
|
+
- **API reference:** https://docs.firecrawl.dev/api-reference/introduction
|
|
737
|
+
- **How it is sent:** `Authorization: Bearer <FIRECRAWL_API_KEY>`, to `api.firecrawl.dev` only, over https
|
|
738
|
+
- **What apps may do:** access `read`, `write`; GET, POST on any grant, and DELETE for an entry with `access: "write"`; account-wide paths refused: `team`, `crawl/active`, `monitor`, `agent`, `interact`, `support/ask`; data `per-call`
|
|
739
|
+
- **Smoke request:** `GET https://api.firecrawl.dev/v2/team/credit-usage`, expecting 200; free. Remaining credits; account-wide, so the Gateway refuses it for apps: run it from the person's terminal.
|
|
740
|
+
- **Cost:** per result. Credits: 1 per page scraped or crawled, 1 per map call, 2 per 10 search results; JSON extraction and other options add more.
|
|
741
|
+
- **Rate:** Per team per minute, by plan: /scrape 10 on Free, 100 Hobby, 500 Standard, 5,000 Growth; /crawl 2, 20, 100, 1,000.
|
|
742
|
+
- **Verified:** 2026-10-25, docs
|
|
743
|
+
- **Set it:** `pnpm everyapp secret set FIRECRAWL_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
744
|
+
- **Guide:** none beyond this section
|
|
745
|
+
|
|
746
|
+
### exa
|
|
747
|
+
|
|
748
|
+
**Exa** (`api_key`): Web search built for AI: search results, page contents, similar links and cited answers.
|
|
749
|
+
|
|
750
|
+
- **Settings:** `EXA_API_KEY`
|
|
751
|
+
- **What the key is:** An API key from the Exa dashboard (the free tier gives $10 of credit a month); the Gateway sends it in the x-api-key header. Search, contents, find-similar and answer are POSTs. An API key from the API keys page of the Exa dashboard.
|
|
752
|
+
- **Where the key comes from:** https://dashboard.exa.ai/api-keys
|
|
753
|
+
- **API reference:** https://exa.ai/docs/reference/search
|
|
754
|
+
- **How it is sent:** `x-api-key: <EXA_API_KEY>`, to `api.exa.ai` only, over https
|
|
755
|
+
- **What apps may do:** access `read`; POST on any grant; account-wide paths refused: `websets`, `monitors`, `agent`, `batches`; data `per-call`
|
|
756
|
+
- **Smoke request:** `GET https://api.exa.ai/websets/v0/teams/me`, expecting 200; free. Team info under the Websets API (the docs page leaves out the /websets prefix); account-wide, so run it from the person's terminal.
|
|
757
|
+
- **Cost:** per call, $0.007. Search $7 per 1k (auto and fast; lite $4), contents $1 per 1k pages, answer $5 per 1k; up to 10 results included.
|
|
758
|
+
- **Rate:** 10 a second. Per team: /search and /answer 10 QPS, deep search 5, /contents 100.
|
|
759
|
+
- **Verified:** 2026-10-25, docs
|
|
760
|
+
- **Set it:** `pnpm everyapp secret set EXA_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
761
|
+
- **Guide:** none beyond this section
|
|
762
|
+
|
|
763
|
+
### tavily
|
|
764
|
+
|
|
765
|
+
**Tavily** (`api_key`): Web search, page extraction, crawling and site maps for AI agents, plus research reports.
|
|
766
|
+
|
|
767
|
+
- **Settings:** `TAVILY_API_KEY`
|
|
768
|
+
- **What the key is:** An API key from app.tavily.com (1,000 free credits a month); the Gateway sends it as a bearer token. Search, extract, crawl, map and research are POSTs; a research result is a GET. An API key from the Tavily dashboard; it starts with tvly-.
|
|
769
|
+
- **Where the key comes from:** https://app.tavily.com
|
|
770
|
+
- **API reference:** https://docs.tavily.com/documentation/api-reference/endpoint/search
|
|
771
|
+
- **How it is sent:** `Authorization: Bearer <TAVILY_API_KEY>`, to `api.tavily.com` only, over https
|
|
772
|
+
- **What apps may do:** access `read`; GET, POST on any grant; account-wide paths refused: `usage`, `logs`, `org-usage`; data `per-call`
|
|
773
|
+
- **Smoke request:** `GET https://api.tavily.com/usage`, expecting 200; free. Key and account usage, not an endpoint that costs credits; account-wide, so run it from the person's terminal (10 calls per 10 minutes).
|
|
774
|
+
- **Cost:** per call, $0.008. Pay as you go $0.008 per credit: basic search 1 credit, advanced 2; extract 1 credit per 5 URLs; map 1 per 10 pages.
|
|
775
|
+
- **Rate:** 100 a minute. Development keys 100 per minute, production keys 1,000; crawl 100 and research 20 per minute for both.
|
|
776
|
+
- **Verified:** 2026-10-25, docs
|
|
777
|
+
- **Set it:** `pnpm everyapp secret set TAVILY_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
778
|
+
- **Guide:** none beyond this section
|
|
779
|
+
|
|
780
|
+
### serper
|
|
781
|
+
|
|
782
|
+
**Serper** (`api_key`): Google search results as JSON: web, news, images, places, shopping, scholar and patents.
|
|
783
|
+
|
|
784
|
+
- **Settings:** `SERPER_API_KEY`
|
|
785
|
+
- **What the key is:** An API key from serper.dev (2,500 free queries to start); the Gateway sends it in the X-API-KEY header. Every search is a POST to google.serper.dev/<type> (search, news, images, places, …) with a JSON body such as {"q": "…"}. The API key on serper.dev's API keys page.
|
|
786
|
+
- **Where the key comes from:** https://serper.dev/api-keys
|
|
787
|
+
- **API reference:** https://serper.dev/playground
|
|
788
|
+
- **How it is sent:** `X-API-KEY: <SERPER_API_KEY>`, to `google.serper.dev`, `scrape.serper.dev` only, over https
|
|
789
|
+
- **What apps may do:** access `read`; POST on any grant; data `per-call`
|
|
790
|
+
- **Smoke request:** none recorded
|
|
791
|
+
- **Cost:** per call, $0.001. Prepaid credits, one per successful query: $1.00 per 1k on the 50k pack, down to $0.30 per 1k on the largest.
|
|
792
|
+
- **Rate:** 50 a second. Starter credits 50 queries per second; Standard 100, Scale 200, Ultimate 300.
|
|
793
|
+
- **Verified:** no: not checked against the provider's docs
|
|
794
|
+
- **Set it:** `pnpm everyapp secret set SERPER_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
795
|
+
- **Guide:** none beyond this section
|
|
796
|
+
|
|
797
|
+
### brave-search
|
|
798
|
+
|
|
799
|
+
**Brave Search** (`api_key`): Brave's independent web index: web, news, images, videos, places, LLM context and answers.
|
|
800
|
+
|
|
801
|
+
- **Settings:** `BRAVE_SEARCH_API_KEY`
|
|
802
|
+
- **What the key is:** Activate a plan (it includes $5 of free credit a month), then create a key under API Keys; the Gateway sends it in the X-Subscription-Token header. Searches are GETs (POST works too); answers are a POST to /res/v1/chat/completions. A key from the API Keys section of the Brave Search API dashboard, made after activating a plan.
|
|
803
|
+
- **Where the key comes from:** https://api-dashboard.search.brave.com/app/keys
|
|
804
|
+
- **API reference:** https://api-dashboard.search.brave.com/documentation
|
|
805
|
+
- **How it is sent:** `X-Subscription-Token: <BRAVE_SEARCH_API_KEY>`, to `api.search.brave.com` only, over https
|
|
806
|
+
- **What apps may do:** access `read`; GET, POST on any grant; data `per-call`
|
|
807
|
+
- **Smoke request:** none recorded
|
|
808
|
+
- **Cost:** per call, $0.005. Search $5 per 1k requests; Answers $4 per 1k plus $5 per million tokens; $5 free credit a month; only successful calls count.
|
|
809
|
+
- **Rate:** 50 a second. Search plan 50 queries per second; Answers 2 per second.
|
|
810
|
+
- **Verified:** 2026-10-25, docs
|
|
811
|
+
- **Set it:** `pnpm everyapp secret set BRAVE_SEARCH_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
812
|
+
- **Guide:** none beyond this section
|
|
813
|
+
|
|
814
|
+
### apify
|
|
815
|
+
|
|
816
|
+
**Apify** (`api_key`): Runs Apify Actors (ready-made scrapers and automations) and reads their datasets and stores.
|
|
817
|
+
|
|
818
|
+
- **Settings:** `APIFY_API_TOKEN`
|
|
819
|
+
- **What the key is:** The API token from Apify Console, Settings > API & Integrations; the Gateway sends it as a bearer token. Reading Actors, runs and datasets needs read; starting a run is a POST, so it needs write. The API token under Settings > API & Integrations in Apify Console.
|
|
820
|
+
- **Where the key comes from:** https://console.apify.com/settings/integrations
|
|
821
|
+
- **API reference:** https://docs.apify.com/api/v2
|
|
822
|
+
- **How it is sent:** `Authorization: Bearer <APIFY_API_TOKEN>`, to `api.apify.com` only, over https
|
|
823
|
+
- **What apps may do:** access `read`, `write`; GET, HEAD on any grant, and POST, PUT, DELETE for an entry with `access: "write"`; account-wide paths refused: `users`, `webhooks`, `webhook-dispatches`, `env-vars`; data `account` (served on a self-hosted Gateway only)
|
|
824
|
+
- **Smoke request:** `GET https://api.apify.com/v2/users/me`, expecting 200; free. The docs' verify call; account-wide, so the Gateway refuses it for apps: run it from the person's terminal.
|
|
825
|
+
- **Cost:** not recorded
|
|
826
|
+
- **Rate:** 60 a second. 60 requests per second per resource (one Actor, run, dataset or store); 250,000 requests per minute per user overall.
|
|
827
|
+
- **Verified:** 2026-10-25, docs
|
|
828
|
+
- **Set it:** `pnpm everyapp secret set APIFY_API_TOKEN`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
829
|
+
- **Guide:** none beyond this section
|
|
830
|
+
|
|
831
|
+
### deepgram
|
|
832
|
+
|
|
833
|
+
**Deepgram** (`api_key`): Speech to text, text to speech and text analysis.
|
|
834
|
+
|
|
835
|
+
- **Settings:** `DEEPGRAM_API_KEY`
|
|
836
|
+
- **What the key is:** An API key from the Deepgram Console; the Gateway sends it as Authorization: Token <key>, and the EU, Australia and India hosts take the same key. Transcription (/v1/listen), speech (/v1/speak) and text analysis (/v1/read) are POSTs. A project API key created in the Deepgram Console.
|
|
837
|
+
- **Where the key comes from:** https://console.deepgram.com/
|
|
838
|
+
- **API reference:** https://developers.deepgram.com/reference/deepgram-api-overview
|
|
839
|
+
- **How it is sent:** `Authorization: Token <DEEPGRAM_API_KEY>`, to `api.deepgram.com`, `api.eu.deepgram.com`, `api.au.deepgram.com`, `api.in.deepgram.com` only, over https
|
|
840
|
+
- **What apps may do:** access `read`; GET, POST on any grant; account-wide paths refused: `projects`, `auth/grant`; data `per-call`
|
|
841
|
+
- **Smoke request:** `GET https://api.deepgram.com/v1/models`, expecting 200; free. Lists the public models; it needs the key and processes no audio.
|
|
842
|
+
- **Cost:** per call. Nova-3 pre-recorded $0.0043 per audio minute (pay as you go); Aura-2 speech $0.030 per 1k characters; $200 free credit.
|
|
843
|
+
- **Rate:** Concurrency per project on pay as you go: 50 pre-recorded transcriptions, 15 text-to-speech requests.
|
|
844
|
+
- **Verified:** 2026-10-25, docs
|
|
845
|
+
- **Set it:** `pnpm everyapp secret set DEEPGRAM_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
846
|
+
- **Guide:** none beyond this section
|
|
847
|
+
|
|
848
|
+
### elevenlabs
|
|
849
|
+
|
|
850
|
+
**ElevenLabs** (`api_key`): Text to speech, speech to text, sound effects, music and voice changing.
|
|
851
|
+
|
|
852
|
+
- **Settings:** `ELEVENLABS_API_KEY`
|
|
853
|
+
- **What the key is:** An API key from ElevenLabs' API keys page; the Gateway sends it in the xi-api-key header. Speech, transcription and sound generation are POSTs; listing voices and models are GETs. An API key from ElevenLabs' API keys page; it can be scoped to the endpoints the app uses and given a credit cap.
|
|
854
|
+
- **Where the key comes from:** https://elevenlabs.io/app/settings/api-keys
|
|
855
|
+
- **API reference:** https://elevenlabs.io/docs/api-reference/introduction
|
|
856
|
+
- **How it is sent:** `xi-api-key: <ELEVENLABS_API_KEY>`, to `api.elevenlabs.io` only, over https
|
|
857
|
+
- **What apps may do:** access `read`; GET, POST on any grant; account-wide paths refused: `v1/user`, `v1/usage`, `v1/workspace`, `v1/workspaces`, `v1/service-accounts`, `v1/history`, `v1/single-use-token`, `v1/convai`, `v1/dubbing`, `v1/studio`, `v1/pronunciation-dictionaries`, `v1/voices/add`, `v1/voices/pvc`, `v1/voices/collections`, `edit`, `replicate-to-isolated-environment`, `v1/text-to-voice`, `v1/audio-native`, `v1/productions`, `v1/speech-engine`, `v1/music/finetunes`, `v1/flows`, `v1/assets`, `v1/audio-isolation/history`; data `per-call`
|
|
858
|
+
- **Smoke request:** `GET https://api.elevenlabs.io/v1/models`, expecting 200; free. The first request in ElevenLabs' authentication docs; it generates nothing.
|
|
859
|
+
- **Cost:** not recorded
|
|
860
|
+
- **Rate:** not recorded
|
|
861
|
+
- **Verified:** 2026-10-25, docs
|
|
862
|
+
- **Set it:** `pnpm everyapp secret set ELEVENLABS_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
863
|
+
- **Guide:** none beyond this section
|
|
864
|
+
|
|
865
|
+
### assemblyai
|
|
866
|
+
|
|
867
|
+
**AssemblyAI** (`api_key`): Transcribes recorded audio and video, with speaker labels, redaction and subtitles.
|
|
868
|
+
|
|
869
|
+
- **Settings:** `ASSEMBLYAI_API_KEY`
|
|
870
|
+
- **What the key is:** The API key from your AssemblyAI dashboard; the Gateway sends it as the whole Authorization header, with no Bearer word. Audio is submitted with a POST to /v2/transcript and the app polls GET /v2/transcript/<id>; deleting a transcript needs write. The API key on your AssemblyAI dashboard.
|
|
871
|
+
- **Where the key comes from:** https://www.assemblyai.com/dashboard/home
|
|
872
|
+
- **API reference:** https://www.assemblyai.com/docs
|
|
873
|
+
- **How it is sent:** `Authorization: <ASSEMBLYAI_API_KEY>`, to `api.assemblyai.com`, `api.eu.assemblyai.com` only, over https
|
|
874
|
+
- **What apps may do:** access `read`, `write`; GET, POST on any grant, and DELETE for an entry with `access: "write"`; data `account` (served on a self-hosted Gateway only)
|
|
875
|
+
- **Smoke request:** `GET https://api.assemblyai.com/v2/transcript?limit=1`, expecting 200; free. Lists the account's latest transcript; it transcribes nothing.
|
|
876
|
+
- **Cost:** per call. Per hour of audio submitted: Universal-3.5 Pro $0.21, Universal-2 $0.15; the free tier covers up to 185 hours of pre-recorded audio.
|
|
877
|
+
- **Rate:** 4000 a minute. 20,000 requests per 5 minutes per account; 5 transcriptions in parallel on free accounts, 200 or more on paid.
|
|
878
|
+
- **Verified:** 2026-10-25, docs
|
|
879
|
+
- **Set it:** `pnpm everyapp secret set ASSEMBLYAI_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
880
|
+
- **Guide:** none beyond this section
|
|
881
|
+
|
|
882
|
+
### newsapi
|
|
883
|
+
|
|
884
|
+
**NewsAPI** (`api_key`): Searches news articles and live headlines from over 150,000 sources.
|
|
885
|
+
|
|
886
|
+
- **Settings:** `NEWSAPI_API_KEY`
|
|
887
|
+
- **What the key is:** An API key from newsapi.org/register; the Gateway sends it in the X-Api-Key header. The free Developer plan allows 100 requests a day, delays articles by 24 hours and is for development only; production needs a paid plan. The API key NewsAPI shows after you register.
|
|
888
|
+
- **Where the key comes from:** https://newsapi.org/register
|
|
889
|
+
- **API reference:** https://newsapi.org/docs
|
|
890
|
+
- **How it is sent:** `X-Api-Key: <NEWSAPI_API_KEY>`, to `newsapi.org` only, over https
|
|
891
|
+
- **What apps may do:** access `read`; GET on any grant; data `per-call`
|
|
892
|
+
- **Smoke request:** none recorded
|
|
893
|
+
- **Cost:** per call, $0.0018. Developer plan free (100 requests a day, development only); Business $449 a month for 250,000 requests, then $0.0018 each.
|
|
894
|
+
- **Rate:** 100 a day. Developer plan; Business includes 250,000 requests a month, Advanced 2,000,000.
|
|
895
|
+
- **Verified:** 2026-10-25, docs
|
|
896
|
+
- **Set it:** `pnpm everyapp secret set NEWSAPI_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
897
|
+
- **Guide:** none beyond this section
|
|
898
|
+
|
|
899
|
+
## AI providers
|
|
900
|
+
|
|
901
|
+
### openai
|
|
902
|
+
|
|
903
|
+
**OpenAI** (`ai`): OpenAI's models: responses, chat, embeddings, audio, images.
|
|
904
|
+
|
|
905
|
+
- **Settings:** `OPENAI_API_KEY`
|
|
906
|
+
- **What the key is:** A secret key from the API keys page; the Gateway puts it on every call as a bearer token.
|
|
907
|
+
- **Where the key comes from:** https://platform.openai.com/api-keys
|
|
908
|
+
- **API reference:** https://platform.openai.com/docs/api-reference
|
|
909
|
+
- **How it is sent:** `Authorization: Bearer <OPENAI_API_KEY>`, to `api.openai.com` only, over https
|
|
910
|
+
- **What apps may do:** list it under `providers` and call `/api/ai/openai/…` with `createGatewayFetch()`: POST to `/v1/responses`, `/v1/chat/completions`, `/v1/embeddings`, `/v1/audio/speech`, `/v1/audio/transcriptions`, `/v1/audio/translations`, `/v1/images/generations`, `/v1/images/edits`, `/v1/images/variations`, and more only where both `AI_PROXY_EXTRA_ROUTES` and the app's `ai.routes` allow it
|
|
911
|
+
- **Smoke request:** none recorded
|
|
912
|
+
- **Cost:** not recorded
|
|
913
|
+
- **Rate:** not recorded
|
|
914
|
+
- **Verified:** 2026-10-25, live
|
|
915
|
+
- **Set it:** `pnpm everyapp secret set OPENAI_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
916
|
+
- **Guide:** [openai.md](openai.md)
|
|
917
|
+
|
|
918
|
+
### openrouter
|
|
919
|
+
|
|
920
|
+
**OpenRouter** (`ai`): One key for many models, through OpenAI's API shape.
|
|
921
|
+
|
|
922
|
+
- **Settings:** `OPENROUTER_API_KEY`
|
|
923
|
+
- **What the key is:** An API key from OpenRouter's keys page; the Gateway puts it on every call as a bearer token.
|
|
924
|
+
- **Where the key comes from:** https://openrouter.ai/settings/keys
|
|
925
|
+
- **API reference:** https://openrouter.ai/docs
|
|
926
|
+
- **How it is sent:** `Authorization: Bearer <OPENROUTER_API_KEY>`, to `openrouter.ai` only, over https
|
|
927
|
+
- **What apps may do:** list it under `providers` and call `/api/ai/openrouter/…` with `createGatewayFetch()`: POST to `/api/v1/chat/completions`, `/api/v1/completions`, `/api/v1/responses`, `/api/v1/embeddings`
|
|
928
|
+
- **Smoke request:** none recorded
|
|
929
|
+
- **Cost:** per token. The answer's usage.cost is the call's price in USD, per model. The Gateway reads each answer's `usage.cost` field (US dollars) into the usage counters.
|
|
930
|
+
- **Rate:** not recorded
|
|
931
|
+
- **Verified:** 2026-10-25, live
|
|
932
|
+
- **Set it:** `pnpm everyapp secret set OPENROUTER_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
933
|
+
- **Guide:** [openrouter.md](openrouter.md)
|
|
934
|
+
|
|
935
|
+
### workers-ai
|
|
936
|
+
|
|
937
|
+
**Workers AI** (`ai`): Cloudflare's models, in the Gateway's own account.
|
|
938
|
+
|
|
939
|
+
- **Settings:** `WORKERS_AI_API_TOKEN`, `CLOUDFLARE_ACCOUNT_ID` (set by `everyapp setup`)
|
|
940
|
+
- **What the key is:** A Cloudflare API token with Workers AI Read (the Workers AI page's prefilled token); the account is the Gateway's own.
|
|
941
|
+
- **Where the key comes from:** https://dash.cloudflare.com/profile/api-tokens
|
|
942
|
+
- **API reference:** https://developers.cloudflare.com/workers-ai/
|
|
943
|
+
- **How it is sent:** `Authorization: Bearer <WORKERS_AI_API_TOKEN>`, to `api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai` only, over https
|
|
944
|
+
- **What apps may do:** list it under `providers` and call `/api/ai/workers-ai/…` with `createGatewayFetch()`: POST to `/v1/chat/completions`, `/v1/embeddings`, `/v1/responses`
|
|
945
|
+
- **Smoke request:** none recorded
|
|
946
|
+
- **Cost:** not recorded
|
|
947
|
+
- **Rate:** not recorded
|
|
948
|
+
- **Verified:** 2026-10-25, live
|
|
949
|
+
- **Set it:** `pnpm everyapp secret set WORKERS_AI_API_TOKEN`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
950
|
+
- **Guide:** [workers-ai.md](workers-ai.md)
|
|
951
|
+
|
|
952
|
+
### anthropic
|
|
953
|
+
|
|
954
|
+
**Anthropic** (`ai`): Claude models through the Messages API.
|
|
955
|
+
|
|
956
|
+
- **Settings:** `ANTHROPIC_API_KEY`
|
|
957
|
+
- **What the key is:** An API key from the Claude Console's API keys page; the Gateway sends it as a bearer token. Apps send the anthropic-version header themselves. A key scoped to one workspace, so no call needs an anthropic-workspace-id header.
|
|
958
|
+
- **Where the key comes from:** https://platform.claude.com/settings/keys
|
|
959
|
+
- **API reference:** https://platform.claude.com/docs/en/api/overview
|
|
960
|
+
- **How it is sent:** `Authorization: Bearer <ANTHROPIC_API_KEY>`, to `api.anthropic.com` only, over https
|
|
961
|
+
- **What apps may do:** list it under `providers` and call `/api/ai/anthropic/…` with `createGatewayFetch()`: POST to `/v1/messages`, `/v1/messages/count_tokens`
|
|
962
|
+
- **Smoke request:** `GET https://api.anthropic.com/v1/models`, expecting 200; free. Send an anthropic-version header, as every call does.
|
|
963
|
+
- **Cost:** not recorded
|
|
964
|
+
- **Rate:** Requests and tokens per minute by usage tier, on the Console's Rate limits page; token counting is free, with its own per-minute limit.
|
|
965
|
+
- **Verified:** 2026-10-25, docs
|
|
966
|
+
- **Set it:** `pnpm everyapp secret set ANTHROPIC_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
967
|
+
- **Guide:** none beyond this section
|
|
968
|
+
|
|
969
|
+
### gemini
|
|
970
|
+
|
|
971
|
+
**Google Gemini** (`ai`): Google's Gemini models through their OpenAI-compatible endpoint: chat, embeddings, images.
|
|
972
|
+
|
|
973
|
+
- **Settings:** `GEMINI_API_KEY`
|
|
974
|
+
- **What the key is:** An API key from Google AI Studio; the Gateway sends it as a bearer token. Apps call Gemini's OpenAI-shaped paths under /v1beta/openai. A Google AI Studio key restricted to the Gemini API only.
|
|
975
|
+
- **Where the key comes from:** https://aistudio.google.com/apikey
|
|
976
|
+
- **API reference:** https://ai.google.dev/gemini-api/docs/openai
|
|
977
|
+
- **How it is sent:** `Authorization: Bearer <GEMINI_API_KEY>`, to `generativelanguage.googleapis.com` only, over https
|
|
978
|
+
- **What apps may do:** list it under `providers` and call `/api/ai/gemini/…` with `createGatewayFetch()`: POST to `/v1beta/openai/chat/completions`, `/v1beta/openai/embeddings`, `/v1beta/openai/images/generations`
|
|
979
|
+
- **Smoke request:** `GET https://generativelanguage.googleapis.com/v1beta/openai/models`, expecting 200; free
|
|
980
|
+
- **Cost:** not recorded
|
|
981
|
+
- **Rate:** Per project, not per key: requests and tokens per minute and requests per day, by tier (Free, then Tiers 1 to 3).
|
|
982
|
+
- **Verified:** 2026-10-25, docs
|
|
983
|
+
- **Set it:** `pnpm everyapp secret set GEMINI_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
984
|
+
- **Guide:** none beyond this section
|
|
985
|
+
|
|
986
|
+
### mistral
|
|
987
|
+
|
|
988
|
+
**Mistral AI** (`ai`): Mistral's models: chat, code completion, embeddings, moderation, OCR, speech.
|
|
989
|
+
|
|
990
|
+
- **Settings:** `MISTRAL_API_KEY`
|
|
991
|
+
- **What the key is:** An API key from API Keys in the Mistral Studio console; the Gateway sends it as a bearer token. Free mode needs no card; usage and rate limits apply. A key from API Keys in the Studio console, with an expiry date.
|
|
992
|
+
- **Where the key comes from:** https://console.mistral.ai
|
|
993
|
+
- **API reference:** https://docs.mistral.ai/api/
|
|
994
|
+
- **How it is sent:** `Authorization: Bearer <MISTRAL_API_KEY>`, to `api.mistral.ai` only, over https
|
|
995
|
+
- **What apps may do:** list it under `providers` and call `/api/ai/mistral/…` with `createGatewayFetch()`: POST to `/v1/chat/completions`, `/v1/fim/completions`, `/v1/embeddings`, `/v1/moderations`, `/v1/chat/moderations`, `/v1/classifications`, `/v1/chat/classifications`, `/v1/ocr`, `/v1/audio/transcriptions`, `/v1/audio/speech`
|
|
996
|
+
- **Smoke request:** `GET https://api.mistral.ai/v1/models`, expecting 200; free
|
|
997
|
+
- **Cost:** not recorded
|
|
998
|
+
- **Rate:** not recorded
|
|
999
|
+
- **Verified:** 2026-10-25, docs
|
|
1000
|
+
- **Set it:** `pnpm everyapp secret set MISTRAL_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
1001
|
+
- **Guide:** none beyond this section
|
|
1002
|
+
|
|
1003
|
+
### groq
|
|
1004
|
+
|
|
1005
|
+
**Groq** (`ai`): Open models on Groq through OpenAI's API shape: chat, responses, transcription, speech.
|
|
1006
|
+
|
|
1007
|
+
- **Settings:** `GROQ_API_KEY`
|
|
1008
|
+
- **What the key is:** An API key from the Groq console; the Gateway sends it as a bearer token. Apps call the OpenAI-shaped paths under /openai/v1. A key from the API Keys page of the Groq console.
|
|
1009
|
+
- **Where the key comes from:** https://console.groq.com/keys
|
|
1010
|
+
- **API reference:** https://console.groq.com/docs/api-reference
|
|
1011
|
+
- **How it is sent:** `Authorization: Bearer <GROQ_API_KEY>`, to `api.groq.com` only, over https
|
|
1012
|
+
- **What apps may do:** list it under `providers` and call `/api/ai/groq/…` with `createGatewayFetch()`: POST to `/openai/v1/chat/completions`, `/openai/v1/responses`, `/openai/v1/audio/transcriptions`, `/openai/v1/audio/translations`, `/openai/v1/audio/speech`
|
|
1013
|
+
- **Smoke request:** `GET https://api.groq.com/openai/v1/models`, expecting 200; free
|
|
1014
|
+
- **Cost:** not recorded
|
|
1015
|
+
- **Rate:** Requests and tokens per minute and per day, per model and plan, for the whole organization; the console Limits page shows them.
|
|
1016
|
+
- **Verified:** 2026-10-25, docs
|
|
1017
|
+
- **Set it:** `pnpm everyapp secret set GROQ_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
1018
|
+
- **Guide:** none beyond this section
|
|
1019
|
+
|
|
1020
|
+
### cohere
|
|
1021
|
+
|
|
1022
|
+
**Cohere** (`ai`): Cohere's models: chat, embeddings, reranking, classification, transcription, document parsing.
|
|
1023
|
+
|
|
1024
|
+
- **Settings:** `COHERE_API_KEY`
|
|
1025
|
+
- **What the key is:** An API key from the Cohere dashboard; the Gateway sends it as a bearer token. Trial keys are free and limited; production keys are paid. A production key; a trial key is limited to 1,000 calls a month.
|
|
1026
|
+
- **Where the key comes from:** https://dashboard.cohere.com/api-keys
|
|
1027
|
+
- **API reference:** https://docs.cohere.com/reference/about
|
|
1028
|
+
- **How it is sent:** `Authorization: Bearer <COHERE_API_KEY>`, to `api.cohere.com` only, over https
|
|
1029
|
+
- **What apps may do:** list it under `providers` and call `/api/ai/cohere/…` with `createGatewayFetch()`: POST to `/v2/chat`, `/v2/embed`, `/v2/rerank`, `/v1/classify`, `/v2/audio/transcriptions`, `/v2/parse`, `/v1/tokenize`, `/v1/detokenize`
|
|
1030
|
+
- **Smoke request:** `GET https://api.cohere.com/v1/models`, expecting 200; free
|
|
1031
|
+
- **Cost:** not recorded
|
|
1032
|
+
- **Rate:** Production: 500 calls a minute for Command A chat and most endpoints, rerank 1,000. Trial: 20 chat calls a minute, 1,000 calls a month.
|
|
1033
|
+
- **Verified:** 2026-10-25, docs
|
|
1034
|
+
- **Set it:** `pnpm everyapp secret set COHERE_API_KEY`, or `pnpm everyapp configure <app id>` for everything an app needs
|
|
1035
|
+
- **Guide:** none beyond this section
|
|
1036
|
+
|
|
1037
|
+
## OAuth clients
|
|
1038
|
+
|
|
1039
|
+
### linkedin
|
|
1040
|
+
|
|
1041
|
+
**LinkedIn** (`oauth_client`): the Gateway holds the client and completes the token endpoints only; the app builds the authorize URL from the public client id and keeps people's tokens.
|
|
1042
|
+
|
|
1043
|
+
- **Settings:** `LINKEDIN_CLIENT_ID`, `LINKEDIN_CLIENT_SECRET`
|
|
1044
|
+
- **Where the client comes from:** https://www.linkedin.com/developers/apps
|
|
1045
|
+
- **Redirect URIs to register:** `https://<app>.<APP_BASE_DOMAIN>/integrations/social/linkedin`, `https://<app>.<APP_BASE_DOMAIN>/integrations/social/linkedin-page`
|
|
1046
|
+
- **How it is sent:** POST `www.linkedin.com/oauth/v2/accessToken` (the client in the form body)
|
|
1047
|
+
- **Scope sets an app lists:** none: the whole client is the grant
|
|
1048
|
+
- **Set it:** `pnpm everyapp secret set LINKEDIN_CLIENT_ID LINKEDIN_CLIENT_SECRET`
|
|
1049
|
+
- **Guide:** none beyond this section; the scopes to allow are in https://everyapp.com/docs/agent/repo/capabilities#oauth-clients
|
|
1050
|
+
|
|
1051
|
+
### facebook
|
|
1052
|
+
|
|
1053
|
+
**Facebook** (`oauth_client`): the Gateway holds the client and completes the token endpoints only; the app builds the authorize URL from the public client id and keeps people's tokens.
|
|
1054
|
+
|
|
1055
|
+
- **Settings:** `FACEBOOK_APP_ID`, `FACEBOOK_APP_SECRET`
|
|
1056
|
+
- **Where the client comes from:** https://developers.facebook.com/apps
|
|
1057
|
+
- **Redirect URIs to register:** `https://<app>.<APP_BASE_DOMAIN>/integrations/social/facebook`, `https://<app>.<APP_BASE_DOMAIN>/integrations/social/instagram`
|
|
1058
|
+
- **How it is sent:** GET/POST `graph.facebook.com/v<version>/oauth/access_token` (the client in the query)
|
|
1059
|
+
- **Scope sets an app lists:** none: the whole client is the grant
|
|
1060
|
+
- **Set it:** `pnpm everyapp secret set FACEBOOK_APP_ID FACEBOOK_APP_SECRET`
|
|
1061
|
+
- **Guide:** none beyond this section; the scopes to allow are in https://everyapp.com/docs/agent/repo/capabilities#oauth-clients
|
|
1062
|
+
|
|
1063
|
+
### instagram
|
|
1064
|
+
|
|
1065
|
+
**Instagram** (`oauth_client`): the Gateway holds the client and completes the token endpoints only; the app builds the authorize URL from the public client id and keeps people's tokens.
|
|
1066
|
+
|
|
1067
|
+
- **Settings:** `INSTAGRAM_APP_ID`, `INSTAGRAM_APP_SECRET`
|
|
1068
|
+
- **Where the client comes from:** https://developers.facebook.com/apps
|
|
1069
|
+
- **Redirect URIs to register:** `https://<app>.<APP_BASE_DOMAIN>/integrations/social/instagram-standalone`
|
|
1070
|
+
- **How it is sent:** POST `api.instagram.com/oauth/access_token` (the client in the form body); GET `graph.instagram.com/access_token` (the client in the query)
|
|
1071
|
+
- **Scope sets an app lists:** none: the whole client is the grant
|
|
1072
|
+
- **Set it:** `pnpm everyapp secret set INSTAGRAM_APP_ID INSTAGRAM_APP_SECRET`
|
|
1073
|
+
- **Guide:** none beyond this section; the scopes to allow are in https://everyapp.com/docs/agent/repo/capabilities#oauth-clients
|
|
1074
|
+
|
|
1075
|
+
### threads
|
|
1076
|
+
|
|
1077
|
+
**Threads** (`oauth_client`): the Gateway holds the client and completes the token endpoints only; the app builds the authorize URL from the public client id and keeps people's tokens.
|
|
1078
|
+
|
|
1079
|
+
- **Settings:** `THREADS_APP_ID`, `THREADS_APP_SECRET`
|
|
1080
|
+
- **Where the client comes from:** https://developers.facebook.com/apps
|
|
1081
|
+
- **Redirect URIs to register:** `https://<app>.<APP_BASE_DOMAIN>/integrations/social/threads`
|
|
1082
|
+
- **How it is sent:** GET/POST `graph.threads.net/oauth/access_token` (the client in the query); GET `graph.threads.net/access_token` (the client in the query)
|
|
1083
|
+
- **Scope sets an app lists:** none: the whole client is the grant
|
|
1084
|
+
- **Set it:** `pnpm everyapp secret set THREADS_APP_ID THREADS_APP_SECRET`
|
|
1085
|
+
- **Guide:** none beyond this section; the scopes to allow are in https://everyapp.com/docs/agent/repo/capabilities#oauth-clients
|
|
1086
|
+
|
|
1087
|
+
### youtube
|
|
1088
|
+
|
|
1089
|
+
**YouTube** (`oauth_client`): the Gateway holds the client and completes the token endpoints only; the app builds the authorize URL from the public client id and keeps people's tokens.
|
|
1090
|
+
|
|
1091
|
+
- **Settings:** `YOUTUBE_CLIENT_ID`, `YOUTUBE_CLIENT_SECRET`
|
|
1092
|
+
- **Where the client comes from:** https://console.cloud.google.com/apis/credentials
|
|
1093
|
+
- **Redirect URIs to register:** `https://<app>.<APP_BASE_DOMAIN>/integrations/social/youtube`, `https://<app>.<APP_BASE_DOMAIN>/integrations/social/gmb`
|
|
1094
|
+
- **How it is sent:** POST `oauth2.googleapis.com/token` (the client in the form body)
|
|
1095
|
+
- **Scope sets an app lists:** none: the whole client is the grant
|
|
1096
|
+
- **Set it:** `pnpm everyapp secret set YOUTUBE_CLIENT_ID YOUTUBE_CLIENT_SECRET`
|
|
1097
|
+
- **Guide:** [google.md](google.md)
|
|
1098
|
+
|
|
1099
|
+
### tiktok
|
|
1100
|
+
|
|
1101
|
+
**TikTok** (`oauth_client`): the Gateway holds the client and completes the token endpoints only; the app builds the authorize URL from the public client id and keeps people's tokens.
|
|
1102
|
+
|
|
1103
|
+
- **Settings:** `TIKTOK_CLIENT_ID`, `TIKTOK_CLIENT_SECRET`
|
|
1104
|
+
- **Where the client comes from:** https://developers.tiktok.com/apps
|
|
1105
|
+
- **Redirect URIs to register:** `https://<app>.<APP_BASE_DOMAIN>/integrations/social/tiktok`
|
|
1106
|
+
- **How it is sent:** POST `open.tiktokapis.com/v2/oauth/token/` (the client in the form body)
|
|
1107
|
+
- **Scope sets an app lists:** none: the whole client is the grant
|
|
1108
|
+
- **Set it:** `pnpm everyapp secret set TIKTOK_CLIENT_ID TIKTOK_CLIENT_SECRET`
|
|
1109
|
+
- **Guide:** none beyond this section; the scopes to allow are in https://everyapp.com/docs/agent/repo/capabilities#oauth-clients
|
|
1110
|
+
|
|
1111
|
+
### tiktok-business
|
|
1112
|
+
|
|
1113
|
+
**TikTok Business** (`oauth_client`): the Gateway holds the client and completes the token endpoints only; the app builds the authorize URL from the public client id and keeps people's tokens.
|
|
1114
|
+
|
|
1115
|
+
- **Settings:** `TIKTOK_BUSINESS_CLIENT_ID`, `TIKTOK_BUSINESS_CLIENT_SECRET`
|
|
1116
|
+
- **Where the client comes from:** https://business-api.tiktok.com/portal/apps
|
|
1117
|
+
- **Redirect URIs to register:** `https://<app>.<APP_BASE_DOMAIN>/integrations/social/tiktok-business/`
|
|
1118
|
+
- **How it is sent:** POST `business-api.tiktok.com/open_api/v1.3/tt_user/oauth2/token/` (the client in the JSON body); POST `business-api.tiktok.com/open_api/v1.3/tt_user/oauth2/refresh_token/` (the client in the JSON body)
|
|
1119
|
+
- **Scope sets an app lists:** none: the whole client is the grant
|
|
1120
|
+
- **Set it:** `pnpm everyapp secret set TIKTOK_BUSINESS_CLIENT_ID TIKTOK_BUSINESS_CLIENT_SECRET`
|
|
1121
|
+
- **Guide:** none beyond this section; the scopes to allow are in https://everyapp.com/docs/agent/repo/capabilities#oauth-clients
|
|
1122
|
+
|
|
1123
|
+
### reddit
|
|
1124
|
+
|
|
1125
|
+
**Reddit** (`oauth_client`): the Gateway holds the client and completes the token endpoints only; the app builds the authorize URL from the public client id and keeps people's tokens.
|
|
1126
|
+
|
|
1127
|
+
- **Settings:** `REDDIT_CLIENT_ID`, `REDDIT_CLIENT_SECRET`
|
|
1128
|
+
- **Where the client comes from:** https://www.reddit.com/prefs/apps
|
|
1129
|
+
- **Redirect URIs to register:** `https://<app>.<APP_BASE_DOMAIN>/integrations/social/reddit`
|
|
1130
|
+
- **How it is sent:** POST `www.reddit.com/api/v1/access_token` (the client in the Basic header)
|
|
1131
|
+
- **Scope sets an app lists:** none: the whole client is the grant
|
|
1132
|
+
- **Set it:** `pnpm everyapp secret set REDDIT_CLIENT_ID REDDIT_CLIENT_SECRET`
|
|
1133
|
+
- **Guide:** none beyond this section; the scopes to allow are in https://everyapp.com/docs/agent/repo/capabilities#oauth-clients
|
|
1134
|
+
|
|
1135
|
+
### pinterest
|
|
1136
|
+
|
|
1137
|
+
**Pinterest** (`oauth_client`): the Gateway holds the client and completes the token endpoints only; the app builds the authorize URL from the public client id and keeps people's tokens.
|
|
1138
|
+
|
|
1139
|
+
- **Settings:** `PINTEREST_CLIENT_ID`, `PINTEREST_CLIENT_SECRET`
|
|
1140
|
+
- **Where the client comes from:** https://developers.pinterest.com/apps/
|
|
1141
|
+
- **Redirect URIs to register:** `https://<app>.<APP_BASE_DOMAIN>/integrations/social/pinterest`
|
|
1142
|
+
- **How it is sent:** POST `api.pinterest.com/v5/oauth/token` (the client in the Basic header)
|
|
1143
|
+
- **Scope sets an app lists:** none: the whole client is the grant
|
|
1144
|
+
- **Set it:** `pnpm everyapp secret set PINTEREST_CLIENT_ID PINTEREST_CLIENT_SECRET`
|
|
1145
|
+
- **Guide:** none beyond this section; the scopes to allow are in https://everyapp.com/docs/agent/repo/capabilities#oauth-clients
|
|
1146
|
+
|
|
1147
|
+
### discord
|
|
1148
|
+
|
|
1149
|
+
**Discord** (`oauth_client`): the Gateway holds the client and completes the token endpoints only; the app builds the authorize URL from the public client id and keeps people's tokens.
|
|
1150
|
+
|
|
1151
|
+
- **Settings:** `DISCORD_CLIENT_ID`, `DISCORD_CLIENT_SECRET`
|
|
1152
|
+
- **Where the client comes from:** https://discord.com/developers/applications
|
|
1153
|
+
- **Redirect URIs to register:** `https://<app>.<APP_BASE_DOMAIN>/integrations/social/discord`
|
|
1154
|
+
- **How it is sent:** POST `discord.com/api/oauth2/token` (the client in the Basic header)
|
|
1155
|
+
- **Scope sets an app lists:** none: the whole client is the grant
|
|
1156
|
+
- **Set it:** `pnpm everyapp secret set DISCORD_CLIENT_ID DISCORD_CLIENT_SECRET`
|
|
1157
|
+
- **Guide:** none beyond this section; the scopes to allow are in https://everyapp.com/docs/agent/repo/capabilities#oauth-clients
|
|
1158
|
+
|
|
1159
|
+
### slack
|
|
1160
|
+
|
|
1161
|
+
**Slack** (`oauth_client`): the Gateway holds the client and completes the token endpoints only; the app builds the authorize URL from the public client id and keeps people's tokens.
|
|
1162
|
+
|
|
1163
|
+
- **Settings:** `SLACK_CLIENT_ID`, `SLACK_CLIENT_SECRET`
|
|
1164
|
+
- **Where the client comes from:** https://api.slack.com/apps
|
|
1165
|
+
- **Redirect URIs to register:** `https://<app>.<APP_BASE_DOMAIN>/integrations/social/slack`, `https://<app>.<APP_BASE_DOMAIN>/integrations/slack/callback`
|
|
1166
|
+
- **How it is sent:** POST `slack.com/api/oauth.v2.access` (the client in the form body)
|
|
1167
|
+
- **Scope sets an app lists:** `channels.read`, `users.read`, `users.email`, `messages.write`, `channels.join`, `channels.manage`, `files.write`, `user-channels.manage`
|
|
1168
|
+
- **Set it:** `pnpm everyapp secret set SLACK_CLIENT_ID SLACK_CLIENT_SECRET`
|
|
1169
|
+
- **Guide:** [slack.md](slack.md)
|
|
1170
|
+
|
|
1171
|
+
### mastodon
|
|
1172
|
+
|
|
1173
|
+
**Mastodon** (`oauth_client`): the Gateway holds the client and completes the token endpoints only; the app builds the authorize URL from the public client id and keeps people's tokens.
|
|
1174
|
+
|
|
1175
|
+
- **Settings:** `MASTODON_CLIENT_ID`, `MASTODON_CLIENT_SECRET`, `MASTODON_URL`
|
|
1176
|
+
- **Where the client comes from:** `<MASTODON_URL>/settings/applications`
|
|
1177
|
+
- **Redirect URIs to register:** `https://<app>.<APP_BASE_DOMAIN>/integrations/social/mastodon`
|
|
1178
|
+
- **How it is sent:** POST `<MASTODON_URL>/oauth/token` (the client in the form body)
|
|
1179
|
+
- **Scope sets an app lists:** none: the whole client is the grant
|
|
1180
|
+
- **Set it:** `pnpm everyapp secret set MASTODON_CLIENT_ID MASTODON_CLIENT_SECRET MASTODON_URL`
|
|
1181
|
+
- **Guide:** none beyond this section; the scopes to allow are in https://everyapp.com/docs/agent/repo/capabilities#oauth-clients
|
|
1182
|
+
|
|
1183
|
+
### kick
|
|
1184
|
+
|
|
1185
|
+
**Kick** (`oauth_client`): the Gateway holds the client and completes the token endpoints only; the app builds the authorize URL from the public client id and keeps people's tokens.
|
|
1186
|
+
|
|
1187
|
+
- **Settings:** `KICK_CLIENT_ID`, `KICK_CLIENT_SECRET`
|
|
1188
|
+
- **Where the client comes from:** https://kick.com/settings/developer
|
|
1189
|
+
- **Redirect URIs to register:** `https://<app>.<APP_BASE_DOMAIN>/integrations/social/kick`
|
|
1190
|
+
- **How it is sent:** POST `id.kick.com/oauth/token` (the client in the form body)
|
|
1191
|
+
- **Scope sets an app lists:** none: the whole client is the grant
|
|
1192
|
+
- **Set it:** `pnpm everyapp secret set KICK_CLIENT_ID KICK_CLIENT_SECRET`
|
|
1193
|
+
- **Guide:** none beyond this section; the scopes to allow are in https://everyapp.com/docs/agent/repo/capabilities#oauth-clients
|
|
1194
|
+
|
|
1195
|
+
### twitch
|
|
1196
|
+
|
|
1197
|
+
**Twitch** (`oauth_client`): the Gateway holds the client and completes the token endpoints only; the app builds the authorize URL from the public client id and keeps people's tokens.
|
|
1198
|
+
|
|
1199
|
+
- **Settings:** `TWITCH_CLIENT_ID`, `TWITCH_CLIENT_SECRET`
|
|
1200
|
+
- **Where the client comes from:** https://dev.twitch.tv/console/apps
|
|
1201
|
+
- **Redirect URIs to register:** `https://<app>.<APP_BASE_DOMAIN>/integrations/social/twitch`
|
|
1202
|
+
- **How it is sent:** POST `id.twitch.tv/oauth2/token` (the client in the form body)
|
|
1203
|
+
- **Scope sets an app lists:** none: the whole client is the grant
|
|
1204
|
+
- **Set it:** `pnpm everyapp secret set TWITCH_CLIENT_ID TWITCH_CLIENT_SECRET`
|
|
1205
|
+
- **Guide:** none beyond this section; the scopes to allow are in https://everyapp.com/docs/agent/repo/capabilities#oauth-clients
|
|
1206
|
+
|
|
1207
|
+
### tumblr
|
|
1208
|
+
|
|
1209
|
+
**Tumblr** (`oauth_client`): the Gateway holds the client and completes the token endpoints only; the app builds the authorize URL from the public client id and keeps people's tokens.
|
|
1210
|
+
|
|
1211
|
+
- **Settings:** `TUMBLR_CLIENT_ID`, `TUMBLR_CLIENT_SECRET`
|
|
1212
|
+
- **Where the client comes from:** https://www.tumblr.com/oauth/apps
|
|
1213
|
+
- **Redirect URIs to register:** `https://<app>.<APP_BASE_DOMAIN>/integrations/social/tumblr`
|
|
1214
|
+
- **How it is sent:** POST `api.tumblr.com/v2/oauth2/token` (the client in the form body)
|
|
1215
|
+
- **Scope sets an app lists:** none: the whole client is the grant
|
|
1216
|
+
- **Set it:** `pnpm everyapp secret set TUMBLR_CLIENT_ID TUMBLR_CLIENT_SECRET`
|
|
1217
|
+
- **Guide:** none beyond this section; the scopes to allow are in https://everyapp.com/docs/agent/repo/capabilities#oauth-clients
|
|
1218
|
+
|
|
1219
|
+
### dribbble
|
|
1220
|
+
|
|
1221
|
+
**Dribbble** (`oauth_client`): the Gateway holds the client and completes the token endpoints only; the app builds the authorize URL from the public client id and keeps people's tokens.
|
|
1222
|
+
|
|
1223
|
+
- **Settings:** `DRIBBBLE_CLIENT_ID`, `DRIBBBLE_CLIENT_SECRET`
|
|
1224
|
+
- **Where the client comes from:** https://dribbble.com/account/applications
|
|
1225
|
+
- **Redirect URIs to register:** `https://<app>.<APP_BASE_DOMAIN>/integrations/social/dribbble`
|
|
1226
|
+
- **How it is sent:** POST `dribbble.com/oauth/token` (the client in the query)
|
|
1227
|
+
- **Scope sets an app lists:** none: the whole client is the grant
|
|
1228
|
+
- **Set it:** `pnpm everyapp secret set DRIBBBLE_CLIENT_ID DRIBBBLE_CLIENT_SECRET`
|
|
1229
|
+
- **Guide:** none beyond this section; the scopes to allow are in https://everyapp.com/docs/agent/repo/capabilities#oauth-clients
|
|
1230
|
+
|
|
1231
|
+
### google-workspace
|
|
1232
|
+
|
|
1233
|
+
**Google (Gmail, Calendar, Search Console and Analytics)** (`oauth_client`): the Gateway holds the client and completes the token endpoints only; the app builds the authorize URL from the public client id and keeps people's tokens.
|
|
1234
|
+
|
|
1235
|
+
- **Settings:** `GOOGLE_WORKSPACE_CLIENT_ID`, `GOOGLE_WORKSPACE_CLIENT_SECRET`
|
|
1236
|
+
- **Where the client comes from:** https://console.cloud.google.com/apis/credentials
|
|
1237
|
+
- **Redirect URIs to register:** `https://<app>.<APP_BASE_DOMAIN>/integrations/google/callback`
|
|
1238
|
+
- **How it is sent:** POST `oauth2.googleapis.com/token` (the client in the form body)
|
|
1239
|
+
- **Scope sets an app lists:** `identity`, `gmail.read`, `calendar.read`, `search-console.read`, `analytics.read`
|
|
1240
|
+
- **Set it:** `pnpm everyapp secret set GOOGLE_WORKSPACE_CLIENT_ID GOOGLE_WORKSPACE_CLIENT_SECRET`
|
|
1241
|
+
- **Guide:** [google.md](google.md)
|
|
1242
|
+
|
|
1243
|
+
### microsoft-365
|
|
1244
|
+
|
|
1245
|
+
**Microsoft 365 (Outlook mail and calendar)** (`oauth_client`): the Gateway holds the client and completes the token endpoints only; the app builds the authorize URL from the public client id and keeps people's tokens.
|
|
1246
|
+
|
|
1247
|
+
- **Settings:** `MICROSOFT_365_CLIENT_ID`, `MICROSOFT_365_CLIENT_SECRET`
|
|
1248
|
+
- **Where the client comes from:** https://entra.microsoft.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade
|
|
1249
|
+
- **Redirect URIs to register:** `https://<app>.<APP_BASE_DOMAIN>/integrations/microsoft/callback`
|
|
1250
|
+
- **How it is sent:** POST `login.microsoftonline.com/common/oauth2/v2.0/token` (the client in the form body)
|
|
1251
|
+
- **Scope sets an app lists:** `identity`, `mail.read`, `calendar.read`
|
|
1252
|
+
- **Set it:** `pnpm everyapp secret set MICROSOFT_365_CLIENT_ID MICROSOFT_365_CLIENT_SECRET`
|
|
1253
|
+
- **Guide:** [microsoft-365.md](microsoft-365.md)
|