Source type
Discord Interactions Source Configuration
Discord sources receive interaction callbacks, verify Ed25519 signatures, and answer PING validation with the required PONG response.
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 TypeDISCORD
Allowed methodsPOST
AuthenticationProvider signature
Credential fieldsApplication Public Key
{
"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
- Discord sends a signed PING interaction to the endpoint URL.
- FastHook verifies the Ed25519 signature and returns the required PONG response.
- 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.
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-ed25519Ed25519 signature in hex.
x-signature-timestampTimestamp concatenated with the raw body before verification.
Discord setup
- In Discord Developer Portal > General Information, copy the Application Public Key into FastHook.
- Set Interactions Endpoint URL to the generated FastHook Source URL. Do not paste a Discord destination webhook URL there.
- Use the Requests view to confirm the signed PING receives HTTP 200 with JSON { type: 1 }.
- Ordinary interactions are automatically deferred with { type: 5 } inside Discord's three-second deadline.
- 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.
- Connect a Discord destination in Slash-command follow-up mode to send the final message within the interaction token's 15-minute lifetime.
- 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.