Connect an integration with an API key
Connect an integration whose auth.kind is api_key. Anlyon first checks the key with the provider, with one read-only request to the integration’s own host. A key the provider accepts is stored as a secret of kind static with integrationId set, bound to the integration’s hosts and to request headers; those come from the integration and cannot be set here. A key the provider refuses is not stored (CONNECTION_KEY_REJECTED), and neither is one that could not be checked (CONNECTION_KEY_CHECK_FAILED). The key is never returned by any endpoint. The secret name must not exist yet in this environment. Counts toward the same limit of 10 per minute per workspace as connect sessions.
/api/v2/connections/keysAuthorizationBearer token (Anlyon API key) · headerrequiredWorkspace API key sent as Authorization: Bearer <key>.
better-auth.session_tokenAPI key · cookierequiredBrowser session used by dashboard-only operations.
X-Request-IdstringOptional caller correlation ID. Unsafe or oversized values are replaced.
application/jsonintegrationIdstringrequiredsecretNamestringrequiredThe secret the key is stored as; actions reference it as {{secret:NAME}}.
apiKeystringrequiredThe key alone
descriptionstringSecret metadata returned; the value is never exposed.
successbooleanrequiredtruedataSecretrequiredSecret metadata. The encrypted value is never exposed by any API.
Show propertiesHide properties
idstringrequirednamestringrequireddescriptionstring | nullrequiredallowedHostsstring[] | nullrequiredHosts this secret may be sent to. Null means any public host.
allowedPlacementsstring[] | nullrequiredWhere in the request this secret may appear. Null means anywhere.
kindstringrequiredstatic holds a value you stored. connection is a connected account: its value is an access token fetched at dispatch, its hosts come from the integration, and it may only appear in a header. PUT cannot change a secret's kind.
staticconnectionconnectionobject | nullrequiredFor a signed-in account, which integration it is and whether it still works. status mirrors health.status, which is the one record of it for both kinds of connected account. Null for a static secret, including one connected with an API key.
Show propertiesHide properties
integrationIdstringrequiredstatusstringrequiredThe same value as health.status. Reconnect the account to use it again.
activeneeds_reauthhealthobject | nullrequiredWhether the connected account still works, whichever way it was connected. active, or needs_reauth with a reason once the provider refused the credential or the connector service could not refresh it. A dispatch that uses a needs_reauth account fails before anything is sent. Reconnect it with POST /api/v2/connections/{secretName}/reconnect. Null for a secret you stored directly, which Anlyon cannot check.
Show propertiesHide properties
statusstringrequiredactiveneeds_reauthcheckedAtstring<date-time> | nullrequiredWhen Anlyon last asked the provider whether the credential works. Null when it never has.
reasonstring | nullrequiredSet while status is needs_reauth. key_rejected: the provider refused the stored key. access_revoked: the provider no longer honours the signed-in account's grant. refresh_failed: the connector service could not refresh its token.
key_rejectedaccess_revokedrefresh_failednullintegrationIdstring | nullrequiredThe integration this secret was connected for, by signing in or with an API key. Null for a secret you stored directly. A secret connected with an API key is static with this set.
lastUsedAtstring<date-time> | nullrequiredcreatedAtstring<date-time>requiredupdatedAtstring<date-time>requiredBad Request - Invalid input data
successbooleanrequiredrequestIdstringrequiredCorrelation ID matching the X-Request-Id response header.
errorobjectrequiredShow propertiesHide properties
codestringmessagestringdetailsobjectUnauthorized - Invalid or missing API key
successbooleanrequiredrequestIdstringrequiredCorrelation ID matching the X-Request-Id response header.
errorobjectrequiredShow propertiesHide properties
codestringmessagestringdetailsobjectPayment Required - Usage quota exceeded
successbooleanrequiredrequestIdstringrequiredCorrelation ID matching the X-Request-Id response header.
errorobjectrequiredShow propertiesHide properties
codestringmessagestringdetailsobjectAuthenticated credential lacks the required scope or workspace access.
successbooleanrequiredrequestIdstringrequiredCorrelation ID matching the X-Request-Id response header.
errorobjectrequiredShow propertiesHide properties
codestringmessagestringdetailsobjectNot Found - Resource does not exist
successbooleanrequiredrequestIdstringrequiredCorrelation ID matching the X-Request-Id response header.
errorobjectrequiredShow propertiesHide properties
codestringmessagestringdetailsobjectThe request conflicts with current resource state or a concurrent decision.
successbooleanrequiredrequestIdstringrequiredCorrelation ID matching the X-Request-Id response header.
errorobjectrequiredShow propertiesHide properties
codestringmessagestringdetailsobjectThe provider did not accept the key (CONNECTION_KEY_REJECTED). Nothing was stored.
successbooleanrequiredrequestIdstringrequiredCorrelation ID matching the X-Request-Id response header.
errorobjectrequiredShow propertiesHide properties
codestringmessagestringdetailsobjectToo Many Requests - Rate limit exceeded
successbooleanrequiredrequestIdstringrequiredCorrelation ID matching the X-Request-Id response header.
errorobjectrequiredShow propertiesHide properties
codestringmessagestringdetailsobjectThe key could not be checked with the provider (CONNECTION_KEY_CHECK_FAILED). Nothing was stored.
successbooleanrequiredrequestIdstringrequiredCorrelation ID matching the X-Request-Id response header.
errorobjectrequiredShow propertiesHide properties
codestringmessagestringdetailsobject
