API v1 JSON トークン認証 REST

API リファレンス

権限が限定されたAPIトークンでSkysnag向けの統合を構築する。 次の方法で認証 X-Api-Token ヘッダー — Bearer認証ではありません。すべてのレスポンスは予測可能なエラー構造のJSONです。

https://developers.skysnag.com/api/v1
X-Api-Token
sk_snag_…
60 リクエスト/分

クイックスタート

初めての認証されたリクエストまでの3つの手順。

  1. APIへのアクセスを申請APIアクセスリクエスト から送信します。管理者があなたのアカウントでAPIアクセスを有効にします。
  2. スコープ付きトークンを作成APIトークン を開き、スコープを選択して、トークン全体をただちにコピーしてください(1回のみ表示されます)。
  3. 認証済みのリクエストを送信 — すべての保護された呼び出しに X-Api-Token: sk_snag_… を含める。
cURL — ヘルスチェック(認証なし)
curl -s "https://developers.skysnag.com/api/v1/health" \
  -H "Accept: application/json"

Postman コレクション

準備済みのコレクションと環境をインポートして、Postmanでv1のすべてのエンドポイントを探索できます。

  1. コレクションをダウンロードSkysnag-API-v1.postman_collection.json
  2. 環境をダウンロードSkysnag-API-v1.postman_environment.json (このアプリのベースURL https://developers.skysnag.com/api/v1 で事前に入力されています)
  3. 両方のファイルをインポートする を Postman で → インポート → JSONファイルをドラッグするか、参照して選択してください。
  4. トークンを設定してください — 環境で api_tokenAPIトークン からの完全なトークンに設定してください。
  5. リクエストを実行 — まず System → Health、次に Authentication → Get Me

認証

Protected endpoints require a personal API token in a dedicated header. Do not use Authorization: Bearer.

ヘッダー発生時
X-Api-Token Full token (sk_snag_…) 保護されたすべてのエンドポイント
cURL — 認証済みリクエスト
curl -s "https://developers.skysnag.com/api/v1/auth/me" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token_here"
ブラウザでAPIをお試しください

トークンを貼り付けると、下記の 取得 エンドポイントで お試しください コンソールが有効になります(読み取り専用)。リクエストは あなたの本番アカウント に対して https://developers.skysnag.com/api/v1 で実行されます。トークンはこのブラウザ(localStorage)にのみ保存され、この API 以外には一切送信されません。

キーが設定されていません

ベースURLとヘッダー

すべての v1 パスは、下記のベース URL を起点とした相対パスです。

https://developers.skysnag.com/api/v1
https://api.skysnag.com/v1
ヘッダーノート
同意するapplication/json常に
コンテンツタイプapplication/json本文を送信する際
X-Api-Tokenお客様のAPIトークン保護されたエンドポイント
X-Request-IdUUID(任意)ログを相関させる;エラーに反映される

対応

Success payloads are wrapped in a data envelope.

JSON — 成功エンベロープ
{
  "data": { ... }
}
JSON — GET /health
{
  "data": {
    "status": "ok",
    "version": "v1"
  }
}

エラー

Errors return a stable code, human message, and request_id for support.

JSON — エラーエンベロープ
{
  "error": {
    "code": "missing_api_token",
    "message": "API token is required...",
    "request_id": "550e8400-e29b-41d4-a716-446655440000"
  }
}
HTTPコード説明
401APIトークンがありませんX-Api-Token 未提供
401無効なAPIトークントークンが不明、取り消されている、または期限切れです。
403APIアクセスが無効ですアカウントにAPIアクセス権がありません
403APIプランは対象外ですComply またはトライアルプラン — Protect または Suite にアップグレード
403権限不足トークンに必要なスコープがありません
422検証エラー無効なリクエスト本文
404見つかりませんでしたリソースが見つかりません
429HTTPエラーレート制限を超えました
500内部エラー予期しないサーバーエラー

リストのページネーション

List endpoints return pagination metadata alongside data.

パラメータタイプデフォルト説明
ページ整数1ページ番号(1から始まる)
制限整数変わりますページあたりの項目数(最大100)
JSON — ページネーションされたレスポンス
{
  "data": [ ... ],
  "pagination": {
    "page": 1,
    "limit": 25,
    "total": 120,
    "has_more": true
  }
}

レート制限

Each token is limited to 60 requests per minute by default.

上限を超えると、APIはHTTP 429を返します。指数的バックオフを実装してください。より高い制限が必要な場合はサポートにお問い合わせください。

スコープ

トークンにはスコープ付きの権限が付与されます。必要なスコープがないとエンドポイントはリクエストを拒否します。

API v1 scopes

範囲説明
account:readRead account and token metadata
me:readRead current user profile, permissions, domains, and security
me:writeUpdate current user profile
users:readList account users and domain access
users:writeCreate, update, and delete account users
tokens:readList active API tokens
tokens:writeCreate and revoke API tokens
domains:readList and read domains
domains:writeCreate, update, and delete domains

Legacy scopes

既存のトークン(古いインテグレーション)に対して有効です。新しい v1 認証エンドポイントでは不要です。

範囲説明
email-trust:readRead DMARC/SPF/BIMI trust data
reports:readRead aggregate and compliance reports
integrations:readRead integration settings
integrations:writeManage integrations

API リファレンス

現在の v1 の公開エンドポイントに関するドキュメント。

ヘルスチェック

GET /health

公開ヘルスチェック。認証不要。

項目タイプ説明
data.statusstringok に到達可能な場合
data.versionstringAPI バージョン(v1
HTTP
curl -s "https://developers.skysnag.com/api/v1/health" \
  -H "Accept: application/json"
GET /auth/scopes

割り当て可能なスコープをv1legacyでグループ化して返します。認証は不要です。

cURL
curl -s "https://developers.skysnag.com/api/v1/auth/scopes" \
  -H "Accept: application/json"
JSON — レスポンス
{
  "data": {
    "v1": [{"id": "account:read", "description": "...", "group": "v1"}],
    "legacy": [{"id": "domains:read", "description": "...", "group": "legacy"}]
  }
}
GET /auth/me account:read

使用されたトークンに対する認証済みアカウントとメタデータを返します。GET /account のエイリアスです。

cURL
curl -s "https://developers.skysnag.com/api/v1/auth/me" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token_here"

現在のユーザーAPI

認証されたユーザーを読み取りおよび更新します。スキーマ: users、roles、teams、user_regions、domain_accesses、webauthn_credentials、password_securities。

GET /me me:read

現在のユーザープロフィール。

cURL
curl -s "https://developers.skysnag.com/api/v1/me" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token_here"
GET /me/permissions me:read

ユーザーのロールとアカウント設定に基づく実効権限。

cURL
curl -s "https://developers.skysnag.com/api/v1/me/permissions" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token_here"
GET /me/domains me:read

現在のユーザーが閲覧可能なドメインです。pagelimit に対応しています。

cURL
curl -s "https://developers.skysnag.com/api/v1/me/domains?page=1&limit=25" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token_here"
GET /me/security me:read

現在のユーザーのMFAおよびパスキーのセキュリティ状況。

cURL
curl -s "https://developers.skysnag.com/api/v1/me/security" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token_here"
PATCH /me me:write

現在のユーザープロファイルを更新してください。

項目タイプ説明
名前string表示名(最大50文字)
言語string優先言語コード
cURL
curl -s "https://developers.skysnag.com/api/v1/me" \
  -X PATCH \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-Api-Token: sk_snag_your_token_here" \
  -d '{
    "name": "Updated Name"
  }'

ユーザー管理API

アカウントのチームメンバーを管理します。認証されたアカウントがチームの所有者である必要があります。スキーマ: users, roles, teams, domain_accesses, password_securities, webauthn_credentials, user_detail_changes_history.

GET /roles users:read

チームメンバーを招待または更新する際に割り当て可能なロールの一覧です。オーナー、管理者、編集者は除外されます。

GET /roles/{role_id} users:read

割り当て可能な単一のロールの詳細を取得する。

GET /users users:read

現在のチームのアカウントユーザーを一覧表示する。

POST /users users:write

アカウントメンバーへの招待を作成します。デフォルトで招待メールが送信されます。

GET /users/{user_id} users:read

ユーザーの詳細を取得。

PATCH /users/{user_id} users:write

ユーザーの詳細を更新する。

DELETE /users/{user_id} users:write

チームメンバーを削除する。

PATCH /users/{user_id}/status users:write

ユーザーのステータスを切り替えます。本文:{"enabled": true}

PATCH /users/{user_id}/role users:write

ロールを変更します。本文:{"role_id": 5}

PATCH /users/{user_id}/enforce-2fa users:write

二要素認証(2FA)の適用を切り替えます。本文: {"enabled": true}

POST /users/{user_id}/reinvite-user users:write

既存のチームメンバーにアカウント招待メールを再送信する。

GET /users/{user_id}/domains users:read

ユーザーのドメインアクセスを一覧表示する。

ドメイン管理API

アカウントのドメインを管理します。書き込み操作にはチームオーナーのアカウントが必要です。スキーマ: domains, domain_groups, domain_accesses, domain_states, domain_snapshot, parked_domains, license_domain, domains_services, cloudflare_records.

GET /domains domains:read

アカウントから見えるドメインを一覧表示します。pagelimit をサポートします。

POST /domains domains:write

ドメインを作成します。本文: {"fqdn": "example.com", "parent_domain_id": null}

POST /domains/bulk domains:write

ドメインを一括追加。本文: {"domains": ["example.com", "example.org"]}。ジョブIDを返します。

GET /domains/bulk/{job_id} domains:read

一括追加ジョブのステータスとドメイン別の結果を取得する。

GET /domains/{domain_id} domains:read

DNSと検証ステータスを含むドメインの詳細を取得する。

PATCH /domains/{domain_id} domains:write

ドメインのメタデータを編集(グループ、ステータス、オンボーディングステータス、親ドメイン)

DELETE /domains/{domain_id} domains:write

ドメインと関連するホストレコードを削除する。

POST /domains/{domain_id}/verify domains:write

ドメインのDNSレコードを検証します。任意の本文フィールド:dmarc_recordspf_recordbimi_recordtls_rpt_recordmta_sts_record

POST /domains/{domain_id}/check-dns domains:write

DNSフェッチ/チェックを実行し、結果を保存して後で取得できるようにする。

GET /domains/{domain_id}/dns-fetch-result domains:read

7日間キャッシュされる、check-dns によって保存された最新の DNS 取得結果を取得します。check-dns のレスポンス本文には既に完全な結果が含まれているため、チェックを再実行せずに後でこのエンドポイントから取得できます。

GET /domains/{domain_id}/status domains:read

プロトコル検証ステータスを取得(DMARC、SPF、MTA-STS、TLS-RPT、BIMI)。

GET /domains/{domain_id}/services domains:read

添付されたメール送信サービスを取得する。

PATCH /domains/{domain_id}/services domains:write

添付されたサービスを置き換えます。本文: {"service_ids": [1, 2]}

ドメイングループAPI

ドメインをグループにまとめます。グループはアカウントチームが所有しており、書き込み操作にはチームオーナーが必要です。

GET /domain-groups domains:read

アカウントのドメイングループをドメイン数とともに一覧表示する。

POST /domain-groups domains:write

ドメイングループを作成します。本文: {"name": "Production", "status": "active"} (status は省略可).

GET /domain-groups/{group_id} domains:read

単一のドメイングループを取得する。

PATCH /domain-groups/{group_id} domains:write

ドメイングループを編集します。本文: {"name": "New name", "status": "active"}(いずれも任意)。

DELETE /domain-groups/{group_id} domains:write

ドメイングループを削除します。メンバーのドメインはグループから外されますが、削除はされません。

GET /domain-groups/{group_id}/domains domains:read

グループ内のドメインを一覧表示(ページネーション)

POST /domain-groups/{group_id}/domains domains:write

グループにドメインを追加します。本文: {"domain_id": 123}.

DELETE /domain-groups/{group_id}/domains/{domain_id} domains:write

グループからドメインを削除する(そのドメインはグループに属さなくなります)

ホステッドDMARC API

SkysnagでホストされているDMARCのDNSレコード、適用ポリシー、履歴、およびドメイン向けの推奨事項を管理します。書き込み操作にはチームのオーナー権限が必要です。

GET /domains/{domain_id}/hosted-dmarc domains:read

ホストされたレコードの名前、値、有効化状態、現在のポリシーを返します。

POST /domains/{domain_id}/hosted-dmarc domains:write

ドメイン用の Skysnag ホストの DMARC TXT レコードを設定する。

PATCH /domains/{domain_id}/hosted-dmarc domains:write

高度なDMARCタグを更新:psppctadkimaspfruarufなど。

DELETE /domains/{domain_id}/hosted-dmarc domains:write

Skysnag の DNS からホストされている DMARC レコードを削除する。

GET /domains/{domain_id}/dmarc-policy domains:read

有効なDMARCポリシーと解析済みのタグ設定を確認してください。

PATCH /domains/{domain_id}/dmarc-policy domains:write

適用のみを更新します。本文:{"policy": "quarantine"} または {"p": "reject"}

GET /domains/{domain_id}/dmarc/history domains:read

アクティビティログとDMARCのスナップショット。pageおよびlimitに対応しています。

POST /domains/{domain_id}/dmarc/recommendation domains:read

整合状況の統計と監視期間に基づく推奨の強制レベル

ホステッドSPF API

SkysnagでホストされているSPFレコード、include(インクルード)、IP承認アクション、およびドメインのフラッテンを管理します。書き込み操作にはチーム所有者が必要です。

GET /domains/{domain_id}/hosted-spf domains:read

ホストされている SPF レコードの名前/値、ドメインに公開するレコード、有効化状態、末尾の all クオリファイア、およびルックアップ数を返します。

POST /domains/{domain_id}/hosted-spf domains:write

ドメイン用にSkysnagがホストするSPFレコードをプロビジョニングしてください。

PATCH /domains/{domain_id}/hosted-spf domains:write

詳細な SPF 設定を編集します。本文: {"all": "~all"}(次のいずれかのオプション: -all~all?all+all)。

DELETE /domains/{domain_id}/hosted-spf domains:write

ホストされたSPFを無効にし、SkysnagのDNSからレコードを削除してください。

GET /domains/{domain_id}/spf/history domains:read

SPFのアクティビティログとレコードのスナップショット。pagelimitに対応します。

GET /domains/{domain_id}/spf/includes domains:read

ドメインに設定されているSPFのincludeを一覧表示する。

POST /domains/{domain_id}/spf/includes domains:write

SPFのincludeを追加します。本文: {"include_content": "_spf.google.com"}

DELETE /domains/{domain_id}/spf/includes/{include_id} domains:write

ホストされているレコードから SPF の include を削除する。

GET /domains/{domain_id}/spf/ip-actions domains:read

SPFのIP承認アクション一覧(許可 / 拒否)

POST /domains/{domain_id}/spf/ip-actions domains:write

IPを許可またはブロックします。Body: {"ip": "203.0.113.10", "type": "Allow"} (type = Allow または Reject)。

POST /domains/{domain_id}/spf/flatten domains:read

インクルードをIPレンジに展開して、フラット化されたSPFレコードを生成します。フラット化されたレコード、IPv4/IPv6の一覧、およびDNSルックアップ数と制限の比較を返します。

BIMI / VMC の API

BIMIレコード、SVGロゴ、VMC証明書、および準備チェックを管理します。書き込み操作にはチームのオーナー権限が必要です。

GET /bimi/registrations account:read

アカウントチーム向けのパートナーBIMI登録リクエストを一覧表示する。

GET /domains/{domain_id}/bimi domains:read

BIMIレコードの詳細、DNSターゲット、ロゴ/VMCの状態、およびSVG検査結果を返します。

POST /domains/{domain_id}/bimi domains:write

ドメインにホストされたBIMIをプロビジョニングする。

PATCH /domains/{domain_id}/bimi domains:write

BIMI を再同期または編集します。アップロードされたファイルから再公開するか、手動で上書きするには record_value を渡してください。

DELETE /domains/{domain_id}/bimi domains:write

BIMI の設定、ホストされたファイル、および Route53 レコードを削除します。

POST /domains/{domain_id}/bimi/svg-convert domains:read

BIMI Tiny PS用のSVGを変換して検証します。本文: {"svg_content": "<svg...>"}

GET /domains/{domain_id}/bimi/vmc domains:read

完全なVMC解析(DNS、証明書チェーン、検証)。キャッシュを回避するには、クエリにrefresh=trueを追加してください。

POST /domains/{domain_id}/bimi/vmc/inspect domains:read

PEM証明書をアップロードせずに検査する。本文: {"pem": "-----BEGIN CERTIFICATE-----..."}

GET /domains/{domain_id}/bimi/readiness domains:read

BIMI/VMC の準備チェックリスト(スコア、プロトコルの状態、各チェックの合否)

MTA-STSのAPI

ドメインのホストされた MTA-STS と TLS-RPT を管理します。書き込み操作にはチームのオーナー権限が必要です。

GET /domains/{domain_id}/mta-sts domains:read

MTA-STS のステータス、ポリシーモード、顧客の CNAME 対象、ホストされている DNS レコード、および同期チェックのメタデータを返します。

GET /domains/{domain_id}/mta-sts/web-file domains:read

https://mta-sts.{domain}/.well-known/mta-sts.txt で提供される MTA-STS ポリシーファイルの内容を返します。

POST /domains/{domain_id}/mta-sts/setup domains:write

ホストされた MTA-STS および TLS-RPT レコードをプロビジョニングします。必要に応じて、ライブの MX レコードからデフォルトポリシー(mode: none)を作成します。

PATCH /domains/{domain_id}/mta-sts/policy domains:write

MTA-STSポリシーを更新します。生のpolicyテキスト、または構造化されたフィールド(modemax_age、および任意のmxホスト名)を指定してください。

PATCH /domains/{domain_id}/mta-sts/mode domains:write

ポリシーモードのみを更新します。本文: {\"mode\": \"none|testing|enforce\"}。MXレコードはライブDNSから更新されます。

POST /domains/{domain_id}/mta-sts/reset domains:write

ポリシーを既定値にリセット: mode: none、現在のMXレコード、max_age: 604800

POST /domains/{domain_id}/mta-sts/check domains:read

MTA-STS と TLS-RPT の検証をチェッカーサービスで実行します。オプションのボディ:verify_dnsrequire_caadeploy_policy(DNS を検証する場合のデフォルトは true)。

TLS-RPTのAPI

ホストされた TLS-RPT を構成し、受信した TLS レポートを照会します。書き込み操作にはチームのオーナー権限が必要です。

GET /domains/{domain_id}/tls-rpt domains:read

TLS-RPT の構成、DNS ターゲット、検証ステータス、総レポート数を返します。

POST /domains/{domain_id}/tls-rpt/setup domains:write

Route53でホストされたTLS-RPTをSkysnagのレポート先アドレスでプロビジョニングする。

PATCH /domains/{domain_id}/tls-rpt domains:write

ホストされた TLS-RPT レコードを再公開します。任意の本文: record_valuev=TLSRPTv1で始まる必要があります)。

GET /domains/{domain_id}/tls-rpt/reports domains:read

ページネーションされたTLSレポート。フィルター:policy_domainpolicy_modestart_dateend_date

GET /domains/{domain_id}/tls-rpt/reports/{report_id} domains:read

データベースIDまたはレポートUUIDで単一のTLSレポートを取得する。

GET /domains/{domain_id}/tls-rpt/by-source domains:read

送信MTAのIPごとにグループ化されたTLSセッションを集計します。同じ日付およびポリシーフィルターをサポートします。

GET /domains/{domain_id}/tls-rpt/by-result domains:read

TLSの結果タイプ別に失敗したセッションを集計する。

GET /domains/{domain_id}/tls-rpt/failures domains:read

TLSの失敗概要(成功/失敗の合計および失敗理由コード別の内訳)

GET /domains/{domain_id}/tls-rpt/failure-details domains:read

TLSでの失敗があるページングされた行(失敗数が0ではない、または失敗理由コードがある)

ドメインの健全性とセキュリティスコア API

Read-only domain health, email security score, mail volume, sending services, failing sources, and cached dashboard data. All endpoints are scoped to {domain_id} and require domains:read. Volume/source endpoints accept optional start_date/end_date (YYYY-MM-DD, default last 30 days).

ドメインの健全性を取得

get /domains/{domain_id}/health domains:read

現在のドメイン健全性スナップショット:プロトコルごとの合否マップ、定性的なresultラベル、検出されたメールプロバイダ、およびライブのDMARCレコード。最新のDomain Guardスキャンを基にし、スキャンがない場合はライブ検証フラグにフォールバックします(どちらかはsourceで確認できます)。

返品

source (guard_history | live), result, mail_provider, protocols のブール値マップ、protocols_passing/total_protocols, dmarc_record および scanned_at.
curl -s "https://developers.skysnag.com/api/v1/domains/123/health" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
応答
{
  "data": {
    "domain_id": 123,
    "fqdn": "example.com",
    "source": "guard_history",
    "result": "Protected",
    "mail_provider": "Google Workspace",
    "protocols": {
      "dmarc": true,
      "spf": true,
      "mta_sts": true,
      "tls_rpt": true,
      "bimi": false
    },
    "protocols_passing": 4,
    "total_protocols": 5,
    "dmarc_record": "v=DMARC1; p=reject; rua=mailto:rua@example.com",
    "scanned_at": "2026-06-16T03:00:00Z"
  }
}

システムの状態履歴を取得

get /domains/{domain_id}/health/history domains:read

Domain Guard のヘルススナップショットのページネーションされた履歴(新しいものが先)。各行はスキャン時点のプロトコルの合否状態と結果ラベルを記録しており、時間経過に伴う保護状況を可視化できます。

クエリパラメータ

  • start_date: 任意 string · date

    ウィンドウ開始(含む)(YYYY-MM-DD)。デフォルトは30日前です。

  • end_date: 任意 string · date

    終了日(含む)(YYYY-MM-DD)。既定値は本日です。

  • page: 任意 integer

    ページ番号(1始まり、デフォルト: 1)

  • limit: 任意 integer

    ページあたりの項目数 (1–100, 既定値 25)。

返品

スナップショット行のページネーションされた配列(idresultmail_providerprotocols のマップ、protocols_passing/total_protocolsscanned_at)と、pagination
curl -s "https://developers.skysnag.com/api/v1/domains/123/health/history?page=1&limit=25" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
応答
{
  "data": [
    {
      "id": 8841,
      "result": "Protected",
      "mail_provider": "Google Workspace",
      "protocols": { "dmarc": true, "spf": true, "mta_sts": true, "tls_rpt": true, "bimi": false },
      "protocols_passing": 4,
      "total_protocols": 5,
      "scanned_at": "2026-06-16T03:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 25,
    "total": 312,
    "has_more": true
  }
}

セキュリティスコアを取得

get /domains/{domain_id}/security-score domains:read

現在のメールセキュリティスコア(0–10)と、人間が読める解釈およびメッセージ。外部チェッカーのキャッシュされた結果からオンデマンドで算出されるため、キャッシュミス後の最初の呼び出しは遅くなる場合があります。計算できない場合は 503 score_unavailable を返します。

返品

scoremax_score(10)、interpretation(例: excellent)、messageおよびcomputed_at
curl -s "https://developers.skysnag.com/api/v1/domains/123/security-score" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
応答
{
  "data": {
    "domain_id": 123,
    "fqdn": "example.com",
    "score": 9,
    "max_score": 10,
    "interpretation": "excellent",
    "message": "Your domain is well protected against spoofing and phishing.",
    "computed_at": "2026-06-16T12:30:00Z"
  }
}

セキュリティスコアの履歴を取得

get /domains/{domain_id}/security-score/history domains:read

Domain Guard のスナップショットから算出される派生セキュリティスコア系列で、derived_score = passing protocols / 5 × 10です。フルの live-checker スコアが不要な場合のトレンド線に使用してください。

クエリパラメータ

  • start_date: 任意 string · date

    ウィンドウ開始(含む)(YYYY-MM-DD)。デフォルトは30日前です。

  • end_date: 任意 string · date

    終了日(含む)(YYYY-MM-DD)。既定値は本日です。

  • limit: 任意 integer

    返される最大行数(1~100、デフォルト: 10)。

返品

max_score、説明用のnote、およびデータ点の配列であるhistoryderived_scoreprotocols_passing/total_protocolsresultscanned_at)。
curl -s "https://developers.skysnag.com/api/v1/domains/123/security-score/history?limit=30" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
応答
{
  "data": {
    "domain_id": 123,
    "fqdn": "example.com",
    "max_score": 10,
    "note": "Derived from Domain Guard protocol coverage.",
    "history": [
      {
        "derived_score": 8,
        "protocols_passing": 4,
        "total_protocols": 5,
        "result": "Protected",
        "scanned_at": "2026-06-16T03:00:00Z"
      }
    ]
  }
}

メール量を取得

get /domains/{domain_id}/mail-volume domains:read

DMARCの集計データに基づく日次メール量履歴:配信/隔離/拒否の件数と日別のDMARC合否、さらに期間全体の集計合計。

クエリパラメータ

  • start_date: 任意 string · date

    ウィンドウ開始(含む)(YYYY-MM-DD)。デフォルトは30日前です。

  • end_date: 任意 string · date

    終了日(含む)(YYYY-MM-DD)。既定値は本日です。

返品

totals オブジェクトと timeline 配列で、それぞれのエントリは date をキーに持ち、ボリュームと合格/不合格の件数を含みます。
curl -s "https://developers.skysnag.com/api/v1/domains/123/mail-volume?start_date=2026-05-01&end_date=2026-06-01" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
応答
{
  "data": {
    "domain_id": 123,
    "fqdn": "example.com",
    "start_date": "2026-05-01",
    "end_date": "2026-06-01",
    "totals": {
      "total": 18432,
      "delivered": 18010,
      "quarantined": 280,
      "rejected": 142,
      "dmarc_pass": 17980,
      "dmarc_fail": 452
    },
    "timeline": [
      {
        "date": "2026-06-01",
        "total": 612,
        "delivered": 600,
        "quarantined": 8,
        "rejected": 4,
        "dmarc_pass": 600,
        "dmarc_fail": 12
      }
    ]
  }
}

送信サービス一覧

get /domains/{domain_id}/sending-services domains:read

ボリューム、DMARCメトリクス、complianceの割合、およびstatuscompliantpartialfailingのいずれか)を含む送信元を送信します。is_registered_threatフラグは、既知の悪意ある送信元を示します。

クエリパラメータ

  • start_date: 任意 string · date

    ウィンドウ開始(含む)(YYYY-MM-DD)。デフォルトは30日前です。

  • end_date: 任意 string · date

    終了日(含む)(YYYY-MM-DD)。既定値は本日です。

  • limit: 任意 integer

    返される最大行数(1~100、デフォルト: 10)。

返品

services の配列で、それぞれに source_nameメトリクスオブジェクトcompliancestatus、および is_registered_threat が含まれます。
curl -s "https://developers.skysnag.com/api/v1/domains/123/sending-services?limit=10" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
応答
{
  "data": {
    "domain_id": 123,
    "fqdn": "example.com",
    "services": [
      {
        "source_name": "Google",
        "total_count": 12040,
        "dmarc": { "pass": 12010, "fail": 30 },
        "compliance": 99.75,
        "status": "compliant",
        "is_registered_threat": false
      }
    ]
  }
}

失敗したソースを一覧表示

get /domains/{domain_id}/failed-sources domains:read

指定期間内にDMARCの整合(アラインメント)に失敗した送信元を、失敗数の多い順に表示しています。これらは調査の最優先対象です — 認証の修正が必要な正当な送信者、またはなりすまし送信者のいずれかです。

クエリパラメータ

  • start_date: 任意 string · date

    ウィンドウ開始(含む)(YYYY-MM-DD)。デフォルトは30日前です。

  • end_date: 任意 string · date

    終了日(含む)(YYYY-MM-DD)。既定値は本日です。

  • limit: 任意 integer

    返される最大行数(1~100、デフォルト: 10)。

返品

sending-servicesと同じ構造のfailed_sourcesの配列で、失敗量の多い順(降順)に並べられています。
curl -s "https://developers.skysnag.com/api/v1/domains/123/failed-sources?limit=10" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
応答
{
  "data": {
    "domain_id": 123,
    "fqdn": "example.com",
    "failed_sources": [
      {
        "source_name": "Unknown",
        "total_count": 420,
        "dmarc": { "pass": 0, "fail": 420 },
        "compliance": 0,
        "status": "failing",
        "is_registered_threat": true
      }
    ]
  }
}

ダッシュボードのキャッシュを取得

get /domains/{domain_id}/dashboard-cache domains:read

ドメインの事前計算済みダッシュボードスナップショットのペイロードを返します(存在する場合)。これは集計を再計算せずにダッシュボードをレンダリングする最速の方法です。スナップショットが存在しない場合、cachedfalseで、datanullです。

クエリパラメータ

  • start_date: 任意 string · date

    ウィンドウ開始(含む)(YYYY-MM-DD)。デフォルトは30日前です。

  • end_date: 任意 string · date

    終了日(含む)(YYYY-MM-DD)。既定値は本日です。

返品

cached(ブール値)、cached_at、要求されたウィンドウ、およびスナップショットのdataペイロード(またはnull)。
curl -s "https://developers.skysnag.com/api/v1/domains/123/dashboard-cache" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
応答
{
  "data": {
    "domain_id": 123,
    "fqdn": "example.com",
    "cached": true,
    "cached_at": "2026-06-16T03:05:00Z",
    "start_date": "2026-05-17",
    "end_date": "2026-06-16",
    "data": { "summary": { "total_count": 18432 } }
  }
}

DNSタイムラインAPI

Read-only DNS connect/disconnect timeline, current records, record-value history, change events, and stored snapshots. All endpoints are scoped to {domain_id} and require domains:read. Filterable by record_type and start_date/end_date (YYYY-MM-DD).

DNSのタイムラインを取得

get /domains/{domain_id}/dns/timeline domains:read

プロトコルごとのステータスの概要(現在のステータス、最後の接続/切断のタイムスタンプ、接続数)と、最新の接続/切断のイベント。これは各プロトコルのレコードが時間経過でどのように接続・切断されてきたかを示す概要表示です。

クエリパラメータ

  • record_type: 任意 string

    イベントをdmarcspfmta_ststls_rptbimiのいずれかで絞り込む。

  • action: 任意 string

    フィルターをconnectedまたはdisconnectedに設定。

  • start_date: 任意 string · date

    ウィンドウ開始(含む)(YYYY-MM-DD)。デフォルトは30日前です。

  • end_date: 任意 string · date

    終了日(含む)(YYYY-MM-DD)。既定値は本日です。

  • limit: 任意 integer

    返される最大行数(1~100、デフォルト: 10)。

返品

プロトコルをキーとしたsummaryと、events配列(idrecord_typeactionrecord_valuestatus_before/status_afteroccurred_at)。
curl -s "https://developers.skysnag.com/api/v1/domains/123/dns/timeline?limit=50" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
応答
{
  "data": {
    "domain_id": 123,
    "fqdn": "example.com",
    "summary": {
      "dmarc": {
        "current_status": "connected",
        "last_connected": "2026-05-02T10:15:00Z",
        "last_disconnected": null,
        "connection_count": 2,
        "disconnection_count": 1
      }
    },
    "events": [
      {
        "id": 5521,
        "record_type": "dmarc",
        "action": "connected",
        "record_value": "v=DMARC1; p=reject; rua=mailto:rua@example.com",
        "status_before": "disconnected",
        "status_after": "connected",
        "occurred_at": "2026-05-02T10:15:00Z"
      }
    ]
  }
}

現在のDNSを取得

get /domains/{domain_id}/dns/current domains:read

各プロトコルレコードの現在の状態:接続ステータス、検証フラグ、最終接続/切断のタイムスタンプ、および最新の既知レコード値。SPFはさらにDNSのlookup_countを報告します(有効性には10回のDNSルックアップ上限が影響します)。

返品

プロトコルをキーとするprotocolsマップで、それぞれにcurrent_statusverifiedstatuslast_connected/last_disconnected、およびrecord_valueが含まれます。
curl -s "https://developers.skysnag.com/api/v1/domains/123/dns/current" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
応答
{
  "data": {
    "domain_id": 123,
    "fqdn": "example.com",
    "protocols": {
      "dmarc": {
        "current_status": "connected",
        "verified": true,
        "status": "valid",
        "last_connected": "2026-05-02T10:15:00Z",
        "last_disconnected": null,
        "record_value": "v=DMARC1; p=reject; rua=mailto:rua@example.com"
      },
      "spf": {
        "current_status": "connected",
        "verified": true,
        "record_value": "v=spf1 include:_spf.google.com -all",
        "lookup_count": 3
      }
    }
  }
}

DNS履歴を取得

get /domains/{domain_id}/dns/history domains:read

レコードのを一元化してページ分割した時系列の履歴 — DMARC と SPF のスナップショットを統合し、各時点で各レコードが何を含んでいたかを正確に確認できます。SPF 行には lookup_count が含まれます。

クエリパラメータ

  • record_type: 任意 string

    dmarc または spf に限定(デフォルトは両方)。

  • start_date: 任意 string · date

    ウィンドウ開始(含む)(YYYY-MM-DD)。デフォルトは30日前です。

  • end_date: 任意 string · date

    終了日(含む)(YYYY-MM-DD)。既定値は本日です。

  • page: 任意 integer

    ページ番号(1始まり、デフォルト: 1)

  • limit: 任意 integer

    ページあたりの項目数 (1–100, 既定値 25)。

返品

ページネーションされた履歴行の配列(record_typerecord_valueoccurred_at。SPFの場合はlookup_countが追加)とpagination
curl -s "https://developers.skysnag.com/api/v1/domains/123/dns/history?record_type=spf&page=1&limit=25" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
応答
{
  "data": [
    {
      "record_type": "spf",
      "record_value": "v=spf1 include:_spf.google.com -all",
      "lookup_count": 3,
      "occurred_at": "2026-05-02T10:15:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 25,
    "total": 312,
    "has_more": true
  }
}

DNSの変更を一覧表示

get /domains/{domain_id}/dns/changes domains:read

すべてのプロトコルにわたる接続/切断の変更イベントをページ分割されたフィードで、状態遷移(status_beforestatus_after)と共に表示します。DNSの健全性を監査スタイルで確認するアクティビティフィードに使用してください。

クエリパラメータ

  • record_type: 任意 string

    次のいずれか: dmarcspfmta_ststls_rptbimi

  • action: 任意 string

    フィルターをconnectedまたはdisconnectedに設定。

  • start_date: 任意 string · date

    ウィンドウ開始(含む)(YYYY-MM-DD)。デフォルトは30日前です。

  • end_date: 任意 string · date

    終了日(含む)(YYYY-MM-DD)。既定値は本日です。

  • page: 任意 integer

    ページ番号(1始まり、デフォルト: 1)

  • limit: 任意 integer

    ページあたりの項目数 (1–100, 既定値 25)。

返品

ページネーションされた変更イベントの配列(idrecord_typeactionrecord_valuestatus_before/status_afteroccurred_at)とpagination
curl -s "https://developers.skysnag.com/api/v1/domains/123/dns/changes?action=disconnected&page=1&limit=25" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
応答
{
  "data": [
    {
      "id": 5520,
      "record_type": "spf",
      "action": "disconnected",
      "record_value": null,
      "status_before": "connected",
      "status_after": "disconnected",
      "occurred_at": "2026-04-28T08:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 25,
    "total": 312,
    "has_more": true
  }
}

DNSスナップショットを一覧表示

get /domains/{domain_id}/dns/snapshots domains:read

レコードタイプごとにグループ化された、生の保存済みスナップショット行。/dns/history(マージしてページングする)とは異なり、これは基となる dmarcspf のスナップショット配列を個別に返します。

クエリパラメータ

  • record_type: 任意 string

    dmarc または spf に限定(デフォルトは両方)。

  • start_date: 任意 string · date

    ウィンドウ開始(含む)(YYYY-MM-DD)。デフォルトは30日前です。

  • end_date: 任意 string · date

    終了日(含む)(YYYY-MM-DD)。既定値は本日です。

  • limit: 任意 integer

    返される最大行数(1~100、デフォルト: 10)。

返品

スナップショット行のdmarc配列とspf配列(idrecord_valueoccurred_at; SPF は lookup_count を追加)。
curl -s "https://developers.skysnag.com/api/v1/domains/123/dns/snapshots?limit=50" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
応答
{
  "data": {
    "domain_id": 123,
    "fqdn": "example.com",
    "dmarc": [
      {
        "id": 331,
        "record_value": "v=DMARC1; p=reject; rua=mailto:rua@example.com",
        "occurred_at": "2026-05-02T10:15:00Z"
      }
    ],
    "spf": [
      {
        "id": 902,
        "record_value": "v=spf1 include:_spf.google.com -all",
        "lookup_count": 3,
        "occurred_at": "2026-05-02T10:15:00Z"
      }
    ]
  }
}

監査ログ API

Read-only account API audit logs — every mutating API request (POST/PUT/PATCH/DELETE) plus sensitive reads are recorded with method, path, status, IP, token, and timestamp. Scoped to the token owner's account and require the account:read scope.

The audit log object

このセクションのすべてのエンドポイントは、この形の行を返します。 action は操作を示す安定した、人間が読めるラベルです。 request_id は元の呼び出しのレスポンスエンベロープ内にエコーされた request_id と一致します。

監査ログオブジェクト
{
  "id": 90122,
  "request_id": "req_8f2c1a4e",
  "action": "domain.hosted_spf.update",
  "method": "PATCH",
  "path": "/api/v1/domains/123/hosted-spf",
  "status_code": 200,
  "ip_address": "203.0.113.24",
  "token_id": 12,
  "token_name": "CI deploy token",
  "user_id": 45,
  "team_id": 9,
  "created_at": "2026-06-16T11:02:33Z"
}

監査ログを一覧表示

get /audit-logs account:read

アカウントの監査ログをページ分割で表示(最新順)。フィルターを組み合わせてフィードを絞り込めます — 例:特定の日付範囲内の失敗した書き込みすべて。

クエリパラメータ

  • method: 任意 string

    HTTP メソッド(例: POST)。

  • action: 任意 string

    正確なアクションラベル(例: domain.hosted_spf.update)。

  • path: 任意 string

    リクエストパスに対する部分文字列一致。

  • status_code: 任意 integer

    正確なHTTPステータス(例: 200)。

  • status_class: 任意 string

    ステータスの分類: 2xx, 3xx, 4xx, 5xx.

  • ip_address: 任意 string

    クライアントの正確なIPアドレス

  • token_id: 任意 integer

    単一のAPIトークンに絞り込む。

  • q: 任意 string

    アクション、パス、IPを対象としたフリーテキスト検索。

  • start_date: 任意 string · date

    ウィンドウ開始 (含む) (YYYY-MM-DD).

  • end_date: 任意 string · date

    終了日(含む) (YYYY-MM-DD).

  • page: 任意 integer

    ページ番号(既定値: 1)。

  • limit: 任意 integer

    ページあたりの項目数 (1–100, 既定値 25)。

返品

ページネーションされた監査ログオブジェクトの配列とpaginationオブジェクト。
curl -s "https://developers.skysnag.com/api/v1/audit-logs?page=1&limit=25" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
応答
{
  "data": [
    {
      "id": 90122,
      "request_id": "req_8f2c1a4e",
      "action": "domain.hosted_spf.update",
      "method": "PATCH",
      "path": "/api/v1/domains/123/hosted-spf",
      "status_code": 200,
      "ip_address": "203.0.113.24",
      "token_id": 12,
      "token_name": "CI deploy token",
      "user_id": 45,
      "team_id": 9,
      "created_at": "2026-06-16T11:02:33Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 25,
    "total": 312,
    "has_more": true
  }
}

監査ログを取得

get /audit-logs/{log_id} account:read

IDで単一の監査ログ(Audit Log)エントリを取得します。アカウントにスコープされています。該当のエントリが認証済みのアカウントに属さない場合は、404 not_found を返します。

パスパラメータ

  • log_id: 必須 integer

    監査ログエントリのID。

返品

単一の監査ログオブジェクト
curl -s "https://developers.skysnag.com/api/v1/audit-logs/90122" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
応答
{
  "data": {
    "id": 90122,
    "request_id": "req_8f2c1a4e",
    "action": "domain.hosted_spf.update",
    "method": "PATCH",
    "path": "/api/v1/domains/123/hosted-spf",
    "status_code": 200,
    "ip_address": "203.0.113.24",
    "token_id": 12,
    "token_name": "CI deploy token",
    "user_id": 45,
    "team_id": 9,
    "created_at": "2026-06-16T11:02:33Z"
  }
}

トークン管理

GET /auth/tokens tokens:read

アカウントの有効なトークンを一覧表示します。pagelimit をサポートします。

cURL
curl -s "https://developers.skysnag.com/api/v1/auth/tokens?page=1&limit=25" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token_here"
POST /auth/tokens tokens:write

トークンを作成します。完全な値はdata.plain_textで一度だけ返されます。

項目タイプ説明
名前 必須stringトークンのラベル
スコープ 必須文字列の配列GET /auth/scopes から
有効期限はあと{n}日です整数任意 1〜365日
cURL
curl -s "https://developers.skysnag.com/api/v1/auth/tokens" \
  -X POST \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-Api-Token: sk_snag_your_token_here" \
  -d '{
    "name": "CI token",
    "scopes": ["account:read"],
    "expires_in_days": 90
  }'