Skip to main content

Outbound Auth

Outbound authentication provides the credentials Soln uses when calling an external API. Open OpenLink from the Integration menu, select an OpenLink entry, and configure the Outbound Auth tab in the details panel.

Outbound auth belongs to one OpenLink entry, and the saved profile is applied to every outbound call under that entry.

  1. Open OpenLink
  2. Select the target OpenLink entry
  3. Open the Outbound Auth tab
  4. Click Configure when no profile exists, or Edit when a profile already exists
  5. Choose the auth type
  6. Fill in the required fields
  7. Click Save Config

When an existing secret is already configured, secret fields can be left blank if you do not want to replace the secret. Enter a new secret value only when the credential should be updated.

When Outbound Auth Applies​

Outbound auth is read at execution time, so saving the profile applies to the next execution and does not require republishing the flow.

ExecutionBehavior
Outbound flowThe Studio script carries the credential, and every studio.http.request call the script makes is signed with it
Inbound flow with the Poll triggerThe Studio source script carries the credential when it reads from the external system
Other executions, such as webhook inbound, query, and message push flowsNo outbound credential is added, because these executions do not run the Studio HTTP runtime
Verify connection on the auth tabVerifies the saved profile with the same rules

Which profile is used:

  1. The auth profile bound to the flow binding, when a binding specifies one
  2. Otherwise the default profile of that OpenLink entry, which must be active

The credential is applied to each outbound request after the script's own headers, so it replaces a header with the same name. When no active default profile exists, outbound calls run without the credential; when a flow binds an inactive profile or a profile of another OpenLink entry, the execution fails.

Auth Types​

Auth TypeRequired FieldsNotes
NoneNoneUse when the external system does not require OpenLink-level authentication
Basic AuthUsername, PasswordSends a username and password credential
Bearer TokenHeader Name, TokenThe header usually uses Authorization; the prefix is commonly Bearer
Dynamic JWT BearerAlgorithm, Secret, Issuer, Audience, Subject, Token lifetime, Header nameGenerates a new signed JWT immediately before each outbound HTTP request; the algorithm can be HS256, HS384, or HS512
API KeyLocation, API Key Name, API Key ValueThe key can be sent in a header or query parameter
HMAC SignatureApp ID, App Secret, Signature Header, AlgorithmSigns requests with HMAC-SHA256, HMAC-SHA384, or HMAC-SHA512; timestamp, nonce, and sign content rule fields are optional
OAuth2 Client CredentialsClient ID, Client Secret, Token URLRequests an access token with grant_type=client_credentials and HTTP Basic client authentication; Scope and Audience are optional token request parameters
Custom Header / QueryCredential JSON, Secret JSONMaps raw headers or query parameters, referencing secrets from the secret JSON

Each OpenLink entry keeps one default outbound auth profile. Saving the profile applies the credential to every outbound call under that entry, and choosing None keeps the profile without adding authentication headers.

Request Header Examples​

The examples below show only the headers that OpenLink outbound authentication adds. The request body is an empty JSON object in every example.

None​

POST /api/orders HTTP/1.1
Host: api.partner.example
Content-Type: application/json

{}

Basic Auth​

POST /api/orders HTTP/1.1
Host: api.partner.example
Authorization: Basic ZGVtby11c2VyOmRlbW8tcGFzc3dvcmQ=
Content-Type: application/json

{}

The value is Basic followed by the Base64 of username:password.

Bearer Token​

POST /api/orders HTTP/1.1
Host: api.partner.example
Authorization: Bearer <token>
Content-Type: application/json

{}

The header name and the prefix come from the profile, and default to Authorization and Bearer.

Dynamic JWT Bearer​

POST /api/orders HTTP/1.1
Host: api.partner.example
Authorization: Bearer <JWT signed for this request>
Content-Type: application/json

{}

Runtime signs the token immediately before the request, so iss, aud, sub, iat, exp, and jti are always present.

API Key​

POST /api/orders HTTP/1.1
Host: api.partner.example
X-API-Key: <api-key>
Content-Type: application/json

{}
POST /api/orders?api_key=<api-key> HTTP/1.1
Host: api.partner.example
Content-Type: application/json

{}

The header or parameter name comes from the profile, and defaults to X-API-Key for the header location and api_key for the query location. A configured prefix is inserted before the key value. When the key is sent as a query parameter, Runtime masks its value as [REDACTED] in the execution output.

HMAC Signature​

POST /api/orders HTTP/1.1
Host: api.partner.example
X-App-Id: partner-app
X-OpenLink-Timestamp: 2026-09-18T06:30:00.000Z
X-OpenLink-Signature: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
X-OpenLink-Nonce: 3f1c2f0e-6a1d-4a1f-9a53-1f2b3c4d5e6f
Content-Type: application/json

{}

The signature is the lowercase hex digest of the signing content built from the configured rule, which defaults to method + path + timestamp + body. A nonce header is added only when one is configured, and new profiles pre-fill X-OpenLink-Nonce in the console. The nonce is part of the signature only when the rule includes nonce.

OAuth2 Client Credentials​

POST /api/orders HTTP/1.1
Host: api.partner.example
Authorization: Bearer <access token from the token endpoint>
Content-Type: application/json

{}

Custom Header / Query​

POST /api/orders?tenant=demo HTTP/1.1
Host: api.partner.example
X-Client-Id: demo-client
X-Client-Secret: <secret>
Content-Type: application/json

{}

Only the entries defined in the credential JSON and the secret JSON are added.

Bearer Token Fields​

FieldDescription
Header NameRequest header that carries the token
PrefixOptional token prefix, such as Bearer
Access TokenSecret token value

Dynamic JWT Bearer Fields​

Dynamic JWT Bearer does not call a token endpoint. Runtime signs a new token immediately before each Studio outbound HTTP request and injects it into the configured header, so the Studio script does not need to build the JWT, and Runtime replaces the header if the script sets the same one.

FieldRequiredDescription
AlgorithmYesHS256, HS384, or HS512
SecretYes when createdShared signing secret. The minimum length depends on the algorithm: 32 bytes for HS256, 48 for HS384, 64 for HS512. Leave it blank while editing to retain the current secret
IssuerYesValue written to the iss claim. It must match the issuer accepted by the external API
AudienceYesValue written to the aud claim. It must match the target API audience
SubjectYesIntegration operator identity written to the sub claim
NameNoOptional name claim
ScopeNoOptional scope claim
Token LifetimeYesInteger from 30 to 3,600 seconds
Header NameYesHeader receiving the signed token. The default is Authorization
PrefixNoPrefix inserted before the token. The default is Bearer

Each generated token contains iss, aud, sub, iat, exp, and a unique jti. name and scope are included when configured. Tokens are not cached. The secret stays on the server: the interface returns only whether a secret is configured and the names of the secret keys.

API Key Fields​

FieldDescription
Attach ToChoose whether the key is sent in a header or query parameter
API Key NameHeader name or query parameter name
API Key ValueSecret key value
PrefixOptional prefix added before the key value

HMAC Signature Fields​

FieldDescription
App IDPublic application identifier
App SecretSecret used for signing
Signature HeaderHeader that carries the generated signature
AlgorithmHMAC-SHA256, HMAC-SHA384, or HMAC-SHA512
Timestamp HeaderHeader that carries the request timestamp; the default is X-OpenLink-Timestamp
Nonce HeaderOptional header used to prevent replay
Sign Content RuleDescription of the content that should be signed, such as method, path, timestamp, and body

OAuth2 Client Credentials Fields​

FieldDescription
Client IDClient identifier registered at the external system
Client SecretSecret of that client. Leave it blank while editing to retain the current secret
Token URLEndpoint that issues the access token
ScopeOptional scope sent to the token endpoint
AudienceOptional audience sent to the token endpoint

Custom Header / Query Fields​

FieldDescription
Credential JSONDefines the outbound mapping with headers, query, secretHeaders, or secretQuery; at least one of them is required
Secret JSONProvides the secret values referenced by the credential JSON. Every referenced secret key must exist in this object

Verify An Outbound Connection​

Use Verify connection on the outbound auth tab to check that the saved credentials actually work before relying on them.

  1. Open the Outbound Auth tab of the OpenLink entry
  2. Choose Verify connection
  3. Enter the verification request: URL, method, optional body, and content type
  4. Choose Start verification and read the result
Verification fieldDescription
Verification URLValid HTTPS address without embedded credentials
Request methodGET, POST, PUT, PATCH, DELETE, or HEAD; the default is GET
Request bodyOptional; GET and HEAD requests cannot carry a body
Content typeContent type sent with the probe request

The summary card shows the verification status and the last verified time:

StatusMeaning
UnverifiedThe profile has not been verified yet
ValidThe probe succeeded with the configured credentials
InvalidThe external system rejected the credentials
ExpiredThe auth profile has expired and must be renewed
ErrorThe probe failed for another reason, such as an unreachable endpoint, a rate limit, or another error status

The result also reports the HTTP status code and the duration in milliseconds.