GuidesRecipesAPI ReferenceChangelog
Guides

API Keys

Generate and manage API key pairs for secure access to the Cybrid platform.

Set up your Organization and Bank

Before interacting with the Cybrid API, create an Organization and Bank through the dashboard.

After logging in, you are guided through three steps:

  1. Name your Organization — this represents your business or project
    within the Cybrid platform.
  2. Create a Bank — a Bank is a digital representation of a financial
    institution in the Cybrid ecosystem. Enter a descriptive name and
    configure your Bank settings.
  3. Generate an API key pair — click Generate to create a Client ID
    and Client Secret for secure API communication. You can optionally add
    an IP allowlist on this step to
    restrict the credentials to specific source IPs.

Store your Client Secret

Once generated, the Client ID and Client Secret display on screen.
Hover over the Client Secret to reveal it, and use the copy buttons on
the right to copy each value.

Cybrid dashboard showing a generated API key pair with Client ID and Client Secret fields
⚠️

Save your Client Secret immediately

The secret displays only once. If you navigate away without saving
it, you must generate a new key pair.

Generate new keys

To generate new keys at any time:

  1. Navigate to the Developers tab in the Cybrid dashboard.
  2. Click Generate New Key in the top-right corner.
  3. Select either Organization keys or Bank keys.
  4. Optionally add an IP allowlist
    to restrict the new credentials to specific source IPs.

This lets you rotate credentials or manage keys across multiple projects.

Bank-specific API credentials

When managing multiple banks under a single organization, each bank requires its own API credentials
(client_id and client_secret). The access token generated from these credentials is scoped to a
specific bank — all API actions (such as creating customers) run under that bank. The bank_guid
parameter in API requests is ignored; the access token determines bank context.

To generate credentials for a specific bank:

  1. In the Cybrid portal, use the top-left selector to choose the bank you want to generate credentials for.
  2. Navigate to the Developers tab.
  3. Generate new credentials for that bank.

This ensures API requests are scoped to the intended bank.

Restrict access with an IP allowlist

Each Bank or Organization Application can carry an optional IP allowlist
a list of public IPv4 addresses or CIDR ranges that are permitted to use the
credentials. Requests from any other source IP are rejected. An empty allowlist
means unrestricted access (the default).

Limits and accepted values

  • Up to 3 entries per Application.
  • IPv4 only. IPv6 addresses are rejected at validation.
  • Format: a single address (e.g. 203.0.113.5) or a CIDR range (e.g.
    198.51.100.0/24). The example values shown are RFC 5737
    documentation-range placeholders and will be rejected at validation —
    substitute the real public addresses from your environment.
  • Must be a public address. Private (RFC 1918), loopback, link-local,
    multicast, reserved, CGNAT, documentation (RFC 5737), and benchmarking
    ranges are rejected at validation.

Where to configure it

  • Onboarding wizard — the Generate an API key pair step on first
    login.
  • Generate Bank Key form — on the Developers tab when creating a new
    Application.
  • Edit Application form — on the Developers tab to update an existing
    Application.

The Developers tab also lists each Bank Application's current entries in
an IP Allowlist column.

When changes take effect

The allowlist is embedded in the access token at issuance and enforced on
every API call. Edits apply on the next token issuance — access tokens
already in flight continue to enforce the list they were issued with. After
updating an allowlist, request a fresh token before retrying from a new IP.

⚠️

Validate in a non-production Application first

Pinning to the wrong egress IP can lock your integration out of the
Cybrid API. Confirm the source IP from your production environment before
applying the allowlist there.

Clear the allowlist

To remove all restrictions, delete every entry in the Edit Application
form. Via the API, send an empty array on PATCH /api/bank_applications/{client_id}
or PATCH /api/organization_applications/{client_id}:

PATCH /api/bank_applications/{client_id}
Content-Type: application/json
Authorization: Bearer YOUR_TOKEN

{"ip_allowlist": []}
{"client_id": "client_id", "name": "Production Bank Key", "ip_allowlist": []}

Omit the ip_allowlist field on PATCH to leave the existing list unchanged.
See PATCH /api/bank_applications/{client_id}
for the full schema.

Denied request behavior

When a request arrives from a source IP that is not in the Application's
allowlist, the Cybrid API returns:

{"error": "forbidden", "message_code": "ip_not_allowed", "message": "IP address not in allowlist"}

The HTTP status is 403 Forbidden. The message_code is ip_not_allowed.
Map this in your error handling to distinguish it from scope or rate-limit
errors.

Scope

IP allowlists apply to Bank and Organization Applications. Customer
tokens generated via POST /api/customer_tokens
are not gated by the Application allowlist.

Handle "Signature has expired" errors

If you receive a Signature has expired error with status 401 (authentication_failed), your access token has expired.
To resolve this, generate a new token using your existing API credentials.

You do not need to recycle or rotate your API key or Client Secret for this error. Rotating secrets is only
necessary if you suspect they have been compromised or as part of periodic security hygiene — not for normal
token expiration.