Create OAuth credentials
Creates a reusable OAuth client credential set. Attach it to a webhook by passing the returned id as that webhook’s webhookOauthId. Several webhooks may share one credential set, so rotating its client secret covers all of them at once. The client secret is write-only and is never returned.
Endpoint Permissions: Owner, Admin, Non-Signing Admin.
Headers
A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours.
Body
A new reusable OAuth 2.0 client credential set. Attach it to a webhook by passing the returned id as that webhook's webhookOauthId. Several webhooks may share one credential set, so rotating its client secret covers all of them at once.
A label for this credential set, shown when listing them.
1 - 128"Production treasury gateway"
OAuth client ID used to authenticate with the token endpoint.
1 - 255"my-client-id"
OAuth client secret. Write-only — never returned. Limited to 480 bytes UTF-8 encoded. With client_secret_jwt it signs the assertion rather than being sent.
1 - 480"my-client-secret"
Token endpoint URL. HTTPS on port 443 only, and the host must resolve publicly — localhost and private, link-local or loopback addresses are rejected.
2048^https://"https://auth.example.com/oauth/token"
How the client credentials reach the token endpoint. client_secret_basic uses an HTTP Basic header, client_secret_post uses form fields in the body, and client_secret_jwt sends a JWT assertion signed with the secret, so the secret itself is never transmitted. Defaults to client_secret_basic.
"client_secret_basic"
Extra claims for the JWT assertion. Used only when authMethod is client_secret_jwt. The usual one to set is aud, which defaults to the token endpoint URL; some authorization servers expect their own identifier instead.
A value may be any JSON type except null — null is reserved for deleting a claim on update. iss, sub, jti, iat and exp are set by Fireblocks and cannot be overridden. Names are case-sensitive. The whole object must be under 16 KB.
Values are write-only; responses return only the claim names. On update this merges claim by claim rather than replacing — see WebhookOAuthCustomJwtClaimsUpdate.
Extra parameters for the token request body — scope most commonly, sometimes audience or resource. Applies to every authentication method.
Values must be strings, because the token request body is form-encoded rather than JSON. An empty string is allowed. grant_type, client_id, client_secret, client_assertion and client_assertion_type are set by Fireblocks and cannot be overridden. Names are case-sensitive. The whole object must be under 16 KB.
Values are write-only; responses return only the parameter names. On update this merges key by key rather than replacing — see WebhookOAuthCustomBodyParamsUpdate.
Extra HTTP headers for the token request to your authorization server — not for the webhook delivery, which has its own separate customHeaders. A gateway API key is the usual case. Applies to every authentication method.
Values must be strings; an empty string is allowed. Names are matched case-insensitively, so two names differing only in case are a duplicate. Names are stored and returned lowercased, so X-Api-Key comes back as x-api-key. Content-Type, Authorization, Content-Length and Host are set by Fireblocks and cannot be overridden. The whole object must be under 16 KB.
Values are write-only; responses return only the header names. On update this merges name by name rather than replacing — see WebhookOAuthCustomHeadersUpdate.
PEM-encoded client certificate for mTLS when fetching tokens. Must be a valid X.509 certificate inside its validity window.
"-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----"
Response
created the OAuth credentials successfully
A stored OAuth 2.0 client credential set, referenced by webhooks through their webhookOauthId. When a webhook references one, the dispatcher fetches a bearer token from url before each delivery and attaches it as Authorization: Bearer {token}. Secret material is never returned: clientSecret is absent from this schema entirely, and the customJwtClaims, customBodyParams and customHeaders fields are reduced to their names, without the configured values.
The id of the OAuth credentials. Pass this as a webhook's webhookOauthId to attach them.
"123e4567-e89b-12d3-a456-426614174000"
The label given to this credential set.
"Production treasury gateway"
OAuth client ID used to authenticate with the token endpoint.
"my-client-id"
Token endpoint URL.
"https://auth.example.com/oauth/token"
How the client credentials are presented to the token endpoint: client_secret_basic, client_secret_post or client_secret_jwt. Credentials created without this field report client_secret_basic, which is what they use.
"client_secret_basic"
The date and time the OAuth credentials were created, in milliseconds.
1625097600000
The date and time the OAuth credentials were last updated, in milliseconds.
1625097600000
Names of the additional claims placed in the JWT assertion. Claim values are write-only and are never returned. Absent when no custom claims are configured.
Names of the additional parameters added to the token request body. Parameter values are write-only and are never returned. Absent when no custom parameters are configured.
Names of the additional HTTP headers added to the token request sent to the authorization server — not to the webhook delivery, which has its own separate customHeaders. Header values are write-only and are never returned. Absent when no custom headers are configured.
PEM-encoded client certificate used for mTLS when fetching OAuth tokens.
"-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----"