API Reference

Complete reference for OutScope’s REST API.

Base URL

https://api.outscope.es

Authentication

All requests require an API key in the header:

x-api-key: svc_your_key_here

Endpoints

Create Check

POST /v1/check

Create an external visibility check for a domain.

Request Body:

{
  "fqdn": "example.com",
  "ports": [80, 443],
  "paths": ["/", "/api", "/docs"],
  "vantage_point": "eu-west-1",
  "include_content_sample": false,
  "content_retention_days": 7
}

Parameters:

FieldTypeRequiredDescription
fqdnstringYesDomain to check
portsarrayNoTCP ports (default: [80, 443])
pathsarrayNoHTTP paths (default: [”/”])
vantage_pointstringNoRegion to check from
include_content_samplebooleanNoCapture HTTP response
content_retention_daysintegerNoDays to keep content (7-30)

Response (201):

{
  "id": "chk_abc123",
  "fqdn": "example.com",
  "status": "pending",
  "created_at": "2026-04-21T10:00:00Z"
}

Get Check

GET /v1/check/{id}

Retrieve check results by ID.

Response (200):

{
  "id": "chk_abc123",
  "fqdn": "example.com",
  "status": "completed",
  "analysis": {
    "reachable": true,
    "speaks_http": true,
    "analyzable": true,
    "kind": "api",
    "auth_detected": false,
    "api_doc_detected": true
  },
  "dns": {
    "a_records": ["93.184.216.34"],
    "aaaa_records": []
  },
  "ports": [
    {
      "port": 443,
      "tcp_open": true,
      "tls": {
        "valid": true,
        "expires_at": "2027-01-01T00:00:00Z"
      }
    }
  ],
  "paths": [
    {
      "path": "/",
      "status_code": 200,
      "content_type": "application/json"
    }
  ]
}

List Checks

GET /v1/checks

List all checks for your account.

Query Parameters:

ParameterTypeDescription
limitintegerResults per page (default: 30, max: 100)
cursorstringPagination cursor
fqdnstringFilter by domain
statusstringFilter by status (pending, completed, failed)

Response (200):

{
  "data": [
    {
      "id": "chk_abc123",
      "fqdn": "example.com",
      "status": "completed",
      "created_at": "2026-04-21T10:00:00Z"
    }
  ],
  "pagination": {
    "next_cursor": "cur_xyz789",
    "has_more": true
  }
}

Batch Create

POST /v1/checks/batch

Create multiple checks in one request.

Request Body:

{
  "checks": [
    {
      "fqdn": "example1.com",
      "ports": [443]
    },
    {
      "fqdn": "example2.com",
      "ports": [80, 443]
    }
  ]
}

Response (201):

{
  "created": [
    {"id": "chk_abc123", "fqdn": "example1.com"},
    {"id": "chk_abc124", "fqdn": "example2.com"}
  ],
  "stats": {
    "total": 2,
    "created": 2,
    "failed": 0
  }
}

Status Codes

CodeMeaning
200Success
201Created
400Bad Request - Invalid parameters
401Unauthorized - Invalid API key
404Not Found
429Rate Limited - Too many requests
500Internal Server Error

Error Responses

{
  "error": {
    "code": "invalid_request",
    "message": "Invalid FQDN format",
    "details": {
      "field": "fqdn",
      "value": "not-a-valid-domain"
    }
  }
}

Pagination

API uses cursor-based pagination:

# First page
response = client.checks.list(limit=30)

# Next page
if response['pagination']['has_more']:
    next_page = client.checks.list(
        limit=30,
        cursor=response['pagination']['next_cursor']
    )

Webhooks

Configure webhooks to receive notifications when checks complete:

POST /v1/webhooks

{
  "url": "https://your-app.com/webhook",
  "events": ["check.completed", "check.failed"]
}

Need Help?

Can't find what you're looking for? We're here to help.