Available APIs

All APIs use JSON for request/response bodies and require authentication via API key or OAuth2.

Infrastructure API v1

Manage VMs, Kubernetes clusters, and GPU compute resources

https://api.infrastructure.zone/v1
  • Virtual Machine lifecycle management
  • Kubernetes deployments
  • GPU rental and scheduling
  • Billing and usage metrics

SecretServer API v1

Secure secrets and certificate management

https://api.secretserver.io/v1
  • Secret storage and retrieval
  • Certificate enrollment/renewal
  • SSH and GPG key management
  • Token management

Change Management API v1

Enterprise change request workflows

https://api.afterdarksys.com/changes/v1
  • Ticket CRUD operations
  • Approval workflows
  • Compliance reporting
  • Audit logging

DNS Science API v1

DNS analysis and threat intelligence

https://api.dnsscience.io/v1
  • DNS record lookups
  • Security scanning
  • Reverse WHOIS
  • Threat intelligence feeds

Central Auth API v1

Single sign-on and authentication

https://api.afterdarksys.com/v1
  • OAuth2/OIDC flows
  • User management
  • Session management
  • API key management

System API v1

Infrastructure management APIs

https://api.systemapi.io/v1
  • Server provisioning
  • Configuration management
  • Monitoring endpoints
  • Backup operations

Authentication

API Key Authentication

Pass your API key in the Authorization header:

curl -X GET "https://api.infrastructure.zone/v1/vms" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json"

OAuth2 Authentication

For user-context requests, use OAuth2 with the /oauth/token endpoint:

# Get access token
curl -X POST "https://api.afterdarksys.com/v1/oauth/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials" \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "client_secret=YOUR_CLIENT_SECRET"

# Use access token
curl -X GET "https://api.infrastructure.zone/v1/vms" \
  -H "Authorization: Bearer ACCESS_TOKEN"

Infrastructure API Endpoints

MethodEndpointDescription
GET /vms List all virtual machines
POST /vms Create a new virtual machine
GET /vms/{id} Get VM details
DELETE /vms/{id} Delete a virtual machine
POST /vms/{id}/start Start a VM
POST /vms/{id}/stop Stop a VM
GET /k8s/deployments List Kubernetes deployments
POST /k8s/deployments Create a deployment
GET /gpu/shapes List available GPU shapes
POST /gpu/rentals Rent GPU compute time

SecretServer API Endpoints

MethodEndpointDescription
GET /secrets List all secrets
POST /secrets Create a new secret
GET /secrets/{key} Retrieve a secret value
PUT /secrets/{key} Update a secret
GET /certificates List all certificates
POST /certificates/enroll Request a new certificate
POST /certificates/{id}/renew Renew a certificate
GET /ssh-keys List SSH keys
POST /ssh-keys/generate Generate SSH key pair

Rate Limits & Response Codes

Rate Limits

  • Free tier: 100 requests/hour
  • Starter: 1,000 requests/hour
  • Pro: 10,000 requests/hour
  • Enterprise: Unlimited

Response Codes

  • 200 - Success
  • 201 - Created
  • 400 - Bad Request
  • 401 - Unauthorized
  • 403 - Forbidden
  • 404 - Not Found
  • 429 - Rate Limited
  • 500 - Server Error

SDKs & Client Libraries

Official SDKs are available for popular programming languages:

Python

pip install afterdark-sdk

from afterdark import Client
client = Client(api_key="...")

Node.js

npm install @afterdark/sdk

const { Client } = require('@afterdark/sdk');
const client = new Client({ apiKey: '...' });

Go

go get github.com/afterdark/sdk-go

import "github.com/afterdark/sdk-go"
client := sdk.NewClient("...")