ScamSinkhole ASI - API Documentation
Documents 18 REST endpoints and a WebSocket for generating scam-baiting personas, initiating calls, extracting intelligence, and submitting reports.
What this file does
Documents 18 REST endpoints and a WebSocket for generating scam-baiting personas, initiating calls, extracting intelligence, and submitting reports.
When to use it
- You are building or extending a scam-baiting system with AI personas
- You need a reference for integrating with the ScamSinkhole ASI backend
- You are writing client code that calls these endpoints
- You want to understand the API surface before contributing to the project
Assumes this stack
ScamSinkhole ASI - API Documentation
Base URL
http://localhost:8000
Interactive Documentation
FastAPI provides interactive API documentation:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
Authentication
Currently, the API does not require authentication. In production, implement OAuth2 or API key authentication.
Endpoints
System
GET /api
Get API information
curl http://localhost:8000/api
GET /health
Health check endpoint
curl http://localhost:8000/health
GET /api/stats
Get overall system statistics
curl http://localhost:8000/api/stats
Response:
{
"personas_count": 100,
"total_calls": 50,
"active_calls": 5,
"completed_calls": 45,
"total_call_duration_seconds": 12500,
"intelligence_extracted": 30,
"reports_submitted": 25,
"confirmed_reports": 20
}
Swarm Module
POST /api/swarm/generate-persona
Generate a single AI persona
Request:
curl -X POST http://localhost:8000/api/swarm/generate-persona \
-H "Content-Type: application/json" \
-d '{"archetype": "confused_grandpa"}'
Response:
{
"id": "uuid-here",
"name": "Herbert Thompson",
"archetype": "confused_grandpa",
"backstory": "A 78-year-old retired accountant...",
"personality_traits": ["forgetful", "talkative", "trusting"],
"speech_patterns": ["repeats questions", "goes off topic"],
"created_at": "2024-01-01T12:00:00Z"
}
POST /api/swarm/spawn
Spawn multiple personas
Request:
curl -X POST http://localhost:8000/api/swarm/spawn \
-H "Content-Type: application/json" \
-d '{"count": 100}'
Response:
{
"personas": [...],
"count": 100
}
GET /api/swarm/personas
List all personas
curl http://localhost:8000/api/swarm/personas
GET /api/swarm/personas/{persona_id}
Get a specific persona
curl http://localhost:8000/api/swarm/personas/{persona_id}
Attack Module
POST /api/attack/initiate-call
Initiate a call to a scammer
Request:
curl -X POST http://localhost:8000/api/attack/initiate-call \
-H "Content-Type: application/json" \
-d '{
"target_number": "+15551234567",
"persona_id": "persona-uuid"
}'
Response:
{
"id": "session-uuid",
"persona_id": "persona-uuid",
"target_number": "+15551234567",
"start_time": "2024-01-01T12:00:00Z",
"status": "active",
"transcript": []
}
POST /api/attack/dial-list
Dial multiple scam numbers
Request:
curl -X POST http://localhost:8000/api/attack/dial-list \
-H "Content-Type: application/json" \
-d '{
"phone_numbers": ["+15551234567", "+15559876543"]
}'
GET /api/attack/sessions
Get all call sessions
curl http://localhost:8000/api/attack/sessions
GET /api/attack/sessions/active
Get only active call sessions
curl http://localhost:8000/api/attack/sessions/active
GET /api/attack/sessions/{session_id}
Get a specific call session
curl http://localhost:8000/api/attack/sessions/{session_id}
POST /api/attack/sessions/{session_id}/end
Manually end a call session
curl -X POST http://localhost:8000/api/attack/sessions/{session_id}/end
Intel Module
POST /api/intel/analyze
Analyze a call transcript for intelligence
Request:
curl -X POST http://localhost:8000/api/intel/analyze \
-H "Content-Type: application/json" \
-d '{"call_session_id": "session-uuid"}'
Response:
{
"id": "intel-uuid",
"call_session_id": "session-uuid",
"extracted_at": "2024-01-01T12:00:00Z",
"crypto_wallets": ["1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa"],
"bank_accounts": ["123456789"],
"phone_numbers": ["+15559998888"],
"urls": ["http://scamsite.com"],
"organization_names": ["Fake Corp"],
"confidence_score": 0.85
}
GET /api/intel/intelligence
Get all intelligence data
curl http://localhost:8000/api/intel/intelligence
GET /api/intel/intelligence/high-value
Get high-confidence intelligence only
curl "http://localhost:8000/api/intel/intelligence/high-value?min_confidence=0.7"
GET /api/intel/intelligence/{intelligence_id}
Get specific intelligence data
curl http://localhost:8000/api/intel/intelligence/{intelligence_id}
Kill Module
POST /api/kill/report
Submit intelligence report to carriers/authorities
Request:
curl -X POST http://localhost:8000/api/kill/report \
-H "Content-Type: application/json" \
-d '{
"intelligence_id": "intel-uuid",
"report_type": "both"
}'
Report types:
"carrier"- Submit to telecom carriers only"authority"- Submit to law enforcement only"both"- Submit to both (default)
Response:
{
"id": "report-uuid",
"intelligence_id": "intel-uuid",
"report_type": "both",
"submitted_at": "2024-01-01T12:00:00Z",
"status": "confirmed",
"response": {
"carrier": {
"status": "submitted",
"status_code": 200
},
"authority": {
"status": "submitted",
"status_code": 200
}
}
}
GET /api/kill/reports
Get all reports
curl http://localhost:8000/api/kill/reports
GET /api/kill/reports/{report_id}
Get a specific report
curl http://localhost:8000/api/kill/reports/{report_id}
WebSocket
WS /ws
Connect to WebSocket for real-time updates
const ws = new WebSocket('ws://localhost:8000/ws');
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log('Event:', data.type, data);
};
Event types:
persona_created- New persona generatedswarm_spawned- Multiple personas createdcall_initiated- Call startedbatch_calls_initiated- Multiple calls startedcall_ended- Call completedintelligence_extracted- Intelligence analyzedreport_submitted- Report filed
Error Responses
All endpoints return standard HTTP status codes:
200 OK- Success201 Created- Resource created400 Bad Request- Invalid request404 Not Found- Resource not found500 Internal Server Error- Server error
Error response format:
{
"detail": "Error message here"
}
Rate Limiting
Currently, there are no rate limits. In production, implement rate limiting to prevent abuse.
Examples
Complete Workflow
- Spawn personas:
curl -X POST http://localhost:8000/api/swarm/spawn \
-H "Content-Type: application/json" \
-d '{"count": 100}'
- Dial scam numbers:
curl -X POST http://localhost:8000/api/attack/dial-list \
-H "Content-Type: application/json" \
-d '{"phone_numbers": ["+15551234567", "+15559876543"]}'
- Monitor active calls:
curl http://localhost:8000/api/attack/sessions/active
- Extract intelligence:
curl -X POST http://localhost:8000/api/intel/analyze \
-H "Content-Type: application/json" \
-d '{"call_session_id": "session-uuid"}'
- Submit report:
curl -X POST http://localhost:8000/api/kill/report \
-H "Content-Type: application/json" \
-d '{"intelligence_id": "intel-uuid", "report_type": "both"}'
- Check statistics:
curl http://localhost:8000/api/stats
What's inside
5 endpoint groups (System, Swarm, Attack, Intel, Kill) plus WebSocket, error codes, rate limiting note, and a complete workflow example.
Change this for your project
- Replace
http://localhost:8000with your deployed base URL - Replace
+15551234567and other example phone numbers with real targets - Replace
"confused_grandpa"with your own persona archetypes if you define custom ones
Where it goes
A standard operating procedure. Keep where the team or agent running the process will find it.
Worth borrowing
- Separates scam-baiting into four distinct modules (swarm, attack, intel, kill) that can be developed and scaled independently
- Provides a WebSocket for real-time event streaming, useful for dashboards or live monitoring
Related Documents
Comprehensive AI Assistant Tools Reference
Lists 80+ tools with MCP server associations, bulk support, parallel capability, resource impact, and execution type for AI agent workflows.
iOS Deployment Guide
Walks through setting up an iOS development environment, building a Tauri app for iOS, and publishing to the App Store or alternative channels.
How to Add Resources to Your FastMCP Server
Teaches how to add static and dynamic MCP resources to a FastMCP server, with six ready-to-copy examples for a GitHub crawler.
PCI Compliance Guide
Explains PCI DSS compliance via tokenization, lists forbidden and allowed data, and provides code examples for BigCommerce and Stripe.