API Documentation
Developer documentation for integrating with Insider Risk Index APIs
Overview
Base URL
https://www.insiderisk.ioResponse Format
All API responses are in JSON format unless otherwise specified.
Rate Limiting
Public endpoints: 60 requests per minute
Authenticated endpoints: 120 requests per minute
Authentication
Most endpoints are public. Admin endpoints require API key authentication viaX-API-Key header.
Endpoints
GET
/api/glossaryRetrieve all glossary terms
Response
{
  "terms": [
    {
      "id": "string",
      "term": "string",
      "slug": "string",
      "definition": "string",
      "category": "string",
      "difficulty": "string",
      "pillarRelevance": ["string"],
      "relatedTerms": ["string"]
    }
  ]
}GET
/api/glossary/[slug]Get a specific glossary term by slug
Path Parameters
slug(string)- URL-friendly term identifierResponse
{
  "term": {
    "id": "string",
    "term": "string",
    "slug": "string",
    "definition": "string",
    "category": "string",
    "difficulty": "string",
    "pillarRelevance": ["string"],
    "relatedTerms": ["string"],
    "sources": ["string"]
  }
}GET
/api/matrixFetch Insider Threat Matrix data
Response
{
  "techniques": [
    {
      "id": "string",
      "title": "string",
      "description": "string",
      "category": "motive | coercion | manipulation",
      "preventions": [...],
      "detections": [...],
      "pillarMapping": {...}
    }
  ],
  "lastUpdated": "ISO 8601 timestamp"
}POST
/api/matrix/syncRequired (Admin)
Synchronize Matrix data from ForScie repository
Response
{
  "success": true,
  "message": "Matrix data synchronized",
  "techniques": 50,
  "timestamp": "ISO 8601 timestamp"
}GET
/api/matrix/techniquesSearch and filter Matrix techniques
Query Parameters
category(string)- Filter by category (motive/coercion/manipulation)pillar(string)- Filter by pillar relevancesearch(string)- Search term for title/descriptionResponse
{
  "techniques": [...],
  "total": 50,
  "filtered": 12
}GET
/api/matrix/analysis/[pillar]Get pillar-specific Matrix analysis
Path Parameters
pillar(string)- Pillar ID (visibility/coaching/evidence/identity/phishing)Response
{
  "pillar": "string",
  "techniques": [...],
  "recommendations": [...],
  "statistics": {
    "totalTechniques": 15,
    "byCategory": {...}
  }
}GET
/api/pdf/[id]Generate and download comprehensive PDF report
Path Parameters
id(string)- Assessment ID from databaseResponse
Binary PDF data (application/pdf)GET
/api/ogGenerate Open Graph images
Query Parameters
title(string)- Page titledescription(string)- Page descriptionscore(number)- Risk score (0-100)Response
Binary PNG image (image/png)GET
/api/sitemapGenerate XML sitemap
Response
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://www.insiderisk.io/</loc>
    <lastmod>2025-01-27</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  ...
</urlset>GET
/api/rssRSS feed for research articles
Response
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Insider Risk Index Research</title>
    <link>https://www.insiderisk.io/research</link>
    <description>Latest research and insights</description>
    <item>...</item>
  </channel>
</rss>POST
/api/contactSubmit contact form
Request Body
{
  "name": "string",
  "email": "string",
  "organization": "string (optional)",
  "message": "string",
  "type": "general | support | partnership"
}Response
{
  "success": true,
  "message": "Thank you for contacting us"
}Error Codes
400
Bad Request - Invalid parameters401
Unauthorized - Missing or invalid API key404
Not Found - Resource doesn't exist429
Too Many Requests - Rate limit exceeded500
Internal Server ErrorExample Usage
Fetch Glossary Terms (JavaScript)
fetch('https://www.insiderisk.io/api/glossary')
  .then(response => response.json())
  .then(data => {
    console.log(`Found ${data.terms.length} glossary terms`);
    data.terms.forEach(term => {
      console.log(`- ${term.term}: ${term.definition.substring(0, 50)}...`);
    });
  })
  .catch(error => console.error('Error:', error));Generate PDF Report (Python)
import requests
# Generate a comprehensive PDF using simplified endpoint
assessment_id = "clx123abc456def"  # Must be from database
response = requests.get(
    f'https://www.insiderisk.io/api/pdf/{assessment_id}'
)
if response.status_code == 200:
    with open('insider_risk_comprehensive.pdf', 'wb') as f:
        f.write(response.content)
    print('Comprehensive PDF saved successfully')
elif response.status_code == 410:
    print('Error: Using deprecated PDF endpoint. Use /api/pdf/[id] instead.')
else:
    print(f'Error: {response.status_code}')Search Matrix Techniques (cURL)
curl -X GET "https://www.insiderisk.io/api/matrix/techniques?category=manipulation&pillar=phishing" \
  -H "Accept: application/json"Need Help?
For API support, feature requests, or to report issues:
- • Email: [email protected]
- • GitHub Issues: Report an issue
- • Contact Form: Send us a message