GET
/
api
/
v1
/
system
/
info
System Information
curl --request GET \
  --url https://spideriq.di-atomic.com/api/v1/system/info \
  --header 'Authorization: Bearer <token>'
{
  "name": "<string>",
  "version": "<string>",
  "description": "<string>",
  "documentation_url": "<string>",
  "supported_job_types": [
    {}
  ],
  "features": {},
  "rate_limits": {},
  "endpoints": {}
}

Overview

Retrieve general information about the SpiderIQ API, including version, supported features, and system capabilities. This endpoint does not require authentication.

Authentication

No authentication required - This endpoint is publicly accessible.

Response

name
string
API service name
version
string
Current API version
description
string
Service description
documentation_url
string
Link to API documentation
supported_job_types
array
List of supported job typesValues:
  • spiderSite - Website scraping
  • spiderMaps - Google Maps scraping
features
object
Available features and capabilities
rate_limits
object
Default rate limit information
endpoints
object
Available API endpoint categories

Example Request

curl https://spideriq.di-atomic.com/api/v1/system/info

Example Response

200 OK
{
  "name": "SpiderIQ API",
  "version": "1.0.0",
  "description": "High-performance web scraping and Google Maps data extraction API",
  "documentation_url": "https://spideriq.di-atomic.com/api",
  "supported_job_types": [
    "spiderSite",
    "spiderMaps"
  ],
  "features": {
    "ai_extraction": {
      "enabled": true,
      "description": "AI-powered content extraction with custom instructions",
      "job_types": ["spiderSite"]
    },
    "screenshot_capture": {
      "enabled": true,
      "description": "Full-page screenshot capture with CDN storage",
      "job_types": ["spiderSite"],
      "storage": "Cloudflare R2"
    },
    "google_maps_api": {
      "enabled": true,
      "description": "Google Maps Places API integration",
      "job_types": ["spiderMaps"]
    },
    "async_processing": {
      "enabled": true,
      "description": "Asynchronous job processing with RabbitMQ"
    },
    "rate_limiting": {
      "enabled": true,
      "description": "Per-client rate limiting"
    }
  },
  "rate_limits": {
    "default_per_minute": 100,
    "burst_allowance": 20,
    "custom_limits_available": true
  },
  "endpoints": {
    "jobs": [
      "/api/v1/jobs/submit",
      "/api/v1/jobs/spiderSite/submit",
      "/api/v1/jobs/spiderMaps/submit",
      "/api/v1/jobs/{id}/status",
      "/api/v1/jobs/{id}/results",
      "/api/v1/jobs/list",
      "/api/v1/jobs/{id}"
    ],
    "system": [
      "/api/v1/system/health",
      "/api/v1/system/queue-stats",
      "/api/v1/system/info"
    ]
  },
  "openapi_spec": "https://spideriq.di-atomic.com/api/v1/openapi.json",
  "contact": {
    "email": "admin@di-atomic.com",
    "support": "https://spideriq.di-atomic.com"
  }
}

Use Cases

Verify API Compatibility

Check if your required features are available:
import requests

def check_feature_support(required_features):
    """Verify required features are supported"""
    url = "https://spideriq.di-atomic.com/api/v1/system/info"
    response = requests.get(url)
    info = response.json()

    features = info.get("features", {})
    missing = []

    for feature in required_features:
        if feature not in features:
            missing.append(feature)
        elif not features[feature].get("enabled", False):
            missing.append(f"{feature} (disabled)")

    if missing:
        print(f"✗ Missing features: {', '.join(missing)}")
        return False
    else:
        print("✓ All required features available")
        return True

# Usage
required = ["ai_extraction", "screenshot_capture"]
check_feature_support(required)

Display API Version

Show API version in your application:
import requests

def get_api_version():
    """Get current API version"""
    url = "https://spideriq.di-atomic.com/api/v1/system/info"
    response = requests.get(url)
    info = response.json()

    return {
        "name": info["name"],
        "version": info["version"],
        "description": info["description"]
    }

# Usage
api_info = get_api_version()
print(f"Using {api_info['name']} v{api_info['version']}")

Generate API Client

Use system info to auto-configure API clients:
import requests

class SpiderIQClient:
    def __init__(self, auth_token):
        self.auth_token = auth_token
        self.base_url = "https://spideriq.di-atomic.com"
        self._load_api_info()

    def _load_api_info(self):
        """Load API capabilities"""
        response = requests.get(f"{self.base_url}/api/v1/system/info")
        info = response.json()

        self.version = info["version"]
        self.supported_job_types = info["supported_job_types"]
        self.features = info["features"]
        self.rate_limit = info["rate_limits"]["default_per_minute"]

        print(f"SpiderIQ API v{self.version} loaded")
        print(f"Supported job types: {', '.join(self.supported_job_types)}")

    def submit_job(self, url, job_type="spiderSite", **kwargs):
        """Submit a job with auto-validation"""
        if job_type not in self.supported_job_types:
            raise ValueError(f"Unsupported job type: {job_type}")

        # Submit job...
        pass

# Usage
client = SpiderIQClient("<your_token>")

Check Job Type Support

Validate job type before submission:
import requests

def is_job_type_supported(job_type):
    """Check if job type is supported"""
    url = "https://spideriq.di-atomic.com/api/v1/system/info"
    response = requests.get(url)
    info = response.json()

    supported = info.get("supported_job_types", [])

    if job_type in supported:
        print(f"✓ {job_type} is supported")
        return True
    else:
        print(f"✗ {job_type} is not supported")
        print(f"Supported types: {', '.join(supported)}")
        return False

# Usage
is_job_type_supported("spiderSite")  # True
is_job_type_supported("spiderImages")  # False

Feature Detection

Check specific feature availability:
async function checkAIExtractionSupport() {
  const response = await fetch(
    'https://spideriq.di-atomic.com/api/v1/system/info'
  );
  const info = await response.json();

  const aiFeature = info.features.ai_extraction;

  if (aiFeature && aiFeature.enabled) {
    console.log('✓ AI extraction is available');
    console.log('Supported for:', aiFeature.job_types.join(', '));
    return true;
  } else {
    console.log('✗ AI extraction is not available');
    return false;
  }
}

// Usage
const hasAI = await checkAIExtractionSupport();
if (hasAI) {
  // Use AI extraction feature
}
Get link to documentation programmatically:
import requests
import webbrowser

def open_documentation():
    """Open API documentation in browser"""
    url = "https://spideriq.di-atomic.com/api/v1/system/info"
    response = requests.get(url)
    info = response.json()

    doc_url = info.get("documentation_url")
    if doc_url:
        print(f"Opening documentation: {doc_url}")
        webbrowser.open(doc_url)
    else:
        print("Documentation URL not available")

# Usage
open_documentation()

Response Fields Explained

Features Object

Each feature includes:
  • enabled - Whether the feature is currently active
  • description - What the feature does
  • job_types - Which job types support this feature (if applicable)
  • Additional fields - Feature-specific metadata

Rate Limits Object

  • default_per_minute - Standard rate limit for all clients
  • burst_allowance - Number of requests allowed in burst
  • custom_limits_available - Whether custom limits can be requested

Endpoints Object

Lists all available endpoints grouped by category:
  • jobs - Job management endpoints
  • clients - Client account endpoints
  • system - System information endpoints

Version Information

Current version: 1.0.0The API follows semantic versioning (MAJOR.MINOR.PATCH).
Breaking changes: Major version changes (e.g., 1.x.x → 2.x.x) may include breaking changes. Monitor this endpoint for version updates.

Best Practices

Cache system info: This data changes infrequently. Cache it for 24 hours to reduce unnecessary requests.
Feature detection: Use feature flags to conditionally enable functionality in your application.
Don’t hardcode: Use this endpoint to discover available features rather than hardcoding assumptions about API capabilities.