Credentials store API keys and secrets used by workflow nodes. You add them in the Credentials Tab and reference them by name in node configuration.
What Credentials Are
- Stored per user – Each credential belongs to a user and can be shared with other users or Teams.
- Encrypted at rest – Sensitive values are encrypted; the UI masks them after creation.
- Referenced by name – Nodes select a credential by name (or ID). The execution engine resolves the credential for the workflow owner at run time.
How Nodes Use Them
| Node type | Typical credential | Purpose |
|---|---|---|
| LLM, Agent | OpenAI, Google, Custom | API key for the model |
| Codex | OpenAI Codex + GitHub | ChatGPT subscription sign-in (OAuth) or a Codex access token for the runner, plus a GitHub PAT for repository operations |
| OpenCode Go | OpenCode Go + GitHub | An OpenCode Go gateway API key (optional base URL) for the runner, plus a GitHub PAT for repository operations |
| Agent, HTTP, GitHub | GitHub | GitHub personal access token (PAT) for GitHub API calls, GitHub node operations, and MCP integrations |
| Jira | Jira | Cloud email/API token or Data Center username/password, Jira site base URL, deployment mode, and optional REST API version |
| Linear | Linear | Personal API key or OAuth2 for teams, projects, issues, and comments |
| HTTP | Bearer, Header | Auth for requests |
| Telegram, Telegram Trigger | Telegram | Bot token and optional webhook secret |
| Discord | Discord | Incoming webhook URL |
| Discord Trigger | Discord Trigger (Public Key) | Application public key for signature verification |
| RAG | RAG: Qdrant + OpenAI, RAG: Psql + OpenAI, RAG: Custom Embeddings | Vector store connection (external Qdrant, or Heym's own Postgres via pgvector), with OpenAI or any OpenAI-compatible embedding endpoint |
| Slack | Slack | Webhook or API token |
| IMAP Trigger | IMAP | Inbound mailbox connection |
| Send Email | SMTP | Mail server |
| Redis | Redis | Connection |
| Grist | Grist | API key + server URL |
| Google Sheets | Google Sheets (OAuth2) | Client ID + Client Secret + OAuth2 consent |
| Google Drive | Google Drive (OAuth2) | Client ID + Client Secret + OAuth2 consent |
| BigQuery | BigQuery (OAuth2) | Client ID + Client Secret + OAuth2 consent |
| Supabase | Supabase | Project URL + API key (+ optional default schema) |
| ClickHouse | ClickHouse | Host + port + username/password + database (+ secure) |
| Notion | Notion | Internal integration token, or public integration Client ID + Client Secret + OAuth consent |
| Sentry | Sentry | Auth token plus optional self-hosted base URL |
| Amazon S3 | Amazon S3 | Access key, secret key, region |
| RabbitMQ | RabbitMQ | AMQP URL |
For detailed setup (hosts, ports, provider-specific fields), see Third-Party Integrations. That includes Telegram bot setup, inbound email via IMAP, and outbound email via SMTP.
GitHub credentials can also include an optional base_url when you are targeting GitHub
Enterprise Server instead of GitHub.com. When you edit a GitHub credential to rotate the token,
leaving base_url empty preserves the existing Enterprise endpoint. Enter a new URL only when
you want to change that endpoint.
Jira, Linear, Supabase, Notion, Sentry, and ClickHouse credentials expose Test Connection in the credential dialog. For Jira, the check calls Jira's current user endpoint. For Linear,
the check calls the Linear API with getViewer and confirms the API key or OAuth token is valid.
When editing, you can test without re-entering the API key if the stored secret is still present. For Notion,
choose Internal token or OAuth in the dialog; OAuth uses the Client ID and Client Secret
from your Notion public integration. See Third-Party Integrations for
Notion setup details.
Coding-package usage
The AI Defaults tab in Settings shows remaining coding-package usage for your Codex credentials (owned and shared). For each Codex credential it renders a horizontal bar per active rate-limit window — typically a 5 hours and/or Weekly window, depending on your plan — with the percentage of quota left and a reset countdown. The data comes from the Codex backend's rate-limit response headers, fetched on demand.
OpenCode Go credentials are listed there too, but marked "usage unavailable": the OpenCode zen gateway does not expose remaining-quota data, so no bar can be shown.
In Expressions
Some nodes allow expressions for auth. Use Expression DSL with $credentials.CredentialName to reference a credential's resolved secret inside an expression.
Codex credentials are intentionally excluded from $credentials. Whether you sign in with ChatGPT (subscription, no per-token API cost) or paste a Codex access_token, the tokens are only passed to the local Codex runner process. ChatGPT sign-in tokens are refreshed automatically as they expire.
Jira credentials are also excluded from $credentials. The Jira node loads the credential by credentialId at run time. For custom Jira REST calls not covered by the Jira node, use the HTTP node with Jira Basic Auth (email:api_token for Jira Cloud or username:password for Data Center / Server), for example curl -u you@example.com:YOUR_API_TOKEN https://your-domain.atlassian.net/rest/api/3/myself. You can also use a Header credential with Authorization: Basic <base64(user:secret)>. Jira Data Center / Server personal access tokens and Bearer auth are not supported by the Jira credential yet.
| Credential type | Value exposed to $credentials.Name |
|---|---|
| Bearer | Bearer token string |
| GitHub | Personal access token |
| Notion | Internal api_token or OAuth access_token (Bearer token for Notion API calls) |
| Sentry | Sentry auth token |
| Discord / Slack | Webhook URL |
Example:
$credentials.MyBearerToken
$credentials.MyNotionWorkspaceUse the Notion node for native database, page, and block operations. Use $credentials when a custom HTTP request needs the same Notion bearer token.
Related
- Credentials Tab – Add, edit, delete credentials
- GitHub Node – Native GitHub REST operations
- Jira Node – Jira project, issue, comment, attachment, user, notification, and transition automation
- Linear Node – Linear GraphQL workspace and issue automation
- Notion Node – Search and manage Notion content
- Sentry Node – Sentry organization, project, team, issue, event, and release automation
- Credentials Sharing – Share with users and teams
- Third-Party Integrations – Setup guide per credential type
- Expression DSL –
$credentialsin expressions