A TypeScript SDK for the Infisical API. Provides typed access to secrets management, identity authentication, PKI, KMS, and all other Infisical platform features.
- Zero dependencies (uses native
fetch) - Supports Node.js 18+
- Full TypeScript type definitions
- ESM and CommonJS builds
- Two-step authentication with auto-renewal
- Installation
- Quick Start
- Authentication
- Architecture
- Configuration
- Error Handling
- Releasing
- API Reference
- MFA
- MFA Sessions
- Users
- Password
- Service Tokens
- Organizations
- Organization Identities
- Identities
- Identity Access Tokens
- Identity Auth
- Projects
- Secrets
- Secret Folders
- Secret Imports
- Secret Sharing
- Secret Syncs
- Webhooks
- PKI Certificate Authorities
- PKI Certificate Templates
- PKI Alerts
- PKI Certificates
- KMS
- Integration Auth
- App Connections
- Admin
- Org Admin
npm install @azerothian/infisicalimport { InfisicalClient } from "@azerothian/infisical";
const client = new InfisicalClient();
await client.login({
universalAuth: { clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET" }
});
const secrets = await client.secrets.list({
projectId: "my-project-id",
environment: "production",
});
console.log(secrets);The SDK uses a two-step authentication model. First, construct the client. Then, call client.login() with one of 12 identity auth methods. The returned access token is stored internally and sent automatically with every subsequent request.
Pass exactly one auth method key to client.login():
// Universal Auth (client ID + secret)
await client.login({ universalAuth: { clientId: "...", clientSecret: "..." } });
// Token Auth
await client.login({ tokenAuth: { identityId: "..." } });
// AWS Auth
await client.login({ awsAuth: { identityId: "...", iamHttpRequestMethod: "...", iamRequestBody: "...", iamRequestHeaders: "..." } });
// GCP Auth
await client.login({ gcpAuth: { identityId: "...", jwt: "..." } });
// Azure Auth
await client.login({ azureAuth: { identityId: "...", jwt: "..." } });
// Kubernetes Auth
await client.login({ kubernetesAuth: { identityId: "...", jwt: "..." } });
// OIDC Auth
await client.login({ oidcAuth: { identityId: "...", jwt: "..." } });
// JWT Auth
await client.login({ jwtAuth: { identityId: "...", jwt: "..." } });
// LDAP Auth
await client.login({ ldapAuth: { identityId: "...", username: "...", password: "..." } });
// TLS Certificate Auth
await client.login({ tlsCertAuth: { identityId: "...", clientCertificate: "..." } });
// OCI Auth
await client.login({ ociAuth: { identityId: "...", userOcid: "...", requestHeaders: "..." } });
// AliCloud Auth
await client.login({ alicloudAuth: { identityId: "...", stsToken: "...", identityArn: "..." } });Each resource category in the SDK is restricted to a set of allowed auth modes. If you call a resource method with an incompatible mode, the SDK throws an AuthenticationError before making any network request.
| Resource Category | Allowed Auth Modes |
|---|---|
secrets, secretFolders, secretImports |
IAT, JWT, ST |
projects, organizations, organizationIdentities |
IAT, JWT |
identities, identityAuth, identityAccessTokens |
IAT, JWT |
pki, kms, secretTags |
IAT, JWT |
appConnections, secretSyncs, integrationAuth |
IAT, JWT |
admin, orgAdmin |
JWT only |
secretSharing, webhooks |
JWT only |
users, mfa, mfaSessions |
JWT only |
serviceTokens, password |
JWT only |
IAT = Identity Access Token (set by client.login()), JWT = User JWT, ST = Service Token (deprecated).
import { AuthenticationError } from "@azerothian/infisical";
try {
// login() sets mode to "identityAccessToken"
await client.login({ universalAuth: { clientId: "...", clientSecret: "..." } });
// admin requires JWT -- this will throw
await client.admin.getConfig();
} catch (error) {
if (error instanceof AuthenticationError) {
console.error(`Auth mode "${error.currentMode}" not allowed`);
console.error("Allowed modes:", error.allowedModes);
}
}When you authenticate via client.login(), the SDK stores the credentials and the token's expiresIn value. If a request is made within 30 seconds of the token's expiry, the SDK transparently re-authenticates using the same credentials that were originally passed to login().
Concurrent requests that hit the renewal window share a single renewal promise, so only one re-authentication call is made regardless of how many requests are in flight.
client.isAuthenticated // true if login() has been called and not yet logged out
client.authMode // "identityAccessToken" | "jwt" | "apiKey" | "serviceToken" | null
client.logout() // clears auth state, token, and renewal functionsequenceDiagram
participant App
participant Client as InfisicalClient
participant AM as AuthManager
participant IAR as Identity Auth Resource
participant API as Infisical API
participant AS as AuthState
App->>Client: new InfisicalClient({ baseUrl })
App->>Client: login({ universalAuth: { clientId, clientSecret } })
Client->>AM: login(params)
AM->>IAR: universal.login({ clientId, clientSecret })
IAR->>API: POST /api/v1/auth/universal-auth/login
API-->>IAR: { accessToken, expiresIn }
IAR-->>AM: LoginResponse
AM->>AS: setAuth({ mode: "identityAccessToken", accessToken }, expiresIn)
AM->>AS: setRenewFn(loginFn)
AM-->>Client: LoginResponse
Client-->>App: LoginResponse
sequenceDiagram
participant App
participant Resource as SecretsResource
participant HTTP as HttpClient
participant AS as AuthState
participant IAR as Identity Auth Resource
participant API as Infisical API
App->>Resource: secrets.list({ projectId, environment })
Resource->>Resource: requireAuth()
Resource->>HTTP: get("/api/v4/secrets", query)
HTTP->>AS: ensureValid()
alt Token expired (within 30s of expiry)
AS->>IAR: loginFn() [re-authenticate]
IAR->>API: POST /api/v1/auth/.../login
API-->>IAR: { accessToken, expiresIn }
IAR-->>AS: LoginResponse
AS->>AS: setAuth(newToken, newExpiry)
end
AS-->>HTTP: valid
HTTP->>API: GET /api/v4/secrets (with Bearer token)
API-->>HTTP: secrets data
HTTP-->>Resource: typed response
Resource-->>App: ListSecretsResponse
flowchart TD
A[Client calls resource method] --> B{requireAuth}
B --> C{Is authenticated?}
C -->|No| D[Throw AuthenticationError<br/>'Not authenticated']
C -->|Yes| E{Auth mode allowed<br/>for this resource?}
E -->|No| F[Throw AuthenticationError<br/>'Mode X not allowed']
E -->|Yes| G[Proceed with request]
G --> H{ensureValid}
H --> I{Token near expiry?}
I -->|Yes| J[Auto-renew token]
J --> K[Execute HTTP request]
I -->|No| K
const client = new InfisicalClient({
// Optional: base URL (defaults to https://app.infisical.com)
baseUrl: "https://self-hosted.example.com",
// Optional: request timeout in milliseconds (defaults to 30000)
timeout: 60_000,
// Optional: additional headers sent with every request
headers: { "X-Custom-Header": "value" },
// Optional: custom fetch implementation
fetch: customFetchFn,
});All API errors are thrown as typed error classes. Network-level failures throw InfisicalNetworkError. Auth-mode violations throw AuthenticationError before any network call is made.
import {
InfisicalApiError,
InfisicalNetworkError,
AuthenticationError,
BadRequestError,
UnauthorizedError,
ForbiddenError,
NotFoundError,
ValidationError,
RateLimitError,
InternalServerError,
} from "@azerothian/infisical";
try {
await client.secretFolders.getById({ id: "non-existent" });
} catch (error) {
if (error instanceof AuthenticationError) {
console.error(`Auth mode "${error.currentMode}" not allowed`);
console.error("Allowed modes:", error.allowedModes);
} else if (error instanceof NotFoundError) {
console.error("Folder not found:", error.message);
console.error("Request ID:", error.requestId);
} else if (error instanceof UnauthorizedError) {
console.error("Invalid credentials");
} else if (error instanceof RateLimitError) {
console.error("Rate limited, retry later");
} else if (error instanceof InfisicalApiError) {
console.error(`API error ${error.statusCode}: ${error.message}`);
} else if (error instanceof InfisicalNetworkError) {
console.error("Network failure:", error.message, error.cause);
}
}| Error Class | HTTP Status | Description |
|---|---|---|
AuthenticationError |
N/A | Not authenticated, or auth mode not allowed for resource |
BadRequestError |
400 | Malformed request |
UnauthorizedError |
401 | Missing or invalid credentials |
ForbiddenError |
403 | Insufficient permissions |
NotFoundError |
404 | Resource not found |
ValidationError |
422 | Request body validation failed |
RateLimitError |
429 | Too many requests |
InternalServerError |
500 | Server-side error |
InfisicalApiError |
Other | Catch-all for other HTTP error codes |
InfisicalNetworkError |
N/A | Connection failure, timeout, DNS error |
Releases are handled by the release script which automates version bumping, git tagging, GitHub releases, and npm publishing.
# Patch release (0.1.0 -> 0.1.1)
npm run release:patch
# Minor release (0.1.0 -> 0.2.0)
npm run release:minor
# Major release (0.1.0 -> 1.0.0)
npm run release:majorThe release script (scripts/release.sh) performs the following steps:
- Validates clean working tree on
masterbranch - Runs the full test suite
- Bumps the version in
package.jsonand creates a git commit + tag (vX.Y.Z) - Builds the dist output
- Pushes the commit and tag to
origin - Creates a GitHub release with auto-generated release notes
- Publishes the package to npm
Prerequisites:
- Authenticated with npm (
npm login) - Authenticated with GitHub CLI (
gh auth login) - On the
masterbranch with no uncommitted changes
The Auth column in the tables below uses these abbreviations:
| Abbreviation | Meaning |
|---|---|
| IAT | Identity Access Token (identityAccessToken mode) |
| JWT | User JWT (jwt mode) |
| API | User API Key (apiKey mode) |
| ST | Service Token (serviceToken mode) -- deprecated |
| None | No authentication required (login endpoints) |
Multi-factor authentication management for user sessions.
Accessor: client.mfa
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
resendToken() |
POST | /auth/mfa/send |
JWT | Resend MFA verification token |
checkTotp() |
GET | /auth/mfa/check/totp |
JWT | Check TOTP MFA status |
checkWebAuthn() |
GET | /auth/mfa/check/webauthn |
JWT | Check WebAuthn MFA status |
verify(params) |
POST | /auth/mfa/verify |
JWT | Verify MFA token |
verifyRecoveryCode(params) |
POST | /auth/mfa/verify/recovery-code |
JWT | Verify MFA recovery code |
Manage MFA session verification.
Accessor: client.mfaSessions
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
verify(params) |
POST | /api/v2/mfa-sessions/{mfaSessionId}/verify |
JWT | Verify an MFA session |
getStatus(params) |
GET | /api/v2/mfa-sessions/{mfaSessionId}/status |
JWT | Get MFA session status |
Manage the authenticated user's profile, API keys, sessions, and settings.
Accessor: client.users
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
getMe() |
GET | /api/v2/users/me |
JWT | Get current user profile |
deleteMe() |
DELETE | /api/v2/users/me |
JWT | Delete current user account |
updateName(params) |
PATCH | /api/v2/users/me/name |
JWT | Update display name |
updateMfa(params) |
PATCH | /api/v2/users/me/mfa |
JWT | Update MFA settings |
updateAuthMethods(params) |
PUT | /api/v2/users/me/auth-methods |
JWT | Set allowed auth methods |
updateEmail(params) |
PATCH | /api/v2/users/me/email |
JWT | Change email address |
requestEmailChangeOtp(params) |
POST | /api/v2/users/me/email-change/otp |
JWT | Request OTP for email change |
sendEmailVerificationCode(params) |
POST | /api/v2/users/me/emails/code |
JWT | Send email verification code |
verifyEmailVerificationCode(params) |
POST | /api/v2/users/me/emails/verify |
JWT | Verify email code |
listOrganizations() |
GET | /api/v2/users/me/organizations |
JWT | List user's organizations |
listApiKeys() |
GET | /api/v2/users/me/api-keys |
JWT | List user API keys |
createApiKey(params) |
POST | /api/v2/users/me/api-keys |
JWT | Create a new API key |
deleteApiKey(apiKeyDataId) |
DELETE | /api/v2/users/me/api-keys/{apiKeyDataId} |
JWT | Delete an API key |
listSessions() |
GET | /api/v2/users/me/sessions |
JWT | List active sessions |
revokeAllSessions() |
DELETE | /api/v2/users/me/sessions |
JWT | Revoke all sessions |
revokeSession(sessionId) |
DELETE | /api/v2/users/me/sessions/{sessionId} |
JWT | Revoke a specific session |
Password reset operations.
Accessor: client.password
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
reset(params) |
POST | /api/v2/password/password-reset |
None | Reset password (unauthenticated, via email token) |
resetAuthenticated(params) |
POST | /api/v2/password/user/password-reset |
JWT | Reset password while logged in |
Manage service tokens (deprecated -- use machine identities instead).
Accessor: client.serviceTokens
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
get() |
GET | /api/v2/service-token |
JWT, ST | Get current service token details |
create(params) |
POST | /api/v2/service-token |
JWT | Create a new service token |
delete(serviceTokenId) |
DELETE | /api/v2/service-token/{serviceTokenId} |
JWT | Delete a service token |
Manage organizations, memberships, and related resources.
Accessor: client.organizations
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
create(params) |
POST | /api/v2/organizations |
JWT, IAT | Create an organization |
delete(params) |
DELETE | /api/v2/organizations/{orgId} |
JWT, IAT | Delete an organization |
upgradePrivilegeSystem() |
POST | /api/v2/organizations/privilege-system-upgrade |
JWT, IAT | Upgrade privilege system |
listMemberships(params) |
GET | /api/v2/organizations/{orgId}/memberships |
JWT, IAT | List org members |
getMembership(params) |
GET | /api/v2/organizations/{orgId}/memberships/{membershipId} |
JWT, IAT | Get a membership |
updateMembership(params) |
PATCH | /api/v2/organizations/{orgId}/memberships/{membershipId} |
JWT, IAT | Update a membership |
deleteMembership(params) |
DELETE | /api/v2/organizations/{orgId}/memberships/{membershipId} |
JWT, IAT | Remove a member |
bulkDeleteMemberships(params) |
DELETE | /api/v2/organizations/{orgId}/memberships |
JWT, IAT | Remove multiple members |
listProjectMembershipsByOrgMembership(params) |
GET | /api/v2/organizations/{orgId}/memberships/{membershipId}/project-memberships |
JWT, IAT | List project memberships for an org member |
listProjects(params) |
GET | /api/v2/organizations/{orgId}/workspaces |
JWT, IAT | List org projects |
List machine identities within an organization.
Accessor: client.organizationIdentities
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
list(params) |
GET | /api/v2/organizations/{orgId}/identity-memberships |
JWT, IAT | List identity memberships in an org |
CRUD operations for machine identities.
Accessor: client.identities
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
create(params) |
POST | /api/v1/identities |
JWT, IAT | Create an identity |
update(params) |
PATCH | /api/v1/identities/{identityId} |
JWT, IAT | Update an identity |
delete(params) |
DELETE | /api/v1/identities/{identityId} |
JWT, IAT | Delete an identity |
get(params) |
GET | /api/v1/identities/{identityId} |
JWT, IAT | Get identity details |
listProjectMemberships(params) |
GET | /api/v1/identities/{identityId}/identity-memberships |
JWT, IAT | List project memberships for an identity |
search(params) |
GET | /api/v1/organizations/{organizationId}/identities |
JWT, IAT | Search identities in an org |
Renew and revoke machine identity access tokens.
Accessor: client.identityAccessTokens
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
renew(params) |
POST | /api/v1/auth/token/renew |
IAT | Renew an access token |
revoke(params) |
POST | /api/v1/auth/token/revoke |
IAT | Revoke an access token |
Authentication methods for machine identities. Each sub-resource follows a consistent pattern: a login() method that requires no authentication (it returns a token), and attach/update/get/revoke methods for managing the auth configuration on an identity.
All identity auth sub-resources are accessed via client.identityAuth.<provider>.
Accessor: client.identityAuth.universal
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
login(params) |
POST | /api/v1/auth/universal-auth/login |
None | Authenticate with client ID and secret |
attach(params) |
POST | /api/v1/auth/universal-auth/identities/{identityId} |
JWT, IAT | Attach universal auth to an identity |
update(params) |
PATCH | /api/v1/auth/universal-auth/identities/{identityId} |
JWT, IAT | Update universal auth config |
get(params) |
GET | /api/v1/auth/universal-auth/identities/{identityId} |
JWT, IAT | Get universal auth config |
revoke(params) |
DELETE | /api/v1/auth/universal-auth/identities/{identityId} |
JWT, IAT | Remove universal auth from identity |
createClientSecret(params) |
POST | /api/v1/auth/universal-auth/identities/{identityId}/client-secrets |
JWT, IAT | Create a client secret |
listClientSecrets(params) |
GET | /api/v1/auth/universal-auth/identities/{identityId}/client-secrets |
JWT, IAT | List client secrets |
getClientSecret(params) |
GET | /api/v1/auth/universal-auth/identities/{identityId}/client-secrets/{clientSecretId} |
JWT, IAT | Get a client secret |
revokeClientSecret(params) |
DELETE | /api/v1/auth/universal-auth/identities/{identityId}/client-secrets/{clientSecretId} |
JWT, IAT | Revoke a client secret |
Example: Authenticate with Universal Auth
import { InfisicalClient } from "@azerothian/infisical";
const client = new InfisicalClient();
// login() calls POST /api/v1/auth/universal-auth/login, stores the token,
// and sets up auto-renewal.
const response = await client.login({
universalAuth: {
clientId: "YOUR_CLIENT_ID",
clientSecret: "YOUR_CLIENT_SECRET",
},
});
console.log("Authenticated, token expires in", response.expiresIn, "seconds");
// All subsequent calls use the stored token automatically.
const folders = await client.secretFolders.list({
projectId: "project-id",
environment: "production",
path: "/",
});Accessor: client.identityAuth.token
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
login(params) |
POST | /api/v1/auth/token/login |
None | Authenticate with a token |
attach(params) |
POST | /api/v1/auth/token/identities/{identityId} |
JWT, IAT | Attach token auth |
update(params) |
PATCH | /api/v1/auth/token/identities/{identityId} |
JWT, IAT | Update token auth config |
get(params) |
GET | /api/v1/auth/token/identities/{identityId} |
JWT, IAT | Get token auth config |
revoke(params) |
DELETE | /api/v1/auth/token/identities/{identityId} |
JWT, IAT | Remove token auth |
createToken(params) |
POST | /api/v1/auth/token/identities/{identityId}/tokens |
JWT, IAT | Create a token |
listTokens(params) |
GET | /api/v1/auth/token/identities/{identityId}/tokens |
JWT, IAT | List tokens |
getToken(params) |
GET | /api/v1/auth/token/identities/{identityId}/tokens/{tokenId} |
JWT, IAT | Get a token |
updateToken(params) |
PATCH | /api/v1/auth/token/identities/{identityId}/tokens/{tokenId} |
JWT, IAT | Update a token |
revokeToken(params) |
DELETE | /api/v1/auth/token/identities/{identityId}/tokens/{tokenId} |
JWT, IAT | Revoke a token |
Accessor: client.identityAuth.aws
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
login(params) |
POST | /api/v1/auth/aws-auth/login |
None | Authenticate via AWS IAM |
attach(params) |
POST | /api/v1/auth/aws-auth/identities/{identityId} |
JWT, IAT | Attach AWS auth |
update(params) |
PATCH | /api/v1/auth/aws-auth/identities/{identityId} |
JWT, IAT | Update AWS auth config |
get(params) |
GET | /api/v1/auth/aws-auth/identities/{identityId} |
JWT, IAT | Get AWS auth config |
revoke(params) |
DELETE | /api/v1/auth/aws-auth/identities/{identityId} |
JWT, IAT | Remove AWS auth |
Accessor: client.identityAuth.gcp
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
login(params) |
POST | /api/v1/auth/gcp-auth/login |
None | Authenticate via GCP |
attach(params) |
POST | /api/v1/auth/gcp-auth/identities/{identityId} |
JWT, IAT | Attach GCP auth |
update(params) |
PATCH | /api/v1/auth/gcp-auth/identities/{identityId} |
JWT, IAT | Update GCP auth config |
get(params) |
GET | /api/v1/auth/gcp-auth/identities/{identityId} |
JWT, IAT | Get GCP auth config |
revoke(params) |
DELETE | /api/v1/auth/gcp-auth/identities/{identityId} |
JWT, IAT | Remove GCP auth |
Accessor: client.identityAuth.azure
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
login(params) |
POST | /api/v1/auth/azure-auth/login |
None | Authenticate via Azure AD |
attach(params) |
POST | /api/v1/auth/azure-auth/identities/{identityId} |
JWT, IAT | Attach Azure auth |
update(params) |
PATCH | /api/v1/auth/azure-auth/identities/{identityId} |
JWT, IAT | Update Azure auth config |
get(params) |
GET | /api/v1/auth/azure-auth/identities/{identityId} |
JWT, IAT | Get Azure auth config |
revoke(params) |
DELETE | /api/v1/auth/azure-auth/identities/{identityId} |
JWT, IAT | Remove Azure auth |
Accessor: client.identityAuth.kubernetes
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
login(params) |
POST | /api/v1/auth/kubernetes-auth/login |
None | Authenticate via Kubernetes SA token |
attach(params) |
POST | /api/v1/auth/kubernetes-auth/identities/{identityId} |
JWT, IAT | Attach Kubernetes auth |
update(params) |
PATCH | /api/v1/auth/kubernetes-auth/identities/{identityId} |
JWT, IAT | Update Kubernetes auth config |
get(params) |
GET | /api/v1/auth/kubernetes-auth/identities/{identityId} |
JWT, IAT | Get Kubernetes auth config |
revoke(params) |
DELETE | /api/v1/auth/kubernetes-auth/identities/{identityId} |
JWT, IAT | Remove Kubernetes auth |
Accessor: client.identityAuth.oidc
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
login(params) |
POST | /api/v1/auth/oidc-auth/login |
None | Authenticate via OIDC provider |
attach(params) |
POST | /api/v1/auth/oidc-auth/identities/{identityId} |
JWT, IAT | Attach OIDC auth |
update(params) |
PATCH | /api/v1/auth/oidc-auth/identities/{identityId} |
JWT, IAT | Update OIDC auth config |
get(params) |
GET | /api/v1/auth/oidc-auth/identities/{identityId} |
JWT, IAT | Get OIDC auth config |
revoke(params) |
DELETE | /api/v1/auth/oidc-auth/identities/{identityId} |
JWT, IAT | Remove OIDC auth |
Accessor: client.identityAuth.jwt
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
login(params) |
POST | /api/v1/auth/jwt-auth/login |
None | Authenticate via external JWT |
attach(params) |
POST | /api/v1/auth/jwt-auth/identities/{identityId} |
JWT, IAT | Attach JWT auth |
update(params) |
PATCH | /api/v1/auth/jwt-auth/identities/{identityId} |
JWT, IAT | Update JWT auth config |
get(params) |
GET | /api/v1/auth/jwt-auth/identities/{identityId} |
JWT, IAT | Get JWT auth config |
revoke(params) |
DELETE | /api/v1/auth/jwt-auth/identities/{identityId} |
JWT, IAT | Remove JWT auth |
Accessor: client.identityAuth.ldap
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
login(params) |
POST | /api/v1/auth/ldap-auth/login |
None | Authenticate via LDAP |
attach(params) |
POST | /api/v1/auth/ldap-auth/identities/{identityId} |
JWT, IAT | Attach LDAP auth |
update(params) |
PATCH | /api/v1/auth/ldap-auth/identities/{identityId} |
JWT, IAT | Update LDAP auth config |
get(params) |
GET | /api/v1/auth/ldap-auth/identities/{identityId} |
JWT, IAT | Get LDAP auth config |
revoke(params) |
DELETE | /api/v1/auth/ldap-auth/identities/{identityId} |
JWT, IAT | Remove LDAP auth |
Accessor: client.identityAuth.tlsCert
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
login(params) |
POST | /api/v1/auth/tls-cert-auth/login |
None | Authenticate via TLS client certificate |
attach(params) |
POST | /api/v1/auth/tls-cert-auth/identities/{identityId} |
JWT, IAT | Attach TLS cert auth |
update(params) |
PATCH | /api/v1/auth/tls-cert-auth/identities/{identityId} |
JWT, IAT | Update TLS cert auth config |
get(params) |
GET | /api/v1/auth/tls-cert-auth/identities/{identityId} |
JWT, IAT | Get TLS cert auth config |
revoke(params) |
DELETE | /api/v1/auth/tls-cert-auth/identities/{identityId} |
JWT, IAT | Remove TLS cert auth |
Accessor: client.identityAuth.oci
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
login(params) |
POST | /api/v1/auth/oci-auth/login |
None | Authenticate via Oracle Cloud Infrastructure |
attach(params) |
POST | /api/v1/auth/oci-auth/identities/{identityId} |
JWT, IAT | Attach OCI auth |
update(params) |
PATCH | /api/v1/auth/oci-auth/identities/{identityId} |
JWT, IAT | Update OCI auth config |
get(params) |
GET | /api/v1/auth/oci-auth/identities/{identityId} |
JWT, IAT | Get OCI auth config |
revoke(params) |
DELETE | /api/v1/auth/oci-auth/identities/{identityId} |
JWT, IAT | Remove OCI auth |
Accessor: client.identityAuth.alicloud
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
login(params) |
POST | /api/v1/auth/alicloud-auth/login |
None | Authenticate via Alibaba Cloud |
attach(params) |
POST | /api/v1/auth/alicloud-auth/identities/{identityId} |
JWT, IAT | Attach AliCloud auth |
update(params) |
PATCH | /api/v1/auth/alicloud-auth/identities/{identityId} |
JWT, IAT | Update AliCloud auth config |
get(params) |
GET | /api/v1/auth/alicloud-auth/identities/{identityId} |
JWT, IAT | Get AliCloud auth config |
revoke(params) |
DELETE | /api/v1/auth/alicloud-auth/identities/{identityId} |
JWT, IAT | Remove AliCloud auth |
Manage projects (workspaces), their environments, roles, tags, and trusted IPs.
Accessor: client.projects
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
get(params) |
GET | /api/v1/workspace/{projectId} |
JWT, IAT | Get project details |
update(params) |
PATCH | /api/v1/workspace/{projectId} |
JWT, IAT | Update project settings |
delete(params) |
DELETE | /api/v1/workspace/{projectId} |
JWT, IAT | Delete a project |
listMemberships(params) |
GET | /api/v1/workspace/{projectId}/memberships |
JWT, IAT | List project members |
listEnvironments(params) |
GET | /api/v1/workspace/{projectId}/environments |
JWT, IAT | List environments |
createEnvironment(params) |
POST | /api/v1/workspace/{projectId}/environments |
JWT, IAT | Create an environment |
updateEnvironment(params) |
PATCH | /api/v1/workspace/{projectId}/environments/{environmentId} |
JWT, IAT | Update an environment |
deleteEnvironment(params) |
DELETE | /api/v1/workspace/{projectId}/environments/{environmentId} |
JWT, IAT | Delete an environment |
listRoles(params) |
GET | /api/v1/workspace/{projectId}/roles |
JWT, IAT | List project roles |
listTags(params) |
GET | /api/v1/workspace/{projectId}/tags |
JWT, IAT | List project tags |
Manage secrets within project environments.
Accessor: client.secrets
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
list(params) |
GET | /api/v4/secrets |
JWT, IAT, ST | List secrets in an environment |
getByName(params) |
GET | /api/v4/secrets/{secretName} |
JWT, IAT, ST | Get a secret by name |
getById(params) |
GET | /api/v4/secrets/id/{secretId} |
JWT, IAT, ST | Get a secret by ID |
create(params) |
POST | /api/v4/secrets/{secretName} |
JWT, IAT, ST | Create a secret |
update(params) |
PATCH | /api/v4/secrets/{secretName} |
JWT, IAT, ST | Update a secret |
delete(params) |
DELETE | /api/v4/secrets/{secretName} |
JWT, IAT, ST | Delete a secret |
batchCreate(params) |
POST | /api/v4/secrets/batch |
JWT, IAT, ST | Batch create secrets |
batchUpdate(params) |
PATCH | /api/v4/secrets/batch |
JWT, IAT, ST | Batch update secrets |
batchDelete(params) |
DELETE | /api/v4/secrets/batch |
JWT, IAT, ST | Batch delete secrets |
move(params) |
POST | /api/v4/secrets/move |
JWT, IAT, ST | Move secrets between paths |
getAccessList(params) |
GET | /api/v1/secrets/{secretName}/access-list |
JWT, IAT, ST | Get access list for a secret |
Manage folders within project environments for organizing secrets.
Accessor: client.secretFolders
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
create(params) |
POST | /api/v2/folders |
JWT, IAT | Create a folder |
update(params) |
PATCH | /api/v2/folders/{folderId} |
JWT, IAT | Update a folder |
updateBatch(params) |
PATCH | /api/v2/folders/batch |
JWT, IAT | Batch update folders |
delete(params) |
DELETE | /api/v2/folders/{folderIdOrName} |
JWT, IAT | Delete a folder |
list(params) |
GET | /api/v2/folders |
JWT, IAT | List folders |
getById(params) |
GET | /api/v2/folders/{id} |
JWT, IAT | Get a folder by ID |
Example: Create and list folders
// Create a folder
await client.secretFolders.create({
projectId: "project-id",
environment: "production",
path: "/",
name: "database-secrets",
});
// List folders
const folders = await client.secretFolders.list({
projectId: "project-id",
environment: "production",
path: "/",
});Import secrets from one environment/path into another.
Accessor: client.secretImports
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
create(params) |
POST | /api/v2/secret-imports |
JWT, IAT | Create a secret import |
update(params) |
PATCH | /api/v2/secret-imports/{secretImportId} |
JWT, IAT | Update a secret import |
delete(params) |
DELETE | /api/v2/secret-imports/{secretImportId} |
JWT, IAT | Delete a secret import |
resyncReplication(params) |
POST | /api/v2/secret-imports/{secretImportId}/replication-resync |
JWT, IAT | Resync replicated import |
list(params) |
GET | /api/v2/secret-imports |
JWT, IAT | List secret imports |
get(params) |
GET | /api/v2/secret-imports/{secretImportId} |
JWT, IAT | Get a secret import |
getRawSecrets(params) |
GET | /api/v2/secret-imports/secrets |
JWT, IAT | Get raw imported secrets |
Create and manage shared secrets with expiration and access controls.
Accessor: client.secretSharing
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
create(params) |
POST | /api/v1/secret-sharing |
JWT, IAT | Create a shared secret |
delete(params) |
DELETE | /api/v1/secret-sharing/{sharedSecretId} |
JWT, IAT | Delete a shared secret |
list() |
GET | /api/v1/secret-sharing |
JWT, IAT | List shared secrets |
get(params) |
GET | /api/v1/secret-sharing/{sharedSecretId} |
Mixed | Get a shared secret (public access may be allowed) |
Synchronize secrets to external destinations (AWS Parameter Store, Vercel, GitHub, etc.).
Accessor: client.secretSyncs
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
create(params) |
POST | /api/v1/secret-syncs/{destination} |
JWT, IAT | Create a sync |
update(params) |
PATCH | /api/v1/secret-syncs/{destination}/{syncId} |
JWT, IAT | Update a sync |
delete(params) |
DELETE | /api/v1/secret-syncs/{destination}/{syncId} |
JWT, IAT | Delete a sync |
get(params) |
GET | /api/v1/secret-syncs/{destination}/{syncId} |
JWT, IAT | Get sync details |
list(params) |
GET | /api/v1/secret-syncs/{destination} |
JWT, IAT | List syncs for a destination |
trigger(params) |
POST | /api/v1/secret-syncs/{destination}/{syncId}/sync |
JWT, IAT | Trigger a sync manually |
Manage project webhooks for secret change notifications.
Accessor: client.webhooks
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
create(params) |
POST | /api/v1/webhooks |
JWT, IAT | Create a webhook |
update(params) |
PATCH | /api/v1/webhooks/{webhookId} |
JWT, IAT | Update a webhook |
delete(params) |
DELETE | /api/v1/webhooks/{webhookId} |
JWT, IAT | Delete a webhook |
list(params) |
GET | /api/v1/webhooks |
JWT, IAT | List webhooks |
test(params) |
POST | /api/v1/webhooks/{webhookId}/test |
JWT, IAT | Send a test webhook |
List PKI certificate authorities.
Accessor: client.pki.ca
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
list(params) |
GET | /api/v2/pki/ca |
JWT, IAT | List certificate authorities |
Manage certificate templates for issuing and signing certificates.
Accessor: client.pki.templates
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
create(params) |
POST | /api/v2/pki/certificate-templates |
JWT, IAT | Create a certificate template |
update(params) |
PATCH | /api/v2/pki/certificate-templates/{templateName} |
JWT, IAT | Update a template |
delete(params) |
DELETE | /api/v2/pki/certificate-templates/{templateName} |
JWT, IAT | Delete a template |
get(params) |
GET | /api/v2/pki/certificate-templates/{templateName} |
JWT, IAT | Get a template |
list(params) |
GET | /api/v2/pki/certificate-templates |
JWT, IAT | List templates |
issueCertificate(params) |
POST | /api/v2/pki/certificate-templates/{templateName}/issue-certificate |
JWT, IAT | Issue a certificate |
signCertificate(params) |
POST | /api/v2/pki/certificate-templates/{templateName}/sign-certificate |
JWT, IAT | Sign a CSR |
Manage PKI certificate expiration alerts.
Accessor: client.pki.alerts
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
create(params) |
POST | /api/v2/pki/alerts |
JWT, IAT | Create an alert |
list(params) |
GET | /api/v2/pki/alerts |
JWT, IAT | List alerts |
get(params) |
GET | /api/v2/pki/alerts/{alertId} |
JWT, IAT | Get an alert |
update(params) |
PATCH | /api/v2/pki/alerts/{alertId} |
JWT, IAT | Update an alert |
delete(params) |
DELETE | /api/v2/pki/alerts/{alertId} |
JWT, IAT | Delete an alert |
listCertificates(params) |
GET | /api/v2/pki/alerts/{alertId}/certificates |
JWT, IAT | List certificates for an alert |
previewCertificates(params) |
POST | /api/v2/pki/alerts/preview/certificates |
JWT, IAT | Preview certificates matching alert criteria |
Manage PKI certificates: create, retrieve, renew, revoke, and configure.
Accessor: client.pki.certificates
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
create(params) |
POST | /api/v1/pki/certificates |
JWT, IAT | Create a certificate |
get(params) |
GET | /api/v1/pki/certificates/{certificateId} |
JWT, IAT | Get certificate details |
getBody(params) |
GET | /api/v1/pki/certificates/{certificateId}/certificate |
JWT, IAT | Get certificate body (PEM) |
getBundle(params) |
GET | /api/v1/pki/certificates/{certificateId}/bundle |
JWT, IAT | Get certificate bundle |
getPrivateKey(params) |
GET | /api/v1/pki/certificates/{certificateId}/private-key |
JWT, IAT | Get certificate private key |
renew(params) |
POST | /api/v1/pki/certificates/{certificateId}/renew |
JWT, IAT | Renew a certificate |
revoke(params) |
POST | /api/v1/pki/certificates/{certificateId}/revoke |
JWT, IAT | Revoke a certificate |
delete(params) |
DELETE | /api/v1/pki/certificates/{certificateId} |
JWT, IAT | Delete a certificate |
updateConfig(params) |
PATCH | /api/v1/pki/certificates/{certificateId}/config |
JWT, IAT | Update certificate config |
Key Management Service for encrypting and decrypting data with managed keys.
Accessor: client.kms
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
createKey(params) |
POST | /api/v1/kms/keys |
JWT, IAT | Create an encryption key |
updateKey(params) |
PATCH | /api/v1/kms/keys/{keyId} |
JWT, IAT | Update key metadata |
deleteKey(params) |
DELETE | /api/v1/kms/keys/{keyId} |
JWT, IAT | Delete a key |
getKey(params) |
GET | /api/v1/kms/keys/{keyId} |
JWT, IAT | Get key details |
listKeys(params) |
GET | /api/v1/kms/keys |
JWT, IAT | List keys |
encrypt(params) |
POST | /api/v1/kms/keys/{keyId}/encrypt |
JWT, IAT | Encrypt data |
decrypt(params) |
POST | /api/v1/kms/keys/{keyId}/decrypt |
JWT, IAT | Decrypt data |
Example: Encrypt and decrypt data
// Create a key
const key = await client.kms.createKey({
projectId: "project-id",
name: "my-encryption-key",
});
// Encrypt
const encrypted = await client.kms.encrypt({
keyId: key.id,
plaintext: "sensitive-data",
});
// Decrypt
const decrypted = await client.kms.decrypt({
keyId: key.id,
ciphertext: encrypted.ciphertext,
});Manage authentication credentials for third-party integrations.
Accessor: client.integrationAuth
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
create(params) |
POST | /api/v1/integration-auth/access-token |
JWT, IAT | Create integration auth with access token |
get(params) |
GET | /api/v1/integration-auth/{integrationAuthId} |
JWT, IAT | Get integration auth details |
delete(params) |
DELETE | /api/v1/integration-auth/{integrationAuthId} |
JWT, IAT | Delete integration auth |
list(params) |
GET | /api/v1/integration-auth |
JWT, IAT | List integration auths |
Manage connections to external applications.
Accessor: client.appConnections
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
create(params) |
POST | /api/v1/app-connections/{app} |
JWT, IAT | Create a connection |
update(params) |
PATCH | /api/v1/app-connections/{app}/{connectionId} |
JWT, IAT | Update a connection |
delete(params) |
DELETE | /api/v1/app-connections/{app}/{connectionId} |
JWT, IAT | Delete a connection |
get(params) |
GET | /api/v1/app-connections/{app}/{connectionId} |
JWT, IAT | Get connection details |
list(params) |
GET | /api/v1/app-connections/{app} |
JWT, IAT | List connections for an app |
Super admin endpoints for managing the Infisical instance: configuration, user management, organization management, identity management, integrations, encryption, cache, and usage reports.
Accessor: client.admin
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
bootstrap(params) |
POST | /api/v1/admin/bootstrap |
None | Bootstrap a new Infisical instance |
signup(params) |
POST | /api/v1/admin/signup |
None | Admin sign up |
getConfig() |
GET | /api/v1/admin/config |
None | Get server configuration |
updateConfig(params) |
PATCH | /api/v1/admin/config |
JWT, IAT | Update server configuration |
listUsers(params?) |
GET | /api/v1/admin/user-management/users |
JWT, IAT | List all users |
deleteUser(params) |
DELETE | /api/v1/admin/user-management/users/{userId} |
JWT, IAT | Delete a user |
deleteUsers(params) |
DELETE | /api/v1/admin/user-management/users |
JWT, IAT | Bulk delete users |
grantAdminAccess(params) |
PATCH | /api/v1/admin/user-management/users/{userId}/admin-access |
JWT, IAT | Grant super admin access to a user |
revokeAdminAccess(params) |
DELETE | /api/v1/admin/user-management/users/{userId}/admin-access |
JWT, IAT | Revoke super admin access from a user |
listOrganizations(params?) |
GET | /api/v1/admin/organization-management/organizations |
JWT, IAT | List all organizations |
createOrganization(params) |
POST | /api/v1/admin/organization-management/organizations |
JWT, IAT | Create an organization |
deleteOrganization(params) |
DELETE | /api/v1/admin/organization-management/organizations/{organizationId} |
JWT, IAT | Delete an organization |
deleteOrgMembership(params) |
DELETE | /api/v1/admin/organization-management/organizations/{organizationId}/memberships/{membershipId} |
JWT, IAT | Remove a member from an organization |
resendOrgInvite(params) |
POST | /api/v1/admin/organization-management/organizations/{organizationId}/memberships/{membershipId}/resend-invite |
JWT, IAT | Resend an organization invite |
joinOrganization(params) |
POST | /api/v1/admin/organization-management/organizations/{organizationId}/access |
JWT | Join an organization as admin |
listIdentities(params?) |
GET | /api/v1/admin/identity-management/identities |
JWT, IAT | List all identities |
revokeIdentitySuperAdmin(params) |
DELETE | /api/v1/admin/identity-management/identities/{identityId}/super-admin-access |
JWT, IAT | Revoke super admin access from an identity |
getIntegrations() |
GET | /api/v1/admin/integrations |
JWT, IAT | Get admin integrations (Slack, Teams, GitHub) |
getEncryptionStrategies() |
GET | /api/v1/admin/encryption-strategies |
JWT, IAT | List encryption strategies |
updateEncryptionStrategy(params) |
PATCH | /api/v1/admin/encryption-strategies |
JWT, IAT | Update encryption strategy |
getEnvOverrides() |
GET | /api/v1/admin/env-overrides |
JWT, IAT | Get environment variable overrides |
invalidateCache(params) |
POST | /api/v1/admin/invalidate-cache |
JWT, IAT | Invalidate server cache |
getCacheStatus() |
GET | /api/v1/admin/invalidating-cache-status |
JWT, IAT | Get cache invalidation status |
generateUsageReport() |
POST | /api/v1/admin/usage-report/generate |
JWT, IAT | Generate a usage report (CSV) |
Organization admin endpoints for managing projects across the organization.
Accessor: client.orgAdmin
| Method | HTTP | Path | Auth | Description |
|---|---|---|---|---|
listProjects(params?) |
GET | /api/v1/org-admin/projects |
JWT, IAT | List all projects in the organization |
grantProjectAccess(params) |
POST | /api/v1/org-admin/projects/{projectId}/grant-admin-access |
JWT | Grant admin access to a project |
MIT