groq-webhooks-events
Scaffolds event-driven architectures for Groq streaming and batch processing. Manages real-time data handling.
Install
mkdir -p .claude/skills/groq-webhooks-events && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/5467" && unzip -o skill.zip -d .claude/skills/groq-webhooks-events && rm skill.zipInstalls to .claude/skills/groq-webhooks-events
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Build event-driven architectures with Groq streaming, batch processing,Key capabilities
- →Implement SSE streaming endpoints
- →Build batch processing pipelines with callbacks
- →Create asynchronous event processors
- →Monitor model latency and health
How it works
The skill use Groq's low-latency inference to build event-driven patterns like SSE streaming and queue-based batch processing.
Inputs & outputs
When to use groq-webhooks-events
- →Implement real-time SSE streaming
- →Build batch processing pipelines
- →Set up asynchronous LLM classification
- →Monitor Groq inference events
About this skill
Groq Events & Async Patterns
Overview
Build event-driven architectures around Groq's inference API. Groq does not provide native webhooks, but its sub-second latency enables unique patterns: real-time SSE streaming, batch processing with callbacks, queue-based pipelines, and event processors that use Groq as an LLM classification/extraction engine.
This skill uses Read, Write, and Edit to scaffold and update these handlers in your codebase, and curl to exercise the resulting endpoints. Step 1 (the SSE endpoint) is inline below; the batch, webhook-processor, health-monitor, and Python async patterns live in references/implementation.md.
Prerequisites
groq-sdk(Node) orgroq(Python) installed,GROQ_API_KEYset- Queue system for batch patterns (BullMQ, Redis, SQS)
- Understanding of Server-Sent Events (SSE) for streaming
Authentication
Groq authenticates with a single API key. Export GROQ_API_KEY in the environment
and the SDK reads it automatically — never hard-code the key or embed it in a request
body. The key is a bearer credential; treat it like any secret (env var or secrets
manager, never committed). No per-request auth headers are needed when the SDK is
constructed with new Groq() / AsyncGroq().
Instructions
Write each handler as a file in your project (Read/Write/Edit), then drive it
with curl to confirm behavior.
Step 1: SSE Streaming Endpoint
Stream tokens to the browser as they are generated. Set the text/event-stream
headers, disable proxy buffering with X-Accel-Buffering: no, and write one
data: frame per token, ending with a done event.
import Groq from "groq-sdk";
import express from "express";
const groq = new Groq();
const app = express();
app.use(express.json());
app.post("/api/chat/stream", async (req, res) => {
const { messages, model = "llama-3.3-70b-versatile" } = req.body;
res.writeHead(200, {
"Content-Type": "text/event-stream",
"Cache-Control": "no-cache",
Connection: "keep-alive",
"X-Accel-Buffering": "no", // Disable nginx buffering
});
try {
const stream = await groq.chat.completions.create({
model,
messages,
stream: true,
max_tokens: 2048,
});
for await (const chunk of stream) {
const content = chunk.choices[0]?.delta?.content;
if (content) {
res.write(`data: ${JSON.stringify({ content, type: "token" })}\n\n`);
}
}
res.write(`data: ${JSON.stringify({ type: "done" })}\n\n`);
} catch (err: any) {
res.write(`data: ${JSON.stringify({ type: "error", message: err.message })}\n\n`);
}
res.end();
});
Steps 2–5: Batch, Webhook Processor, Health Monitor, Python Async
The remaining patterns follow the same shape — Groq as a fast inference engine behind a queue or an event loop. Each is documented in full, with runnable code, in references/implementation.md:
- Step 2 — Batch processing with BullMQ: enqueue prompts, process with a
rate-limited worker (
concurrency: 5,limiter: 25 RPM), fire a callback per item. - Step 3 — Webhook event processor: ack the sender with
202immediately, then classify/extract the event asynchronously withllama-3.1-8b-instant. - Step 4 — Scheduled health monitor: ping each model with a one-token request on an interval, tracking latency and tokens/sec.
- Step 5 — Python async batch:
asyncio.Semaphore+gatherfor concurrent processing without a queue.
Output
Each pattern produces a distinct, observable artifact you can assert against:
- SSE endpoint — a
text/event-streamresponse: onedata: {"content":…,"type":"token"}frame per token, terminated bydata: {"type":"done"}(or atype:"error"frame on failure). - Batch worker — a
groq.batch.item_completedcallback POST per prompt, carryingbatchId,index,total,content,model, and tokenusage. - Webhook processor — an immediate
202 {"received": true}ack, followed by a background classification object{type, priority, summary, action}. - Health monitor — a per-model record
{status, latencyMs, tokensPerSec}(or{status:"error", error}) logged each interval.
See references/examples.md for the concrete payloads.
Event Pattern Summary
| Pattern | Groq Model | Latency | Use Case |
|---|---|---|---|
| SSE streaming | llama-3.3-70b-versatile | ~200ms TTFT | Real-time chat |
| Batch queue | llama-3.1-8b-instant | ~80ms TTFT | Document processing |
| Webhook processor | llama-3.1-8b-instant | ~80ms TTFT | Event classification |
| Health monitor | llama-3.1-8b-instant | ~80ms TTFT | Uptime tracking |
Error Handling
| Issue | Cause | Solution |
|---|---|---|
| SSE disconnect | Client timeout or network | Implement reconnection with last-event-id |
| Batch item fails | Rate limit or model error | Queue retry with exponential backoff |
| Webhook timeout | Processing takes too long | Acknowledge immediately (202), process async |
| Health check 429 | Monitoring consuming quota | Reduce check frequency, use smallest model |
Examples
Worked, runnable examples — consuming the SSE endpoint with curl, submitting a
batch and receiving callbacks, and classifying an inbound webhook — are in
references/examples.md. A minimal first call:
curl -N -X POST http://localhost:3000/api/chat/stream \
-H "Content-Type: application/json" \
-d '{"messages":[{"role":"user","content":"Explain SSE in one sentence."}]}'
Resources
- Full implementation walkthrough — Steps 2–5 with runnable code
- Worked examples — curl calls and expected payloads
- Groq API Reference
- Groq Text Generation (streaming)
- BullMQ Documentation
For performance optimization, see the groq-performance-tuning skill.
When not to use it
- →Expecting native webhook support from Groq
Prerequisites
Limitations
- →Groq does not provide native webhooks
- →SSE connections require handling client timeouts
- →Batch processing requires external queue management
How it compares
This approach uses Groq as an inference engine within custom event loops rather than relying on native webhook triggers.
Compared to similar skills
groq-webhooks-events side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| groq-webhooks-events (this skill) | 1 | 27d | Review | Advanced |
| telegram-bot-builder | 106 | 6mo | Review | Intermediate |
| reddit-api | 3 | 4mo | Review | Intermediate |
| juicebox-install-auth | 2 | 27d | Review | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by jeremylongshore
View all by jeremylongshore →You might also like
telegram-bot-builder
davila7
Expert in building Telegram bots that solve real problems - from simple automation to complex AI-powered bots. Covers bot architecture, the Telegram Bot API, user experience, monetization strategies, and scaling bots to thousands of users. Use when: telegram bot, bot api, telegram automation, chat bot telegram, tg bot.
reddit-api
alinaqi
Reddit API with PRAW (Python) and Snoowrap (Node.js)
juicebox-install-auth
jeremylongshore
Install and configure Juicebox SDK/CLI authentication. Use when setting up a new Juicebox integration, configuring API keys, or initializing Juicebox in your project. Trigger with phrases like "install juicebox", "setup juicebox", "juicebox auth", "configure juicebox API key".
lindy-sdk-patterns
jeremylongshore
Lindy AI SDK best practices and common patterns. Use when learning SDK patterns, optimizing API usage, or implementing advanced agent features. Trigger with phrases like "lindy SDK patterns", "lindy best practices", "lindy API patterns", "lindy code patterns".
windsurf-mcp-integration
jeremylongshore
Manage integrate MCP servers with Windsurf for extended capabilities. Activate when users mention "mcp integration", "model context protocol", "external tools", "mcp server", or "cascade tools". Handles MCP server configuration and integration. Use when working with windsurf mcp integration functionality. Trigger with phrases like "windsurf mcp integration", "windsurf integration", "windsurf".
emailable-automation
onfire7777
Automate Emailable tasks via Rube MCP (Composio). Always search tools first for current schemas.