> ## Documentation Index
> Fetch the complete documentation index at: https://docs.synci.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Show a webhook endpoint



## OpenAPI

````yaml /openapi/managed.json get /webhooks/{webhookId}
openapi: 3.1.0
info:
  title: Synci
  version: '1.0'
  description: >-
    Register and manage the end users your Managed app pays for. Authenticate
    with HTTP Basic using your app's client id and client secret. See the
    Managed apps guide for the full flow.
servers:
  - url: https://api.synci.io/managed/v1
security:
  - basicAuth: []
tags:
  - name: Managed Users
  - name: Managed Connections
  - name: Managed Webhooks
paths:
  /webhooks/{webhookId}:
    get:
      tags:
        - Managed Webhooks
      summary: Show a webhook endpoint
      operationId: managed.webhooks.show
      parameters:
        - name: webhookId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: '`WebhookEndpointResource`'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    allOf:
                      - $ref: '#/components/schemas/WebhookEndpointResource'
                      - type: object
                        required:
                          - health
                required:
                  - data
components:
  schemas:
    WebhookEndpointResource:
      type: object
      properties:
        id:
          type: string
        url:
          type: string
        description:
          type: string
        enabled:
          type: string
        type:
          type: string
        omit_sensitive_identifiers:
          type: string
        events:
          type: string
          description: >-
            Subscribed event types. New endpoints should use the canonical names

            (`transactions.created`, `transactions.updated`, `balance.updated`,

            `holdings.updated`, `account.created`, `account.updated`,
            `account.deleted`);

            the legacy `bank_account.*` aliases are still accepted for existing
            v1

            integrations but should not be used in new code.
        financial_accounts:
          type: string
          description: |-
            IDs of the financial accounts this endpoint receives events for.
            Null or empty means events for all accounts are delivered.
        health:
          $ref: '#/components/schemas/HealthResource'
        secret:
          type: string
          description: |-
            The endpoint's signing secret. Only returned when the endpoint is
            created or the secret is rotated — store it securely.
        payload_version:
          type: string
          description: |-
            Shape of payloads delivered to this endpoint. Pinned at creation —
            not editable after. `v1` is the legacy shape (`bank_account.*`
            event-type aliases + `bank_account` payload embed key), kept for
            backwards compatibility with existing integrations. `v2` is the
            canonical shape (`account.*` events + `financial_account` embed
            key) — the default for new endpoints.
        created_at:
          type: string
        updated_at:
          type: string
      required:
        - id
        - url
        - description
        - enabled
        - type
        - omit_sensitive_identifiers
        - events
        - payload_version
        - created_at
        - updated_at
      title: WebhookEndpointResource
    HealthResource:
      type: object
      properties:
        status:
          type: string
          description: >-
            Health status: HEALTHY (last request succeeded), FAILING (recent
            requests failed), or DEAD (10 or more consecutive failures).
        integrator_message:
          type: string
          description: The most recent error message reported by the provider, if any.
        failure_count:
          type: string
          description: The number of consecutive failed requests.
        transient_message:
          type: string
          description: >-
            A provider-side outage currently blocking part of the sync (for
            example the institution being down for maintenance). Not counted as
            a failure: the status stays HEALTHY while Synci retries
            automatically. Null when nothing is being retried.
        transient_failure_count:
          type: string
          description: The number of consecutive sync attempts refused by that outage.
        last_attempt_at:
          type: string
          description: When the last sync attempt occurred.
      required:
        - status
        - integrator_message
        - failure_count
        - transient_message
        - transient_failure_count
        - last_attempt_at
      title: HealthResource
  securitySchemes:
    basicAuth:
      type: http
      description: |-
        **Username = your client id. Password = your client secret.**

        So the base64-encoded `username:password` described below is
        `client_id:client_secret`:

        ```
        Authorization: Basic base64(YOUR_CLIENT_ID:YOUR_CLIENT_SECRET)
        ```

        Most HTTP clients build that header for you:

        ```bash
        curl -u "YOUR_CLIENT_ID:YOUR_CLIENT_SECRET" \
             https://api.synci.io/managed/v1/users
        ```

        Both values come from **Developers → Apps → your app**. The
        secret is shown once at creation and is prefixed `oac_`.
      scheme: basic

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.