Source type

Discord Interactions Source Configuration

Discord sources receive interaction callbacks, verify Ed25519 signatures, and answer PING validation with the required PONG response.

DISCORDPOSTApplication Public KeyCommunication
Discord sends webhook traffic to a FastHook source, FastHook validates the provider contract, records the request, and routes accepted events through connections to destinations.DiscordProviderPOSTSetup + eventsFastHookSource URLDISCORDProvider credentialPING/PONGVerify before queue401 on auth failure405 on wrong methodAcceptedRequestverified: trueConnections route the accepted request to destinationsFilters, transformations, retries, replay, and destination signatures stay downstream from source verification.Provider setupValidate firstPING / PONG

Discord Interactions configuration

Create a Discord Interactions source, keep POST enabled, and provide the configured Application Public Key values for provider signature. FastHook uses these settings to validate each Discord delivery before it enters the routing workflow.

Source Type

DISCORD

Allowed methods

POST

Authentication

Provider signature

Credential fields

Application Public Key

Discord Interactions source config
{
  "type": "DISCORD",
  "config": {
    "auth_type": "PROVIDER_SIGNATURE",
    "auth": {
      "provider": "DISCORD",
      "public_key": "hex-application-public-key"
    },
    "allowed_http_methods": ["POST"]
  }
}

PING validation before interaction callbacks

  1. Discord sends a signed PING interaction to the endpoint URL.
  2. FastHook verifies the Ed25519 signature and returns the required PONG response.
  3. After validation succeeds, Discord sends normal signed interaction callbacks.

Discord Interactions request contract

FastHook verifies the Ed25519 signature over timestamp + raw body using the Discord application public key.

POST

Special response: Discord PING payloads receive JSON { type: 1 }. Ordinary interactions receive deferred JSON { type: 5 }; when config.discord_defer_ephemeral is true, the defer includes data.flags = 64. Autocomplete receives an empty choices response unless proxy mode supplies a dynamic response.

Discord headers

Preserve x-signature-ed25519, x-signature-timestamp when sending Discord test deliveries. FastHook evaluates this request context before accepting the payload, so missing or modified values remain visible as rejected requests instead of routed events.

x-signature-ed25519

Ed25519 signature in hex.

x-signature-timestamp

Timestamp concatenated with the raw body before verification.

Discord setup

  1. In Discord Developer Portal > General Information, copy the Application Public Key into FastHook.
  2. Set Interactions Endpoint URL to the generated FastHook Source URL. Do not paste a Discord destination webhook URL there.
  3. Use the Requests view to confirm the signed PING receives HTTP 200 with JSON { type: 1 }.
  4. Ordinary interactions are automatically deferred with { type: 5 } inside Discord's three-second deadline.
  5. Enable Private slash-command responses in the Dashboard, or set config.discord_defer_ephemeral to true, when the defer and final follow-up should be visible only to the command user.
  6. Connect a Discord destination in Slash-command follow-up mode to send the final message within the interaction token's 15-minute lifetime.
  7. Autocomplete receives empty choices automatically. Use source proxy mode when choices must be generated dynamically.

Discord routing hints

  • Discord interaction callbacks route by interaction type, command name, guild id, or channel id.
  • The initial PING/PONG validation must succeed before normal interaction traffic is accepted.

Continue with Discord Interactions