v1.0.0
The Argus Intelligence API provides programmatic access to AI-powered OSINT investigations. Create dossiers, trigger automated intelligence gathering using Sherlock, Maigret, and Holehe, and retrieve comprehensive reports — all through a simple REST interface.
All API endpoints (except /api/v1/health) require a Bearer token.
Authorization: Bearer argus_your_key_here
Keys are prefixed with argus_. Keep them secret — they grant full access to your account.
Create
POST a new dossier with subject info
Wait
Poll status until processing completes
Retrieve
GET the full intelligence report
# 1. Create a dossier
curl -X POST 'https://viewargus.com/api/v1/dossiers' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"subjectName":"John Doe","identifierType":"username","identifierValue":"johndoe42"}'
# 2. Poll status until completed
curl 'https://viewargus.com/api/v1/dossiers/{id}/status' \
-H 'Authorization: Bearer YOUR_API_KEY'
# 3. Get full dossier report
curl 'https://viewargus.com/api/v1/dossiers/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY'Create a dossier and poll for completion in your language of choice.
# Create dossier
RESPONSE=$(curl -s -X POST 'https://viewargus.com/api/v1/dossiers' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"subjectName":"John Doe","identifierType":"username","identifierValue":"johndoe42"}')
ID=$(echo $RESPONSE | jq -r '.id')
# Poll until complete
while true; do
STATUS=$(curl -s "https://viewargus.com/api/v1/dossiers/$ID/status" \
-H 'Authorization: Bearer YOUR_API_KEY' | jq -r '.status')
echo "Status: $STATUS"
[ "$STATUS" = "completed" ] && break
sleep 5
done
# Fetch result
curl -s "https://viewargus.com/api/v1/dossiers/$ID" \
-H 'Authorization: Bearer YOUR_API_KEY' | jq .List endpoints return a standard pagination wrapper:
{
"data": [ ... ],
"pagination": {
"page": 1,
"limit": 20,
"total": 42,
"pages": 3
}
}Dates are ISO 8601 / SQLite datetime:
2025-02-27 21:30:00Dossier statuses:
There are currently no hard rate limits enforced. However, we recommend the following best practices:
Rate limits may be introduced in a future release. We'll announce changes in the changelog and via email.
| Code | Meaning |
|---|---|
| 400 | Bad Request — Missing or invalid parameters |
| 401 | Unauthorized — Invalid or missing API key |
| 404 | Not Found — Resource doesn't exist or isn't yours |
| 500 | Server Error — Something went wrong on our side |
All error responses follow the format: {"error": "description"}
Instead of polling for dossier status changes, configure webhooks to receive real-time HTTP POST notifications when events occur.
Configure webhooks in Portal → Webhooks or via the API.
dossier.createdA new dossier was createddossier.processingOSINT processing has starteddossier.completedDossier report is readydossier.failedProcessing encountered an error{
"event": "dossier.completed",
"timestamp": "2025-02-27T21:30:00.000Z",
"data": {
"id": "uuid",
"subject_name": "John Doe",
"status": "completed",
"confidence": "high"
}
}Every webhook delivery includes an X-Argus-Signature header containing an HMAC-SHA256 hex digest of the raw request body, signed with your webhook secret.
import hmac, hashlib
def verify_signature(body: bytes, signature: str, secret: str) -> bool:
expected = hmac.new(
secret.encode(), body, hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, signature)Argus Intelligence Platform — Gallione Technologies