API Reference
REST API for headless queue integration.
Base URL: https://velvetrope.dev/api/v1
Get Queue Status
GET /campaigns/:slug/status
# Example
curl https://velvetrope.dev/api/v1/campaigns/my-drop/status
Response:
{
"campaign": {
"id": "abc123",
"slug": "my-drop",
"status": "active",
"rate_per_minute": 100,
"skip_pass_enabled": true
},
"queue": {
"length": 12847,
"vip_length": 234,
"forwarded": 2156,
"paused": false
}
}
Join Queue
POST /campaigns/:slug/join
# Example
curl -X POST https://velvetrope.dev/api/v1/campaigns/my-drop/join \
-H "Content-Type: application/json" \
-d '{"user_id": "user123"}'
Response:
{
"user_id": "user123",
"position": 12848,
"queue_url": "https://velvetrope.dev/q/my-drop",
"websocket_topic": "queue:abc123:user:user123"
}
WebSocket Integration
For real-time queue updates, connect to our Phoenix Channel:
import { Socket } from "phoenix";
const socket = new Socket("wss://velvetrope.dev/socket");
socket.connect();
const channel = socket.channel(`queue:${campaignId}`, { user_id: "user123" });
channel.join();
channel.on("position_update", (payload) => {
console.log("Position:", payload.position);
console.log("Wait:", payload.estimated_wait_seconds);
});
channel.on("forwarded", (payload) => {
window.location.href = payload.destination_url;
});