👁️

Argus Intelligence API

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.

🔑 Authentication

All API endpoints (except /api/v1/health) require a Bearer token.

  1. Navigate to Portal → API Keys
  2. Generate a new API key
  3. Include it in every request header:
Authorization: Bearer argus_your_key_here

Keys are prefixed with argus_. Keep them secret — they grant full access to your account.

Quick Start

1

Create

POST a new dossier with subject info

2

Wait

Poll status until processing completes

3

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'

💻 SDK Examples

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 .

📦 Response Format

Pagination Envelope

List endpoints return a standard pagination wrapper:

{
  "data": [ ... ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 42,
    "pages": 3
  }
}

Dates & Status Enums

Dates are ISO 8601 / SQLite datetime:

2025-02-27 21:30:00

Dossier statuses:

pendingprocessingcompleted

Rate Limits

There are currently no hard rate limits enforced. However, we recommend the following best practices:

  • Limit dossier creation to ~10 per minute
  • Poll status endpoints no more than once every 5 seconds
  • Use webhooks instead of polling for production integrations
  • Cache completed dossier responses on your side

Rate limits may be introduced in a future release. We'll announce changes in the changelog and via email.

Error Codes

CodeMeaning
400Bad Request — Missing or invalid parameters
401Unauthorized — Invalid or missing API key
404Not Found — Resource doesn't exist or isn't yours
500Server Error — Something went wrong on our side

All error responses follow the format: {"error": "description"}

Webhooks

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.

Event Types

dossier.createdA new dossier was created
dossier.processingOSINT processing has started
dossier.completedDossier report is ready
dossier.failedProcessing encountered an error

Payload Format

{
  "event": "dossier.completed",
  "timestamp": "2025-02-27T21:30:00.000Z",
  "data": {
    "id": "uuid",
    "subject_name": "John Doe",
    "status": "completed",
    "confidence": "high"
  }
}

Signature Verification

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)

Retry Policy

  • Deliveries have a 5-second timeout
  • Failed deliveries increment a failure counter
  • After 10 consecutive failures, the webhook is automatically disabled
  • A successful delivery resets the failure counter to 0
  • Re-enable disabled webhooks from the portal or via PATCH

API Endpoints

📋 Changelog

v1.1.02025-02-27
  • Added webhook system — real-time event notifications
  • New webhook management API endpoints
  • Portal webhook configuration page
  • HMAC-SHA256 signature verification for webhook payloads
v1.0.02025-02-15
  • Initial API release
  • Dossier CRUD operations
  • Automated OSINT processing with Sherlock, Maigret, Holehe
  • API key authentication
  • Health check and stats endpoints

Argus Intelligence Platform — Gallione Technologies