Skip to main content
The Indie Security API enables programmatic access to security assessments, findings, and reports.

Base URL

https://api.indiesecurity.com/v1

Authentication

All API requests require a Bearer token in the Authorization header:
curl -X GET 'https://api.indiesecurity.com/v1/targets' \
  -H 'Authorization: Bearer is_live_xxxxxxxxxxxxx'
Keep your API keys secure. Never commit them to version control.

Getting Your API Key

  1. Navigate to DashboardSettingsAPI Keys
  2. Click Generate New Key
  3. Copy and store the key securely
API keys are scoped to your organization. All users share the same key.

Rate Limits

TierRequests/MinuteConcurrent Scans
Free601
Pro3005
EnterpriseUnlimitedUnlimited
Rate limit headers are included in all responses:
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 299
X-RateLimit-Reset: 1640995200

Response Format

All responses are JSON:
{
  "success": true,
  "data": {
    // Response data
  },
  "meta": {
    "request_id": "req_abc123",
    "timestamp": "2024-01-15T10:30:00Z"
  }
}
{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid target_id format",
    "details": {
      "field": "target_id",
      "expected": "UUID v4"
    }
  },
  "meta": {
    "request_id": "req_abc123"
  }
}

Error Codes

CodeHTTP StatusDescription
UNAUTHORIZED401Invalid or missing API key
FORBIDDEN403Insufficient permissions
NOT_FOUND404Resource not found
VALIDATION_ERROR422Invalid request parameters
RATE_LIMITED429Too many requests
SERVER_ERROR500Internal server error

SDKs

Quick Examples

from indiesecurity import Client

client = Client(api_key="is_live_xxx")

# List targets
targets = client.targets.list()

# Start assessment
assessment = client.assessments.create(
    target_id="target_123",
    mode="quick"
)

# Get findings
findings = client.findings.list(target_id="target_123")

Next Steps