-
Notifications
You must be signed in to change notification settings - Fork 0
API_QUICKSTART
Nick edited this page Mar 10, 2026
·
1 revision
Quick start in 5 minutes
http://localhost:8000/api/v1
For production deployments, replace with your PATAS server URL.
The /api/v1/analyze endpoint bundles the complete workflow:
- Ingest messages
- Run pattern mining (optional)
- Evaluate rules (optional)
- Export rules (optional)
Perfect for: Small-medium batch analysis, RapidAPI integration, quick prototyping.
Request:
POST /api/v1/analyze
Content-Type: application/json
{
"messages": [
{
"id": "msg_001",
"text": "Buy now! http://spam.com",
"is_spam": true
}
],
"run_mining": true
}Response:
{
"patterns": [
{
"id": 1,
"type": "url",
"description": "URL pattern: http://spam.com",
"group_size": 2,
"similarity_reason": "Messages contain the same suspicious URL: http://spam.com",
"sql_query": "SELECT id FROM reports WHERE message_content LIKE '%http://spam.com%'"
}
],
"rules": [...],
"meta": {
"ingested_count": 1,
"patterns_created": 1,
"timings": {...}
}
}import requests
response = requests.post(
'http://localhost:8000/api/v1/analyze',
json={
'messages': [
{
'id': 'msg_001',
'text': 'Buy now! http://spam.com',
'is_spam': True
}
],
'run_mining': True,
'run_evaluation': True,
'export_backend': 'sql'
}
)
result = response.json()
print(f"Discovered {len(result['patterns'])} patterns")
# Access SQL queries
for pattern in result['patterns']:
print(f"SQL: {pattern['sql_query']}")curl -X POST http://localhost:8000/api/v1/analyze \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"id": "1", "text": "Buy now! http://spam.com", "is_spam": true}
],
"run_mining": true
}'const response = await fetch('http://localhost:8000/api/v1/analyze', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
messages: [
{ id: '1', text: 'Buy now! http://spam.com', is_spam: true }
],
run_mining: true
})
});
const result = await response.json();
console.log(`Discovered ${result.patterns.length} patterns`);Each pattern in the response includes:
-
group_size: Number of messages in this pattern group -
sources_count: Number of unique sources -
senders_count: Number of unique senders -
similarity_reason: Explanation of why messages are similar -
sql_query: SQL query for blocking
Example SQL query:
SELECT id, message_content, sender, source
FROM reports
WHERE LOWER(message_content) LIKE '%http://spam.com%'This query can be used to:
- Identify all messages matching the pattern
- Apply blocking rules in your system
- Generate reports
For large datasets, use lower-level endpoints:
-
Ingest:
POST /api/v1/messages/ingest -
Mine:
POST /api/v1/patterns/mine -
Evaluate:
POST /api/v1/rules/eval-shadow -
Promote:
POST /api/v1/rules/promote -
Export:
GET /api/v1/rules/export
See API Reference for details.
try:
response = requests.post('http://localhost:8000/api/v1/analyze', json=data)
response.raise_for_status()
result = response.json()
except requests.exceptions.HTTPError as e:
error_detail = e.response.json().get("detail", "Unknown error")
print(f"Error: {error_detail}")- API Reference — complete documentation of all endpoints
- Examples — practical examples
- Integration Guide — integration guide