---
title: "List triggers available on a connection"
method: GET
path: "/api/v1/connections/{connection_id}/triggers"
tags: ["Triggers"]
---

# List triggers available on a connection

`GET /api/v1/connections/{connection_id}/triggers`

## Request

- Base URL: `https://$SCALEKIT_ENVIRONMENT_URL`
- URL: `https://$SCALEKIT_ENVIRONMENT_URL/api/v1/connections/{connection_id}/triggers`
- Auth: OAuth 2
  - Client credentials
  - Token URL: `https://$SCALEKIT_ENVIRONMENT_URL/oauth/token`
- TypeScript: <https://skmtc.dev/scalekit/apis/scalekit-api-reference/docs/api/v1/connections/:connection_id/triggers/get.ts> (a function with typed inputs; its response is checked against the schema)

Lists every trigger the connection's provider publishes, and marks each one as available or unavailable on this connection. Use this endpoint to build a trigger picker, or to find out what a trigger needs before you subscribe to it. Pass the connection ID in the path. A trigger that cannot run on this connection is still returned, with available set to false and a reason, a remedy and, where one applies, a refusal_code. For example, a trigger that needs your own provider app is unavailable while the connection uses Scalekit's shared app. Each trigger describes how it detects events (webhook or poll), its required scopes, its configuration fields, its polling intervals, and whether it needs a signing secret. The response also states whether the connection uses Scalekit's shared provider app. Next, call ListEligibleAccounts to see which connected accounts can receive a trigger.

## Path parameters

- `connection_id` string, required

## Response `200`

The provider's triggers, each with its availability on this connection, and whether the connection uses Scalekit's shared provider app

- TriggersListAvailableTriggersResponse
  - `connection_uses_shared_app` boolean: Whether the connection is configured to use Scalekit's shared provider app rather than the customer's own. Read from the connection's saved configuration. When true, any trigger with platform_credentials UNSUPPORTED is unavailable until the customer adds their own provider app to the connection.
  - `triggers` TriggersAvailableTrigger[]: Every trigger the connection's provider publishes, including unavailable ones. Check available on each before offering it.
    - `available` boolean: Whether this trigger can run on this connection. False does not mean the trigger is unsupported by the provider — it means something about THIS connection prevents it, and reason and remedy say what.
    - `config_fields` TriggersConfigField[]: Values a subscription can set in its config map to narrow which events it receives. A config key not listed here is refused.
      - `display_name` string: Human-readable label for the field.
      - `help_text` string: Guidance on what to enter. Empty when the trigger provides none.
      - `key` string: The key to send in a subscription's config map. Send it exactly as returned, without changing its case: a key that does not match is refused.
      - `placeholder` string: Example value to show in an empty input. Empty when the trigger provides none.
      - `required` boolean: Whether a subscription must set this field to a non-empty value. A subscription request that omits a required field is refused.
    - `default_interval_seconds` integer: Polling interval, in seconds, a subscription uses when it does not set interval_seconds. Zero for a webhook trigger.
    - `delivery_scope` 'ACCOUNT' | 'CONNECTION': Whether a trigger delivers once per connected account or once for the whole connection. Set by the trigger, not chosen by the subscriber. A polled trigger polls with one connected account's credential, so a polled trigger that is connection-scoped is reported as unavailable. - ACCOUNT: One event per subscribed connected account. For a webhook trigger, an event is delivered for an account only when the event's provider workspace and user match the account's; a polled trigger polls each account with that account's own credential. Subscribed on a specific connected account. - CONNECTION: One event for the whole connection, whatever accounts exist on it. Subscribed on the connection itself, naming no account.
    - `description` string: What event the trigger reports.
    - `display_name` string: Human-readable name of the trigger.
    - `min_interval_seconds` integer: Shortest polling interval, in seconds, a subscription to this trigger may request. A lower interval_seconds is refused rather than rounded up. Zero for a webhook trigger, which has no interval.
    - `mode` 'WEBHOOK' | 'POLL': How a trigger detects that something happened. - WEBHOOK: The provider posts to a Scalekit URL when the event occurs. - POLL: Scalekit walks the provider's list on a cadence.
    - `name` string: Unique name of the trigger within its provider. Pass it as trigger_name when listing eligible accounts or creating a subscription.
    - `platform_credentials` 'SUPPORTED' | 'UNSUPPORTED': Whether a trigger works on a connection that uses Scalekit's shared provider app. - SUPPORTED: The trigger works on Scalekit's shared provider app as well as on the customer's own app. - UNSUPPORTED: The trigger needs the customer's own provider app on the connection — for example because a webhook URL is registered against the app, and the shared app has only one.
    - `provider` string: The provider the trigger belongs to, the same as the connection's provider.
    - `provides_bearer_secret` boolean: Whether Scalekit generates this trigger's signing secret (GenerateTriggerSigningSecret) rather than the customer copying one from the provider's console. True only for providers that send no signature of their own. Always false for a polled trigger.
    - `reason` string: Why the trigger is unavailable on this connection. Populated whenever available is false.
    - `refusal_code` 'SHARED_APP' | 'POLL_CONNECTION_SCOPE': Which connection-level rule made a trigger unavailable, as a stable code a client can branch on instead of parsing the human-readable reason. - SHARED_APP: The connection uses Scalekit's shared provider app and the trigger needs the customer's own. - POLL_CONNECTION_SCOPE: The trigger is polled and connection-scoped, which the poll path does not support.
    - `register_hint` string: Provider-specific guidance on where to register the connection's ingress URL in the provider's console, written by the connector author. At most 500 characters, with no control characters. Empty when the connector provides none, and always empty for a polled trigger.
    - `remedy` string: What to do to make the trigger available. Populated whenever available is false.
    - `required_scopes` TriggersRequiredScope[]: Permissions a connected account's grant must include to subscribe to this trigger. A subscription for an account whose grant lacks one of them is refused, naming the missing scope.
      - `grant` string: Which grant channel must carry the scope. Some providers fan events out differently for a bot install than for a user install, so this is not merely descriptive.
      - `scope` string: The provider's own name for the permission, exactly as it appears in their console.
    - `requires_signing_secret` boolean: Whether the provider signs this trigger's events with a secret the customer copies from the provider's console and sets on the connection's ingress endpoint. Always false for a polled trigger, which receives no inbound requests.
    - `secret_hint` string: Provider-specific guidance on where the provider shows the signing secret to copy, written by the connector author. At most 500 characters, with no control characters. Empty when the connector provides none, and always empty for a polled trigger.

## Other responses

- `400`: Invalid request - connection_id is not a valid connection ID
- `404`: Not found - the connection does not exist in this environment, or Triggers is not enabled for the environment
- `500`: Internal error - the triggers for this connection could not be read; retry the request

## Changes

- **2026-10-30** `f47f1022d844`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/scalekit/apis/scalekit-api-reference/changes/api/v1/connections/:connection_id/triggers/get.md)

---

[API](https://skmtc.dev/scalekit/apis/scalekit-api-reference.md) - [All operations](https://skmtc.dev/scalekit/apis/scalekit-api-reference/llms.txt) - [OpenAPI document](https://skmtc.dev/scalekit/apis/scalekit-api-reference/revisions/f47f1022d844?raw)
