Hookdeck Schemas API

Destination types describe the available event delivery targets and their configuration schemas. Use these endpoints to render UI forms and list available destination types with their configuration schemas.

Operations 2

GET /destination-types List Destination Type Schemas #
GET /destination-types/{type} Get Destination Type Schema #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/hookdeck:hookdeck-schemas-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

hookdeck-schemas-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Outpost Schemas API
  version: 0.0.1
  description: 'The Outpost API is a REST-based JSON API for managing tenants, destinations, and publishing events.


    Outpost runs in two deployment models: **managed** (hosted by Hookdeck) and **self-hosted**. They differ in where the API is served and in which API key authenticates server-side calls. On managed Outpost, use a Hookdeck project API key from your Outpost project. On self-hosted Outpost, use the key set in the `API_KEY` environment variable. A few endpoints exist in one model only and say so in their description.'
  contact:
    name: Outpost Support
    email: support@hookdeck.com
    url: https://hookdeck.com/docs/outpost
servers:
- url: https://api.outpost.hookdeck.com/2025-07-01
  description: Managed Outpost, hosted by Hookdeck at `api.outpost.hookdeck.com`. The Hookdeck Event Gateway API at `api.hookdeck.com` is a separate API.
- url: http://localhost:3333/api/v1
  description: Self-hosted Outpost, at its default local address. A deployed instance serves the same paths under its own host.
security:
- AdminApiKey: []
- TenantJwt: []
tags:
- name: Schemas
  description: Destination types describe the available event delivery targets and their configuration schemas. Use these endpoints to render UI forms and list available destination types with their configuration schemas.
paths:
  /destination-types:
    get:
      tags:
      - Schemas
      summary: List Destination Type Schemas
      description: Returns a list of JSON-based input schemas for each available destination type.
      operationId: listDestinationTypeSchemas
      responses:
        '200':
          description: A list of destination type schemas.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DestinationTypeSchema'
              examples:
                DestinationTypesExample:
                  value:
                  - type: webhook
                    label: Webhook
                    description: Send event via an HTTP POST request to a URL
                    icon: <svg />
                    instructions: Enter the URL...
                    config_fields:
                    - key: url
                      type: text
                      label: URL
                      description: The URL to send the webhook to.
                      pattern: ^https?://.*
                      required: true
                    credential_fields:
                    - key: secret
                      type: text
                      label: Secret
                      description: Optional signing secret.
                      required: false
                      sensitive: true
                  - type: kafka
                    label: Apache Kafka
                    description: Send events to Apache Kafka topics for real-time event streaming
                    icon: <svg />
                    config_fields:
                    - key: brokers
                      type: text
                      label: Brokers
                      description: Comma-separated list of Kafka broker addresses.
                      required: true
                    - key: topic
                      type: text
                      label: Topic
                      description: The Kafka topic to publish messages to.
                      required: true
                    - key: tls
                      type: checkbox
                      label: TLS
                      description: Enable TLS for the connection.
                      default: 'true'
                    - key: partition_key_template
                      type: text
                      label: Partition Key Template
                      description: JMESPath template to extract the partition key from the event payload.
                      required: false
                    - key: sasl_mechanism
                      type: select
                      label: SASL Mechanism
                      description: SASL authentication mechanism.
                      required: true
                      options:
                      - label: PLAIN
                        value: plain
                      - label: SCRAM-SHA-256
                        value: scram-sha-256
                      - label: SCRAM-SHA-512
                        value: scram-sha-512
                    credential_fields:
                    - key: username
                      type: text
                      label: Username
                      description: SASL username for authentication.
                      required: true
                    - key: password
                      type: text
                      label: Password
                      description: SASL password for authentication.
                      required: true
                      sensitive: true
                  - type: aws_sqs
                    label: AWS SQS
                    description: Send event to an AWS SQS queue
                    icon: <svg />
                    instructions: Enter Queue URL...
                    config_fields:
                    - key: queue_url
                      type: text
                      label: Queue URL
                      description: The URL of the SQS queue.
                      required: true
                    - key: endpoint
                      type: text
                      label: Endpoint
                      description: Optional custom AWS endpoint URL.
                      required: false
                    credential_fields:
                    - key: key
                      type: text
                      label: Key
                      description: AWS Access Key ID.
                      required: true
                      sensitive: true
                    - key: secret
                      type: text
                      label: Secret
                      description: AWS Secret Access Key.
                      required: true
                      sensitive: true
                    - key: session
                      type: text
                      label: Session
                      description: Optional AWS Session Token.
                      required: false
                      sensitive: true
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /destination-types/{type}:
    parameters:
    - name: type
      in: path
      required: true
      schema:
        type: string
        enum:
        - webhook
        - aws_sqs
        - rabbitmq
        - hookdeck
        - aws_kinesis
        - azure_servicebus
        - aws_s3
        - gcp_pubsub
        - kafka
        - cloudflare_queues
        - aws_eventbridge
      description: The type of the destination.
    get:
      tags:
      - Schemas
      summary: Get Destination Type Schema
      description: Returns the input schema for a specific destination type.
      operationId: getDestinationTypeSchema
      responses:
        '200':
          description: The schema for the specified destination type.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DestinationTypeSchema'
              examples:
                WebhookSchemaExample:
                  value:
                    type: webhook
                    label: Webhook
                    description: Send event via an HTTP POST request to a URL
                    icon: <svg />
                    instructions: Enter the URL...
                    config_fields:
                    - key: url
                      type: text
                      label: URL
                      description: The URL to send the webhook to.
                      pattern: ^https?://.*
                      required: true
                    credential_fields:
                    - key: secret
                      type: text
                      label: Secret
                      description: Optional signing secret.
                      required: false
                      sensitive: true
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    DestinationTypeSchema:
      type: object
      properties:
        type:
          type: string
          example: webhook
        label:
          type: string
          example: Webhook
        description:
          type: string
          example: Send event via an HTTP POST request to a URL
        icon:
          type: string
          description: SVG icon string.
          example: <svg />
        instructions:
          type: string
          description: Markdown instructions.
          example: Some *markdown*
        setup_link:
          type: object
          description: 'Some destinations may have an OAuth flow or other managed-setup flow that can be triggered with a link. If a `setup_link` is set then the user should be prompted to follow the link to configure the destination.

            See the [building your own UI guide](https://outpost.hookdeck.com/guides/building-your-own-ui.mdx) for recommended UI patterns and wireframes for implementation in your own app.'
          properties:
            href:
              type: string
              format: url
              description: The URL to direct the user to for setup.
              example: https://dashboard.hookdeck.com/connect
            cta:
              type: string
              description: The call-to-action button text to display to the user.
              example: Generate Hookdeck Token
          required:
          - href
          - cta
        config_fields:
          type: array
          description: Config fields are non-secret values that can be stored and displayed to the user in plain text.
          items:
            $ref: '#/components/schemas/DestinationSchemaField'
        credential_fields:
          type: array
          description: Credential fields are secret values that will be AES encrypted and obfuscated to the user. Some credentials may not be obfuscated; the destination type dictates the obfuscation logic.
          items:
            $ref: '#/components/schemas/DestinationSchemaField'
    APIErrorResponse:
      type: object
      description: Standard error response format.
      properties:
        status:
          type: integer
          description: HTTP status code.
          example: 422
        message:
          type: string
          description: Human-readable error message.
          example: validation error
        data:
          description: Additional error details. For validation errors, this is an array of human-readable messages.
          oneOf:
          - type: array
            items:
              type: string
            description: Array of validation error messages.
            example:
            - email is required
            - password must be at least 6 characters
          - type: object
            additionalProperties: true
            description: Additional contextual data about the error.
    DestinationSchemaField:
      type: object
      required:
      - type
      - required
      - key
      properties:
        key:
          type: string
          description: Property name for this value inside the destination `config` or `credentials` object on create/update (for example `url` for a webhook endpoint URL). This is the key used to store and retrieve the field value in the destination's config or credentials object.
          example: url
        type:
          type: string
          enum:
          - text
          - checkbox
          - key_value_map
          - select
          example: text
        label:
          type: string
          example: URL
        description:
          type: string
          example: The URL to send the event to
        required:
          type: boolean
          example: true
        sensitive:
          type: boolean
          description: Indicates if the field contains sensitive information.
          example: false
        default:
          type: string
          description: Default value for the field.
          example: default_value
        minlength:
          type: integer
          description: Minimum length for a text input.
          example: 0
        maxlength:
          type: integer
          description: Maximum length for a text input.
          example: 255
        pattern:
          type: string
          description: Regex pattern for validation (compatible with HTML5 pattern attribute).
          example: ^[a-zA-Z0-9_]+$
        options:
          type: array
          description: Available options for select fields.
          items:
            type: object
            required:
            - label
            - value
            properties:
              label:
                type: string
                example: PLAIN
              value:
                type: string
                example: plain
  responses:
    InternalServerError:
      description: Unexpected server error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/APIErrorResponse'
    NotFound:
      description: Requested resource not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/APIErrorResponse'
    Unauthorized:
      description: Missing or invalid authentication credentials.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/APIErrorResponse'
  securitySchemes:
    AdminApiKey:
      type: http
      scheme: bearer
      description: "Bearer token for server-side calls. Where it comes from depends on the\ndeployment:\n\n- **Managed:** a Hookdeck **project API key belonging to your\n  Outpost project** (Hookdeck Dashboard → your Outpost project →\n  Settings → Secrets). A key from a different Hookdeck project\n  authenticates but returns `404` on most Outpost routes.\n- **Self-hosted:** the admin API key set in the `API_KEY` environment\n  variable.\n\nThe scheme is named for the self-hosted credential. Managed Outpost has\nno separate admin key to create. The project API key takes its place.\n"
    TenantJwt:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: "Per-tenant JWT token valid for 24 hours.\n\n**JWT Structure:**\nThe token is a standard JWT signed with HS256 algorithm containing the following claims:\n- `iss` (issuer): Always \"outpost\"\n- `sub` (subject): The tenant_id this token is scoped to\n- `iat` (issued at): Unix timestamp when the token was created\n- `exp` (expiration): Unix timestamp when the token expires (24 hours after issuance)\n\n**Example decoded payload:**\n```json\n{\n  \"iss\": \"outpost\",\n  \"sub\": \"tenant_123\",\n  \"iat\": 1704067200,\n  \"exp\": 1704153600\n}\n```\n"
x-provenance:
  method: harvested
  publisher: Hookdeck
  source: https://raw.githubusercontent.com/hookdeck/outpost/main/docs/apis/openapi.yaml
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)