ヘルスチェック
公開ヘルスチェック。認証不要。
| 項目 | タイプ | 説明 |
|---|---|---|
data.status | string | ok に到達可能な場合 |
data.version | string | API バージョン(v1) |
curl -s "https://developers.skysnag.com/api/v1/health" \
-H "Accept: application/json"
権限が限定されたAPIトークンでSkysnag向けの統合を構築する。
次の方法で認証 X-Api-Token ヘッダー — Bearer認証ではありません。すべてのレスポンスは予測可能なエラー構造のJSONです。
https://developers.skysnag.com/api/v1
X-Api-Token
sk_snag_…
初めての認証されたリクエストまでの3つの手順。
X-Api-Token: sk_snag_… を含める。
curl -s "https://developers.skysnag.com/api/v1/health" \
-H "Accept: application/json"
準備済みのコレクションと環境をインポートして、Postmanでv1のすべてのエンドポイントを探索できます。
https://developers.skysnag.com/api/v1 で事前に入力されています)
api_token を APIトークン からの完全なトークンに設定してください。
Protected endpoints require a personal API token in a dedicated header. Do not use Authorization: Bearer.
| ヘッダー | 値 | 発生時 |
|---|---|---|
X-Api-Token |
Full token (sk_snag_…) |
保護されたすべてのエンドポイント |
curl -s "https://developers.skysnag.com/api/v1/auth/me" \
-H "Accept: application/json" \
-H "X-Api-Token: sk_snag_your_token_here"
トークンを貼り付けると、下記の 取得 エンドポイントで お試しください コンソールが有効になります(読み取り専用)。リクエストは あなたの本番アカウント に対して https://developers.skysnag.com/api/v1 で実行されます。トークンはこのブラウザ(localStorage)にのみ保存され、この API 以外には一切送信されません。
すべての v1 パスは、下記のベース URL を起点とした相対パスです。
https://developers.skysnag.com/api/v1
https://api.skysnag.com/v1
| ヘッダー | 値 | ノート |
|---|---|---|
| 同意する | application/json | 常に |
| コンテンツタイプ | application/json | 本文を送信する際 |
X-Api-Token | お客様のAPIトークン | 保護されたエンドポイント |
| X-Request-Id | UUID(任意) | ログを相関させる;エラーに反映される |
Success payloads are wrapped in a data envelope.
{
"data": { ... }
}
{
"data": {
"status": "ok",
"version": "v1"
}
}
Errors return a stable code, human message, and request_id for support.
{
"error": {
"code": "missing_api_token",
"message": "API token is required...",
"request_id": "550e8400-e29b-41d4-a716-446655440000"
}
}
| HTTP | コード | 説明 |
|---|---|---|
| 401 | APIトークンがありません | X-Api-Token 未提供 |
| 401 | 無効なAPIトークン | トークンが不明、取り消されている、または期限切れです。 |
| 403 | APIアクセスが無効です | アカウントにAPIアクセス権がありません |
| 403 | APIプランは対象外です | Comply またはトライアルプラン — Protect または Suite にアップグレード |
| 403 | 権限不足 | トークンに必要なスコープがありません |
| 422 | 検証エラー | 無効なリクエスト本文 |
| 404 | 見つかりませんでした | リソースが見つかりません |
| 429 | HTTPエラー | レート制限を超えました |
| 500 | 内部エラー | 予期しないサーバーエラー |
List endpoints return pagination metadata alongside data.
| パラメータ | タイプ | デフォルト | 説明 |
|---|---|---|---|
| ページ | 整数 | 1 | ページ番号(1から始まる) |
| 制限 | 整数 | 変わります | ページあたりの項目数(最大100) |
{
"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を返します。指数的バックオフを実装してください。より高い制限が必要な場合はサポートにお問い合わせください。
トークンにはスコープ付きの権限が付与されます。必要なスコープがないとエンドポイントはリクエストを拒否します。
| 範囲 | 説明 |
|---|---|
account:read | Read account and token metadata |
me:read | Read current user profile, permissions, domains, and security |
me:write | Update current user profile |
users:read | List account users and domain access |
users:write | Create, update, and delete account users |
tokens:read | List active API tokens |
tokens:write | Create and revoke API tokens |
domains:read | List and read domains |
domains:write | Create, update, and delete domains |
既存のトークン(古いインテグレーション)に対して有効です。新しい v1 認証エンドポイントでは不要です。
| 範囲 | 説明 |
|---|---|
email-trust:read | Read DMARC/SPF/BIMI trust data |
reports:read | Read aggregate and compliance reports |
integrations:read | Read integration settings |
integrations:write | Manage integrations |
現在の v1 の公開エンドポイントに関するドキュメント。
公開ヘルスチェック。認証不要。
| 項目 | タイプ | 説明 |
|---|---|---|
data.status | string | ok に到達可能な場合 |
data.version | string | API バージョン(v1) |
curl -s "https://developers.skysnag.com/api/v1/health" \
-H "Accept: application/json"
割り当て可能なスコープをv1とlegacyでグループ化して返します。認証は不要です。
curl -s "https://developers.skysnag.com/api/v1/auth/scopes" \
-H "Accept: application/json"
{
"data": {
"v1": [{"id": "account:read", "description": "...", "group": "v1"}],
"legacy": [{"id": "domains:read", "description": "...", "group": "legacy"}]
}
}
使用されたトークンに対する認証済みアカウントとメタデータを返します。GET /account のエイリアスです。
curl -s "https://developers.skysnag.com/api/v1/auth/me" \
-H "Accept: application/json" \
-H "X-Api-Token: sk_snag_your_token_here"
認証されたユーザーを読み取りおよび更新します。スキーマ: users、roles、teams、user_regions、domain_accesses、webauthn_credentials、password_securities。
現在のユーザープロフィール。
curl -s "https://developers.skysnag.com/api/v1/me" \
-H "Accept: application/json" \
-H "X-Api-Token: sk_snag_your_token_here"
ユーザーのロールとアカウント設定に基づく実効権限。
curl -s "https://developers.skysnag.com/api/v1/me/permissions" \
-H "Accept: application/json" \
-H "X-Api-Token: sk_snag_your_token_here"
現在のユーザーが閲覧可能なドメインです。page と limit に対応しています。
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"
現在のユーザーのMFAおよびパスキーのセキュリティ状況。
curl -s "https://developers.skysnag.com/api/v1/me/security" \
-H "Accept: application/json" \
-H "X-Api-Token: sk_snag_your_token_here"
現在のユーザープロファイルを更新してください。
| 項目 | タイプ | 説明 |
|---|---|---|
| 名前 | string | 表示名(最大50文字) |
言語 | string | 優先言語コード |
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"
}'
アカウントのチームメンバーを管理します。認証されたアカウントがチームの所有者である必要があります。スキーマ: users, roles, teams, domain_accesses, password_securities, webauthn_credentials, user_detail_changes_history.
チームメンバーを招待または更新する際に割り当て可能なロールの一覧です。オーナー、管理者、編集者は除外されます。
割り当て可能な単一のロールの詳細を取得する。
現在のチームのアカウントユーザーを一覧表示する。
アカウントメンバーへの招待を作成します。デフォルトで招待メールが送信されます。
ユーザーの詳細を取得。
ユーザーの詳細を更新する。
チームメンバーを削除する。
ユーザーのステータスを切り替えます。本文:{"enabled": true}
ロールを変更します。本文:{"role_id": 5}
二要素認証(2FA)の適用を切り替えます。本文: {"enabled": true}
既存のチームメンバーにアカウント招待メールを再送信する。
ユーザーのドメインアクセスを一覧表示する。
アカウントのドメインを管理します。書き込み操作にはチームオーナーのアカウントが必要です。スキーマ: domains, domain_groups, domain_accesses, domain_states, domain_snapshot, parked_domains, license_domain, domains_services, cloudflare_records.
アカウントから見えるドメインを一覧表示します。page と limit をサポートします。
ドメインを作成します。本文: {"fqdn": "example.com", "parent_domain_id": null}
ドメインを一括追加。本文: {"domains": ["example.com", "example.org"]}。ジョブIDを返します。
一括追加ジョブのステータスとドメイン別の結果を取得する。
DNSと検証ステータスを含むドメインの詳細を取得する。
ドメインのメタデータを編集(グループ、ステータス、オンボーディングステータス、親ドメイン)
ドメインと関連するホストレコードを削除する。
ドメインのDNSレコードを検証します。任意の本文フィールド:dmarc_record、spf_record、bimi_record、tls_rpt_record、mta_sts_record。
DNSフェッチ/チェックを実行し、結果を保存して後で取得できるようにする。
7日間キャッシュされる、check-dns によって保存された最新の DNS 取得結果を取得します。check-dns のレスポンス本文には既に完全な結果が含まれているため、チェックを再実行せずに後でこのエンドポイントから取得できます。
プロトコル検証ステータスを取得(DMARC、SPF、MTA-STS、TLS-RPT、BIMI)。
添付されたメール送信サービスを取得する。
添付されたサービスを置き換えます。本文: {"service_ids": [1, 2]}
ドメインをグループにまとめます。グループはアカウントチームが所有しており、書き込み操作にはチームオーナーが必要です。
アカウントのドメイングループをドメイン数とともに一覧表示する。
ドメイングループを作成します。本文: {"name": "Production", "status": "active"} (status は省略可).
単一のドメイングループを取得する。
ドメイングループを編集します。本文: {"name": "New name", "status": "active"}(いずれも任意)。
ドメイングループを削除します。メンバーのドメインはグループから外されますが、削除はされません。
グループ内のドメインを一覧表示(ページネーション)
グループにドメインを追加します。本文: {"domain_id": 123}.
グループからドメインを削除する(そのドメインはグループに属さなくなります)
SkysnagでホストされているDMARCのDNSレコード、適用ポリシー、履歴、およびドメイン向けの推奨事項を管理します。書き込み操作にはチームのオーナー権限が必要です。
ホストされたレコードの名前、値、有効化状態、現在のポリシーを返します。
ドメイン用の Skysnag ホストの DMARC TXT レコードを設定する。
高度なDMARCタグを更新:p、sp、pct、adkim、aspf、rua、rufなど。
Skysnag の DNS からホストされている DMARC レコードを削除する。
有効なDMARCポリシーと解析済みのタグ設定を確認してください。
適用のみを更新します。本文:{"policy": "quarantine"} または {"p": "reject"}
アクティビティログとDMARCのスナップショット。pageおよびlimitに対応しています。
整合状況の統計と監視期間に基づく推奨の強制レベル
SkysnagでホストされているSPFレコード、include(インクルード)、IP承認アクション、およびドメインのフラッテンを管理します。書き込み操作にはチーム所有者が必要です。
ホストされている SPF レコードの名前/値、ドメインに公開するレコード、有効化状態、末尾の all クオリファイア、およびルックアップ数を返します。
ドメイン用にSkysnagがホストするSPFレコードをプロビジョニングしてください。
詳細な SPF 設定を編集します。本文: {"all": "~all"}(次のいずれかのオプション: -all、~all、?all、+all)。
ホストされたSPFを無効にし、SkysnagのDNSからレコードを削除してください。
SPFのアクティビティログとレコードのスナップショット。pageとlimitに対応します。
ドメインに設定されているSPFのincludeを一覧表示する。
SPFのincludeを追加します。本文: {"include_content": "_spf.google.com"}
ホストされているレコードから SPF の include を削除する。
SPFのIP承認アクション一覧(許可 / 拒否)
IPを許可またはブロックします。Body: {"ip": "203.0.113.10", "type": "Allow"} (type = Allow または Reject)。
インクルードをIPレンジに展開して、フラット化されたSPFレコードを生成します。フラット化されたレコード、IPv4/IPv6の一覧、およびDNSルックアップ数と制限の比較を返します。
BIMIレコード、SVGロゴ、VMC証明書、および準備チェックを管理します。書き込み操作にはチームのオーナー権限が必要です。
アカウントチーム向けのパートナーBIMI登録リクエストを一覧表示する。
BIMIレコードの詳細、DNSターゲット、ロゴ/VMCの状態、およびSVG検査結果を返します。
ドメインにホストされたBIMIをプロビジョニングする。
BIMI を再同期または編集します。アップロードされたファイルから再公開するか、手動で上書きするには record_value を渡してください。
BIMI の設定、ホストされたファイル、および Route53 レコードを削除します。
BIMI Tiny PS用のSVGを変換して検証します。本文: {"svg_content": "<svg...>"}
BIMIロゴ(SVG)またはVMC証明書(PEM)をmultipartのfileとしてアップロードしてください。
完全なVMC解析(DNS、証明書チェーン、検証)。キャッシュを回避するには、クエリにrefresh=trueを追加してください。
PEM証明書をアップロードせずに検査する。本文: {"pem": "-----BEGIN CERTIFICATE-----..."}
BIMI/VMC の準備チェックリスト(スコア、プロトコルの状態、各チェックの合否)
ドメインのホストされた MTA-STS と TLS-RPT を管理します。書き込み操作にはチームのオーナー権限が必要です。
MTA-STS のステータス、ポリシーモード、顧客の CNAME 対象、ホストされている DNS レコード、および同期チェックのメタデータを返します。
https://mta-sts.{domain}/.well-known/mta-sts.txt で提供される MTA-STS ポリシーファイルの内容を返します。
ホストされた MTA-STS および TLS-RPT レコードをプロビジョニングします。必要に応じて、ライブの MX レコードからデフォルトポリシー(mode: none)を作成します。
MTA-STSポリシーを更新します。生のpolicyテキスト、または構造化されたフィールド(mode、max_age、および任意のmxホスト名)を指定してください。
ポリシーモードのみを更新します。本文: {\"mode\": \"none|testing|enforce\"}。MXレコードはライブDNSから更新されます。
ポリシーを既定値にリセット: mode: none、現在のMXレコード、max_age: 604800。
MTA-STS と TLS-RPT の検証をチェッカーサービスで実行します。オプションのボディ:verify_dns、require_caa、deploy_policy(DNS を検証する場合のデフォルトは true)。
ホストされた TLS-RPT を構成し、受信した TLS レポートを照会します。書き込み操作にはチームのオーナー権限が必要です。
TLS-RPT の構成、DNS ターゲット、検証ステータス、総レポート数を返します。
Route53でホストされたTLS-RPTをSkysnagのレポート先アドレスでプロビジョニングする。
ホストされた TLS-RPT レコードを再公開します。任意の本文: record_value(v=TLSRPTv1で始まる必要があります)。
ページネーションされたTLSレポート。フィルター:policy_domain、policy_mode、start_date、end_date。
データベースIDまたはレポートUUIDで単一のTLSレポートを取得する。
送信MTAのIPごとにグループ化されたTLSセッションを集計します。同じ日付およびポリシーフィルターをサポートします。
TLSの結果タイプ別に失敗したセッションを集計する。
TLSの失敗概要(成功/失敗の合計および失敗理由コード別の内訳)
TLSでの失敗があるページングされた行(失敗数が0ではない、または失敗理由コードがある)
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).
/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"
}
}
/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)。
id、result、mail_provider、protocols のマップ、protocols_passing/total_protocols、scanned_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
}
}
/domains/{domain_id}/security-score
domains:read 現在のメールセキュリティスコア(0–10)と、人間が読める解釈およびメッセージ。外部チェッカーのキャッシュされた結果からオンデマンドで算出されるため、キャッシュミス後の最初の呼び出しは遅くなる場合があります。計算できない場合は 503 score_unavailable を返します。
score、max_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"
}
}
/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、およびデータ点の配列であるhistory(derived_score、protocols_passing/total_protocols、result、scanned_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"
}
]
}
}
/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
}
]
}
}
/domains/{domain_id}/sending-services
domains:read ボリューム、DMARCメトリクス、complianceの割合、およびstatus(compliant、partial、failingのいずれか)を含む送信元を送信します。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、メトリクスオブジェクト、compliance、status、および 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
}
]
}
}
/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
}
]
}
}
/domains/{domain_id}/dashboard-cache
domains:read ドメインの事前計算済みダッシュボードスナップショットのペイロードを返します(存在する場合)。これは集計を再計算せずにダッシュボードをレンダリングする最速の方法です。スナップショットが存在しない場合、cachedはfalseで、dataはnullです。
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 } }
}
}
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).
/domains/{domain_id}/dns/timeline
domains:read プロトコルごとのステータスの概要(現在のステータス、最後の接続/切断のタイムスタンプ、接続数)と、最新の接続/切断のイベント。これは各プロトコルのレコードが時間経過でどのように接続・切断されてきたかを示す概要表示です。
record_type:
任意
string
イベントをdmarc、spf、mta_sts、tls_rpt、bimiのいずれかで絞り込む。
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配列(id、record_type、action、record_value、status_before/status_after、occurred_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"
}
]
}
}
/domains/{domain_id}/dns/current
domains:read 各プロトコルレコードの現在の状態:接続ステータス、検証フラグ、最終接続/切断のタイムスタンプ、および最新の既知レコード値。SPFはさらにDNSのlookup_countを報告します(有効性には10回のDNSルックアップ上限が影響します)。
protocolsマップで、それぞれにcurrent_status、verified、status、last_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
}
}
}
}
/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_type、record_value、occurred_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
}
}
/domains/{domain_id}/dns/changes
domains:read すべてのプロトコルにわたる接続/切断の変更イベントをページ分割されたフィードで、状態遷移(status_before → status_after)と共に表示します。DNSの健全性を監査スタイルで確認するアクティビティフィードに使用してください。
record_type:
任意
string
次のいずれか: dmarc、spf、mta_sts、tls_rpt、bimi。
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)。
id、record_type、action、record_value、status_before/status_after、occurred_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
}
}
/domains/{domain_id}/dns/snapshots
domains:read レコードタイプごとにグループ化された、生の保存済みスナップショット行。/dns/history(マージしてページングする)とは異なり、これは基となる dmarc と spf のスナップショット配列を個別に返します。
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配列(id、record_value、occurred_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"
}
]
}
}
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.
このセクションのすべてのエンドポイントは、この形の行を返します。 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"
}
/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
}
}
/audit-logs/search
account:read JSON本文を使って、listエンドポイントと同じフィルタで監査ログを検索します。methodを配列として渡す必要がある場合や、長く構造化されたクエリを作成する必要がある場合は、クエリ文字列によるlistよりこちらを優先してください。
q:
任意
string
アクション、パス、IPを対象としたフリーテキスト検索。
method:
任意
string | array
単一のメソッド、または配列(例: ["POST","PATCH","DELETE"])。
action:
任意
string
正確なアクションラベル。
path:
任意
string
リクエストパスに対する部分文字列一致。
status_code:
任意
integer
正確なHTTPステータス。
status_class:
任意
string
2xx, 3xx, 4xx または 5xx.
ip_address:
任意
string
クライアントの正確なIPアドレス
token_id:
任意
integer
単一のAPIトークンに絞り込む。
start_date:
任意
string · date
ウィンドウ開始 (含む) (YYYY-MM-DD).
end_date:
任意
string · date
終了日(含む) (YYYY-MM-DD).
page:
任意
integer
ページ番号(既定値: 1)。
limit:
任意
integer
ページあたりの項目数 (1–100, 既定値 25)。
GET /audit-logs と同じページネーションされたペイロードです。curl -s "https://developers.skysnag.com/api/v1/audit-logs/search" \
-X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Api-Token: sk_snag_your_token" \
-d '{
"q": "domains",
"method": ["POST", "PATCH", "DELETE"],
"status_class": "2xx",
"start_date": "2026-05-01",
"end_date": "2026-06-01"
}'
{
"data": [
{
"id": 90122,
"action": "domain.hosted_spf.update",
"method": "PATCH",
"path": "/api/v1/domains/123/hosted-spf",
"status_code": 200,
"created_at": "2026-06-16T11:02:33Z"
}
],
"pagination": {
"page": 1,
"limit": 25,
"total": 312,
"has_more": true
}
}
/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"
}
}
アカウントの有効なトークンを一覧表示します。page と limit をサポートします。
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"
トークンを作成します。完全な値はdata.plain_textで一度だけ返されます。
| 項目 | タイプ | 説明 |
|---|---|---|
名前 必須 | string | トークンのラベル |
スコープ 必須 | 文字列の配列 | GET /auth/scopes から |
| 有効期限はあと{n}日です | 整数 | 任意 1〜365日 |
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
}'