Credentials
Orchka provides a secure credential management system for storing and using API keys, tokens, and authentication details in your workflows.
Overview
Instead of hardcoding sensitive values in your workflow nodes, you can:
- Store credentials securely with AES-256-GCM encryption
- Reference credentials by ID in your nodes
- Credentials are decrypted only during workflow execution
Credential Types
| Type | Fields | Use Case |
|---|---|---|
| API Key | apiKey | Generic API authentication |
| Basic Auth | username, password | HTTP Basic authentication |
| Bearer Token | token | OAuth/JWT bearer tokens |
| OAuth2 | clientId, clientSecret, accessToken, refreshToken | OAuth2 flows |
| OpenAI | apiKey, organization (optional) | OpenAI API |
| Anthropic | apiKey | Anthropic Claude API |
| Google AI | apiKey | Google Gemini API |
| X | accessToken, refreshToken (optional) | Publish X posts |
accessToken, refreshToken (optional) | Publish LinkedIn posts | |
| Facebook Page | pageAccessToken | Publish Facebook Page posts |
accessToken, refreshToken (optional) | Publish Instagram media | |
| Threads | accessToken, refreshToken (optional) | Publish Threads posts |
| TikTok | accessToken, refreshToken (optional) | TikTok integrations |
| YouTube | accessToken, refreshToken (optional) | YouTube integrations |
accessToken, refreshToken (optional) | Create Pinterest pins | |
accessToken, refreshToken (optional) | Submit Reddit posts | |
| Bluesky | identifier, password, serviceUrl (optional) | Publish Bluesky posts |
| Mastodon | instanceUrl, accessToken | Publish Mastodon statuses |
| Discord | webhookUrl | Send Discord webhook messages |
Creating Credentials
- Navigate to Credentials in the dashboard sidebar
- Click New Credential
- Select the credential type
- Enter a unique name and the required fields
- Click Create
Using Credentials in Nodes
AI Agent Node
Select a stored credential instead of relying on environment variables:
- Open the AI Agent node settings
- In the Credential dropdown, select your saved credential
- The credential type must match the selected model provider
Model: gpt-4o
Credential: My OpenAI Key (OpenAI type)HTTP Request Node
Use credentials for API authentication:
- Open the HTTP Request node settings
- Set Auth Type to "Credential"
- Select the appropriate credential
Supported credential types for HTTP:
- Bearer Token →
Authorization: Bearer <token> - Basic Auth →
Authorization: Basic <base64> - API Key →
X-API-Key: <key>
Social Media Nodes
Social nodes use dedicated credential types so each platform can validate the fields it needs:
| Node | Credential Type | Notes |
|---|---|---|
| X Post | X | Requires an OAuth user token with post write access |
| LinkedIn Post | Requires permission to publish as the selected member or organization | |
| Facebook Page Post | Facebook Page | Requires a Page access token |
| Instagram Post | Requires Graph API publishing access and an image URL | |
| Threads Post | Threads | Requires Threads API publishing access |
| Discord Message | Discord | Uses an incoming webhook URL |
| Reddit Post | Requires OAuth submit permission | |
| Bluesky Post | Bluesky | Uses handle/DID plus an app password |
| Mastodon Post | Mastodon | Requires instance URL and a token with write:statuses |
| Pinterest Pin | Requires pin creation access |
Testing Credentials
Before using a credential in production:
- Open the credential details
- Click Test Credential
- For AI provider credentials, this validates the API key with the provider
- Generic and social credentials are schema-validated; platform-side permission errors surface when the workflow runs
Security
- Credentials are encrypted at rest using AES-256-GCM
- Decryption only occurs during workflow execution
- Credential data is never exposed in API responses (only metadata)
- Audit logs track credential access during workflow runs
Environment Setup
Generate an encryption key for your deployment:
# Generate a 32-byte hex key
openssl rand -hex 32Add to your .env:
CREDENTIAL_ENCRYPTION_KEY=your_64_character_hex_key_hereBest Practices
- Use descriptive names - "Production OpenAI" vs "test-key-1"
- Rotate credentials regularly - Update credentials without changing workflows
- Test before deploying - Use the test feature to validate credentials
- One credential per purpose - Easier to track and rotate