Discord Webhook API via curl. Use this skill to send messages, embeds, and files to Discord channels without a bot.
/plugin marketplace add vm0-ai/api0/plugin install api0@api0This skill inherits all available tools. When active, it can use any tool Claude has access to.
Use Discord Webhooks via direct curl calls to send messages to Discord channels without setting up a bot.
Official docs:
https://discord.com/developers/docs/resources/webhook
Use this skill when you need to:
export DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/1234567890/abcdefg..."
Security: Never expose webhook URLs publicly - they require no authentication.
Important: When using
$VARin a command that pipes to another command, wrap the command containing$VARinbash -c '...'. Due to a Claude Code bug, environment variables are silently cleared when pipes are used directly.bash -c 'curl -s "https://api.example.com" -H "Authorization: Bearer $API_KEY"' | jq .
All examples below assume you have DISCORD_WEBHOOK_URL set.
curl -s -X POST "${DISCORD_WEBHOOK_URL}" -H "Content-Type: application/json" -d '{"content": "Hello from webhook!"}'
curl -s -X POST "${DISCORD_WEBHOOK_URL}" -H "Content-Type: application/json" -d '{"content": "Alert!", "username": "Alert Bot", "avatar_url": "https://i.imgur.com/4M34hi2.png"}'
curl -s -X POST "${DISCORD_WEBHOOK_URL}" -H "Content-Type: application/json" -d '{"embeds": [{"title": "Deployment Complete", "description": "Version 1.2.3 deployed to production", "color": 5763719, "fields": [{"name": "Environment", "value": "Production", "inline": true}, {"name": "Status", "value": "Success", "inline": true}], "timestamp": "2025-01-01T12:00:00.000Z"}]}'
Common colors (decimal):
57637191554899757932661677696016744192curl -s -X POST "${DISCORD_WEBHOOK_URL}" -H "Content-Type: application/json" -d '{"embeds": [{"title": "Error Alert", "description": "Database connection failed", "color": 15548997, "fields": [{"name": "Service", "value": "api-server"}, {"name": "Error", "value": "Connection timeout"}], "footer": {"text": "Monitor"}}]}'
curl -s -X POST "${DISCORD_WEBHOOK_URL}" -F "file1=@screenshot.png" -F 'payload_json={"content": "Screenshot attached"}'
curl -s -X POST "${DISCORD_WEBHOOK_URL}" -F "file1=@error.log" -F "file2=@debug.log" -F 'payload_json={"content": "Log files attached"}'
curl -s -X POST "${DISCORD_WEBHOOK_URL}" -H "Content-Type: application/json" -d '{"embeds": [{"title": "Build Started", "color": 16776960}, {"title": "Tests Passed", "color": 5763719}, {"title": "Deployed", "color": 5793266}]}'
curl -s -X POST "${DISCORD_WEBHOOK_URL}" -H "Content-Type: application/json" -d '{"content": "<@USER_ID> Check this out!", "allowed_mentions": {"users": ["USER_ID"]}}'
Replace USER_ID with actual Discord user ID.
curl -s -X POST "${DISCORD_WEBHOOK_URL}" -H "Content-Type: application/json" -d '{"content": "Silent update", "flags": 4096}'
curl -s -X POST "${DISCORD_WEBHOOK_URL}" -H "Content-Type: application/json" -d '{"username": "GitHub Actions", "embeds": [{"title": "Pipeline Status", "color": 5763719, "fields": [{"name": "Repository", "value": "myorg/myrepo", "inline": true}, {"name": "Branch", "value": "main", "inline": true}, {"name": "Commit", "value": "abc1234", "inline": true}, {"name": "Status", "value": "✅ Success"}], "timestamp": "2025-01-01T12:00:00.000Z"}]}'
{
"title": "Title text",
"description": "Description text",
"url": "https://example.com",
"color": 5763719,
"fields": [
{"name": "Field 1", "value": "Value 1", "inline": true}
],
"author": {"name": "Author", "icon_url": "https://..."},
"footer": {"text": "Footer text"},
"thumbnail": {"url": "https://..."},
"image": {"url": "https://..."},
"timestamp": "2025-01-01T12:00:00.000Z"
}