This site is using cookies to manage navigation and other tasks! We are not using any cookies for analytics or marketing purposes. All cookies are deleted when the session times out or you close your browser. You can find more information about this in our Privacy Information!
All API requests must be authenticated using an API key. Include your API key in the request headers:
X-API-Key: your_api_key_here
GET /api/v1/sites?api_key=your_api_key_here
Get API version information, available endpoints, and your permissions.
Response:{
"success": true,
"message": "SIGMA API v1.0",
"data": {
"api_version": "1.0",
"endpoints": {
"GET /api/v1/info": "API information",
"GET /api/v1/sites": "List user sites",
"GET /api/v1/sites/{hostname}": "Get specific site details",
"GET /api/v1/certificates": "List certificates",
"POST /api/v1/scan": "Request scan for a site"
},
"user": "your_username",
"permissions": {
"view_sites": true,
"view_certs": true,
"json_sites": true,
"scan_sites": true
}
},
"timestamp": 1693948800
}
List all sites you're monitoring with their current SSL status.
Parameters:limit
(optional): Maximum number of results (default: 100, max: 1000)grade
(optional): Filter by SSL grade (A+, A, A-, B, C, D, E, F)status
(optional): Filter by status (active, suspended)Get detailed information about a specific site including scan history.
Example Response:{
"success": true,
"data": {
"hostname": "example.com",
"grade": "A",
"utgrade": "A",
"scan_time": 1693948800,
"certificate": {
"issuer": "Let's Encrypt Authority X3",
"valid_from": "2025-01-01 00:00:00",
"valid_to": "2025-04-01 00:00:00",
"days_until_expiry": 89
},
"recent_scans": [...]
}
}
List SSL certificates for your monitored sites with expiration information.
Parameters:expiring_days
(optional): Show certificates expiring within X daysissuer
(optional): Filter by certificate issuer{
"success": true,
"data": [
{
"hostname": "example.com",
"issuer": "Let's Encrypt Authority X3",
"subject": "example.com",
"valid_from": "2025-01-01T00:00:00Z",
"valid_to": "2025-04-01T00:00:00Z",
"days_until_expiry": 89,
"status": "valid"
}
]
}
Request a new SSL scan for one of your monitored sites.
Request Body (JSON):{
"hostname": "example.com",
"force": false
}
{
"success": true,
"message": "Scan queued successfully",
"data": {
"hostname": "example.com",
"scan_id": "abc123",
"queue_position": 3,
"estimated_completion": 1693949400
}
}
curl -X GET "https://sigma.silverday.de/api/v1/info" \
-H "X-API-Key: your_api_key_here" \
-H "Accept: application/json"
curl -X GET "https://sigma.silverday.de/api/v1/sites" \
-H "X-API-Key: your_api_key_here" \
-H "Accept: application/json"
curl -X POST "https://sigma.silverday.de/api/v1/scan" \
-H "X-API-Key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"hostname": "example.com"}'
<?php
class SigmaAPI {
private $baseUrl = 'https://sigma.silverday.de/api/v1/';
private $apiKey;
public function __construct($apiKey) {
$this->apiKey = $apiKey;
}
private function makeRequest($endpoint, $method = 'GET', $data = null) {
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $this->baseUrl . $endpoint,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => $method,
CURLOPT_HTTPHEADER => [
'X-API-Key: ' . $this->apiKey,
'Content-Type: application/json',
'Accept: application/json'
]
]);
if ($data && $method !== 'GET') {
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
}
$response = curl_exec($curl);
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
return [
'status' => $httpCode,
'data' => json_decode($response, true)
];
}
public function getSites($limit = 100) {
return $this->makeRequest("sites?limit=$limit");
}
public function getSite($hostname) {
return $this->makeRequest("sites/" . urlencode($hostname));
}
public function requestScan($hostname, $force = false) {
return $this->makeRequest('scan', 'POST', [
'hostname' => $hostname,
'force' => $force
]);
}
}
// Usage example
$api = new SigmaAPI('your_api_key_here');
$sites = $api->getSites();
if ($sites['status'] === 200 && $sites['data']['success']) {
foreach ($sites['data']['data'] as $site) {
echo "Site: {$site['hostname']} - Grade: {$site['grade']}\n";
}
}
?>
import requests
import json
class SigmaAPI:
def __init__(self, api_key):
self.base_url = 'https://sigma.silverday.de/api/v1/'
self.headers = {
'X-API-Key': api_key,
'Content-Type': 'application/json',
'Accept': 'application/json'
}
def get_sites(self, limit=100):
"""Get list of monitored sites"""
response = requests.get(
f"{self.base_url}sites",
headers=self.headers,
params={'limit': limit}
)
return response.json()
def get_site(self, hostname):
"""Get details for specific site"""
response = requests.get(
f"{self.base_url}sites/{hostname}",
headers=self.headers
)
return response.json()
def request_scan(self, hostname, force=False):
"""Request new scan for site"""
data = {
'hostname': hostname,
'force': force
}
response = requests.post(
f"{self.base_url}scan",
headers=self.headers,
json=data
)
return response.json()
# Usage example
api = SigmaAPI('your_api_key_here')
# Get all sites
sites = api.get_sites()
if sites['success']:
for site in sites['data']:
print(f"Site: {site['hostname']} - Grade: {site['grade']}")
# Request scan for specific site
scan_result = api.request_scan('example.com')
print(scan_result['message'])
class SigmaAPI {
constructor(apiKey) {
this.baseUrl = 'https://sigma.silverday.de/api/v1/';
this.headers = {
'X-API-Key': apiKey,
'Content-Type': 'application/json',
'Accept': 'application/json'
};
}
async makeRequest(endpoint, options = {}) {
const url = this.baseUrl + endpoint;
const config = {
headers: this.headers,
...options
};
try {
const response = await fetch(url, config);
return await response.json();
} catch (error) {
console.error('API request failed:', error);
throw error;
}
}
async getSites(limit = 100) {
return await this.makeRequest(`sites?limit=${limit}`);
}
async getSite(hostname) {
return await this.makeRequest(`sites/${encodeURIComponent(hostname)}`);
}
async requestScan(hostname, force = false) {
return await this.makeRequest('scan', {
method: 'POST',
body: JSON.stringify({
hostname: hostname,
force: force
})
});
}
}
// Usage example
const api = new SigmaAPI('your_api_key_here');
// Get all sites
api.getSites()
.then(result => {
if (result.success) {
result.data.forEach(site => {
console.log(`Site: ${site.hostname} - Grade: ${site.grade}`);
});
}
})
.catch(error => console.error('Error:', error));
// Request scan with async/await
async function scanSite(hostname) {
try {
const result = await api.requestScan(hostname);
console.log(result.message);
} catch (error) {
console.error('Scan request failed:', error);
}
}
All API responses follow a consistent JSON format:
{
"success": true,
"message": "Request completed successfully",
"data": { /* Response data */ },
"timestamp": 1693948800
}
{
"success": false,
"message": "Error description",
"error_code": "INVALID_API_KEY",
"errors": { /* Detailed error information */ },
"timestamp": 1693948800
}
Status Code | Description |
---|---|
200 | OK - Request successful |
400 | Bad Request - Invalid parameters |
401 | Unauthorized - Invalid or missing API key |
403 | Forbidden - Insufficient permissions |
404 | Not Found - Resource not found |
405 | Method Not Allowed - HTTP method not supported |
500 | Internal Server Error - Server error |
Error Code | Description |
---|---|
INVALID_API_KEY | API key is invalid or expired |
INSUFFICIENT_PERMISSIONS | Account lacks required permissions |
SITE_NOT_FOUND | Requested site is not in your account |
SCAN_COOLDOWN | Site scan is on cooldown period |
If you have questions about the API or encounter issues, please:
• Check this documentation first
• Contact our support team
• Visit our FAQ section