BackendHTTP API

API keys

Manage Environment and Account API keys with scoped permissions for Tenklo.

Tenklo has two API key types. They are not interchangeable.

  • Environment API keys grant access to a single environment (integrations, connections, functions, records, proxy, and related APIs). Each key can have full access or a custom set of environment scopes.
  • Account API keys grant access to account-level APIs only. They do not grant access to any environment.

Most integrations use Environment API keys. Account API keys are for account-level automation and are managed separately.

Environment API keys

Environment API keys authenticate requests against a single Tenklo environment. Use them with environment-level APIs for integrations, connections, functions, records, and proxy requests.

Manage Environment API keys under Environment Settings > API Keys.

Managing Environment API keys

Each environment comes with a Default - Full access key that grants access to all environment API endpoints. You can create additional keys with restricted scopes for specific use cases.

Creating an Environment API key

  1. Go to Environment Settings > API Keys
  2. Click Create API Key
  3. Enter a display name (e.g., "CI Deploy Key", "Backend service")
  4. Choose Full access or Custom permissions — custom lets you pick individual scopes
  5. The key is created immediately and can be revealed and copied from the key list

Rotating an Environment API key

To rotate a key:

  1. Create a new key with the same scopes
  2. Update your application to use the new key
  3. Monitor the Last used column on the old key to confirm it's no longer in use
  4. Delete the old key

Using an Environment API key

Pass the Environment API key as a Bearer token in the Authorization header:

import { Nango } from '@nangohq/node';

const nango = new Nango({ apiKey: '<YOUR-ENVIRONMENT-API-KEY>' });

Scopes

Scopes control what an Environment API key can access. When creating a key with Custom permissions, you select which scopes to grant. A key without a specific scope will receive a 403 Forbidden response when trying to access a protected endpoint.

Credential scopes

Some resources (Integrations and Connections) have sensitive credential data. Access to this data is controlled by dedicated _credentials scopes:

  • list / read — returns the resource without sensitive credentials
  • list_credentials / read_credentials — returns the resource with credentials (access tokens, client secrets, etc.)

The _credentials scopes are supersets — selecting read_credentials automatically includes read access. You don't need to select both.

ResourceWithout credentialsWith credentials
ConnectionsConnection metadata, tags, status+ access/refresh tokens
IntegrationsProvider, display name, config+ client ID and client secret

Advised profiles

Common scope combinations for typical use cases:

Auth (Connect UI)

For backends that create connect sessions for the auth flow:

Scope
environment:connect_sessions:write

CI/CD deploy

For CI/CD pipelines deploying syncs and actions to production:

Scope
environment:deploy

Backend service

For backend services that consume data, trigger actions, and proxy requests:

Scope
environment:connections:read
environment:records:read
environment:actions:execute
environment:syncs:execute
environment:proxy

Add environment:connections:read_credentials if the service needs access to connection tokens.

For extra security, avoid when possible granting environment:connections:list to backend services. Without it, connection IDs act as connection-specific secrets — a leaked Environment API key alone won't let an attacker enumerate and access customer data.

Local development

For local development, use a Full access key. This is the default key created for each environment.

CLI

The Tenklo CLI uses the NANGO_SECRET_KEY_<ENV> environment variable for authentication. Set it to an Environment API key with the required scopes:

CLI CommandRequired Scope
nango deployenvironment:deploy
nango dryrunenvironment:connections:read + environment:integrations:read + environment:proxy

For most functions, environment:connections:read is sufficient for nango dryrun — Tenklo injects credentials into the proxy automatically, so the function does not need them in its response. Upgrade to environment:connections:read_credentials when the function reads credential data from the connection, including:

  • accessing connection.credentials directly (e.g. nango.getConnection().credentials)
  • calling nango.getToken() — returns the access token from connection.credentials
  • calling nango.getRawTokenResponse() — returns connection.credentials.raw

Without read_credentials, these helpers return empty values because the API strips the credentials field from the response.

The Default - Full access key that comes with each environment already has all required scopes for deploying and dry-running. For production CI/CD pipelines, consider creating a dedicated key with only the environment:deploy scope to follow the principle of least privilege.

All available scopes

Integrations

ScopeDescription
environment:integrations:listList integrations (no credentials)
environment:integrations:list_credentialsList integrations with client credentials
environment:integrations:list_functionsList deployed function configuration (syncs and actions)
environment:integrations:readRead a single integration (no credentials)
environment:integrations:read_credentialsRead a single integration with client credentials
environment:integrations:createCreate integrations
environment:integrations:updateUpdate integrations
environment:integrations:deleteDelete integrations

Connections

ScopeDescription
environment:connections:listList connections (no credentials)
environment:connections:list_credentialsList connections with access/refresh tokens
environment:connections:readRead a single connection (no credentials)
environment:connections:read_credentialsRead a single connection with access/refresh tokens
environment:connections:createCreate connections
environment:connections:updateUpdate connections and metadata
environment:connections:deleteDelete connections

Connect Sessions

ScopeDescription
environment:connect_sessions:writeCreate and reconnect sessions for the Connect UI auth flow

Agent Sessions

Agent sessions are experimental. The endpoints and this scope are likely to change, including in breaking ways, until the feature is generally available. See the agent sessions guide.

ScopeDescription
environment:agent_sessions:writeCreate agent sessions

Syncs

ScopeDescription
environment:syncs:readRead sync status
environment:syncs:executeTrigger, pause, start syncs
environment:syncs:updateUpdate sync connection frequency
environment:syncs:variant:createCreate sync variants
environment:syncs:variant:deleteDelete sync variants

Deploy

ScopeDescription
environment:deployDeploy syncs and actions via CLI or API

Functions

ScopeDescription
environment:functions:listList available functions
environment:functions:readRead a single available function
environment:functions:deleteDelete a deployed function
environment:functions:compileCompile function source code
environment:functions:dryrunDry run function source code

When a key with environment:functions:dryrun starts a dryrun, the sandbox token inherits all of the parent key's scopes and additionally grants environment:connections:read, environment:integrations:read, and environment:proxy for the core SDK features to work while running a function.

Records

ScopeDescription
environment:records:readRead synced records
environment:records:writePrune records

Logs

ScopeDescription
environment:logs:readRead log operations and messages

The environment:logs:read scope is currently only used by the Logs tools in the Management MCP server.

Actions

ScopeDescription
environment:actions:executeTrigger actions and read action results

Proxy

ScopeDescription
environment:proxySend proxy requests to external APIs through Tenklo

Variables

ScopeDescription
environment:variables:readRead environment variables

Webhooks

ScopeDescription
environment:webhook_signing_key:rotateRotate the webhook signing key

MCP

ScopeDescription
environment:mcpAccess the MCP endpoint

Account API keys

Account API keys authenticate requests against account-level APIs. They do not grant access to any environment.

They always have full account access and can only be managed by account administrators.

Manage Account API keys from Account API keys in the Tenklo dashboard (also available from the profile menu).

Using an Account API key

Pass the Account API key as a Bearer token in the Authorization header. Account API keys cannot call environment-level endpoints — use an Environment API key for those.

curl --request POST \
  --url https://api.tenklo.dev/environments \
  --header 'Authorization: Bearer <YOUR-ACCOUNT-API-KEY>' \
  --header 'Content-Type: application/json' \
  --data '{ "name": "staging" }'

Account-level APIs

On this page