Mailzeroドキュメント

Todayの基盤API: 受信トレイを接続し、概要と事実を確認して、常設委任により選択した種類の案件をエージェントに委任し、権限内で実行させることができます。すべての実行には受領書が発行されます。ドメイン、DNS、その他のプラットフォーム機能については後述します。

サポート: support@mailzero.run

認証

すべての認証済みエンドポイントでは、Authorization ヘッダーに Bearer トークンが必要です。

curl https://domani.run/api/domains/search?q=example.com \ -H "Authorization: Bearer domani_sk_xxx"

API キーを取得するには、 アカウントを作成する またはから 設定。一部のエンドポイント (検索、TLD、WHOIS) はパブリックですが、認証なしではレート制限が低くなります。

トークンのスコープ

トークンは、特定の権限スコープに制限できます。使用する * フルアクセスの場合 (デフォルト)。スコープ付きトークンを作成するには `POST /api/tokens` と `scopes` 配列。

範囲へのアクセスを許可します
domains:readGET /api/domains、GET /api/domains/{domain}、GET /api/domains/{domain}/dns、/dnssec、/status、/email/check、/auth-code、/transfer-away、/transfer-status、/analytics
domains:writePUT /api/domains/{domain}/dns、POST/DELETE /api/domains/{domain}/dnssec、POST /connect、POST /verify、PUT /settings、PUT /parking、PUT/DELETE /api/domains/{domain}/for-sale、POST /api/domains/import、POST /import/verify
domains:transferPOST /api/domains/buy、POST /transfer、POST /renew (支払いを含む、マーケットプレイスでの購入を含む)
tokens:readGET /api/tokens
tokens:writePOST /api/tokens, DELETE /api/tokens/{id}
webhooks:readGET /api/webhooks, GET /api/webhooks/{id}/deliveries
webhooks:writePOST /api/webhooks, PATCH /api/webhooks/{id}, DELETE /api/webhooks/{id}
email:readGET /api/emails、/api/emails/{address}, /api/emails/{address}/messages, /api/emails/{address}/aliases, /api/email/changes, /api/domains/{domain}/email/status, /api/domains/{domain}/email/deliverability, /api/suppressions, GET /api/contacts
email:writePOST /api/emails、POST /api/emails/{address}/send, POST /api/domains/{domain}/email/setup, aliases + catch-all, POST/DELETE /api/suppressions, POST/DELETE /api/contacts
email:deleteすでにゴミ箱に入っているメッセージを完全に削除します。メッセージをゴミ箱に移動するには、email:write のみが必要です。このスコープは、電子メールの内容を元に戻せないように消去できるエージェントにのみ付与します。
email:manage_mailboxesメールボックスを作成します(POST /api/emails)。それ以外は行いません。メールの読み取りや送信、ドメイン管理、トークン操作は許可せず、新しいプロジェクト用のアドレス(partners@、launch@)だけを作成できるエージェント向けの限定的な管理スコープです
email:auth_secrets認証メールとして分類されたメッセージ (OTP / 確認コード、パスワード リセット、マジック リンク) を読み取ります。これがないと、email:read にはリストが表示されますが、件名と本文はマスクされて返されくるため、盗まれたエージェント トークンは 2FA コードを収集できません。本当にログインを完了する必要があるエージェントにのみ許可します。
account:readGET /api/me, GET /api/agents/identity
account:writeDELETE /api/me, POST /api/billing/setup, POST /api/billing/subscribe, POST /api/billing/cancel, POST /api/me/resend-verification, POST/PATCH/DELETE /api/agents/identity
billing:readGET /api/billing/invoices
searchGET /api/domains/search、/suggest、/whois、/dns-check、GET /api/tlds
deals:readGET /api/deals, GET /api/deals/{id}
deals:writePOST /api/domains/sell, PATCH /api/deals/{id}
notifications:readGET /api/notifications, GET /api/notifications/count
backorders:readGET /api/backorders, GET /api/backorders/{id}
backorders:writePOST /api/backorders, DELETE /api/backorders/{id}
assistant:readRead Mailzero assistant settings、the Today queue, Work items, exact action previews, history-import progress, and content-minimized Activity
assistant:writeChange Mailzero assistant settings、record consent and start history imports, record human Decisions on Work items, retry imports, and export or delete derived assistant data. Never sends mail

スコープ減衰: トークンは、同じスコープ以下の子トークンのみを作成できます。それ以上のスコープは作成できません。

スコープが返されない 403 コード付き `INSUFFICIENT_SCOPE` 必要なスコープの名前を指定するヒント。

エージェントクイックスタート: タスクループ

エージェントにIDとトークンを付与し、観察レベルの常設委任で案件の種類を委任します。エージェントは各案件の概要を確認し、実行を要求して報告します。レベルと権限が承認、エスカレーション、または拒否を判断し、すべての実行には受領書が残ります。受領書の実績に応じてレベルを引き上げます。

# The owner, once
curl -X POST https://domani.run/api/agents/identity -H "Authorization: Bearer $OWNER_KEY" -H "Content-Type: application/json" -d '{"slug":"finance-helper","name":"Finance helper"}'
curl -X POST https://domani.run/api/tokens -H "Authorization: Bearer $OWNER_KEY" -H "Content-Type: application/json" -d '{"name":"finance helper","scopes":["assistant:read","assistant:write"],"agent_identity_id":"agt_123"}'
curl -X POST https://domani.run/api/assistant/rules -H "Authorization: Bearer $OWNER_KEY" -H "Content-Type: application/json" -d '{"name":"Acme","match":{"senderDomain":"acme.com"},"assignee_type":"agent","assignee_ref":"finance-helper","level":"observe"}'

# The agent, for every matter
curl https://domani.run/api/assistant/today -H "Authorization: Bearer $AGENT_KEY"
curl https://domani.run/api/assistant/tasks/wi_789 -H "Authorization: Bearer $AGENT_KEY"
curl -X POST https://domani.run/api/assistant/tasks/wi_789/effects -H "Authorization: Bearer $AGENT_KEY" -H "Content-Type: application/json" -d '{"effects":[{"kind":"label","mailbox_id":"mbx_123","add":["finance"]}],"idempotency_key":"label-wi_789-1"}'
curl -X POST https://domani.run/api/assistant/tasks/wi_789/report -H "Authorization: Bearer $AGENT_KEY" -H "Content-Type: application/json" -d '{"outcome":"done","summary":"Labelled finance; the invoice matches the order."}'

Mailzeroアシスタント

Mailzeroアシスタントのエンドポイントは、ユーザー自身のメールを根拠付きの判断に変換します。バージョン管理された「今日」のキュー、判断が必要なスレッドごとに 1 つのワークアイテム、そしてユーザーが選択した後にのみ用意される正確なアクションプランです。/api/assistant 配下では、メールの送信、削除、変更は一切行われません。モデルの出力は常に提案であり、サーバーが検証します。

対象となるスコープは 2 つです: assistant:read は設定、「今日」、ワークアイテム、アクションプラン、インポートの進捗、アクティビティの読み取りに使います。 assistant:write は設定の変更、同意と履歴のインポート、ワークアイテムに対する人間の判断、派生データのエクスポートまたは削除に使います。

処理は明示的な同意の後にのみ開始されます: POST /api/assistant/preview は同意バージョンを記録し、所有しているメールボックスを対象範囲に設定して、再開可能なバックグラウンドインポートを開始します。進捗は GET /api/assistant/backfill をポーリングして確認します。

curl -X POST https://domani.run/api/assistant/work-items/wi_789/interactions -H "Authorization: Bearer domani_sk_xxx" -H "Content-Type: application/json" -d '{"type":"choose","work_item_version":3,"decision_id":"dec_1","decision_version":1,"option_id":"opt_send","idempotency_key":"choose-wi_789-opt_send-1"}'

選択すると正確なプランが用意されます。プランは GET /api/assistant/action-plans/{id}で読み取ってユーザーに表示し、その後、通常の返信エンドポイント POST /api/emails/{address}/messages/{id}/reply に assistant_plan_idを付けて送信します。サーバーは古いプランや一致しないプランを拒否し、送信ごとに 1 件の領収書を記録して、ワークアイテムを待機中または対応済みに移動します。

認証されたメールボックス Webhook

ダッシュボードでドメインの「電子メール」タブを開き、メールボックスを選択してから、 Authorization または X-API-Key。 Domani は値を暗号化し、Webhook テストと受信メール配信で送信します。ライブインバウンド配信は耐久性があり、最大 3 回まで再試行されます。 `X-Domani-Delivery-Attempt`.

read -rsp 'Sender credential: ' WEBHOOK_SENDER_AUTH; echo export WEBHOOK_SENDER_AUTH jq -n --arg url 'https://agent.example/webhook' --arg auth "$WEBHOOK_SENDER_AUTH" '{url:$url,headers:'{Authorization:$auth}} | \ curl --fail-with-body -X PUT "https://domani.run/api/emails/agent%40example.com/webhook" \ -H "Authorization: Bearer $DOMANI_API_KEY" \ -H "Content-Type: application/json" --data-binary @- unset WEBHOOK_SENDER_AUTH

ヘッダー値は決して返されません。応答は公開のみ `header_names`。省略 `headers` 保存された値を保存するには、空のオブジェクトを送信してそれをクリアし、次を使用します。 `POST /api/emails/`'{address}'`/webhook/test` 配信を確認するため。

ゼロから始めますか?含める `webhook_headers` で `POST /api/agents/provision` ドメインを購入し、そのメールボックスを作成し、1 つのべき等呼び出しで認証されたイベント Webhook をアタッチします。 Domani は、料金が発生する前に URL とヘッダー名を検証します。

エラー

すべてのエラーは一貫した JSON エンベロープを返します。使用する `code` プログラムによる処理と `hint` 回復指導のため。

{
  "error": "Missing API key",
  "code": "MISSING_API_KEY",
  "hint": "Include 'Authorization: Bearer domani_sk_xxx' header",
  "documentation_url": "https://domani.run/llms.txt"
}
コードHTTP
MISSING_API_KEY401
INVALID_API_KEY401
EXPIRED_API_KEY401
MISSING_PARAMETER400
INVALID_DOMAIN400
PAYMENT_REQUIRED402
DOMAIN_UNAVAILABLE409
RATE_LIMIT_EXCEEDED429
USER_EXISTS409
NOT_FOUND404
UNKNOWN_PROVIDER400
UNKNOWN_METHOD400
TARGET_REQUIRED400
INVALID_PARAMETER400
CONTACT_REQUIRED400
INVALID_CONTACT400
INSUFFICIENT_SCOPE403
SCOPE_ESCALATION400
MAILBOX_CONFINED400
DOMAIN_EXISTS400
DOMAIN_NOT_ACTIVE400
UNSUPPORTED_TLD400
TLD_NOT_IN_PUBLIC_DNS400
NOT_AVAILABLE400
ALREADY_REGISTERED400
TRANSFER_NOT_ELIGIBLE400
RENEWAL_NOT_ELIGIBLE400
ALREADY_LISTED400
LISTING_SOLD400
SELF_PURCHASE400
DESCRIPTION_TOO_LONG400
DEAL_NOT_FOUND400
INVALID_DEAL_STATE400
EPP_ATTEMPTS_EXCEEDED400
ACTIVE_DEAL_EXISTS400
AGENT_IDENTITY_NOT_FOUND400
AGENT_IDENTITY_ESCALATION400
AGENT_MAILBOXES_REQUIRED400
CREDENTIAL_REVOKE_FAILED400
INVALID_IDEMPOTENCY_KEY400
IDEMPOTENCY_KEY_MISMATCH400
IDEMPOTENCY_KEY_REUSED400
OPERATION_IN_PROGRESS400
OPERATION_SUPERSEDED400
INVALID_OPERATION_RECEIPT400
WORKSPACE_ADMIN_REQUIRED400
WORKSPACE_OWNER_REQUIRED400
PRINCIPAL_NOT_IN_WORKSPACE400
MAILBOX_NOT_IN_WORKSPACE400
GROUP_NOT_IN_WORKSPACE400
COLLECTION_NOT_IN_WORKSPACE400
ACCESS_VERSION_CONFLICT400
ACCESS_OFFER_INVALID400
ACCESS_OFFER_EMAIL_MISMATCH400
MAIL_DOMAIN_CAPACITY_EXHAUSTED400
MAIL_PROVIDER_ERROR400
INVALID_HTTP_ROUTE_HOSTNAME400
INVALID_HTTP_ROUTE_UPSTREAM400
INVALID_HTTP_ROUTE_UPSTREAM_HEADERS400
INVALID_HTTP_ROUTE_LEASE400
INVALID_HTTP_ROUTE_POLICY400
INVALID_HOSTNAME_BINDING400
HTTP_ROUTE_HOSTNAME_NOT_ALLOWED400
HTTP_ROUTE_HOSTNAME_REQUIRED400
HTTP_ROUTE_HOSTNAME_RESERVED400
HTTP_ROUTE_HOSTNAME_UNAVAILABLE400
HTTP_ROUTE_CONCURRENCY_LIMIT400
HTTP_ROUTE_WORKSPACE_LIMIT400
HTTP_ROUTE_DOMAIN_NOT_OWNED400
HTTP_ROUTE_TERMINAL400
HTTP_ROUTE_VERIFICATION_NOT_ENABLED400
HTTP_ROUTE_VERIFICATION_REQUIRES_HTTPS400
HTTP_ROUTE_POLICY_WITHOUT_SCOPE400
HTTP_ROUTE_POLICY_REQUIRED400
HTTP_ROUTE_AGENT_IDENTITY_REQUIRED400
HTTP_ROUTE_POLICY_ESCALATION400
HOSTNAME_BINDING_NOT_ACTIVE400
HOSTNAME_BINDING_DNS_CONFLICT400
HOSTNAME_BINDING_ACK_REQUIRED400
HOSTNAME_BINDING_BROWSER_MODE_MISMATCH400
HOSTNAME_DNS_CONFLICT400
ZONE_READ_FAILED400
DNS_VERSION_CONFLICT400
UNAUTHORIZED400
APEX_WEB_MODE_CONFLICT400
APEX_DELEGATION_ACK_REQUIRED400
VERIFICATION_COOLDOWN400
VERIFICATION_SEND_FAILED400
UPGRADE_REQUIRED400
FREE_LIMIT_EXCEEDED400

レート制限

すべての応答にはレート制限ヘッダーが含まれます。

  • `X-RateLimit-Limit` - ウィンドウごとの最大リクエスト
  • `X-RateLimit-Remaining` - リクエストが残っています
  • `X-RateLimit-Reset` - ウィンドウがリセットされたときの UNIX タイムスタンプ

レートが制限されている場合 (HTTP 429)、 `Retry-After` ヘッダーを数秒間待機します。

Mailzeroアシスタント

GET/api/assistant/rules

常設委任を一覧表示

オーナーの常設委任ルールを順番に表示: 名前、マッチ述語、担当者 (エージェントアイデンティティまたはワークスペースメンバー)、自律性レベル、各マッチ回数。assistant:read が必要です。エージェントトークンは拒否されます。

応答 200

rulesAssistantRule[]
POST/api/assistant/rules

常設委任を作成

案件の種類をエージェントまたは人に一度引き渡します。match は明示的な述語であり、モデル呼び出しではありません: senderAddress, senderDomain, organisation, workKeyPrefix, senderKind, mailboxIds, labels, subjectPattern (アンカー付き、大文字小文字を区別しない), minOccurrences、minConfidence(校正済み分類器が category: ラベルに付けた確率、0.5 から 1) のいずれか。記載されたすべての条件が成立する必要があります。ルールは順序付けられており、最初にマッチしたものが適用されます。レベルは特に指定がない限り observe です。マッチするルールは次のマッチするアイテムを担当者に引き渡し、委任通知を通じて伝え、Today が理由を表示します。assistant:write が必要です。エージェントトークンは拒否されます。

応答 201

idstring
namestring
enabledboolean
positioninteger
matchAssistantRuleMatch
assigneeobject
levelstring
grantsAssistantGrants
match_countinteger
last_matched_atstring (date-time) | null
created_atstring (date-time)
updated_atstring (date-time)
PUT/api/assistant/rules/{id}

常設委任を変更

名前変更、有効化または無効化、並べ替え、マッチ、担当者、レベルまたは付与の変更。レベルを observe に下げることは、ルールのワンクリック停止スイッチです。assistant:write が必要です。エージェントトークンは拒否されます。

パラメータ

id*string

応答 200

idstring
namestring
enabledboolean
positioninteger
matchAssistantRuleMatch
assigneeobject
levelstring
grantsAssistantGrants
match_countinteger
last_matched_atstring (date-time) | null
created_atstring (date-time)
updated_atstring (date-time)
DELETE/api/assistant/rules/{id}

常設委任を削除

ルールを削除します。引き渡されたアイテムはオーナーに戻り、担当者が行ったことの記録は残ります。assistant:write が必要です。エージェントトークンは拒否されます。

パラメータ

id*string

応答 200

deletedboolean
released_itemsinteger
POST/api/assistant/rules/test

サンプルの事実で常設委任を試行

模拟运行:哪条规则会处理具有这些事实(邮箱、键、发件人、主题、标签、出现次数)的事项,以及原因。不会更改任何内容。需要 assistant:write;智能体令牌会被拒绝。

リクエストボディ

mailbox_id*string
key*string作業アイテムキー、例: org:tucows:invoice
sender_addressstring | null
sender_kindstring(human | automated)
subjectstring | null
labelsstring[]
occurrencesinteger
confidenceobjectminConfidence を持つルール向けの、ラベルごとの分類器の確率

応答 200

matchedboolean
ruleAssistantRule
whystring[]
consideredinteger
POST/api/assistant/rules/{id}/check

既存の委任のレベルと権限に対して効果を試行します

今日ルールの下でリクエストされた効果の検証順序のドライラン: レベルが種類を許可するか; 権限が受信者、ボリューム(今日実行された効果の数)、スケジュール、支出、案件から読み取られたリスククラスを許可するか; 必須の承認者が承認したか。プランが取る状態(proposed、approved、escalatedまたはrejected)をすべてのチェックとその理由とともに返します。何も変更されません。assistant:writeが必要です; エージェントトークンは拒否されます。

パラメータ

id*string

リクエストボディ

effect*object
matterobject
atstring (date-time)スケジュールをチェックする時刻; デフォルトは現在
approved_bystring[]既に承認したメンバーID

応答 200

ruleobject
allowed_kindsstring[]
effective_grantsAssistantGrants
outcomestring
checkAssistantGrantCheck
hintstring
GET/api/assistant/metrics

タスクメトリクスを読み取る

ローリングウィンドウ(デフォルトで30日、window_daysは1から90)上のタスクレイヤーの7つの数値、アカウント全体および各常設委任について: オーナーなしでクローズされた案件、到着から完了までの時間、提案通りに実行されたプラン、編集および却下されたプラン、案件あたりのエスカレーション、実行後の修正、衝突、案件あたりのモデルコスト。レシート、プラン、エスカレーション、台帳から読み取られます。推定値は含まれません。assistant:readが必要です。

パラメータ

window_daysinteger

応答 200

typestring
as_ofstring (date-time)
window_daysinteger
accountAssistantTaskNumbers
rulesobject[]
GET/api/assistant/approvals

承認キューを取得

オーナーを待っているプラン(ドラフトで提案されたもの、または権限によって保留されているもの)と、担当者が尋ねた質問(閲覧者が見ることができる案件全体)。作業項目のインタラクションを通じて回答: プランを承認または却下、質問に対してオプションを選択または指示。assistant:readが必要です。認証メールがアシスタントから除外される前にそのメールから作られた案件は、email:auth_secrets のない閲覧者には、タイトル、要約、依頼内容、プランの効果を伏せた状態で表示されます。

応答 200

typestring
as_ofstring (date-time)
plansobject[]
escalationsobject[]
GET/api/assistant/suggestions

委任提案を一覧表示

アシスタントが提案する常設委任:90日間に少なくとも3回繰り返された案件(同じ組織または送信者)で、毎回同じ方法で処理されたもの(ignored、answered、closed、1人のエージェントにhanded)。ルールは事前入力されています。デフォルトでは未処理のもの。オーナーが承認するまで何も作成されません。assistant:readが必要です。エージェントトークンは拒否されます。

パラメータ

statusstring(open | accepted | dismissed)

応答 200

suggestionsAssistantSuggestion[]
POST/api/assistant/suggestions/{id}

委任提案を承認または却下

承認:提案が閉じられ、事前入力されたルールがクライアントに返されて作成されます(POST /api/assistant/rules)。却下:提案が閉じられ、同じ案件と処理方法に対して二度と表示されません。assistant:writeが必要です。エージェントトークンは拒否されます。

パラメータ

id*string

リクエストボディ

action*string(accept | dismiss)

応答 200

suggestionAssistantSuggestion
ruleAssistantRuleInput
GET/api/assistant/grants

担当者に付与された権限をリストします

オーナーのエージェントとメンバーに付与された権限。案件を割り当てるすべてのルールに加えて適用されます; ルールと担当者のうち、より厳格な方が適用されます。assistant:readが必要です; エージェントトークンは拒否されます。

応答 200

grantsAssistantAssigneeGrants[]
PUT/api/assistant/grants

担当者の権限を設定します

エージェントIDまたはワークスペースメンバーに権限を付与します; これらは担当者の以前の権限を置き換え、案件を割り当てるすべてのルールに上限を設定します。assistant:writeが必要です; エージェントトークンは拒否されます。

リクエストボディ

assignee_type*string(agent | member)
assignee_ref*stringエージェントアイデンティティスラグ、またはメンバーのユーザーID
grants*AssistantGrants

応答 200

assigneeobject
grantsAssistantGrants
created_atstring (date-time)
updated_atstring (date-time)
DELETE/api/assistant/grants/{type}/{ref}

担当者の権限を削除します

担当者は各ルールが付与するもののみを保持します。assistant:writeが必要です; エージェントトークンは拒否されます。

パラメータ

type*string(agent | member)
ref*string

応答 200

deletedboolean
GET/api/assistant/tasks/{id}

タスクエンベロープを読み取る

担当者が必要とするmatter: 証拠を含むbrief、facts、delegation(担当者、ルール、レベル、許可された効果の種類、有効な権限)、進行中および最近のplans、lease。agentトークンは自身に割り当てられたmatterと操作するメールボックスのmatterを読み取ります; オーナーは自分自身のものを読み取ります。assistant:readが必要です。認証メールがアシスタントから除外される前にそのメールから作られた案件は、email:auth_secrets のない閲覧者には、タイトル、要約、依頼内容、プランの効果を伏せた状態で表示されます。

パラメータ

id*string作業アイテムID

応答 200

idstring作業アイテムID
versioninteger
statusstring
deadlinestring (date-time) | null
youobject
delegationobject
leaseAssistantTaskLease
briefobject | nullGET /api/assistant/work-items/{id}/briefが返すmatterのbrief
factsobject | nullGET /api/assistant/work-items/{id}/factsが返すmatterのfacts
plansobject
escalationsobject[]タスクで尋ねられた質問とその回答、新しい順
POST/api/assistant/tasks/{id}/lease

タスクのleaseを取得または更新する

2人の担当者が1つのmatterを同時に作業することはありません: leaseは誰がいつまで作業するかを指定します(デフォルトで15分、最大1時間)。再度取得すると更新されます; 別の保持者は期限までTASK_LEASEDで拒否されます。効果リクエストは自動的にleaseを取得します。assistant:writeが必要です。

パラメータ

id*string

リクエストボディ

ttl_secondsinteger

応答 200

task_idstring
leaseAssistantTaskLease
DELETE/api/assistant/tasks/{id}/lease

leaseを返却する

呼び出し元が保持しているleaseを解放します; 別の担当者が保持しているleaseはそのままにされます。assistant:writeが必要です。

パラメータ

id*string

応答 200

task_idstring
releasedboolean
leaseAssistantTaskLease
POST/api/assistant/tasks/{id}/effects

タスクに対する効果を要求する

担当者は1つ以上の効果(reply、forward、label、snooze、resolve、note、request)を要求します。delegationのレベルが許可される種類を決定し、権限がそれらを制限します: guarded_sendまたはoperate(およびtriageでのインバウンド種類)の権限内では、効果はレシートと共にすぐに実行されます; draftではオーナーの承認を待ちます; 権限チェックの失敗はオーナーにエスカレートされます; レベルが許可しない種類は拒否されます。オーナー自身のリクエストはすぐに実行されます。同じidempotency keyは最初のplanを再度返します。assistant:writeが必要です。

パラメータ

id*string

リクエストボディ

effects*AssistantEffect[]
idempotency_key*string
notestringこのリクエストについて担当者がオーナーに知らせたい内容

応答 200

task_idstring
replayedboolean
planAssistantPlan
executionobject | null
leaseAssistantTaskLease
hintstring
POST/api/assistant/tasks/{id}/escalate

停止してオーナーに尋ねる

アサイニーは証拠とともに質問をし、有用な場合は見えている選択肢を示します。オーナーはこれによって作成される決定に対して通常のchooseまたはinstructインタラクションで回答します。案件はTodayでオーナーを必要としていると表示され、リースは解放され、タスクは待機します。assistant:writeが必要です。

パラメータ

id*string

リクエストボディ

question*string
optionsobject[]
evidence_refsstring[]

応答 200

task_idstring
escalation_idstring
decision_idstring
statusstring
versioninteger
hintstring
POST/api/assistant/tasks/{id}/report

タスクについて報告する

アサイニーが行ったことと結果:done(案件が解決するか、回答がまだ期待されている場合は待機)、blocked(オーナーに尋ねる)、またはhanded back(オーナーが引き継ぎ、ルールはこの案件から外れる)。クレームはプラットフォームが書いたレシートと照合されます。レシートのないクレームはクレームとして記録され、決して事実としては記録されません。リースは解放されます。assistant:writeが必要です。

パラメータ

id*string

リクエストボディ

outcome*string(done | blocked | handed_back)
summary*string
evidence_refsstring[]
claimsobject[]

応答 200

task_idstring
outcomestring
statusstring
reconciliationobject
receipt_idstring
hintstring
GET/api/emails/{address}/messages/{id}/facts

アシスタントがメッセージについて確立した内容を読む

このメッセージの分析が生成した知識: 主張 (subject, predicate, value with type and currency, basis, confidence, validity, evidence)、エンティティ、コミットメントと期待。途中で何も計算されません: パイプラインが分析していないメッセージは analysed: false と reason で応答します (not_enabled はメールボックスがアシスタントに含まれていない場合、not_analysed は分析がまだ行われていない場合)。assistant:read が必要です。

パラメータ

address*string
id*stringメッセージID

応答 200

message_idstring
thread_idstring
analysedboolean
reasonstringanalysed が false の場合のみ
analysisobject
factsFact[]
entitiesobject[]
commitmentsobject[]
expectationsobject[]
POST/api/emails/{address}/messages/{id}/extract

独自のスキーマでメッセージから必要なフィールドを抽出

メッセージテキスト (subject, sender, body) に対する1回のモデル呼び出しで、呼び出し元の JSON スキーマ (オブジェクトとプリミティブ、最大 8 KB、参照なし) を使用: その形式で data、confidence (0 から 1)、evidence_quotes (逐語的な抜粋) を応答します。(message, schema, instructions) でキャッシュされるため、同じ質問は1回の呼び出しでコストがかかります (その後は cached: true)。アカウントのモデル予算によって制限されます (使い切った場合は 429、モデルルートがオフの場合は 503)。サインインコードメールは 403 AUTH_MESSAGE を応答します。60,000 文字を超える本文は 413 を応答します。

パラメータ

address*string
id*stringメッセージID

リクエストボディ

schema*object抽出するフィールドの JSON スキーマ: プリミティブ、配列、ネストされたオブジェクトのオブジェクト、8 KB 未満、$ref なし
instructionsstringオプションのガイダンス、例: EUR での金額

応答 200

message_idstring
dataobject
confidencenumber
evidence_quotesstring[]
modelstring
cachedboolean
generated_atstring (date-time)
usageobject
GET/api/assistant/settings

Mailzero アシスタント設定を取得

アシスタントのオプトイン状態、shadow/pause フラグ、同意バージョン、プライバシールート、メールボックススコープ、および所有するすべてのメールボックスを返します。assistant:read のアクセス許可が必要です。

応答 200

enabledboolean
shadow_enabledboolean
pausedboolean
mailbox_idsstring[]
agent_mailbox_idsstring[]エージェントが運用するメールボックス。その項目は Needs you ではなく Today のエージェントセクションに表示されます。
agentsobject[]委任のためのエージェント ID。
search_opt_out_mailbox_idsstring[]仅通过关键词搜索邮件的邮箱:这些邮箱的邮件永远不会发送到嵌入模型。
brief_opt_out_mailbox_idsstring[]ブリーフが決定論的なままのメールボックス: 要約と次の行動のためにモデルに証拠の抜粋が送信されません (到着メールの分析は変更されません)
history_window_daysinteger
privacy_routestring
attachment_visionboolean
community_signalsbooleanフィッシング報告はコミュニティのフィンガープリント(ドメイン、件名の形式、テキストやアドレスは含まない)にカウントされ、コミュニティのカウントは信頼シグナルに反映されます。デフォルトでオン、オフにすると両方ともローカルに保持されます。
pipeline_versionstring
consentobject
mailboxesobject[]

応答例

{
  "enabled": false,
  "shadow_enabled": true,
  "paused": false,
  "mailbox_ids": [
    "mbx_123"
  ],
  "history_window_days": 30,
  "privacy_route": "private_cloud",
  "attachment_vision": false,
  "pipeline_version": "communication-analysis.v1",
  "consent": {
    "required_version": "mailzero-personal-ai.v1",
    "accepted_version": "mailzero-personal-ai.v1",
    "accepted_at": "2026-09-02T09:12:00.000Z"
  },
  "mailboxes": [
    {
      "id": "mbx_123",
      "slug": "hello",
      "domain": "example.com",
      "name": "Hello",
      "kind": "api",
      "address": "hello@example.com"
    }
  ]
}
PUT/api/assistant/settings

Mailzero アシスタント設定を更新

アシスタント処理を明示的に有効化、一時停止、再開、またはスコープ設定します。mailbox_ids: [] を送信すると、すべてのメールボックスが無効化され、実行中の履歴インポートがキャンセルされます。再開には現在の同意バージョンが必要です。メール受信は独立して動作します。assistant:write のアクセス許可が必要です。

リクエストボディ

enabledbooleanToday の決定を表示し、オンデマンドで下書きを生成
shadow_enabledboolean決定を表示せずにメールを分析
pausedboolean
mailbox_idsstring[]処理する所有メールボックス ID。空の配列はすべてを無効化
agent_mailbox_idsstring[]エージェントが運用するメールボックス。その項目は Needs you ではなく Today のエージェントセクションに表示されます。
history_window_daysinteger
attachment_visionboolean

応答 200

okboolean
enabledboolean
shadow_enabledboolean
pausedboolean
mailbox_idsstring[]

応答例

{
  "ok": true,
  "enabled": true,
  "shadow_enabled": true,
  "paused": false,
  "mailbox_ids": [
    "mbx_123"
  ]
}
POST/api/assistant/preview

同意してバックグラウンド履歴インポートを開始

現在の明示的なAI同意を記録し、選択されたユーザー所有のメールボックスでシャドウ処理を有効にし、最近の履歴の再開可能なバックグラウンドインポートを作成します。クライアントは直ちに終了してGET /api/assistant/backfillをポーリングできます。assistant:writeスコープが必要です。

リクエストボディ

mailbox_ids*string[]
history_window_daysinteger
consent*boolean(true)
consent_version*string(mailzero-personal-ai.v1)

応答 200

okboolean
previewobject

応答例

{
  "ok": true,
  "preview": {
    "mailbox_ids": [
      "mbx_123"
    ],
    "history_window_days": 30,
    "scanned": 0,
    "enqueued": 0,
    "capped": false,
    "background": true,
    "backfill_id": "bf_456"
  }
}
GET/api/assistant/backfill

バックグラウンド履歴インポートの進捗を取得

スキャン/分析フェーズ、処理済みメッセージと総メッセージ数、パーセンテージ、適応型ETA、一時停止状態、およびアプリを終了できるかどうかを返します。assistant:readスコープが必要です。

応答 200

backfillobject | null

応答例

{
  "backfill": {
    "id": "bf_456",
    "status": "processing",
    "phase": "analysis",
    "paused": false,
    "processed": 12,
    "total": 40,
    "failed": 0,
    "percent": 30,
    "estimated_seconds_remaining": 240,
    "estimated_completion_at": "2026-09-02T09:20:00.000Z",
    "can_close_app": true,
    "started_at": "2026-09-02T09:12:00.000Z",
    "completed_at": null
  }
}
POST/api/assistant/backfill

失敗した履歴インポートメッセージを再試行

AI有効のままのメールボックスについて、最新のインポートからの最終的な失敗を再キューイングします。メッセージがここに表示される前に、自動再試行はすでに使い果たされています。assistant:writeスコープが必要です。

応答 200

okboolean
retriedinteger

応答例

{
  "ok": true,
  "retried": 2
}
GET/api/assistant/today

グラウンディングされたTodayの決定キューを取得

バージョン管理された Now、Needs you、Waiting、Upcoming、および最近の Handled プロジェクションを as_of、lag、coverage、warnings とともに返します。各項目はソースメッセージにリンクしており、ここではメールは送信されません。assistant:read のアクセス許可が必要です。認証メール (サインインコード、パスワードリセット、マジックリンク) が案件になることはなく、モデルに渡ることもありません。認証メールがアシスタントから除外される前にそのメールから作られた案件は、email:auth_secrets のない閲覧者には、タイトル、要約、依頼内容、プランの効果を伏せた状態で表示されます。

パラメータ

agentstringエージェントのビューは1つのみ: 操作するメールボックスのアイテムと、そのエージェントに渡されたアイテム。エージェントIDにバインドされたトークンは常にそのエージェントのビューを取得します。別のエージェントを指定すると403 AGENT_SCOPEが返されます。
categorystring1 つの案件の種類のみ(invoice、meeting_request、newsletter など)。レスポンスの categories フィールドには、ビューに含まれる各種類とその件数が列挙されます。不明な種類には 400 INVALID_CATEGORY が返されます。
tagstringこのタグ(本人のタグの1つ)を持つ案件のみ。レスポンスの tags フィールドにはビュー内の各タグとその件数が並びます。

応答 200

typestring
as_ofstring
projection_lag_msinteger
categorystring | nullビューを絞り込んでいる案件の種類(category クエリ)。すべての種類の場合は null。
categoriesobjectフィルター前のビューに含まれるすべての案件の種類と、それぞれに含まれる項目数。
tagstring | nullビューを絞り込んでいるタグ(tag クエリ)、すべての案件の場合は null。
tagsobjectフィルター前のビューにある本人のすべてのタグと、それを持つ案件の数。
sectionsobject

応答例

{
  "type": "today",
  "as_of": "2026-09-02T09:15:00.000Z",
  "projection_lag_ms": 4200,
  "category": null,
  "categories": {
    "partner_inquiry": 1
  },
  "tag": null,
  "tags": {
    "lumenworks": 1
  },
  "sections": {
    "now": [
      {
        "id": "wi_789",
        "version": 3,
        "status": "needs_judgment",
        "title": "Investor update",
        "summary": "Paul needs the August metrics before his 16:00 partner call.",
        "category": "partner_inquiry",
        "tags": [
          "lumenworks"
        ],
        "proposed_tags": [],
        "mailbox": {
          "id": "mbx_123",
          "address": "hello@example.com",
          "name": "Hello"
        },
        "source": {
          "type": "domani-postgres",
          "conversation_id": "conv_1",
          "event_id": "msg_1",
          "revision": 1
        },
        "attention": {
          "level": "now",
          "reason": "Deadline today from a known investor",
          "confidence": "high",
          "deadline": "2026-09-02T16:00:00.000Z"
        },
        "decision": {
          "id": "dec_1",
          "version": 1,
          "status": "open",
          "question": "How do you want to answer Paul?",
          "options": [
            {
              "id": "opt_send",
              "label": "Send current metrics",
              "recommended": true
            },
            {
              "id": "opt_tomorrow",
              "label": "Ask for tomorrow"
            }
          ]
        }
      }
    ],
    "needs_you": [],
    "waiting": [],
    "upcoming": [],
    "handled": []
  }
}
GET/api/assistant/work-items/{id}

アシスタントの Work 項目と正確な現在のプランを取得

根拠のある Work 項目、その未解決の Decision とオプション、正確な現在の Action プラン、未解決のコミットメントと期待、インタラクション、レシートを返します。assistant:read のアクセス許可が必要です。認証メールがアシスタントから除外される前にそのメールから作られた案件は、email:auth_secrets のない閲覧者には、タイトル、要約、依頼内容、プランの効果を伏せた状態で表示されます。

パラメータ

id*stringToday キューからの Work 項目 ID

応答 200

idstring
versioninteger
statusstring
titlestring
summarystring
askstring | null所有者が行うか決めるべき唯一のこと。なければ null。
categorystring | null分析が見つけた案件の種類(請求書、会議依頼、ニュースレターなど)。分析が何も示していない場合は null。ルールはラベル category:<kind> としてこれを照合します。
tagsstring[]案件に付いた本人のタグ(CT-01b):一度確認したもの、または手動で付けたもので、それぞれプロバイダー側のスレッドのラベルになります。ルールはラベル tag:<name> として照合します。
proposed_tagsstring[]エンジンが案件に提案するタグ(名前を挙げたプロジェクトごとに1つ)で、まだ確認されていないもの。tag インタラクションで確認すると、同じプロジェクトの次の案件に確認なしで適用されます。
suspectboolean信頼シグナルが送信者を疑わしいと判定しました: この案件はSuspectセクションに配置され、Nowになることはなく、決定も持たず、本人が正当と報告するまでエフェクトは実行されません。
suspect_reasonsstring[]疑わしいと判定された理由を、シグナルごとに1文で説明します(認証の失敗、Reply-Toの相違、類似ドメイン、借用された名前、金銭に関する初回連絡、アシスタントへの指示、返信で秘密を要求)。
senderobject | null
recurrenceobject同じ状況が何回戻ってきたか。1 件のアイテムに N 通のメッセージ。
mailboxobject
opened_atstring | null
delegated_tostring | null所有者がこの項目を任せたエージェントの slug、または null。
delegation_ruleobject | nullこのアイテムを引き渡した常設委任と、それがマッチした理由。オーナーがアイテムを取り戻すと一時停止されます。
unreadboolean所有者が最新の変更後にこの項目を開くまで true になります。
messagesobject[]この項目の元になったメッセージ。新しい順。
historyobject[]この件でこれまでに起きたこと。古い順に、以前のメッセージごとに 1 行。
sourceobject
attentionobject
analysisobject
evidence_refsstring[]
entity_refsstring[]
snoozed_untilstring | null
decisionobject | null
planobject | null
GET/api/assistant/work-items/{id}/brief

WorkアイテムのシチュエーションブリーフをRead

エージェントが行動する前に読む1つのドキュメント: シチュエーション(ステータス、アテンション、リカレンス、センダー)、これまでのストーリー(分析済みか否かを問わず、そのすべてのメール)、分析が確立したファクト(バリュー、ベーシス、バリディティを持つクレーム、およびエンティティ)、誰から何をいつから待っているかを含むオープンなコミットメントとエクスペクテーション、すでに解決したもの(クローズされたループと受領)、現在のDecisionとそのオプション、提案される次のステップ(Decisionの推奨オプションがある場合はそれ、ない場合はルール: 期限切れのプロミス、追跡すべき期限切れのエクスペクテーション、センダーのアスクへの回答)、およびエビデンスメッセージ。決定論的で安価: モデルコールなし。エージェントトークンは、操作するメールボックスのアイテムと、渡されたアイテムをRead。

パラメータ

id*stringWork アイテム ID
synthesisbooleanモデルの解釈(要約、具体的な次のアクション、未解決の質問)をスキップして決定論的ブリーフのみを読む場合はfalseに設定、解釈は証拠の状態ごとにキャッシュされる

応答 200

idstring
versioninteger
generated_atstring (date-time)
titlestring
summarystring
askstring | null
mailboxobject
delegated_tostring | null
situationobject
storyobject[]状況のすべてのメール、古い順、分析が付けた1行のタイトル付き
factsobject[]
entitiesobject[]
commitmentsobject[]オーナー側が行ったオープンな約束
expectationsobject[]他者から待っているオープンな事項
settledobject[]クローズされたループと受領、新しい順
awaitingobject[]
decisionobject | null現在準備されているDecisionとそのオプション
summary_sourcestring要約がモデルによる証拠の解釈なのか、パイプライン自身の文なのか
suggested_nextobject | null
open_questionsstring[]次のアクション前にオーナーのみが決定できること、最大3つの質問
synthesisobject | null要約と次のアクションを書いたモデル呼び出し、ブリーフが決定論的のみの場合はnull
evidenceobject[]
owner_repliesobject[]
evidence_refsstring[]
GET/api/assistant/brief

コレスポンデントのシチュエーションブリーフをRead

人に返信する前に知るべきこと: 読み取り可能なメールボックス(または1つのメールボックス)全体での最新のアクティブなWorkアイテムのブリーフ、その人が関係する他のアイテム、および最後の10通のメール。briefは、まだ何も分析されていない場合はnull。

パラメータ

correspondent*stringその人のメールアドレス
mailboxstring1つのメールボックスアドレス(slug@domain)に制限

応答 200

correspondentstring
mailboxesstring[]
briefany
relatedobject[]
recent_mailobject[]
generated_atstring (date-time)
GET/api/assistant/work-items/{id}/facts

Work アイテムの背後にある事実を読む

アイテムのすべての分析からマージされた主張とエンティティ (最新のものが優先)、さらに保存されたコミットメントと期待とそのステータス。エージェントトークンは、操作するメールボックスのアイテムと、それらに渡されたアイテムを読み取ります。

パラメータ

id*stringWork アイテム ID

応答 200

work_item_idstring
versioninteger
analysedboolean
analysesobject[]
factsFact[]
entitiesobject[]
commitmentsobject[]
expectationsobject[]
evidence_refsstring[]
POST/api/assistant/work-items/{id}/open

Work 項目を開封済みにする

所有者がこの Work 項目を現在のバージョンで開いたことを記録し、項目が再び変更されるまで未読マーカーを消します。assistant:write スコープが必要です。

パラメータ

id*string

応答 200

okboolean
opened_atstring
unreadboolean
GET/api/assistant/learned

アシスタントがあなたについて学習したこと

同じ送信者または組織が戻ってくるたびに無視された後にアシスタントが提案する静音ルール、有効なミュート(アシスタントが「今日」から外している送信者、ドメイン、状況)とそれぞれの理由、そして一度確認したタグ(それぞれ同じプロジェクトの次の案件に確認なしで適用)。静音ルールは suggestions エンドポイントで受け入れ、ミュートは mutes エンドポイントで、タグは tags エンドポイントで忘れます。

応答 200

mutesobject[]有効なミュート、新しい順。
suggestionsAssistantSuggestion[]開いている静寂ルール: suggestionsエンドポイントを通じて1つを受け入れると、それが持つミュートが設定されます。
tagsobject[]一度確認したタグ(CT-01b)、新しい順:それぞれ忘れられるまで、同じプロジェクトの次の案件に確認なしで適用されます。
DELETE/api/assistant/learned/mutes

ミュートを忘れる

その送信者、ドメイン、または状況の次のメールが再びアイテムになります。

リクエストボディ

kind*string(sender | sender_domain | situation)
value*stringlearnedビューがリストするアドレス、ドメイン、または状況キー。

応答 200

okboolean
kindstring
valuestring
DELETE/api/assistant/learned/tags

タグを忘れる

確認なしで適用されるものはなくなります:そのプロジェクトの次の案件は再びタグを提案します。タグを持つ案件はそのまま保持します。

リクエストボディ

name*stringlearned ビューに表示されているとおりのタグ。

応答 200

okboolean
namestring
GET/api/assistant/work-items/{id}/investigate

事案を調査する: レジストリとリンクが示すもの

その瞬間に、公開インフラストラクチャが送信者のドメインについて保持している事実(その登録日とレジストラ、そのSPFとDMARC態勢、メールを受信するかどうか)、ソースメッセージのすべてのリンクが実際にどこに向かうか(一度に一ホップずつ辿られるリダイレクト、最終ホストとそのドメインの事実)、および各添付ファイルの実体(名前と宣言された種類に対する最初のバイト列)を読み取ります。これらの事実が追加するシグナル(数日前に登録されたドメイン、別の場所に着地するリンク、何も保護しない送信者のドメイン、ドキュメントとして名付けられたプログラム)とともにドシエを返します。ベンダーなし、アカウントなし、何も保存されません。失敗したルックアップはそれ自体が一つの事実です。

パラメータ

id*string

応答 200

work_item_idstring
sourcestring送信元メッセージが読まれたか、または送信者のアドレスのみが読まれたか。
checked_atstring
senderobject
linksobject[]
attachmentsobject[]各添付ファイルの実体を、その名前と宣言された種類が約束するものに対して、最初のバイト列から読み取ったもの。
signalsobject[]事実が評価に何を加えるか、それぞれ1文で。
GET/api/assistant/work-items/{id}/sender

案件の背後にいるのは誰か: 組織、関係者、履歴

案件の送信者カードを返します: 保存されたドメインプロファイルが知る送信者の組織 (名前、法人名、カテゴリ、ウェブサイト、登録日、メールの体制。gmail.com のような共有メールドメインや一度も分析されていないドメインの場合は null で、リアルタイムの分析は決して行いません)、ストーリーのメッセージが from、to、cc に含む人々とその役割、同じ組織に属するかどうか (読者自身のメールボックスは除外)、そして関係: 読者のメールボックス全体でこのアドレスからどれだけのメールが来たか (最大 50 件まで)、最初と最後はいつか、送信者の他の案件、同じドメインの同僚が持ち込んだ案件。assistant:read スコープが必要です。

パラメータ

id*string

応答 200

work_item_idstring
senderobject | null
organisationobject | null共有メールドメインまたは一度も分析されていないドメインの場合は null。
participantsobject[]
relationshipobject
generated_atstring (date-time)
POST/api/assistant/work-items/{id}/interactions

フェンスされた人間の Decision を記録

オプションを選択、指示を与える、引き継ぐ、スヌーズ、無視、修正、信頼判定を報告(フィッシングまたは正当)、または待機中のプランを承認または却下します(承認されたプランは即座に実行され、その受領書が応答に含まれます)。この呼び出しはwork_item_versionで保護され、idempotency_keyによって冪等に再実行されます。選択または指示は正確な下書きを準備しますが、通常の返信フローを経由します。このエンドポイントはメールを送信しません。assistant:writeスコープが必要です。

パラメータ

id*string

リクエストボディ

scopestring(item | sender | sender_domain | situation)タイプ ignore の場合: 送信者、そのドメイン、またはこの繰り返し発生する状況をミュートして、二度と戻らないようにします。
verdictstring(phishing | legitimate)typeがreportの場合: 信頼シグナルに対する本人の判定。Phishingは案件をクローズし、送信者をミュートし、その他の進行中の案件もクローズします。legitimateは疑わしい判定とその理由をクリアします。
plan_idstringtypeがapproveまたはrejectの場合:待機中のアクションプラン(提案またはエスカレーション済み)。
reasonstringtypeがrejectの場合:理由、プランに保持されます。
type*string(choose | instruct | take_over | snooze | ignore | correct | delegate | approve | reject | report | tag)
addstring[]type が tag の場合:案件に付けるタグ(提案されたものの確認、または手動のもの。小文字、英字、数字、ハイフン)。一度追加したタグは学習され、同じプロジェクトの次の案件に確認なしで付きます。
removestring[]type が tag の場合:案件から外すタグ(ここで指定した提案は却下されます)。learned ページはタグを完全に忘れます。
agent_slugstring | nulldelegate タイプの場合:この項目を任せるエージェントの slug、または取り戻す場合は null。
member_idstring | nulltype delegateの場合: エージェントの代わりにアイテムを引き渡すワークスペースのメンバーのユーザーID。そのメンバーは自分のTodayのhanded_to_youの下でそれを見つけ、自分のアクセス権限の下でタスクエンドポイントを通じて作業します
work_item_version*integer
decision_idstring
decision_versioninteger
option_idstring
instructionstring
untilstring (date-time)
remind_atstring (date-time)
fieldstring
correctionstring
idempotency_key*string

応答 200

okboolean
work_itemAssistantWorkItem
plan_idstring | null
GET/api/assistant/action-plans/{id}

不透明 ID による正確なアクションプレビューを取得

準備された Action プランの正確な返信アイデンティティ、受信者、本文、コミットメント、副作用、さらにその有効期限とソースリビジョンを返します。これにより、クライアントはユーザーが assistant_plan_id を使用して既存の返信エンドポイント経由で送信する前に何が起こるかを表示できます。assistant:read スコープが必要です。

パラメータ

id*string不透明な Action プラン ID

応答 200

idstring
statusstring
expires_atstring
source_revisioninteger
effectsobject[]
GET/api/assistant/activity

コンテンツを最小化したアシスタント Activity を取得

呼び出し元に帰属する最近のインタラクションとレシートをメッセージ本文なしで一覧表示します。assistant:read スコープが必要です。

パラメータ

limitinteger

応答 200

typestring
as_ofstring
eventsobject[]
GET/api/assistant/data

派生したアシスタントデータをエクスポート

分析、承認されたクレーム、Decision、インタラクション、レシート、モデル使用状況を JSON 添付ファイルとしてエクスポートします。ソースメール本文や添付ファイルのバイトは含まれません。assistant:write スコープが必要です。さらに email:auth_secrets も必要です (それ以外は 403 INSUFFICIENT_SCOPE)。派生状態には、認証メールがアシスタントから除外される前に、アシスタントがそのメールから得た内容が含まれている可能性があります。

応答 200

formatstring
exported_atstring
notestring
DELETE/api/assistant/data

アシスタント派生データを削除

派生インテリジェンス、ジョブ、モデル使用状況、デバイス、インポート、設定を冪等的に削除し、元のメールは保持します。assistant:write スコープが必要です。

応答 200

okboolean
deletedobject
source_mail_deletedboolean

応答例

{
  "ok": true,
  "deleted": {
    "work_items": 12,
    "claims": 40,
    "entities": 9,
    "jobs": 52
  },
  "source_mail_deleted": false
}
POST/api/assistant/devices

秘匿された Now アラート用にデバイスを登録

1つのアプリインストールと環境用の暗号化されたプッシュトークンを登録またはローテーションします。ネイティブアプリのみが呼び出します。アクティブなアシスタントと assistant:write スコープが必要です。

リクエストボディ

installation_id*string
platform*string(ios | android)
environment*string(development | preview | production)
push_token*string
locale*string
lock_screen_detailstring(redacted | sender_only)

応答 200

okboolean
deviceobject
DELETE/api/assistant/devices

デバイス登録を取り消す

1つのインストールのすべてのプッシュ登録を取り消します(例: サインアウト時)。assistant:write スコープが必要です。

パラメータ

installation_id*string

応答 200

okboolean

メール

GET/api/domains/{domain}/email/check

電子メールの DNS 健全性を確認する (MX、SPF、DMARC、DKIM)

ドメインの電子メール DNS 構成 (MX レコード、SPF、DMARC、DKIM) をチェックします。 MX レコード (Google Workspace、Proton、Fastmail) からメール プロバイダーを自動検出します。

パラメータ

domain*stringあなたが所有するドメイン名

応答 200

domainstring
providerstring | null自動検出されたメールプロバイダー(google-workspace、proton、fastmail)。未検出の場合は null
mxobject
spfobject
dmarcobject
dkimobject

応答例

{
  "domain": "mysite.com",
  "provider": "google-workspace",
  "mx": {
    "configured": true,
    "records": [
      "1 aspmx.l.google.com",
      "5 alt1.aspmx.l.google.com"
    ]
  },
  "spf": {
    "configured": true,
    "value": "v=spf1 include:_spf.google.com ~all"
  },
  "dmarc": {
    "configured": true,
    "value": "v=DMARC1; p=quarantine; rua=mailto:dmarc@mysite.com"
  },
  "dkim": {
    "configured": true,
    "selectors": [
      "google"
    ]
  }
}

例

curl https://domani.run/api/domains/mysite.com/email/check \
  -H "Authorization: Bearer domani_sk_xxx"
GET/api/domains/{domain}/email/deliverability

所有者を対象とした電子メール到達性の健全性を取得する

確定的な認証の準備状況、30 日間の受信者に重み付けされた配信結果、アカウントの安全性の状態、および測定されたプロバイダーの配置を分離します。準備スコアは受信トレイの確率ではなく、測定されていない配置は not_tested として返されます。

パラメータ

domain*stringあなたが所有するドメイン名

応答 200

domainstring
statusstring
confidencestring
checked_atstring (date-time)
window_daysinteger
readinessobject確定的な DNS 構成の準備。スコアは受信箱の確率ではありません。
sending_healthobject
placementobject
actionsobject[]
caveatsstring[]

例

curl https://domani.run/api/domains/mysite.com/email/deliverability \
  -H "Authorization: Bearer domani_sk_xxx"
POST/api/domains/{domain}/email/setup

ドメインに電子メールを設定する

ドメイン上で電子メール DNS を事前構成します (オプション)。これは、必要に応じて create_mailbox によって自動的に呼び出されます。既存のメール プロバイダー (Google Workspace、Fastmail、Proton) をオーバーライドするには、force=true を渡します。

パラメータ

domain*stringドメイン名

リクエストボディ

forceboolean既存のメール プロバイダー (Google Workspace、Fastmail、Proton) をオーバーライドします。デフォルト: false

応答 200

domainstring
statusstring
verified_atstring | null
receiving_verifiedbooleanドメインの MX がプラットフォームの受信サーバーを指しており、そのアドレス宛のメールが受け付けられる場合は true。
sending_configuredboolean
sending_verifiedboolean
recordsDnsRecord[]
hintstring
DELETE/api/domains/{domain}/email/setup

ドメインからメールを削除する

ドメインから電子メールを削除し、すべてのメールボックスとメッセージを削除して、emailEnabled を false に設定します。ドメイン全体のメールを変更するため、メールボックスに限定されたトークンには 403 MAILBOX_CONFINED が返されます。

パラメータ

domain*stringドメイン名
GET/api/domains/{domain}/email/status

メールのDNSステータスを確認する

ドメインの電子メール DNS 検証ステータスを確認します。ドメインが検証され準備ができているかどうか、DNS レコードの詳細、およびメールボックス数を返します。

パラメータ

domain*stringドメイン名

応答 200

domainstring
enabledboolean
verifiedboolean受信と送信の両方が検証された場合にのみ True
receiving_verifiedbooleanドメインの MX がプラットフォームの受信サーバーを指しており、そのアドレス宛のメールが受け付けられる場合は true。
sending_configuredboolean
sending_verifiedboolean
recordsDnsRecord[]
mailbox_countinteger
dns_managedbooleanDomani がドメインのゾーンを自ら書き込む場合は true。保留中のレコードは毎時の監査で公開・修復され、手動で追加するものはありません。外部ゾーンの場合は false で、保留中のレコードは DNS プロバイダーで追加する必要があります。
unreachable_addressesstring[]受信 MX が拒否するドメイン上のアドレス(ホスト型ドメインにあり、まだメールホストに登録されていない api メールボックス)。すべてのアドレスが受信できる場合は空です。登録は自動的に再試行されます。
provider_statusstring
mailbox_plan_keystringここでカスタムドメインのメールボックスに適用されるワークスペースのプランキー (ワークスペース自身のサブスクリプションであり、サインイン中のユーザーの個人プランとは限りません)。
mailbox_limitinteger | nullワークスペース全体でプランが許可するカスタムドメインのメールボックス数。null は無制限です。
mailbox_limit_reachedbooleanワークスペースがプランのメールボックス上限に達すると True。このドメインにメールボックスを追加するには、先にアップグレードが必要です。
mailbox_upgrade_planobject | nullもう 1 つメールボックスを追加できる最も安いプラン。すでに無制限の場合は null。
hintstring
POST/api/email

domani.run でメールボックスを作成する

domani.run で無料のメール アドレスを作成します (例: hello@domani.run)。ドメインの所有権は必要ありません。無料の @domani.run メールボックスはユーザーごとに 1 つに制限されています。一般的なナメクジの多くは予約されています。

リクエストボディ

slug*string電子メール アドレスのローカル部分 (例: hello@domani.run の場合は「hello」)
namestring表示名 (デフォルトでは大文字のスラッグ)

応答 201

idstring
addressstring
namestring | null
slugstring
domainstring
kindstring
workspace_idstring | null
access_rolestring
effective_capabilitiesMailboxEffectiveCapabilities
collaboration_enabledboolean
sharedboolean呼び出し元以外に、このメールボックスを読めるユーザーが少なくとも 1 人いるかどうか
message_countinteger
webhook_urlstring | null
header_namesstring[]構成された Webhook 認証ヘッダー名。値は決して返されません
forward_tostring | null
signing_secretstring | null
created_atstring (date-time)
hintstring
GET/api/email

すべてのメールボックスをリストする

ワークスペース許可を含め、代理プリンシパルがすべてのドメインにわたってアクセスできるすべてのメールボックスをリストします。

パラメータ

domainstringドメインでフィルタリングする

応答 200

mailboxesobject[]
POST/api/emails

メールボックスを作成する

メールアドレス(メールボックス)を作成します。 「hello@mysite.com」のような完全なアドレスを入力します。電子メール DNS は、最初の使用時に自動的に構成されます。既存の電子メール プロバイダーをオーバーライドするには、force=true を渡します。カスタム ドメインのメールボックスの容量は、アクティブなアカウントまたはワークスペース プランによって決まります。すべてのアカウントは、POST /api/email を使用して、無料の @domani.run メールボックスを 1 つ個別に作成できます。 workspace_id を渡して、所有するワークスペース内にメールボックスを作成します。カスタム ドメインの場合、これにより、ドメインとそのスコープ外のすべての兄弟メールボックスが明示的かつアトミックにそのワークスペースに導入されます。ドメインを複数のワークスペースに分割することはできません。 kind="hosted" を渡すと、デフォルトの API メールボックス (API + Webhook 経由で送受信) ではなく、実際の IMAP/SMTP メールボックスを独自のドメイン (Apple Mail、Thunderbird、または任意のクライアントに接続) に作成します。ホストされたメールボックスは、公開する DNS レコード、メール クライアント設定、およびワンタイム アプリ パスワードを返します。所有しているドメインが必要です。

リクエストボディ

address*string完全な電子メール アドレス、例: hello@mysite.com
namestring送信メールの表示名 (例: 「John Doe」)
forceboolean既存の MX レコードをオーバーライドします。デフォルト: false
kindstring(api | hosted)「api」(デフォルト: API + webhook 経由で送受信)または「hosted」(ドメイン上の実際の IMAP/SMTP メールボックス)
workspace_idstringメールボックスを所有するワークスペース。ワークスペース所有者のみがリソースを採用できます。

応答 201

idstring
addressstring
namestring | null
domainstring
slugstring
kindstring
workspace_idstring | null
access_rolestring
effective_capabilitiesMailboxEffectiveCapabilities
collaboration_enabledboolean
sharedboolean呼び出し元以外に、このメールボックスを読めるユーザーが少なくとも 1 人いるかどうか
message_countinteger
webhook_urlstring | null
header_namesstring[]構成された Webhook 認証ヘッダー名。値は決して返されません
forward_tostring | null
signing_secretstring | null受信 Webhook ペイロードを検証するための HMAC シークレット (作成時に 1 回表示されます)
host_idstringホストされているメールボックスのメールホスト プリンシパル ID
dns_recordsDnsRecord[]
dns_statusstring
receiving_statusstring
sending_statusstring
sending_errorobject
client_settingsobject
credentialobject
storage_quota_bytesinteger
created_atstring (date-time)
hintstring
GET/api/emails

すべてのメールボックスをリストする

ワークスペース許可を含め、代理プリンシパルがアクセスできるすべてのメールボックスをリストします。 GET /api/email と同じです。

パラメータ

domainstringドメインでフィルタリングする

応答 200

mailboxesobject[]
GET/api/emails/{address}

メールボックスの詳細を取得する

特定のメールボックスの詳細を完全な電子メール アドレス (URL エンコードされたもの、例: hello%40mysite.com) で取得します。

パラメータ

address*string完全な電子メール アドレス (URL エンコードされたもの、例: hello%40mysite.com)

応答 200

idstring
addressstring
slugstring
domainstring
kindstring
workspace_idstring | null
access_rolestring
effective_capabilitiesMailboxEffectiveCapabilities
webhook_urlstring | null
forward_tostring | null
signing_secretstring | nullマネージャー用の HMAC シークレット。ビューア/レスポンダの場合は null
message_countinteger
storage_quota_bytesinteger | null
storage_used_bytesinteger | null
storage_measured_atstring (date-time) | null
created_atstring (date-time)
PATCH/api/emails/{address}

メールボックスを更新する

メールボックスの表示名、Webhook URL、または転送先電子メール アドレスを完全な電子メール アドレスで更新します。無効/クリアするには null に設定します。

パラメータ

address*string完全な電子メール アドレス (URL エンコード)

リクエストボディ

namestring | nullメールボックスの表示名。クリアするには null に設定します。
webhook_urlstring | null受信電子メール Webhook の HTTPS URL、またはクリアする場合は null
forward_tostring | null受信メールの転送先のメール アドレス、またはクリアする場合は null
drop_spambooleanスパムとしてフラグが付けられた受信メッセージをドロップします (保存または Webhook しません)。
tone_notesstring | nullこのメールボックスから下書きを作成する前にエージェントが読む文体のヒント (トーン、署名、言い回しの推奨事項と禁止事項)。クリアするには null に設定します。

応答 200

idstring
addressstring
slugstring
domainstring
namestring | null
webhook_urlstring | null
forward_tostring | null
tone_notesstring | null
signing_secretstring受信 Webhook ペイロードを検証するための HMAC シークレット
DELETE/api/emails/{address}

メールボックスを削除する

完全な電子メール アドレスを使用してメールボックスを削除します。本体にconfirm=trueが必要です。確認を行わない場合は、message_count を含むプレビューを返します。

パラメータ

address*string完全な電子メール アドレス (URL エンコード)

リクエストボディ

confirmboolean実際に削除するには true にする必要があります。プレビューを省略します。
POST/api/emails/{address}/send

メールを送信する

完全なメールアドレスで識別されるメールボックスからメールを送信します。サーバーは最初に必須のバージョン付きポリシーを実行し、客観的な安全上の問題を拒否し、評判や内容品質の問題を警告として返します。共同スレッド返信では、作成リース、確認済みの reply_version、安定した冪等性キーを渡します。サーバーは送信直前に古い返信や二重返信をアトミックに拒否します。1 通あたり最大 20 人、メールボックスあたり 1 時間 100 人までです。

パラメータ

address*string送信者のメールアドレス(URLエンコード)

リクエストボディ

to*any受信者の電子メールアドレス
ccanyCC 受信者
bccanyBCC 受信者
subjectstring
textstringプレーンテキスト本文
htmlstringHTML本文
reply_tostring返信先アドレス
in_reply_tostring返信される電子メールのメッセージ ID (スレッド用)
referencesstringスペースで区切られたメッセージ ID チェーン (スレッド用)
idempotency_keystring重複送信を防ぐ安定したキー
send_atstring (date-time)送信を予約します (ISO 8601、30 秒後から 30 日後まで)。メッセージはステータス 'scheduled' で保存され、サーバー側で送信されます。キャンセルするには、その前にゴミ箱に移動してください。send_at では添付ファイルはまだサポートされていません。
coordinationobject保護された共同返信に必要です。
allow_risky_contentboolean非推奨の互換性フィールド。パブリック HTTPS サードパーティ認証リンクは警告付きで許可されます。客観的な安全ブロックを無効にすることはできません。
attachmentsobject[]添付ファイル (最大 10 個、合計最大 40MB)。コンテンツはbase64でエンコードされている必要があります。

応答 200

idstring
message_idstringRFC 5322 メッセージ ID
fromstring
tostring
bccstring | null送信した Bcc 受信者。自分の送信メッセージにのみ返されます。ヘッダーとして配信されることはなく、受信したメッセージに含まれることもありません。
statusstring
attachments_countinteger
suppressedstring[]
deliverabilityobjectこの送信に適用されたバージョン付きポリシー レポート。決定と分類されたチェックを検査する
POST/api/emails/{address}/deliverability-check

アウトバウンド電子メールのプリフライト

電子メール クォータを送信または消費せずに、送信エンドポイントによって使用される正確なバージョン管理されたサーバー側ポリシーを実行します。サードパーティ ドメイン上のパブリック HTTPS 認証リンクは、レピュテーション警告付きで許可されます。ローカル/プライベート URL、非 HTTPS 認証リンク、および実行可能添付ファイルはブロックされます。 102 KB を超えるボディでは、クリッピング警告が生成されます。

パラメータ

address*string送信者のメールアドレス(URLエンコード)

リクエストボディ

subjectstring
textstring
htmlstring
idempotency_keystring
allow_risky_contentboolean非推奨の互換性フィールド。客観的な安全ブロックを無効にすることはできません。
attachmentsobject[]

応答 200

policy_versionstring
decisionstring
safe_to_sendboolean決定 != 拒否と同等の下位互換性のあるブール値
riskstring
scoreinteger
authentication_messageboolean
checksobject[]
blocked_reasonsstring[]
warningsstring[]
override_usedboolean
GET/api/emails/{address}/messages

メールの一覧表示

正規のフォルダーまたは仮想ビュー内の電子メールを一覧表示します。デフォルトは受信トレイです。フォルダーの場所は、メッセージの方向やスパム判定とは無関係です。 認証メール (OTP / 検証コード、パスワード リセット、マジック リンク) にはsecurity: "auth"というタグが付けられます。 email:auth_secrets スコープのないトークンには、件名と本文がマスク済み (redacted: true) のメッセージが表示されます。メタデータ (送信者、日付) は表示されたままになります。subject、q、attachments の各フィルターは、呼び出し元が読める内容に対して一致します。このスコープがない場合、そのようなメッセージはマスクされた件名と本文でのみ一致するため、含まれるコードで検索しても何も見つかりません。

パラメータ

address*stringメールボックスのメールアドレス(URLエンコード)
cursorstring前の応答のページネーション カーソル
limitinteger返される最大メッセージ数
directionstring(in | out | all)方向によるフィルター (デフォルト: すべて)
folderstring(inbox | archive | sent | spam | trash)システムフォルダー。 view とは相互に排他的です。デフォルトは受信トレイです。
labelstringカンマ区切りのラベル: これらのいずれかを持つメッセージのみ
viewstring(starred | all | needs_human | scheduled)仮想ビュー。フォルダーとは相互に排他的です。
sincestringISO タイムスタンプ - この日付以降に作成されたメッセージのみを返します
untilstringISO タイムスタンプ - この日付より前に作成されたメッセージのみを返します
fromstring送信者アドレスでフィルタリングする
tostring受信者アドレスでフィルタリングする
subjectstring件名でフィルタリングする
qstring送信者、受信者、件名、プレーンテキスト本文にわたる大文字と小文字を区別しない広範な検索
unreadboolean未読メッセージのみを返す
attachmentsboolean添付ファイルのみを含むメッセージを返す
spambooleanスパム フラグによるフィルター (スパム フラグの付いた受信を非表示にするには false を渡します)

応答 200

messagesobject[]
next_cursorstring | null
GET/api/emails/search

意味と単語でメールを検索

読み取り可能なメールボックスを検索します。mailboxで1つのメールボックスに絞ることも可能です。デフォルトではハイブリッド検索:メッセージの埋め込み(pgvector、コサイン類似度)と重み付き単語インデックスを、1つのステートメントで相互ランク融合し、わずかな新着度ブーストを加えます。whyでどちらの分岐がマッチしたかがわかります。qで使えるGmail演算子: from: to: cc: subject: label: filename: mailbox: is:unread|read|starred|unstarred has:attachment in:inbox|archive|sent|spam|trash|anywhere after:2026/08/01 before: newer_than:7d older_than:2w (h/d/w/m/y)、"a phrase"、除外には-wordまたは-from:、a OR b。演算子だけのクエリは、一致するメッセージを新しい順に一覧します(why: filter)。サインインコードやリンク、スパム、システムメールはインデックス化されません。アシスタントのsearch_opt_out_mailbox_idsに含まれるメールボックスは単語検索のみ行われます。agent identityに紐づくトークンは、そのagentが操作するメールボックスのみを検索します。email:readが必要です。email:auth_secrets がない場合、受信した認証メールはランキングの前に除外されます。どの単語、演算子、フィルターにも一致しないため、サインインコードを検索しても何も見つかりません。

パラメータ

mailboxstring1つのメールボックスアドレス(slug@domain)に限定します。
q*string探しているもの(任意の言語):名前、参照、またはメールの説明。Gmail演算子も使えます (`from:dave is:unread newer_than:7d -invoice "exact phrase"`)。
modestring(hybrid | semantic | keyword)hybridは埋め込みと単語をランクで融合します。semanticは意味のみを使用します。keywordは単語のみを使用します。
limitinteger返す結果の数。
sincestringこのISOタイムスタンプ以降に受信したメールのみ。
untilstringこのISOタイムスタンプ以前に受信したメールのみ。
folderstring(inbox | archive | sent | spam | trash | anywhere)1つのフォルダ。ゴミ箱は指定するか`anywhere`を使わない限り除外されます。
fromstring送信者アドレスに含まれる文字列。
labelstringカンマ区切りのラベル: これらのいずれかを持つメッセージのみ

応答 200

resultsobject[]
modestring
querystring
took_msinteger
hintstring

例

curl "https://domani.run/api/emails/search?q=facture+tucows+ao%C3%BBt&limit=5" \
  -H "Authorization: Bearer domani_sk_xxx"
POST/api/emails/connect/gmail

Gmailの受信トレイの接続を開始

あなたのアカウントとインポート境界に紐付けられたGoogleの同意URLを返します。ブラウザで開いてください。同意後、受信トレイは独自のアドレスで接続されたメールボックスになり、境界より後に受信したメール(デフォルト: 過去24時間)がインポートされ、新しいメールは到着と同時に追従します。受信トレイ全体は決してインポートされません: 後でPOST /api/emails/{address}/importで拡大してください。email:writeが必要です。サーバーでGoogle OAuthが設定されている必要があります。

リクエストボディ

accessstring(read | write)read (デフォルト) は受信トレイを読み取ります; writeはプラットフォームがラベルと既読状態を変更し、その人として送信することも許可し、継続的な委任の効果を持ちます。read-onlyグラントを拡張するにはwriteで再接続してください。
sincestring (date-time)この時刻より後に受信したメールをインポート
windowstring(24h | 7d | 30d | 1y)sinceの代わりのプリセット、デフォルトは24h
workspace_idstringメールボックスが属するワークスペース、デフォルトはあなたの個人ワークスペース
login_hintstring事前選択するGoogleアカウント
return_tostring同意後にブラウザを送るアプリパス

応答 200

auth_urlstring
statestring
import_sincestring (date-time)
expires_ininteger
accessstring
POST/api/emails/connect/outlook

Outlookの受信トレイの接続を開始

あなたのアカウントとインポート境界に紐付けられたMicrosoftの同意URLを返します。ブラウザで開いてください。同意後、受信トレイは独自のアドレスで接続されたメールボックスになり、境界以降に受信したメール(デフォルト: 過去24時間)がインポートされ、新着メールは到着次第追従します。受信トレイ全体は決してインポートされません。後でPOST /api/emails/{address}/importで範囲を広げてください。email:writeが必要です。サーバーでMicrosoft OAuthが設定されている必要があります。

リクエストボディ

accessstring(read | write)read (デフォルト) は受信トレイを読み取ります; writeはプラットフォームがラベルと既読状態を変更し、その人として送信することも許可し、継続的な委任の効果を持ちます。read-onlyグラントを拡張するにはwriteで再接続してください。
sincestring (date-time)この時刻より後に受信したメールをインポート
windowstring(24h | 7d | 30d | 1y)sinceの代わりのプリセット、デフォルトは24h
workspace_idstringメールボックスが属するワークスペース、デフォルトはあなたの個人ワークスペース
login_hintstring事前選択するMicrosoftアカウント
return_tostring同意後にブラウザを送るアプリパス

応答 200

auth_urlstring
statestring
import_sincestring (date-time)
expires_ininteger
accessstring
GET/api/emails/connect/providers

受信トレイを接続できる方法を一覧表示

プロバイダーごとに1行(Gmail、Outlook、転送による任意の受信トレイ、ここでホストされるアドレス):接続の開始方法(同意画面、転送ルール、作成されたアドレス)、接続ができること(読み取り、または読み取りと書き込み)、古いメールをインポートするかどうか、このサーバーがそれに対して設定されているかどうか。configuredがtrueの場合のみ接続ボタンを表示します。reasonはオペレーターに対して不足している変数を示します。email:readが必要です。

応答 200

providersMailProvider[]
POST/api/emails/connect/forwarding

転送により受信箱を接続

受信箱自身のアドレスで接続されたメールボックスを作成し、プラットフォームの転送ドメイン上の転送先アドレスと、Gmail、Outlook、その他のプロバイダーの手順を返します。プロバイダーで転送ルールを追加します。そのアドレスに到着したものは展開され(元の送信者、日付、件名)、接続されたメールボックスの下に保存されます。Gmailは転送先アドレスに確認を求めます:コードとリンクが接続に表示されます。最初に戻ってくるメール、またはプローブ(POST /api/emails/{address}/connector/verify)により、接続がアクティブになります。この方法では新しいメールのみが到着します。古いメールはインポートできません。email:writeが必要です。転送ドメインはサーバーで設定されている必要があります。

リクエストボディ

address*string接続する受信箱、例:someone@gmail.com
workspace_idstringメールボックスが属するワークスペース、デフォルトはあなたの個人ワークスペース

応答 200

addressstring
mailbox_idstring
statusstring
forwarding_addressstring
instructionsobject
guideForwardingGuide
POST/api/emails/{address}/connector/verify

転送ルールを通じてプローブを送信

接続された受信箱にメールを送信します。転送ルールがそれを転送先アドレスに戻すと、接続がアクティブになります。転送による接続の場合のみ。email:writeが必要です。

パラメータ

address*string接続されたアドレス、例: someone@gmail.com

応答 200

sent_tostring
forwarding_addressstring
GET/api/emails/{address}/connector

接続されたメールボックスの接続を読み取り

类型、状态、导入边界、同步阶段(导入扫描,然后历史记录)、导入进度(已扫描、已复制、待分析、已分析)、最后同步和最后错误。需要 email:read。転送の確認 (Gmail のコードとリンク) は認証メールです。email:auth_secrets がない場合、その code と url は null になり、redacted: true が付きます。メールボックスに限定されたトークンが見つけられるのは、自身のメールボックスだけです (それ以外は 404)。

パラメータ

address*string接続されたアドレス、例: someone@gmail.com

応答 200

addressstring
mailbox_idstring
kindstring
statusstring
import_sincestring (date-time) | null最初のインポートの境界: それより前に受信したメールはコピーされない
phasestring导入扫描在边界后翻阅邮件时列出,一旦新邮件遵循源的历史记录,历史记录就会列出
paused_reasonstring | null
import_runobject | nullこのメールボックスの現在または最後のインポート実行
source_messages_totalinteger | nullスケールのために、ソースが受信トレイ全体について報告する内容
last_sync_atstring (date-time) | null
last_errorstring | null
backoff_untilstring (date-time) | null
verified_atstring (date-time) | null
connected_atstring (date-time)
cost_cap_usdnumberインポート実行ごとに許可されるモデル使用量の上限(米ドル)
accessstring | nullGmailコネクションの場合: グラントが許可する内容; writeは双方向のラベル操作とその人として送信することを意味します
forwardingobject | null転送による接続の場合:転送先アドレス、到着したもの、Gmailの確認、プローブ、手順
DELETE/api/emails/{address}/connector

接続されたメールボックスを切断

その人自身のコピー(メッセージ、添付ファイル、検索行、保留中のジョブ)と認証情報を削除します。メールボックス行、切断とマークされたリンク、エージェントが行ったこと(受領)は保持されます。接続されたメールボックスのみ切断できます。email:writeが必要です。

パラメータ

address*string

応答 200

disconnectedboolean
addressstring
removed_messagesinteger
removed_attachmentsinteger
POST/api/emails/{address}/import

接続されたメールボックスの古いメールをインポート

将导入扩大到更早的日期:新的导入运行按到达顺序复制新边界和当前边界之间的邮件,在其自己的成本上限下。在导入扫描仍在运行时拒绝。需要 email:write。

パラメータ

address*string

リクエストボディ

since*string (date-time)新しい境界、現在のものより早い

応答 200

import_run_idstring
import_sincestring (date-time)
import_untilstring (date-time)
GET/api/emails/{address}/search

1つのメールボックスを意味と単語で検索

GET /api/emails/searchと同じ検索を、このメールボックスに限定して実行します。email:readが必要です。email:auth_secrets がない場合、受信した認証メールはランキングの前に除外されます。どの単語、演算子、フィルターにも一致しないため、サインインコードを検索しても何も見つかりません。

パラメータ

address*stringメールボックスのメールアドレス(URLエンコード)
q*string探しているもの(任意の言語):名前、参照、またはメールの説明。Gmail演算子も使えます (`from:dave is:unread newer_than:7d -invoice "exact phrase"`)。
modestring(hybrid | semantic | keyword)hybridは埋め込みと単語をランクで融合します。semanticは意味のみを使用します。keywordは単語のみを使用します。
limitinteger返す結果の数。
sincestringこのISOタイムスタンプ以降に受信したメールのみ。
untilstringこのISOタイムスタンプ以前に受信したメールのみ。
folderstring(inbox | archive | sent | spam | trash | anywhere)1つのフォルダ。ゴミ箱は指定するか`anywhere`を使わない限り除外されます。
fromstring送信者アドレスに含まれる文字列。
labelstringカンマ区切りのラベル: これらのいずれかを持つメッセージのみ

応答 200

resultsobject[]
modestring
querystring
took_msinteger
hintstring
GET/api/emails/{address}/threads

メールボックスの会話を一覧表示

メールクライアントがグループ化する方法でグループ化されたメッセージ: 返信は応答するメッセージのスレッドに参加します(In-Reply-To、次にReferencesチェーン)、使用可能なヘッダーのないメールは、30日以内に同じ件名と共通の通信相手を持つ最新のスレッドに参加します、それ以外はすべて最初のメッセージのIDをIDとするスレッドを開始します。スレッドは最終アクティビティ順に並べられます。ゴミ箱とスパムは、フォルダとして指定されない限り参加しません。folder=inbox|archive|sentは、そこにメッセージがあるスレッドを保持しますが、会話全体をカウントします。

パラメータ

address*string
folderstring(all | inbox | archive | sent | spam | trash)
sincestringこの時刻以降にアクティビティがあるスレッドのみ
limitinteger
cursorstring前のページのnext_cursor
labelstringカンマ区切りのラベル: これらのいずれかを持つメッセージを含むスレッドのみ

応答 200

threadsEmailThread[]
next_cursorstring | null
has_moreboolean
GET/api/emails/{address}/threads/{id}

1つの会話を読み取り、最も古いメッセージから順に表示

スレッドのすべてのメッセージ(ゴミ箱を含む、ストーリーから何も欠けないように)とそのテキスト、最も古いものから順に、参加者と未読数を含みます。認証メールはメッセージ読み取りと同じ方法で編集されます。

パラメータ

address*string
id*stringスレッドID(そのメッセージのいずれかのthread_id)

応答 200

idstring
subjectstring | null
participantsstring[]
message_countinteger
unread_countinteger
first_message_atstring (date-time)
last_message_atstring (date-time)
messagesobject[]
GET/api/emails/{address}/events

メールボックスイベントのストリーム配信(サーバー送信イベント)

text/event-streamを返します。cursorなしの場合、ストリームは現在時点から開始します。since(/api/email/changesのcursorまたは以前のイベントのid)を指定すると、まずその時点以降のすべての変更を再生し、その後メールボックスジャーナルをライブで追跡します。各フレームは、変更のタイプをイベント名(message.received、message.updated、message.deleted、message.moved、message.status、mailbox.resync_required、assistant.item.delegated、assistant.item.recalled、...)として、変更内容を再開可能なcursorを含むJSONデータとして、そして同じcursorをフレームidとして運びます。最初のフレームは再開用のcursorを含むreadyです。キープアライブコメントは20秒ごとに送信されます。接続は約5分後にcloseフレームとretry:ヒントで閉じられます。Last-Event-ID(またはsince)を使用して再接続すると、ギャップや重複なしで再開できます。エージェントトークンは、エージェントが操作するメールボックスに限定されます。認証メールから作られた作業項目に関するエントリーは、email:auth_secrets のないトークンに対して title と ask がマスクされた状態で届きます。

パラメータ

address*string
sincestring再生開始位置のcursor。以前のイベントの`cursor`または/api/email/changesのnext_cursor
GET/api/emails/{address}/folders

電子メールのフォルダーと数を一覧表示する

システム フォルダーと仮想ビューのサーバー由来の数と、メールボックス バックエンドのライフサイクル機能を返します。

パラメータ

address*string

応答 200

foldersobject[]
viewsobject[]
capabilitiesobject
POST/api/emails/{address}/messages/actions

メッセージにライフサイクル アクションを適用する

最大 100 個の明示的なメッセージ ID を移動、復元、既読マーク、スター、または完全に削除します。ゴミ箱への移動は元に戻すことができます。完全に削除するにはemail:deleteが必要で、すでにゴミ箱に入っているメッセージのみを受け入れます。すべての応答は、要求された ID ごとに 1 つの結果を含む永続的な操作の受信です。標準のIdempotency-Keyヘッダーまたは従来のidempotency_keyJSON フィールドに安定したキーを指定し、タイムアウト後にそれを再利用します。正確な再試行では、別の変更を加えずに保存されたレシートが返されます。両方の形式が指定された場合、それらは一致する必要があります。別のリクエストでキーを再利用すると、409 が返されます。省略すると、サーバーはキーを作成し、それを本文と Idempotency-Key ヘッダーで返します。バッチの一部のみが成功した場合は 207 を返します。

パラメータ

address*string

リクエストボディ

message_ids*string[]
action*string(move | mark_read | star | restore | delete_permanently | label)
destinationstring(inbox | archive | sent | spam | trash)
readboolean
starredboolean
addstring[]label: 追加するラベル
removestring[]label: 削除するラベル
setstring[]label: すべてのラベルを置き換える (add と remove より優先)
idempotency_keystringこの正確な論理バッチの安定したキー。タイムアウト後に再利用します。

応答 200

operation_idstring
idempotency_keystring
idempotent_replaybooleanこの応答が不変の完了した受信を再利用し、新しい変更を実行しない場合は True。
actionstring
statusstring
resultsobject[]
summaryobject
created_atstring (date-time)
completed_atstring (date-time) | null
PATCH/api/emails/{address}/messages/read

メッセージを既読または未読としてマークする

再試行安全な読み取り状態更新のための互換性エンドポイント。正規の永続的なアイテムごとの操作レシートと従来のカウントを返します。タイムアウト後に Idempotency-Key ヘッダーまたは互換性 idempotency_key フィールドを指定して再利用します。

パラメータ

address*stringメールボックスのメールアドレス(URLエンコード)

リクエストボディ

message_ids*string[]マークするメッセージの ID
read*boolean既読としてマークする場合は true、未読としてマークする場合は false
idempotency_keystring

応答 200

operation_idstring
idempotency_keystring
idempotent_replaybooleanこの応答が不変の完了した受信を再利用し、新しい変更を実行しない場合は True。
actionstring
statusstring
resultsobject[]
summaryobject
created_atstring (date-time)
completed_atstring (date-time) | null
countinteger
POST/api/emails/{address}/messages/delete

メッセージの一括削除

メッセージを再試行しても安全にゴミ箱に移動する互換性エンドポイント。正規の永続的なアイテムごとの操作レシートと従来のカウントを返します。タイムアウト後に Idempotency-Key ヘッダーまたは互換性 idempotency_key フィールドを指定して再利用します。

パラメータ

address*stringメールボックスのメールアドレス(URLエンコード)

リクエストボディ

message_ids*string[]削除するメッセージのID
idempotency_keystring

応答 200

operation_idstring
idempotency_keystring
idempotent_replaybooleanこの応答が不変の完了した受信を再利用し、新しい変更を実行しない場合は True。
actionstring
statusstring
resultsobject[]
summaryobject
created_atstring (date-time)
completed_atstring (date-time) | null
countinteger
GET/api/emails/{address}/messages/{id}

メッセージを受け取る

完全な電子メール アドレスで識別されるメールボックスから、ID を使用して 1 つのメッセージを取得します。認証メール (OTP、パスワード リセット、マジック リンク) として分類されたメッセージは、トークンが email:auth_secrets スコープを持っていない限り、件名/本文がマスクされて返されます。

パラメータ

address*stringメールボックスのメールアドレス(URLエンコード)
id*stringメッセージID

応答 200

idstring
thread_idstringスレッドのすべてのメッセージで共有される会話ID(ルートメッセージID)
labelsstring[]メッセージ上のすべてのラベル; `label` は最初のもの
thread_keystring正規のバックエンド名前空間会話キー
thread_aliasesstring[]会話状態を変更するときに返されるレガシー ワークフロー キー
message_idstring | null
directionstring
fromstringFrom ヘッダーから取った送信者の表示名とアドレス (例: 'Alice <alice@example.com>')。メールに名前がなかった場合はアドレスのみ。
avatar_urlstring (uri) | nullプライバシーを保護する送信者アバターの Domani プロキシ URL
tostringヘッダーのすべての To 受信者を、表示名付きで、送信者が書いた順序のまま (このメールをメールボックスへ振り分けたエンベロープアドレスだけではない)。
ccstring | nullヘッダーのすべての Cc 受信者を表示名付きで。メールに Cc がなかった場合は null。
bccstring | nullBcc 受信者。自分の送信メッセージにのみ含まれます (受信したメッセージには含まれず、ヘッダーとして配信されることもありません)。
reply_tostring | null
subjectstring
textstring | null
htmlstring | null
in_reply_tostring | null
referencesstring | null
attachmentsobject[]
statusstring
is_readboolean
read_atstring | null
eventsobject[]
created_atstring (date-time)
DELETE/api/emails/{address}/messages/{id}

メッセージを削除する

メッセージをゴミ箱に移動します。これはリバーシブルです。 delete_permanently と email:delete トークンを指定したライフサイクル アクションを使用して、すでにゴミ箱に入っているメッセージを消去します。

パラメータ

address*stringメールボックスのメールアドレス(URLエンコード)
id*stringメッセージID

応答 200

idstring
deletedboolean
POST/api/emails/{address}/messages/{id}/reply

メッセージに返信する

完全なメールアドレスで識別されるメールボックス内のメッセージに返信します。スレッドヘッダーは自動入力され、quote が false でない限り、メールクライアントと同様に返信の下に元のメッセージが引用されます(アカウントの言語による引用元の行、テキストでは > 行、HTML では gmail_quote ブロック)。共同クライアントは、作成リース、確認済みの reply_version、安定した冪等性キーを渡す必要があります。サーバーは送信直前に古い返信や二重返信をアトミックに拒否します。

パラメータ

address*stringメールボックスのメールアドレス(URLエンコード)
id*string返信するメッセージID

リクエストボディ

textstringプレーンテキストの返信本文
htmlstringHTML返信本文
ccany追加の CC 受信者
allboolean全員に返信: 元の宛先/CC から CC を自動入力します。
quoteboolean返信の下に元のメッセージを引用します。false の場合は指定したテキストまたは HTML のみを送信します
idempotency_keystringべき冪性キーの本体互換性形式
coordinationobject

応答 200

idstring
message_idstring
fromstring
tostring
statusstring
reply_versioninteger保護された応答用に予約された生成
POST/api/emails/{address}/messages/{id}/forward

メッセージを転送する

完全な電子メール アドレスで識別されるメールボックスから別の受信者にメッセージを転送します。認証メール (OTP、パスワード リセット、マジック リンク) の転送には email:auth_secrets スコープが必要です。これによりシークレットが漏洩されてしまいます。

パラメータ

address*stringメールボックスのメールアドレス(URLエンコード)
id*string転送するメッセージID

リクエストボディ

to*string受信者のメールアドレス
textstring先頭に追加するオプションのメモ

応答 200

idstring
message_idstring
fromstring
tostring
statusstring
GET/api/emails/{address}/avatar

メールボックスのアバター情報を取得する

Gravatar URL (設定されている場合) と、完全な電子メール アドレスで識別されるメールボックスのサインアップ リンクを返します。

パラメータ

address*stringメールボックスのメールアドレス(URLエンコード)

応答 200

addressstring
gravatar_urlstring | null
gravatar_signupstring
has_avatarboolean
hintstring
GET/api/emails/{address}/webhook

メールボックス Webhook 構成を取得する

Webhook URL、署名シークレット、構成された認証ヘッダー名、およびメールボックスのステータスを返します。ヘッダー値は決して返されません。

パラメータ

address*stringメールボックスのメールアドレス(URLエンコード)

応答 200

addressstring
webhook_urlstring | null
signing_secretstring | null
has_webhookboolean
eventsstring[]このWebhookが配信するイベント: email.received、送信メールの配信結果(email.delivered, email.bounced, email.failed, email.suppressed, email.complained, email.delayed)、およびエージェントへの引き継ぎ通知(assistant.item.delegated, assistant.item.recalled); Webhookなしの場合は空
header_namesstring[]設定された認証ヘッダー名。値は決して返されません
hintstring
PUT/api/emails/{address}/webhook

メールボックス Webhook を設定する

HMAC 署名付きメールボックス イベントの HTTPS 宛先を構成します。既定では受信メール、さらに (events でオプトインすると) メールボックスから送信したメールの配信結果も届きます。バウンスは送信が受理されてから数秒で送信者に届き、メッセージの履歴にしか残らないということがなくなります。ライブ受信配信は永続的に保存され、すぐに試行され、最大 3 回まで再試行されます。各試行には、1 から始まる X-Domani-Delivery-Attempt が含まれます。オプションの認証または X-API-Key の値は暗号化され、返されません。人間のオペレーターは、CLI 環境変数オプションを使用してモデル コンテキストの外でそれらを送信する必要があります。

パラメータ

address*stringメールボックスのメールアドレス(URLエンコード)

リクエストボディ

url*stringHTTPS Webhook URL
eventsstring[]プッシュするイベント(assistant.item.delegatedとassistant.item.recalledは、オーナーがTodayアイテムをエージェントに引き継いだ、または取り戻したことをエージェントに通知します; エージェントが操作するすべてのメールボックスのWebhookがこれらを受信します)。省略すると現在のサブスクリプションを維持します(新しいWebhookの場合は受信のみ)。メールボックスから送信されたメールの配信結果はオプトインで、同じURLに同じ署名で届きます: {event, mailbox, email, message: {id, message_id, to, subject, status, detail}}。
headersobjectオプションの暗号化された認証ヘッダー。承認と X-API キーのみが受け入れられます。 {} を送信してクリアします。モデルコンテキストを介して値を渡さないでください。 CLI は --authorization-env と --api-key-env をサポートします。

応答 200

addressstring
webhook_urlstring
signing_secretstring
has_webhookboolean
eventsstring[]このWebhookが配信するイベント: email.received、送信メールの配信結果(email.delivered, email.bounced, email.failed, email.suppressed, email.complained, email.delayed)、およびエージェントへの引き継ぎ通知(assistant.item.delegated, assistant.item.recalled); Webhookなしの場合は空
header_namesstring[]設定された認証ヘッダー名。値は決して返されません
hintstring

例

curl -X PUT https://domani.run/api/emails/agent%40example.com/webhook \
  -H "Authorization: Bearer domani_sk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://agent.example/webhook","events":["email.received","email.bounced","email.delivered"]}'
DELETE/api/emails/{address}/webhook

メールボックス Webhook を削除する

Webhook URL と署名シークレットをメールボックスから削除します。受信メールのみが保存されます。

パラメータ

address*stringメールボックスのメールアドレス(URLエンコード)

応答 200

addressstring
webhook_urlstring | null
signing_secretstring | null
has_webhookboolean
eventsstring[]このWebhookが配信するイベント: email.received、送信メールの配信結果(email.delivered, email.bounced, email.failed, email.suppressed, email.complained, email.delayed)、およびエージェントへの引き継ぎ通知(assistant.item.delegated, assistant.item.recalled); Webhookなしの場合は空
header_namesstring[]
hintstring
POST/api/emails/{address}/webhook/rotate

Webhook 署名シークレットをローテーションする

メールボックス Webhook の HMAC-SHA256 署名シークレットを再生成します。古いシークレットはすぐに無効になります。

パラメータ

address*stringメールボックスのメールアドレス(URLエンコード)

応答 200

addressstring
webhook_urlstring
signing_secretstring
has_webhookboolean
hintstring
POST/api/emails/{address}/webhook/test

メールボックス Webhook のテスト

1 つの署名付きテスト ペイロードをメールボックス Webhook URL に送信します。 HTTP ステータスと配信が成功したかどうかを返します。テストは再試行されません。ライブ受信配信は最大 3 回まで再試行されます。

パラメータ

address*stringメールボックスのメールアドレス(URLエンコード)

応答 200

addressstring
webhook_urlstring
statusinteger
successboolean
hintstring
GET/api/emails/{address}/aliases

メールボックスのエイリアスの一覧表示

メールボックスに配信されるすべてのエイリアス アドレスをリストします。エイリアスを使用すると、メールボックス スロットを使用せずに、複数のアドレス (sales@、hello@、contact@) が 1 つの受信トレイを共有できます。

パラメータ

address*stringメールボックスのメールアドレス(URLエンコード)

応答 200

mailboxstring
aliasesobject[]
hintstring
POST/api/emails/{address}/aliases

メールボックスのエイリアスを追加する

メールボックス スロットを使用せずに、このメールボックスに配信するエイリアス アドレスを追加します。エイリアスはメールボックスと同じドメイン上にある必要があります。裸のスラッグ (「sales」) または完全なアドレス (「sales@mysite.com」) を入力します。

パラメータ

address*stringメールボックスのメールアドレス(URLエンコード)

リクエストボディ

alias*stringエイリアス アドレス - 同じドメイン上のベア slug または完全な slug@domain

応答 201

addressstring
mailboxstring
created_atstring (date-time)
hintstring
DELETE/api/emails/{address}/aliases/{alias}

メールボックスのエイリアスを削除する

メールボックスからエイリアスを削除します。そのアドレスへの電子メールは配信されなくなります。

パラメータ

address*stringメールボックスのメールアドレス(URLエンコード)
alias*string削除するエイリアス アドレス (URL エンコードされた、または裸のスラッグ)

応答 200

addressstring
deletedboolean
hintstring
GET/api/emails/{address}/client-settings

メールクライアント設定の取得(ホスト型)

ホストされたメールボックスの IMAP/SMTP 接続設定を取得して、Apple Mail、Thunderbird、またはその他のメール クライアントを構成します。ユーザー名は完全なアドレスです。パスワードはアプリのパスワードです (POST /api/emails/{address}/credentials を使用して作成します)。ホスト型メールボックスのみ。

パラメータ

address*stringホスト型メールボックス アドレス (URL エンコード)

応答 200

mailboxstring
usernamestring
imapobject
smtpobject
hintstring
GET/api/emails/{address}/credentials

アプリのパスワードをリストする (ホスト型)

ホストされているメールボックスのアプリ パスワードを一覧表示します。シークレットは作成時に 1 回だけ表示されます。これはラベルとメタデータのみを返します。ホスト型メールボックスのみ。

パラメータ

address*stringホスト型メールボックス アドレス (URL エンコード)

応答 200

mailboxstring
credentialsobject[]
hintstring
POST/api/emails/{address}/credentials

アプリのパスワードを作成する (ホスト型)

メール クライアント (IMAP/SMTP) のパスワードとして使用される、ホストされたメールボックスのアプリ パスワードを作成します。シークレットは一度返されます。今すぐ保存してください。ホスト型メールボックスのみ。

パラメータ

address*stringホスト型メールボックス アドレス (URL エンコード)

リクエストボディ

labelstringこのアプリのパスワードを識別するためのラベル。例: 「ラップトップメール」

応答 201

idstring
labelstring
passwordstringアプリのパスワード - 一度表示されますので、すぐに保存してください
client_settingsobject
hintstring
DELETE/api/emails/{address}/credentials/{id}

アプリのパスワードを取り消す (ホスト型)

アプリのパスワードを取り消します。これを使用しているメール クライアントはすぐに接続を停止します。ホスト型メールボックスのみ。

パラメータ

address*stringホスト型メールボックス アドレス (URL エンコード)
id*stringアプリのパスワード ID (リストのエンドポイントから)

応答 200

idstring
revokedboolean
hintstring
POST/api/emails/{address}/messages/{id}/escalate

メッセージに人間向けのフラグを付ける

メッセージをアカウントの人間にエスカレーションします (または clear=true でフラグをクリアします)。メッセージに needs_human を設定し、その会話をステータス needs_human で保留し、email.escalated Webhook とアプリ内通知を発火します。'answer the easy ones, stop on the one the human must decide' (簡単なものには答え、人間が判断すべきものでは止まる) を支える製品プリミティブです。

パラメータ

address*stringメールボックスのメールアドレス(URLエンコード)
id*stringフラグを付けるメッセージ ID

リクエストボディ

reasonstring人間が必要な理由 - 通知に表示されます
clearbooleanフラグを設定する代わりにクリアします (人間が引き継ぎました)

応答 200

idstring
needs_humanboolean
escalation_reasonstring | null
thread_keystring
POST/api/emails/{address}/messages/{id}/remind

フォローアップ リマインダーを設定する

メッセージに 1 回限りのフォローアップ リマインダーを設定します (または clear=true でクリアします)。remind_at の時刻になってもメッセージが未回答の場合 (受信: 返信を送信していない、送信: 相手からの返信を受け取っていない)、email.reminder_due が Webhook とアプリ内通知として発火し、リマインダーは自動的にクリアされます。

パラメータ

address*stringメールボックスのメールアドレス(URLエンコード)
id*string監視するメッセージ ID

リクエストボディ

remind_atstring (date-time)リマインドする ISO 8601 形式の時刻 (1 分後から 90 日後まで)
notestringリマインダーの発火時に表示されるコンテキスト
clearboolean保留中のリマインダーをクリアします

応答 200

idstring
remind_atstring | null
reminder_notestring | null
GET/api/contacts

連絡先を一覧表示する

メールの往来から自動的に蓄積されるアカウントのアドレス帳: 相手、メッセージ数、最終アクティビティ、メモ。既定では最近アクティブだった順 (order=recent) で、表示向けです。ページ送りのスキャン中に新しいメールを受け取った連絡先はカーソルより前に移動するため、そのスキャンでは取りこぼされることがあります。アドレス帳全体を同期するには order=created を指定してください: 作成日時、次に id の古い順で、この並び順のキーは決して変わらないため、スキャン中ずっと存在する連絡先はちょうど 1 回ずつ返され、その間に作成された連絡先は末尾に来ます。カーソルは発行元と同じ並び順でのみ続行できます (それ以外は 400 INVALID_CURSOR)。すべてのメールボックスのデータを集約するため、メールボックスに限定されたトークンは拒否されます (400 MAILBOX_CONFINED)。

パラメータ

qstringアドレスまたは名前の部分文字列でフィルターする
limitinteger返す連絡先の数 (デフォルトは 50)
cursorstring前の応答のページネーション カーソル
orderstring(recent | created)並び順。recent (既定): 最近アクティブだった順で、表示向け。created: 作成日時、次に id の古い順で、全件スキャンでも安定します。それ以外の値は 400 INVALID_ORDER になります。

応答 200

contactsobject[]
next_cursorstring | null
POST/api/contacts

連絡先を作成または更新する

連絡先を保存します: 表示名を設定し、メモ ('prefers short emails'、'decision maker at Acme' など) を添付します。いずれの場合も、メールの往来によってメッセージ数は更新され続けます。

リクエストボディ

address*string連絡先のメール アドレス
namestring | null表示名 (null でクリアされます)
notesstring | nullエージェントと人間がコンテキストとして読むメモ (null でクリアされます)
DELETE/api/contacts/{address}

連絡先を削除する

アドレス帳から連絡先を削除します。相手が再びメールを送ってきた場合、メールの往来によって自動連絡先として再作成されます。

パラメータ

address*string連絡先のメール アドレス (URL エンコード)
GET/api/emails/{address}/rules

受信メールルールをリストする

メールボックスの受信フィルタリング ルールを、適用される優先順位でリストします (最初に一致したものが優先)。

パラメータ

address*stringメールボックスのメールアドレス(URLエンコード)

応答 200

mailboxstring
rulesMailRule[]
hintstring
POST/api/emails/{address}/rules

受信メールルールを追加する

フィールド (from/to/subject/body) に一致する受信メッセージに対して実行するルールを追加します。アクション: ドロップ、mark_read、forward (action_arg = アドレス)、webhook_only (forward-to をスキップ)、label (action_arg = ラベル)。ルールは優先順位 (低いものから順) に適用されます。最初に一致したルールが適用されます。

パラメータ

address*stringメールボックスのメールアドレス(URLエンコード)

リクエストボディ

match_field*string(from | to | subject | body)
match_op*string(contains | equals | regex)
match_value*string
action*string(drop | mark_read | forward | webhook_only | label | escalate)
action_argstring転送アドレス (forward の場合)、ラベル値 (label の場合)、または人間に表示される理由 (escalate の場合)
priorityinteger低いものが最初に実行されます (デフォルトは 0)
enabledbooleanデフォルトは true

応答 201

idstring
priorityinteger低いほうが先に実行される
match_fieldstring
match_opstring
match_valuestring
actionstring
action_argstring | null
enabledboolean
created_atstring (date-time)
DELETE/api/emails/{address}/rules/{ruleId}

受信メールルールを削除する

メールボックスから受信フィルタリング ルールを削除します。

パラメータ

address*stringメールボックスのメールアドレス(URLエンコード)
ruleId*stringルールID

応答 200

idstring
deletedboolean
hintstring
PUT/api/domains/{domain}/email/catch-all

ドメインキャッチオールを設定する

ドメイン上の一致しないアドレスに送信されたすべての電子メールを、指定されたメールボックスにルーティングします。メールボックス、サブアドレス、またはエイリアスに一致しないものはすべてキャッチオールに入ります。メールボックスはドメイン上にすでに存在している必要があります。ドメイン全体のメールを変更するため、メールボックスに限定されたトークンには 403 MAILBOX_CONFINED が返されます。

パラメータ

domain*stringドメイン名

リクエストボディ

mailbox*stringキャッチオール メールボックス - このドメイン上の裸のスラッグまたは完全なアドレス

応答 200

domainstring
catch_allstring | null
hintstring
DELETE/api/domains/{domain}/email/catch-all

ドメインキャッチオールをクリアする

ドメイン上のキャッチオールを削除します。一致しないアドレスへの電子メールは再びドロップされます。ドメイン全体のメールを変更するため、メールボックスに限定されたトークンには 403 MAILBOX_CONFINED が返されます。

パラメータ

domain*stringドメイン名

応答 200

domainstring
catch_allstring | null
hintstring
GET/api/email/changes

1 つのメールボックスを増分同期する

カーソルを使用せずに呼び出して、制限された完全なスナップショットの前にベースラインをキャプチャします。次に、next_cursor を渡して、そのスナップショット中およびその後に発生した変更を再生します。カーソルは不透明で、署名され、メールボックスにバインドされ、30 日後に期限切れになります。プッシュ通知は無効化のヒントにすぎません。このジャーナルは永続的な回復源です。認証メールから作られた作業項目に関するエントリーは、email:auth_secrets のないトークンに対して title と ask がマスクされた状態で届きます。

パラメータ

mailbox_id*string
cursorstring前の応答の不透明な next_cursor
limitinteger

応答 200

changesMailboxChange[]
next_cursorstring
has_moreboolean
requires_full_syncboolean
reasonstring
GET/api/suppressions

抑制されたアドレスをリストする

サプレッション リストにアドレスをリストします。ハード バウンスと苦情 (配信イベントから自動的に取り込まれます) に加えて手動エントリを追加します。これらのアドレスへの送信はスキップされます。カーソルでページ分割されます。

パラメータ

cursorstring前の応答のページネーション カーソル
limitinteger最大エントリ数 (デフォルトは 50、最大 100)

応答 200

suppressionsobject[]
next_cursorstring | null
hintstring
POST/api/suppressions

抑制を追加する

アドレスを抑制リストに手動で追加して、今後の送信でそのアドレスをスキップします。ハード バウンスと苦情は自動的に追加されます。電子メールの送信を停止したいアドレスにこれを使用します。冪等。

リクエストボディ

address*string抑制するメールアドレス
reasonstring(manual | hard_bounce | complaint)理由 (デフォルト: 手動)

応答 201

addressstring
reasonstring
sourcestring
created_atstring (date-time)
hintstring
DELETE/api/suppressions/{address}

抑制を解除する

サプレッションリストからアドレスを削除すると、再度メールを送信できるようになります (受信者がメールボックスを修正した後など)。

パラメータ

address*string抑制された電子メール アドレス (URL エンコード)

応答 200

addressstring
deletedboolean
hintstring

Collaboration

POST/api/workspaces/{id}/ownership-transfer

ワークスペースの所有権の譲渡をリクエストする

所有者限定。 48 時間の承認リンクを既存のメンバーに送信します。認証されたメンバーが受け入れるまでは何も動きません。

パラメータ

id*string

リクエストボディ

membership_id*string
DELETE/api/workspaces/{id}/ownership-transfer/{transferId}

保留中の所有権移転を取り消す

パラメータ

id*string
transferId*string
POST/api/workspaces/ownership-transfers/accept

ワークスペースの所有権を受け入れる

移譲先専用。ワークスペース、対象ドメイン、メールボックスの所有権を一括で移譲します。以前の所有者は管理者となり、既存の支払者は変わりません。

リクエストボディ

token*string

認証

POST/api/auth/register公共

新しいアカウントを作成する

サインインリンクをメールで送信して新しいアカウントの作成(または既存アカウントのサインイン)を開始します。ここではAPIキーは返されません。ブラウザでそのリンクをクリックした人は、すでにサインイン済みの状態でダッシュボードに移動します。ブラウザセッションを持たないCLIやエージェントは、代わりにデバイスログインフロー(POST /api/auth/cli の後に GET /api/auth/cli/poll をポーリング)を使うべきで、同じ承認をメールで送り、承認されるとAPIキーを返します - レスポンスの next_steps にその旨が示されます。ref コードを渡すと、新しいユーザーが紹介者と永続的に結び付けられます - 紹介者はこのユーザーの今後のすべてのドメイン購入についてコミッションを得ます。

リクエストボディ

email*string (email)
refstring紹介コード - このユーザーを紹介者に永続的にリンクします。紹介者はドメインを購入するたびに手数料を受け取ります。

応答 202

okboolean
verification_requiredboolean
messagestring
hintstring
next_stepsstring[]

応答例

{
  "ok": true,
  "verification_required": true,
  "message": "Check your email for a sign-in link to finish creating your account.",
  "hint": "A human must open that email and click the link in a browser to finish verification; no API key is issued yet.",
  "next_steps": [
    "If a person can click the email link, nothing else to do: they land on the dashboard already signed in.",
    "If you are a CLI or agent without a browser session, start a device-login flow instead: POST /api/auth/cli, then poll GET /api/auth/cli/poll?code=... until status is \"complete\" - the same email approves it and hands back an API key, no browser needed on your side."
  ]
}

例

curl -X POST https://domani.run/api/auth/register \
  -H "Content-Type: application/json" \
  -d '{"email": "dev@example.com"}'
POST/api/auth/login公共

マジック リンクのサインイン メールを送信する

指定された電子メールにサインイン リンクを送信します。ユーザーが存在しない場合は、最初にアカウントを作成します。マジック リンクは、認証資格情報を使用してダッシュボードにリダイレクトします。プログラムによる API アクセスの場合は、POST /api/auth/register を使用して API キーを直接取得します。

リクエストボディ

email*string (email)

応答 200

okboolean
messagestring

応答例

{
  "ok": true,
  "message": "Check your email for a sign-in link."
}

例

curl -X POST https://domani.run/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email": "dev@example.com"}'
POST/api/auth/handoff

ホスト間で使うワンタイムのサインインコードを発行する

ブラウザ専用: domani.run または mailzero.run にサインインしている人が、2 通目のマジックリンクなしでもう一方のホストのセッションを再開できるようにします。60 秒間有効で 1 回限り、ホストに紐づいたコードをフラグメントに含む URL を返します。このコードはログに記録されず、クエリ文字列で送信されることもありません。ブラウザセッションの外では役に立たないため、エージェントツールとしては公開されません。

リクエストボディ

target*string(mail | domani)
path*string

応答 200

urlstring

応答例

{
  "url": "https://mailzero.run/auth/handoff#code=xxx&next=%2Finbox"
}
POST/api/auth/handoff/redeem公共

ホスト間で使うワンタイムのサインインコードを引き換える

ブラウザ専用: 対象ホストの /auth/handoff ページが呼び出し、URL フラグメントのコードをセッションと交換します。マジックリンクに対する GET /api/auth/verify とまったく同じ動作です。コードは、このリクエストが届いた Host と一致する必要があります。エージェントツールではありません。

リクエストボディ

code*string

応答 200

okboolean
nextstring

応答例

{
  "ok": true,
  "next": "/inbox"
}

アカウント

GET/api/me

現在のアカウントの詳細を取得する

電子メール、支払いステータス、連絡先情報ステータス、紹介コード、使用回数など、認証されたユーザーのアカウント情報を返します。エージェントは、購入を試みる前に、認証後にこれを呼び出してhas_payment_methodとhas_contactを確認する必要があります。

応答 200

idstring
emailstring (email)
planstring有効な個人用 Domani プラン キー
workspace_plansstring[]ユーザーがアクセスできるワークスペース上の個別のアクティブな Mailzero プラン キー
has_payment_methodbooleanユーザーがカードを登録しているかどうか (ドメインを購入する前に必要)
preferred_payment_methodstring | null
preferred_localestringDomani インターフェースとトランザクション通信で使用されるロケール
has_contactbooleanユーザーが WHOIS 連絡先情報を設定済みかどうか。購入時は任意です (設定されるまでは、Domani の連絡先がユーザーに代わって新しいドメインを保有します)。ドメインを移管で受け入れる前には必須です。
contactRegistrantContact登録者の連絡先情報 (設定されていない場合は null)
referral_codestringあなただけの紹介コード
referral_rateinteger紹介された購入に対する手数料率
balancenumberマーケットプレイスのクレジット残高 (USD) (売上から得たもの)
domain_countinteger所有ドメイン数
token_countintegerアクティブな API トークンの数
featuresstring[]このアカウントで有効になっている機能フラグ (GA 機能に加えて、ユーザーに付与されたプレビュー機能)。例: mailzero_assistant
can_manage_assistantboolean呼び出し元のトークンが assistant:read スコープを持っているかどうか。`features` とは独立しています: 機能フラグはアカウントがアシスタントを利用できる資格があることを示しますが、これはこの特定のトークン(フルアクセス、またはスコープ指定された CLI/OAuth/委任トークン)が設定を読み取りまたは変更できるかどうかを示します。
is_adminboolean
mailbox_entitlementobjectアカウントの個人ワークスペースにおけるカスタムドメインのメールボックス枠。上の `plan` ではなく独自のプランです。ユーザー自身のプランが無料のままでも、ワークスペースは独自の Mailzero サブスクリプションを持てます。
created_atstring (date-time)

応答例

{
  "id": "cm5abc123",
  "email": "dev@example.com",
  "plan": "agent",
  "workspace_plans": [
    "mail_pro"
  ],
  "has_payment_method": true,
  "has_contact": true,
  "referral_code": "x7k9m2",
  "referral_rate": 20,
  "domain_count": 3,
  "token_count": 2,
  "created_at": "2025-01-15T10:30:00.000Z"
}

例

curl https://domani.run/api/me \
  -H "Authorization: Bearer domani_sk_xxx"
PUT/api/me

アカウント設定を更新する

認証されたユーザーの優先支払い方法および/または BCP 47 ロケールを更新します。 API 応答は構造化されたままであり、翻訳されません。

リクエストボディ

preferred_payment_methodstring | null(card | usdc)購入時のデフォルトの支払い方法(card、usdc、または自動選択の場合は null)
preferred_localestring(en | fr | es | pt-BR | ja | zh-Hans | it)Domani インターフェースとトランザクション通信で使用されるロケール

応答 200

preferred_payment_methodstring | null
preferred_localestring
hintstring
DELETE/api/me

アカウントの削除 (ドメインが保持されている間はブロックされます)

認証されたユーザーのアカウント、トークン、Webhook、メールボックス、およびその他のアプリケーション データを完全に削除します。登録されたドメインはアカウントとともに削除されません。すべてのドメインが移管されるまで、リクエストは 409 HAS_DOMAINS で失敗します。この操作は元に戻すことができません。

応答 200

deletedboolean
hintstring
GET/api/me/activation

真実のアクティベーション状態と推奨される次のアクションを取得する

サーバー由来の製品マイルストーンと機能を認識した次のアクションを返します。トークンの作成、トークンの使用、ページビュー、クライアントチェックリストの状態は意図的に除外されています。

応答 200

versioninteger
account_created_atstring (date-time)
entryobject
milestonesobject
statusstring
recommended_actionsobject[]
available_pathsstring[]
dismissed_versioninteger
pending_claimobject | null

例

curl https://domani.run/api/me/activation \
  -H "Authorization: Bearer domani_sk_xxx"
PUT/api/me/activation

初回実行ガイダンスを閉じるか復元する

プレゼンテーション設定のみを保存します。製品のマイルストーンを完了することはできません。

リクエストボディ

dismissed_version*integer

応答 200

dismissed_versioninteger
hintstring
GET/api/me/contact

登録者の連絡先情報を取得する

認証済みユーザーの WHOIS 登録者連絡先情報を返します。購入時は任意です (設定されるまでは、Domani の連絡先がユーザーに代わって新しいドメインを保有します)。ドメインを移管で受け入れる前には必須です。

応答 200

has_contactboolean
contactRegistrantContact

応答例

{
  "has_contact": true,
  "contact": {
    "first_name": "Jane",
    "last_name": "Doe",
    "address1": "123 Main St",
    "city": "New York",
    "state": "NY",
    "postal_code": "10001",
    "country": "US",
    "phone": "+1.2125551234",
    "email": "jane@example.com"
  }
}

例

curl https://domani.run/api/me/contact \
  -H "Authorization: Bearer domani_sk_xxx"
PUT/api/me/contact

登録者の連絡先情報を設定する

WHOIS 登録者連絡先情報を設定または更新します。購入時は任意で、ドメインを移管で受け入れる前には必須です。この情報はドメインの登録者および請求先の連絡先になります。設定されるまでは、Domani の連絡先があなたに代わってドメインを保有します。更新すると、連絡先の変更に対応するレジストラにあるすべての有効なドメインに新しい連絡先が送られ、あなたがその登録者になります。レジストラから 15 日以内に確認を求めるメールが届くことがあります。

応答 200

contactRegistrantContact

例

curl -X PUT https://domani.run/api/me/contact \
  -H "Authorization: Bearer domani_sk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"first_name":"Jane","last_name":"Doe","address1":"123 Main St","city":"New York","state":"NY","postal_code":"10001","country":"US","phone":"+1.2125551234","email":"jane@example.com"}'
POST/api/me/resend-verification

連絡先メールアドレスの確認を再送信する

アカウントの連絡先メールアドレスへ確認メールを再送信します。送信はアドレスごとに 15 分に 1 回までです。

リクエストボディ

emailstring (email)確認する電子メール アドレス (デフォルトはアカウントの連絡先電子メール)

応答 200

sentboolean
already_verifiedboolean
hintstring
GET/api/sessions

サインイン中のデバイスを一覧表示

アカウントにサインインしているすべてのブラウザ、モバイルアプリ、ターミナル。呼び出し元のセッション (current) が先頭です。サインインごとに独自のセッションが開くため、新しいデバイスでサインインしても他のデバイスがサインアウトされることはありません。場所はデバイスがサインインした場所 (IP から推定した国と都市) で、不明な場合は省略されます。API キーはセッションではありません。GET /api/tokens で一覧表示します。

応答 200

sessionsobject[]
hintstring

応答例

{
  "sessions": [
    {
      "id": "cm5ses123",
      "current": true,
      "kind": "web",
      "product": "domani",
      "device": {
        "type": "desktop",
        "os": "macOS",
        "browser": "Chrome"
      },
      "location": {
        "country": "FR",
        "city": "Paris"
      },
      "signed_in_at": "2026-10-01T10:00:00.000Z",
      "last_active_at": "2026-10-18T09:12:00.000Z"
    },
    {
      "id": "cm5ses456",
      "current": false,
      "kind": "mobile",
      "product": null,
      "device": {
        "type": "mobile",
        "os": "iOS",
        "browser": null
      },
      "location": {
        "country": "FR",
        "city": "Lyon"
      },
      "signed_in_at": "2026-09-20T18:30:00.000Z",
      "last_active_at": "2026-10-17T21:04:00.000Z"
    }
  ],
  "hint": "Sign a device out with DELETE /api/sessions/{id}, or every device but this one with DELETE /api/sessions."
}

例

curl https://domani.run/api/sessions \
  -H "Authorization: Bearer domani_sk_xxx"
DELETE/api/sessions

他のすべてのデバイスをサインアウト

リクエストを行っているセッションを除き、アカウントのすべてのセッションをサインアウトします。それらのデバイスは次のリクエストで再度サインインを求められます。API キーは変更されません。

応答 200

revokedinteger
hintstring

応答例

{
  "revoked": 2,
  "hint": "Every other device is signed out. API keys are unchanged."
}

例

curl -X DELETE https://domani.run/api/sessions \
  -H "Authorization: Bearer domani_sk_xxx"
DELETE/api/sessions/{id}

デバイスをサインアウト

1 つのセッションをサインアウトします。current はリクエストを行っているセッションを指します (自分のサインアウトにスコープは不要)。それ以外のセッションには tokens:write が必要です。

パラメータ

id*stringセッション ID (GET /api/sessions から取得)、または `current`

応答 200

successboolean
currentboolean呼び出し元が自分自身をサインアウトした場合は True。そのキーはもう使えません
hintstring

応答例

{
  "success": true,
  "current": false,
  "hint": "That device is signed out and will be asked to sign in again."
}

例

curl -X DELETE https://domani.run/api/sessions/cm5ses456 \
  -H "Authorization: Bearer domani_sk_xxx"

APIトークン

GET/api/agents/identity/{slug}/tokens

エージェント ID の API トークン一覧を取得

このエージェント ID に紐付けられたトークン(マスクされたキー、スコープ、メールボックスの制限、最終使用日時)。エージェント紐付けトークンは、そのエージェントがすべてのアシスタントとメール画面を見る際のビューです。

パラメータ

slug*stringエージェント ID のハンドル。
POST/api/agents/identity/{slug}/tokens

1 回の呼び出しでエージェントに専用の API キーを付与

このエージェント ID に紐付けられたトークンを作成します。エージェントが操作するメールボックスに制限され、エージェントが必要とする最小限のスコープ(assistant:read、assistant:write、email:read、email:write)を持ちます。このキーを使用すると、エージェントは自身の Today、自身のメールボックス、および自身に渡されたアイテムのみを読み取ります。別のエージェントを指定すると 403 が返され、オーナー専用ルート(設定、バックフィル、エクスポート)はそれを拒否します。完全なキーはこのレスポンスでのみ返されます。tokens:write が必要です。メールボックスを運用していないエージェントには、既定ではメール系のスコープが付与されず、それを要求すると 400 AGENT_MAILBOXES_REQUIRED が返されます。メールボックスのないキーは、アカウントのすべてのメールボックスに届いてしまうためです。

パラメータ

slug*stringエージェント ID のハンドル。

リクエストボディ

namestringデフォルトは '<slug> agent' です。
scopesstring[]デフォルトは assistant:read、assistant:write、email:read、email:write です。呼び出し元自身のスコープを超えることはできません。
mailboxesstring[]トークンが制限されるメールボックスアドレス。デフォルトはエージェントが操作するメールボックスです。
expires_ininteger有効期限までの秒数(最大 1 年)。

応答 201

successboolean
tokenobject
agentobject
hintstring

例

curl -X POST https://domani.run/api/agents/identity/dave/tokens \
  -H "Authorization: Bearer domani_sk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"name": "Dave on the laptop"}'
DELETE/api/agents/identity/{slug}/tokens/{id}

エージェントの API トークンを取り消し

このエージェント ID に紐付けられたトークンを取り消します。即座に機能しなくなります。tokens:write が必要です。

パラメータ

slug*string
id*string

応答 200

successboolean
hintstring
GET/api/tokens

API トークンをリストする

認証されたユーザーのすべての API トークンを返します。キーはセキュリティのためにマスクされています (最初の 12 文字と最後の 4 文字が表示されます)。これを使用して、アクティブなトークンを監査します。

応答 200

tokensTokenInfo[]

応答例

{
  "tokens": [
    {
      "id": "cm5abc123",
      "name": "Default",
      "key": "domani_sk_a...wxyz",
      "lastUsed": "2025-02-18T10:30:00.000Z",
      "expiresAt": null,
      "expired": false,
      "scopes": [
        "*"
      ],
      "createdAt": "2025-01-15T10:30:00.000Z",
      "max_per_tx": null,
      "max_per_month": null,
      "spent_this_month": 0,
      "parent_token_id": null,
      "agent_identity": null
    },
    {
      "id": "cm5def456",
      "name": "CI/CD",
      "key": "domani_sk_b...vwxy",
      "lastUsed": null,
      "expiresAt": "2025-05-01T14:00:00.000Z",
      "expired": false,
      "scopes": [
        "domains:read",
        "domains:write"
      ],
      "createdAt": "2025-02-01T14:00:00.000Z"
    }
  ]
}

例

curl https://domani.run/api/tokens \
  -H "Authorization: Bearer domani_sk_xxx"
POST/api/tokens

新しいAPIトークンを作成する

新しい API トークンを作成します。完全なキーはこの応答でのみ返されます。安全に保管してください。複数のトークンを作成して、さまざまなアプリケーションのアクセスを分離できます。

リクエストボディ

namestringこのトークンを識別するための人間が判読できる名前
expires_inintegerトークンの有効期間 (秒単位) (最小 3600 = 1 時間、最大 31536000 = 1 年)。有効期限がない場合は省略します。
expires_atstring (date-time)絶対有効期限 (ISO 8601)。 expires_in の代替。
scopesstring[]このトークンの権限スコープ。フルアクセスには ['*'] を使用します (デフォルト)。トークンは、すでに持っているスコープのみを付与できます (スコープの減衰)。スコープ: domains:read (GET /api/domains, GET /api/domains/{domain}, GET /api/domains/{domain}/dns, /dnssec, /status, /email/check, /auth-code, /transfer-away, /transfer-status, /analytics)、domains:write (PUT /api/domains/{domain}/dns, POST/DELETE /api/domains/{domain}/dnssec, POST /connect, POST /verify, PUT /settings, PUT /parking, PUT/DELETE /api/domains/{domain}/for-sale, POST /api/domains/import, POST /import/verify)、domains:transfer (POST /api/domains/buy, POST /transfer, POST /renew (支払いを伴います。マーケットプレイスでの購入を含みます))、tokens:read (GET /api/tokens)、tokens:write (POST /api/tokens, DELETE /api/tokens/{id})、webhooks:read (GET /api/webhooks, GET /api/webhooks/{id}/deliveries)、webhooks:write (POST /api/webhooks, PATCH /api/webhooks/{id}, DELETE /api/webhooks/{id})、email:read (GET /api/emails, /api/emails/{address}, /api/emails/{address}/messages, /api/emails/{address}/aliases, /api/email/changes, /api/domains/{domain}/email/status, /api/domains/{domain}/email/deliverability, /api/suppressions, GET /api/contacts)、email:write (POST /api/emails, POST /api/emails/{address}/send, POST /api/domains/{domain}/email/setup, エイリアス + キャッチオール, POST/DELETE /api/suppressions, POST/DELETE /api/contacts)、email:delete (すでにゴミ箱に入っているメッセージを完全に削除します。メッセージをゴミ箱に移動するには email:write のみが必要です。このスコープは、電子メールの内容を元に戻せない形で消去することを許可されたエージェントにのみ付与してください)、email:manage_mailboxes (メールボックスの作成 (POST /api/emails) のみを行い、それ以外は何もしません。メールの読み取りや送信、ドメインの管理、トークンの操作を行うことなく、新しいプロジェクト用のアドレス (partners@, launch@) を立ち上げることができるエージェント向けの、範囲の狭い管理スコープです)、email:auth_secrets (認証メール (OTP / 確認コード、パスワード リセット、マジック リンク) として分類されたメッセージを読み取ります。これがない場合、email:read ではそれらが一覧に表示されますが、件名と本文はマスクされて返されます。そのため、盗まれたエージェント トークンで 2FA コードを収集することはできません。本当にログインを完了する必要があるエージェントにのみ付与してください)、account:read (GET /api/me, GET /api/agents/identity)、account:write (DELETE /api/me, POST /api/billing/setup, POST /api/billing/subscribe, POST /api/billing/cancel, POST /api/me/resend-verification, POST/PATCH/DELETE /api/agents/identity)、billing:read (GET /api/billing/invoices)、search (GET /api/domains/search, /suggest, /whois, /dns-check, GET /api/tlds)、deals:read (GET /api/deals, GET /api/deals/{id})、deals:write (POST /api/domains/sell, PATCH /api/deals/{id})、notifications:read (GET /api/notifications, GET /api/notifications/count)、backorders:read (GET /api/backorders, GET /api/backorders/{id})、backorders:write (POST /api/backorders, DELETE /api/backorders/{id})、assistant:read (Mailzero アシスタントの設定、Today キュー、Work アイテム、正確なアクションプレビュー、履歴インポートの進行状況、コンテンツ最小化された Activity を読み取ります)、assistant:write (Mailzero アシスタントの設定を変更し、同意を記録して履歴インポートを開始し、Work アイテムに対する人間の Decisions を記録し、インポートを再試行し、派生アシスタントデータをエクスポートまたは削除します。メールは送信しません)。
max_per_txnumberトランザクションごとの支出上限 (USD)。これを超える 1 回のチャージは 403 SPEND_CAP_EXCEEDED で失敗します。トークンは、それ自体の上限以下の上限のみを付与できます (それ以外の場合は CAP_ESCALATION)。
max_per_monthnumberこのトークンを使用して行われたすべての有料操作にわたる、米ドルでのローリング暦月の支出上限。
agent_identity_idstringこのアカウントが所有するエージェント ID のオプションの ID。トークンを使用して行われたメール アクションは、そのエージェントに帰属します。
http_route_policyobjecthttp-routes:read または http-routes:write を持つスコープ指定トークンに必須の構造化された権限。
mailboxesstring[]トークンをこれらのメールボックス アドレス (slug@domain) に限定します。限定されたトークンは、それらのメールボックスのみを参照して操作できます。限定された呼び出し元は、自身の範囲のサブセットのみを委任できます (それ以外の場合は 400 MAILBOX_ESCALATION)。

応答 201

idstring
namestring
keystring完全な API キー - これを保存すると、再度表示されなくなります
expiresAtstring (date-time) | nullこのトークンの有効期限が切れたとき (null = なし)
scopesstring[]このトークンに付与される権限スコープ
createdAtstring (date-time)
max_per_txnumber | nullトランザクションごとの支出上限 (USD) (null = 上限なし)
max_per_monthnumber | null毎月の支出上限 (USD) (null = 上限なし)
mailbox_idsstring[]このトークンが限定されているメールボックス ID
http_route_policyHttpRoutePolicy
agent_identityobject | null

応答例

{
  "id": "cm5ghi789",
  "name": "CI/CD Pipeline",
  "key": "domani_sk_x1Y2z3A4b5C6d7E8f9G0hIjK",
  "expiresAt": "2025-03-20T10:30:00.000Z",
  "scopes": [
    "domains:read",
    "domains:write"
  ],
  "createdAt": "2025-02-18T10:30:00.000Z",
  "max_per_tx": 25,
  "max_per_month": 100,
  "mailbox_ids": [],
  "http_route_policy": null
}

例

curl -X POST https://domani.run/api/tokens \
  -H "Authorization: Bearer domani_sk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"name": "CI/CD Pipeline"}'
DELETE/api/tokens/{id}

APIトークンを取り消す

API トークンを永久に取り消します。このトークンを使用するアプリケーションはすぐにアクセスできなくなります。この操作は元に戻すことができません。

パラメータ

id*stringトークン ID (GET /api/tokens 応答から)

応答 200

successboolean

応答例

{
  "success": true
}

例

curl -X DELETE https://domani.run/api/tokens/cm5abc123 \
  -H "Authorization: Bearer domani_sk_xxx"
GET/api/audit

セキュリティ監査イベントのリストを表示する

アカウントのセキュリティ監査ログを新しい順に返します。トークンのライフサイクル(作成、失効、権限昇格の試行)、支出上限と max_price による拒否、請求、支払いリクエスト、ブロックされたアカウント削除を含みます。エージェントトークンの動作監視に使用します。

パラメータ

limitintegerページごとのイベント数
cursorstringページネーション カーソル (前のページの next_cursor)
typestringイベントタイプによるフィルタリング (例: token.created、purchase.charged、purchase.denied_cap)

応答 200

eventsobject[]
next_cursorstring | null
hintstring

応答例

{
  "events": [
    {
      "id": "evt1",
      "tokenId": "cm5abc123",
      "type": "purchase.charged",
      "targetType": "domain",
      "targetId": "mysite.com",
      "metadata": {
        "amountCents": 1450,
        "operation": "buy",
        "method": "card"
      },
      "createdAt": "2026-07-11T10:00:00.000Z"
    },
    {
      "id": "evt2",
      "tokenId": "cm5abc123",
      "type": "purchase.denied_cap",
      "targetType": "domain",
      "targetId": "expensive.ai",
      "metadata": {
        "amountCents": 8470
      },
      "createdAt": "2026-07-11T09:58:00.000Z"
    }
  ],
  "next_cursor": null,
  "hint": "Security-relevant events for this account."
}

例

curl "https://domani.run/api/audit?limit=50" \
  -H "Authorization: Bearer domani_sk_xxx"

Webhooks

GET/api/webhooks

Webhook をリストする

アカウントに構成されているすべての Webhook エンドポイントを一覧表示します。各 Webhook の URL、サブスクライブされたイベント、およびアクティブなステータスを返します。シークレットは作成後に返されることはありません。メールボックスに限定されたトークンには、自身のメールボックスに限定された Webhook だけが表示されます。

応答 200

webhooksobject[]
hintstring

応答例

{
  "webhooks": [
    {
      "id": "cm5wh001",
      "url": "https://example.com/webhooks/domani",
      "events": [
        "domain.purchased",
        "dns.updated"
      ],
      "active": true,
      "created_at": "2026-02-25T10:00:00.000Z"
    }
  ],
  "hint": "1 webhook(s)."
}

例

curl https://domani.run/api/webhooks \
  -H "Authorization: Bearer domani_sk_xxx"
POST/api/webhooks

Webhook の作成

新しい HTTPS Webhook エンドポイントを登録します。オプションの認証または X-API キーの値は保存時に暗号化され、すべての配信に含まれます。署名シークレットは 1 回だけ返されます。アカウントあたり最大 5 つの Webhook。メールボックスに限定されたトークンが作成した Webhook は同じメールボックスに限定され、ほかのメールボックスのメールイベントは一切受け取りません。

リクエストボディ

url*string (uri)Webhook POST リクエストを受信する HTTPS URL
events*string[]サブスクライブするイベントのタイプ。 GET /api/webhooks/events を使用して、使用可能なタイプをリストします。
headersobjectオプションの暗号化された認証ヘッダー。認証と X-API キーのみが受け入れられます。

応答 200

idstring
urlstring (uri)
eventsstring[]
secretstringHMAC-SHA256 署名シークレット (1 回のみ表示)
activeboolean
header_namesstring[]設定された認証ヘッダー名。値は決して返されません
created_atstring (date-time)
hintstring

応答例

{
  "id": "cm5wh001",
  "url": "https://example.com/webhooks/domani",
  "events": [
    "domain.purchased",
    "dns.updated"
  ],
  "secret": "whsec_aBcDeFgHiJkLmNoPqRsTuVwXyZ012345",
  "active": true,
  "created_at": "2026-02-25T10:00:00.000Z",
  "hint": "Webhook created. Save the secret - it won't be shown again. Use it to verify incoming payloads with HMAC-SHA256."
}

例

curl -X POST https://domani.run/api/webhooks \
  -H "Authorization: Bearer domani_sk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/hook","events":["domain.purchased","dns.updated"],"headers":{"Authorization":"Bearer sender_key_xxx"}}'
PATCH/api/webhooks/{id}

Webhook を更新する

Webhook の URL、サブスクライブされたイベント、アクティブなステータス、または暗号化された認証ヘッダーを更新します。変更したいフィールドのみを送信してください。メールボックスに限定されたトークンが操作できるのは、自身のメールボックスに限定された Webhook だけです (それ以外は 404)。

パラメータ

id*stringWebhook ID

リクエストボディ

urlstring (uri)新しいHTTPS URL
eventsstring[]イベントタイプの新しいリスト
activeboolean一時停止するには false を設定し、再開するには true を設定します
headersobject暗号化された認証ヘッダーを置き換えます。 {} を送信してクリアします。認証と X-API キーのみが受け入れられます。

応答 200

idstring
urlstring (uri)
eventsstring[]
activeboolean
header_namesstring[]設定された認証ヘッダー名。値は決して返されません
hintstring
DELETE/api/webhooks/{id}

Webhook の削除

Webhook エンドポイントを削除します。保留中の配信はすべてキャンセルされます。これを元に戻すことはできません。メールボックスに限定されたトークンが操作できるのは、自身のメールボックスに限定された Webhook だけです (それ以外は 404)。

パラメータ

id*stringWebhook ID

応答 200

successboolean
hintstring
GET/api/webhooks/{id}/deliveries

Webhook 配信の一覧表示

Webhook の最近の配信試行を取得します。イベント タイプ、HTTP ステータス、試行回数、エラーが表示されます。失敗した配信をデバッグするのに役立ちます。メールボックスに限定されたトークンが操作できるのは、自身のメールボックスに限定された Webhook だけです (それ以外は 404)。

パラメータ

id*stringWebhook ID
limitinteger返す Webhook 配信の最大件数

応答 200

deliveriesobject[]
hintstring

応答例

{
  "deliveries": [
    {
      "id": "cm5del001",
      "replay_of_id": null,
      "event_type": "domain.purchased",
      "status": "delivered",
      "http_status": 200,
      "attempts": 1,
      "last_error": null,
      "created_at": "2026-02-25T10:05:00.000Z"
    }
  ],
  "hint": "1 delivery(ies) for this webhook."
}
POST/api/webhooks/{id}/deliveries/{deliveryId}/replay

Webhook配信を再生する

不変 Webhook イベントのクローンを作成し、すぐに再配信します。イベント ペイロードとイベント ID は同一のままです。 HMAC 署名は新しいタイムスタンプを受け取ります。必須の冪等性キーにより、呼び出し側が 2 回送信を再試行しないことが保証されます。メールボックスに限定されたトークンが操作できるのは、自身のメールボックスに限定された Webhook だけです (それ以外は 404)。同一のペイロードには例外が一つあります。認証メールからコピーされた件名はマスクされて送信されます。最初の送信以降に Webhook の URL が変わっている可能性があるためです。

パラメータ

id*stringWebhook ID
deliveryId*string元の配信 ID

リクエストボディ

idempotency_key*string

応答 200

delivery_idstring
original_delivery_idstring
event_typestring
statusstring
http_statusinteger | null
attemptsinteger
idempotency_keystring
idempotent_replayboolean
created_atstring (date-time)
hintstring
GET/api/webhooks/events

Webhook イベント タイプの一覧表示

利用可能なすべての Webhook イベント タイプを説明とともにリストします。認証は必要ありません。

応答 200

eventsobject[]

応答例

{
  "events": [
    {
      "type": "domain.purchased",
      "description": "A new domain was successfully registered"
    },
    {
      "type": "dns.updated",
      "description": "DNS records were changed for a domain"
    },
    {
      "type": "transfer.completed",
      "description": "A domain transfer completed successfully"
    }
  ]
}

例

curl https://domani.run/api/webhooks/events

通知

GET/api/notifications

リスト通知

カーソルベースのページネーションでアプリ内通知を一覧表示します。取引イベント、出品の更新、システムアラートが含まれます。 notifications:read スコープが必要です。 メールの件名を書き込み時にマスクするようになる前に書かれた通知は、email:auth_secrets のないトークンに対して、body と data.subject の認証メールの件名がマスクされた状態で読み取られます。

パラメータ

limitinteger返される通知の最大数
cursorstringページネーション用のカーソル (前の応答の next_cursor から)

応答 200

notificationsobject[]
has_moreboolean
next_cursorstring | null
GET/api/notifications/count

未読通知数を取得する

未読通知数をポーリングするための軽量エンドポイント。 notifications:read スコープが必要です。

応答 200

unread_countinteger

応答例

{
  "unread_count": 3
}
PATCH/api/notifications/{id}

通知を既読としてマークする

単一の通知を既読としてマークします。 notifications:read スコープが必要です。

パラメータ

id*string通知ID

リクエストボディ

read*boolean既読としてマークするには true に設定します

応答 200

okboolean
POST/api/notifications/read-all

すべての通知を既読としてマークする

すべての未読通知を既読としてマークします。 notifications:read スコープが必要です。

応答 200

okboolean
countinteger既読としてマークされた通知の数
GET/api/notifications/preferences

通知設定を取得する

カテゴリとチャネル(in_app、email)ごとにユーザーの通知設定を返します。設定がない場合はデフォルトで有効です。 notifications:read スコープが必要です。

応答 200

preferencesobject[]
expiry_alert_daysinteger[]有効期限の前日、ユーザーは更新のリマインダーを受け取ります (デフォルトは 30/7/1)。空 = 有効期限のリマインダーはありません。
PUT/api/notifications/preferences

通知設定を更新する

特定のカテゴリとチャネルの通知設定を更新します。 notifications:read スコープが必要です。

リクエストボディ

preferencesobject[]
expiry_alert_daysinteger[]更新通知を受け取る有効期限の前日。空の配列 = 有効期限リマインダーなし。

応答 200

okboolean

TLD

GET/api/tlds公共

Domani が販売する TLD を価格とともに取得します

Domani が販売する TLD を、登録・更新・移管の価格とともに返します。これは当社レジストラのカタログであり、存在するすべての TLD ではありません。gov や edu などルートゾーンの一部の TLD は Domani では登録できません。各エントリには kind があります: tld (IANA ルートゾーンの TLD)、second_level (その下で提供される名前。co.uk など)、alt_root (ルートゾーン外の名前で、パブリック DNS では名前解決されません)。alt_root のエントリは、kind パラメータで指定しない限り含まれません。価格帯によるフィルタリング、TLD 名による検索、並べ替え、およびlimit/offsetによるページネーションをサポートします。ページ分割されると、次のページの URL を含む Link ヘッダーが含まれます。 パブリック エンドポイント - 認証は必要ありません。認証されたリクエストには、より高いレート制限が適用されます (60/分対 30/分)。

パラメータ

max_pricenumber最大登録価格(USD)
min_pricenumber最低登録価格(USD)
sortstring(tld | price | renewal)並べ替えフィールド - 'tld' (アルファベット順)、'price' (登録)、または 'renewal'
orderstring(asc | desc)並べ替え順序
searchstringこの文字列を含むTLD名をフィルタリングします
limitintegerページあたりの最大結果
offsetintegerスキップする結果の数
kindstring返す種類 (カンマ区切り): `tld`、`second_level`、`alt_root`。既定値: `tld,second_level` (パブリック DNS で名前解決されるエントリ)。`alt_root` のエントリ (IANA ルートゾーン外) は、指定した場合にのみ返されます。

応答 200

tldsTldInfo[]
totalinteger一致する TLD の合計 (ページネーション前)
offsetinteger
limitinteger | null

応答例

{
  "tlds": [
    {
      "tld": "xyz",
      "registration": 4.04,
      "renewal": 4.04,
      "transfer": 4.04,
      "kind": "tld"
    },
    {
      "tld": "com",
      "registration": 10.88,
      "renewal": 13.08,
      "transfer": 13.08,
      "kind": "tld"
    },
    {
      "tld": "co.uk",
      "registration": 10.75,
      "renewal": 10.75,
      "transfer": 10.75,
      "kind": "second_level"
    }
  ],
  "total": 743,
  "offset": 0,
  "limit": null
}

例

curl https://domani.run/api/tlds?max_price=10&sort=price

ドメイン

GET/api/domains

登録されているすべてのドメインをリストする

認証されたユーザーが所有するすべてのドメインを購入日順 (新しい順) で返します。ドメイン名、ステータス、購入日、有効期限が含まれます。

応答 200

domainsDomainRecord[]

応答例

{
  "domains": [
    {
      "domain": "mysite.com",
      "status": "active",
      "purchasedAt": "2025-01-15T10:30:00.000Z",
      "expiresAt": "2026-01-15T10:30:00.000Z",
      "emailEnabled": true,
      "emailVerified": true,
      "emailVerifiedAt": "2025-01-15T10:35:00.000Z",
      "mailboxCount": 2
    },
    {
      "domain": "myapp.dev",
      "status": "active",
      "purchasedAt": "2025-02-01T14:00:00.000Z",
      "expiresAt": "2026-02-01T14:00:00.000Z",
      "emailEnabled": false,
      "emailVerified": false,
      "emailVerifiedAt": null,
      "mailboxCount": 0
    }
  ]
}

例

curl https://domani.run/api/domains \
  -H "Authorization: Bearer domani_sk_xxx"
POST/api/agents/identity

フリーエージェント ID を要求する (<ハンドル>.domani.run)

<slug>.domani.run でエージェントに無料の ID を付与します。これはライブ プロファイル ページであり、ドメインを購入する必要はありません。スムーズな開始方法。後で実際に所有されているドメインにアップグレードしてください。 account:writeが必要です。

リクエストボディ

slug*stringハンドル - <slug>.domani.run になります。
namestring表示名
biostring
emojistringアバター絵文字
emailstring (email)公開連絡先 (例: 無料の @domani.run 受信箱)
linksobject[]

応答 200

idstringスコープ指定された API トークンをバインドするために使用される安定した ID ID
slugstring
urlstringID サブドメイン (正規)
page_urlstring常に機能するパスのフォールバック
namestring | null
biostring | null
emojistring | null
emailstring | null
linksobject[]
viewsinteger
created_atstring (date-time)

応答例

{
  "success": true,
  "id": "agent_abc123",
  "slug": "myagent",
  "url": "https://myagent.domani.run",
  "page_url": "https://domani.run/agents/myagent",
  "name": "My Agent",
  "bio": "I broker domains.",
  "emoji": "🤖",
  "email": null,
  "links": [],
  "views": 0,
  "created_at": "2026-07-11T00:00:00.000Z"
}

例

curl -X POST https://domani.run/api/agents/identity \
  -H "Authorization: Bearer domani_sk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"slug": "myagent", "name": "My Agent", "bio": "I broker domains.", "emoji": "🤖"}'
GET/api/agents/identity

エージェント ID をリストする

あなたが主張した無料の ID (<handle>.domani.run) をリストします。 account:readが必要です。

応答 200

identitiesAgentIdentity[]
PATCH/api/agents/identity/{slug}

エージェント ID を更新する

無料アイデンティティの name/bio/emoji/email/links フィールドを更新します。account:write が必要です。

パラメータ

slug*string更新するハンドル

リクエストボディ

namestring
biostring
emojistring
emailstring
linksobject[]

応答 200

idstringスコープ指定された API トークンをバインドするために使用される安定した ID ID
slugstring
urlstringID サブドメイン (正規)
page_urlstring常に機能するパスのフォールバック
namestring | null
biostring | null
emojistring | null
emailstring | null
linksobject[]
viewsinteger
created_atstring (date-time)
DELETE/api/agents/identity/{slug}

エージェント ID を解放する

無料の ID ハンドルを解放して、再び利用できるようにします。 account:writeが必要です。

パラメータ

slug*string解放するハンドル

応答 200

successboolean
slugstring
releasedboolean
POST/api/agents/provision

1 回の通話で完全なエージェント ID をプロビジョニング

AI エージェントに 1 回のリクエストで完全なインターネット ID を提供します。つまり、ドメインを購入し (まだ所有していない場合)、電子メール DNS を設定し、メールボックスを作成し、オプションで受信電子メールとドメイン イベント用の認証済み Webhook を登録します。 webhook_headersはAuthorizationとX-API-Keyのみを受け入れます。値は保存時に暗号化され、返されることはありません。同じドメイン、メールボックス スラグ、Webhook URL を繰り返すと、それらのリソースが再利用されます。 すべての Webhook 入力は、ドメインの購入または請求前に検証されます。ドメインの購入は、請求できる唯一のステップであり、唯一の絶対的な前提条件です。これが失敗すると、通話全体が失敗します (支払いの場合は 402、別のアカウントで使用された場合は 409)。電子メールのセットアップ、メールボックスの作成、Webhook の登録はベストエフォート型です。一時的な問題 (DNS がまだ伝播しているなど) は、呼び出しが失敗するのではなくwarningsとして返されるため、エージェントは常にそのドメインを取得します。 支払いは POST /api/domains/buy とまったく同じように機能します (カード、マーケットプレイスの残高、またはPAYMENT-SIGNATUREヘッダーによる USDC / 2 ステップのフロー)。

リクエストボディ

domain*stringエージェントに与えるドメイン。まだ所有していない場合は購入。
slugstringメールボックスのローカル部分(hi@domain)。デフォルトは 'hi' です。
namestring送信メールの表示名。
webhook_urlstring (uri)受信電子メール + ドメイン イベントを受信するためのオプションの HTTPS URL。
webhook_headersobjectオプションの配信認証。値は保存時に暗号化され、返されることはありません。応答では header_names のみを公開します。
webhook_eventsstring[]Webhook イベントの種類。デフォルトは email.received/delivered/bounced です。
payment_methodstring(card | usdc | balance)ドメインの支払い方法。
payment_txstringUSDC tx ハッシュ (2 段階フロー)。
payment_chainstring(base | ethereum)
yearsinteger
max_pricenumberドメイン料金の上限 (米ドル)。実際の価格がそれを超える場合、リクエストは 400 PRICE_ABOVE_MAX で失敗し、何も請求されません。エラーの `price` フィールドは受け入れる合計金額です。その max_price で再試行する前に、ユーザーに確認してください。

応答 200

domainstring
domain_statusstring
mailboxobject | null
webhookobject | null
warningsstring[]
hintstring
next_stepsstring[]

例

curl -X POST https://domani.run/api/agents/provision \
  -H "Authorization: Bearer domani_sk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"domain":"myagent.run","slug":"hi","webhook_url":"https://my-agent.example.com/inbox","webhook_headers":{"Authorization":"Bearer sender-key"}}'
POST/api/domains/buy

1 つ以上のドメインを購入する

1 つ以上のドメインを購入して直ちに登録します。1 件の場合は {"domain": "..."}、最大 10 件の一括購入には {"domains": ["...", "..."]} を送信します。 ドメインが Domani マーケットプレイスに出品されている場合、このエンドポイントは新規登録ではなくマーケットプレイス購入へ自動的に切り替わります。レスポンスには、登録と区別するため years: 0 と marketplace_purchase: true が含まれます。マーケットプレイス購入は 1 ドメインのみです。買い手は表示価格の全額を支払い、売り手はプラットフォーム手数料(デフォルト 10%)を差し引いた金額を受け取ります。 一括購入では各ドメインを個別に処理するため、失敗しても他の購入は止まりません。レスポンスには results(成功)、errors(失敗)、件数を示す summary が含まれます。 3 つの支払い方法に対応します。 1. カード(デフォルト): POST /api/billing/setup で登録済みのカードが必要です。ドメインごとに課金されます。 2. USDC(2 段階): まず支払いなしで呼び出し、payment_options.crypto(ウォレットアドレス、金額、チェーン)を含む 402 を取得します。USDC をオンチェーンで送信し、リクエスト本文に payment_tx と payment_chain を指定して再試行します。 3. x402 USDC(アトミック): Base 上で署名された USDC 支払いを含む PAYMENT-SIGNATURE ヘッダーを指定します。 一括購入には登録済みのカードが必要です(複数ドメインでは USDC を利用できません)。単一ドメインで支払いがない場合は、支払い手順を含む HTTP 402 を返します。

リクエストボディ

domainstring購入する単一ドメイン (例: mysite.com)
domainsstring[]購入するドメインの配列 (最大 10、ファイル上のカードが必要)
payment_methodstring(card | usdc | balance)支払い方法: 'card' (デフォルト)、'usdc' (x402 - 最初の呼び出しでは支払い指示のある 402 が返されます)、または 'balance' (マーケットプレイスのクレジットを使用)。
payment_txstringすでにオンチェーンで送信された USDC 支払いのトランザクション ハッシュ。 2 ステップの USDC フローの 2 番目の呼び出しで必要です。
payment_chainstring(base | ethereum)USDC 支払いが送信されたチェーン (例: 「base」または「ethereum」)。
yearsinteger登録する年数 (1 ~ 10、デフォルトは 1)。価格は年数で乗算されます。
max_pricenumber請求総額の上限 (USD)。実際の価格がこれを超えると、リクエストは 400 PRICE_ABOVE_MAX で失敗し、何も請求されません。自律エージェント向けの安全装置です。max_price がない場合の上限は検索で表示された価格です。より高いレジストラしかその名前を扱えない場合も、購入は同じように失敗します。エラーの `price` が承諾する合計で、`listed_price` と `renewal_price` が併記されます。その max_price で再試行する前に、ユーザーに確認してください。
refstring紹介コード (オプション) - 紹介者はコミッションを獲得します

例

curl -X POST https://domani.run/api/domains/buy \
  -H "Authorization: Bearer domani_sk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"domain": "mysite.com"}'
GET/api/domains/{domain}

所有しているドメインに関する詳細情報を取得する

ドメインに関する包括的な情報 (ステータス、購入日、有効期限、支払い方法、セキュリティ ロック、WHOIS プライバシー、自動更新ステータス、登録日) を返します。拡張データが利用できない場合、registrarオブジェクトはnullになる可能性があります。

パラメータ

domain*stringあなたが所有するドメイン名

応答 200

domainstring
statusstring
auto_renewboolean自動更新が有効かどうか
purchased_atstring (date-time)
expires_atstring (date-time)
days_until_expiryintegerドメインの有効期限が切れるまでの日数
renewal_pricenumber | nullドメインを保有するレジストラでの 1 年分の更新料金 (USD)。N 年の更新はその N 倍です。domani がドメインを更新できない場合、または価格が不明な場合は Null です。
payment_methodstringドメインの支払い方法
payment_txstring | nullオンチェーン送信ハッシュ (USDC 支払い)
registrantstringレジストリがドメインの登録者として記載している相手。`customer`:あなた自身の連絡先情報(set_contact で設定)。`domani`:Domani のデフォルト連絡先。あなたが set_contact で連絡先を追加するまで、あなたに代わってドメインを保有します。追加すると、あなたが登録者になります。`unknown`:未確認。いずれの場合も WHOIS プライバシーにより詳細は非公開です。
transfer_outobjectドメインを別のレジストラに移管する方法。`mode` `api`:get_auth_code がコードを返します。`manual`:レジストラにそのための API がないため、Domani のチームが 1 営業日以内に手作業でコードを取得します。null:このドメインでは利用できません。
registrar_statusstringライブ レジストラ データが更新されたか、外部で管理されているか
registrar_checked_atstring (date-time)レジストラの更新が試行されたとき
registrarobject | nullドメイン登録の詳細 (利用できない場合は null)

応答例

{
  "domain": "mysite.com",
  "status": "active",
  "auto_renew": true,
  "purchased_at": "2025-06-01T12:00:00.000Z",
  "expires_at": "2026-06-01T12:00:00.000Z",
  "days_until_expiry": 365,
  "payment_method": "card",
  "registrant": "customer",
  "transfer_out": {
    "mode": "api",
    "locked_until": null,
    "request": null
  },
  "registrar_status": "connected",
  "registrar_checked_at": "2025-06-01T12:00:00.000Z",
  "registrar": {
    "security_lock": true,
    "whois_privacy": true,
    "auto_renew": true,
    "create_date": "2025-06-01T12:00:00Z",
    "expire_date": "2026-06-01T12:00:00Z"
  }
}

例

curl https://domani.run/api/domains/mysite.com \
  -H "Authorization: Bearer domani_sk_xxx"
PUT/api/domains/{domain}/settings

ドメイン設定を更新する

所有するドメインの設定を更新します。 auto_renew、whois_privacy、security_lockをサポートします。少なくとも 1 つのフィールドを指定する必要があります。

パラメータ

domain*stringあなたが所有するドメイン名

リクエストボディ

auto_renewbooleanこのドメインの自動更新を有効にするかどうか
whois_privacybooleanWHOISプライバシー保護を有効にするかどうか
security_lockboolean移管に対してドメインをロックするかどうか

応答 200

domainstring
auto_renewboolean
whois_privacyboolean
security_lockboolean
hintstring

例

curl -X PUT https://domani.run/api/domains/mysite.com/settings \
  -H "Authorization: Bearer domani_sk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"auto_renew": false}'
PUT/api/domains/{domain}/parking

パーキング設定を更新する

所有するドメインのパーキングとリスティングの設定を更新します。パーキング場ページを有効/無効にし、「販売中」の表示価格を設定します。パーキングが有効になっている場合、ドメインへの訪問者にはブランド ページが表示されます。出品価格が設定されると、訪問者には問い合わせフォームのある「販売中」ページが表示されます。

パラメータ

domain*stringドメイン名

リクエストボディ

enabledbooleanパーキング場ページを有効にするかどうか
listing_pricenumber | null販売価格 (USD)、または出品を削除する場合は null

応答 200

domainstring
parking_enabledboolean
listing_pricenumber | null
hintstring
PUT/api/domains/{domain}/redirect

ドメインを URL に転送する

所有するドメインを別の URL (例: brand.com -> https://brand.dev) に転送します。これは、複数の TLD ブランドに役立ちます。リダイレクトを機能させるには、ドメインは domani のネームサーバー/パーキング IP を指している必要があります。デフォルトでは永続的 (308)、または一時的 (307)。 domains:writeスコープが必要です。

パラメータ

domain*stringドメイン名

リクエストボディ

url*string転送先のターゲット URL (またはベア ドメイン)。例: https://ブランド.dev
permanentbooleantrue = 永続的 (308、デフォルト)、false = 一時的 (307)

応答 200

domainstring
redirect_urlstring | null
permanentboolean
DELETE/api/domains/{domain}/redirect

ドメインの転送を停止する

ドメインのリダイレクトを削除すると、パーキング ページに戻ります。 domains:writeスコープが必要です。

パラメータ

domain*stringドメイン名

応答 200

domainstring
redirect_urlstring | null
PUT/api/domains/{domain}/for-sale

ドメインを出品する

所有するドメインを Domani マーケットプレイスに出品して販売します。購入者は API 経由で直接購入できます。ドメインはアクティブであり、まだ出品されていない必要があります。 料金: Domani は、販売が成功した場合にプラットフォーム手数料 (デフォルト 10%) を請求します。売り手は手数料を差し引いた表示価格を受け取ります。買い手は表示価格の全額を支払います。 domains:writeスコープが必要です。

パラメータ

domain*string販売リストに掲載するドメイン名

リクエストボディ

price*number販売価格(米ドル)
descriptionstringオプションの出品の説明

応答 200

listingobject
hintstring

応答例

{
  "listing": {
    "id": "lst_abc123",
    "domain": "example.com",
    "price": 5000,
    "currency": "USD",
    "description": null,
    "status": "active",
    "created_at": "2026-03-14T12:00:00.000Z"
  },
  "hint": "example.com listed for sale at $5,000. Buyers can purchase it on the marketplace."
}
PATCH/api/domains/{domain}/for-sale

ドメイン出品を更新する

アクティブなマーケットプレイスの出品の価格や説明を更新します。少なくとも 1 つのフィールドを指定する必要があります。 domains:writeスコープが必要です。

パラメータ

domain*stringアクティブな出品のあるドメイン名

リクエストボディ

pricenumber新しい販売価格 (USD)
descriptionstring | null新しい説明 (クリアするには null)

応答 200

listingobject
hintstring

応答例

{
  "listing": {
    "id": "lst_abc123",
    "domain": "example.com",
    "price": 7000,
    "currency": "USD",
    "description": "Premium domain",
    "status": "active",
    "created_at": "2026-03-14T12:00:00.000Z"
  },
  "hint": "Listing for example.com has been updated. New price: $7,000."
}
DELETE/api/domains/{domain}/for-sale

ドメインの出品をキャンセルする

所有するドメインのアクティブな販売出品を削除します。ドメインはアカウントに残りますが、マーケットプレイスでは購入できなくなります。 domains:writeスコープが必要です。

パラメータ

domain*stringリストから除外するドメイン名

応答 200

domainstring
statusstring
hintstring

応答例

{
  "domain": "example.com",
  "status": "cancelled",
  "hint": "Listing for example.com has been cancelled."
}
GET/api/domains/{domain}/analytics

パーキング場分析を取得する

パークされたドメインの訪問者分析 - ページビュー、問い合わせ、コンバージョン率、30 日間の日次内訳、最近の問い合わせを取得します。

パラメータ

domain*stringドメイン名

応答 200

domainstring
views_7dinteger過去 7 日間の合計ページビュー
views_30dinteger過去 30 日間の合計ページビュー
inquiries_30dinteger過去 30 日間の問い合わせの合計
conversion_ratenumberお問い合わせと閲覧の割合(パーセンテージ)
daily_viewsobject[]過去 30 日間の毎日の視聴数
recent_inquiriesobject[]最近のお問い合わせ5件
hintstring

応答例

{
  "domain": "example.com",
  "views_7d": 42,
  "views_30d": 156,
  "inquiries_30d": 3,
  "conversion_rate": 1.92,
  "daily_views": [
    {
      "date": "2026-02-25",
      "views": 7
    }
  ],
  "recent_inquiries": [
    {
      "email": "buyer@example.com",
      "offer": 500,
      "date": "2026-02-25T10:00:00Z"
    }
  ],
  "hint": "example.com received 156 views and 3 inquiries in the last 30 days (1.92% conversion)."
}
GET/api/domains/{domain}/auth-code

EPP認証コードを取得する

ドメインを別のレジストラに移管するために必要な EPP/認証コードを取得します。ドメインがロックされている場合は、自動的にロックを解除します。認証コードを持つ者は、ドメインをそのメールごと移管できます。読み取るには email:auth_secrets スコープと、メールボックスに限定されていないトークンが必要です (それ以外は 403 INSUFFICIENT_SCOPE または 403 MAILBOX_CONFINED)。読み取りはすべて監査ログに記録されます。レジストラによってはコード用の API がありません。その場合、最初の呼び出しは 202 と status: "requested" を返し、その間に Domani のチームがドメインのロックを解除して手作業でコードを取得します (1 営業日以内、expected_by)。準備ができるとユーザーにメールが届き、以降の呼び出しは 200 と status: "ready"、およびコードを返します。登録または移管受け入れから 60 日以内のそのようなドメインは、409 TRANSFER_LOCKED と available_at を返します。

パラメータ

domain*stringあなたが所有するドメイン名

応答 200

domainstring
statusstring`ready`:コードは auth_code にあります。`requested`:Domani のチームがレジストラからコードを取得中です。準備ができるとユーザーにメールが届きます。
auth_codestring | null新しいレジストラに渡す EPP 認証コード。status が requested の間は null。
was_unlockedboolean移管のためにドメインのロックが解除されたかどうか
requested_atstring (date-time)コードがリクエストされた日時 (そのための API がないレジストラの場合)
expected_bystring (date-time)Domani のチームがコードを用意する期限 (status が requested の場合)
hintstring
next_stepsstring[]
GET/api/domains/{domain}/transfer-away

ドメイン移管(転出)ステータスを取得

ドメインの移管アウトのステータスを確認します。認証コードを取得し、新しいレジストラで移管を開始した後に使用します。transfer_out.mode が manual のドメインでは利用できません。

パラメータ

domain*stringあなたが所有するドメイン名

応答 200

domainstring
statusstring
gaining_registrarstring
request_datestring (date-time)
hintstring
GET/api/domains/{domain}/transfer-status

ドメイン移管(転入)ステータスを確認

受信ドメイン移管のステータスを確認します。実用的なヒントを含む詳細なステータスを返します。 POST /api/domains/transfer で移管を開始した後に使用します。

パラメータ

domain*stringあなたが所有するドメイン名

応答 200

domainstring
statusstring
timestampstring最後のステータス更新のタイムスタンプ
hintstring現在の状況に基づいた実用的なガイダンス
continuityobject安全なドメイン移管のために記録された委任情報と移管後の検証。
POST/api/domains/import

外部ドメインをインポートする

別のレジストラー (GoDaddy、Namecheap、Cloudflare など) で所有するドメインをインポートし、domani.run を通じて管理します。無料、乗り換え不要。 DNS ベースの所有権検証用の TXT レコードを返します。

リクエストボディ

domain*stringインポートするドメイン

応答 200

domainstring
statusstring
tokenstring
txt_recordobject
hintstring
POST/api/domains/import/verify

ドメインのインポートを確認して完了する

DNS TXT レコードを確認し、ドメインのインポートを完了します。 POST /api/domains/import によって返された TXT レコードを追加した後に呼び出します。 Cloudflare DNS-over-HTTPS を使用して伝播をチェックします。

リクエストボディ

domain*string確認するドメイン

応答 201

domainstring
statusstring
expiresstring (date-time)
registrarstring
payment_methodstring
hintstring
GET/api/domains/adoption-plan

既存のドメインを採用する方法を計画する

既存のドメインを接続または移管する前に、そのドメインを読み取り専用で検査します。現在のレジストラ、権威ネームサーバー、DNS プロバイダー、DNSSEC 状態、アカウント状態、移転価格、安全性の不変条件、および正確な次の API アクションを返します。 EPP コードをリクエストする前にこれを呼び出します。接続すると、レジストラと DNS は変更されません。移管ではネームサーバーが保持され、DNS は移行されません。

パラメータ

domain*string検査する既存のドメイン。 mysite.com

応答 200

versioninteger
domainstring
registeredboolean
account_statestring
recommended_actionstring
currentobject
optionsobject
invariantsstring[]
warningsstring[]
GET/api/domains/transfer-check

譲渡資格の事前確認

開始する前に、ドメインが移管の対象となるかどうかを確認してください。移転価格、資格ステータス、およびブロッカー (サポートされていない TLD、ICANN 待機期間、ドメインのロック) を返します。 POST /api/domains/transfer の前にこれを呼び出します。

パラメータ

domain*stringチェックするドメイン、例: mysite.com

応答 200

domainstring
tldstring
eligibleboolean
pricenumber | nullUSD での移転価格 (TLD がサポートされていない場合は null)
currencystring
renewal_pricenumber移転可能な場合のみ: 移転先のレジストラでの、移転後の各年の料金 (USD)。不明な場合は含まれません。
reasonstring資格がない場合、人が読める形式の理由
codestring
eligible_atstring (date)ドメインが適格となる ISO 日付 (ICANN 待機期間)
hintstring
POST/api/domains/transfer-watch

ドメインの移管資格を監視する

ドメインを監視し、移管可能になったときに通知(メール + transfer.eligible Webhook)を受け取ります。RDAP で EPP ステータスコードと ICANN の 60 日ロック期間を確認します。すでに移管可能な場合は、監視を作成せず直ちに返します。

リクエストボディ

domain*string監視するドメイン、例: mysite.com

応答 200

domainstring
eligiblebooleanドメインが現在移管できるかどうか
eligible_atstring (date)ドメインが適格となる ISO 日付 (まだ適格でない場合)
hintstring実用的なガイダンス
watchingboolean通知が設定されているかどうか
POST/api/domains/transfer

別のプロバイダーからドメインを移管する

planDomainAdoption と明示的な価格の確認後に、ドメイン移入を開始します。現在のプロバイダーからの認証/EPP コードが必要です。既存の権限のあるネームサーバーは保存され、検証されます。 DNS の移行は暗黙的に行われることはありません。通常、移管が完了するまでに 1 ~ 5 日かかります。お支払いはカードまたは USDC 経由で前払いされます。

リクエストボディ

domain*string移管するドメイン、例: mysite.com
auth_code*string現在のプロバイダーからの認可/EPP コード
payment_methodstring(card | usdc | balance)支払い方法: 「card」 (デフォルト)、「usdc」、または「balance」 (マーケットプレイスのクレジット)。
payment_txstringすでにオンチェーンで送信された USDC 支払いのトランザクション ハッシュ。
payment_chainstring(base | ethereum)USDC 支払いが送信されたチェーン。
extra_subdomainsstring[]移管前の DNS スナップショットに含める追加のサブドメイン。CT ログ、SPF、MX/DKIM 推論、一般的な単語リストからサブドメインを自動検出します。検出できない可能性があるカスタムサブドメインを指定してください。
max_pricenumber移管費用の上限 (USD)。実際の価格がこれを超えると、リクエストは 400 PRICE_ABOVE_MAX で失敗し、何も請求されません。max_price がない場合の上限は表示された移管価格です。より高いレジストラしか扱えない場合も、移管は同じように失敗します。エラーの `price` が承諾する合計です。その max_price で再試行する前に、ユーザーに確認してください。

応答 202

domainstring
statusstring
expiresstring (date-time)
pricenumber
currencystring
payment_methodstring
payment_txstring
auto_renewboolean
hintstring
dns_snapshotobject移管前に取得された復旧バックアップの概要。明示的な復旧操作が必要な場合にのみ適用されます。
nameservers_preservedboolean
dns_migrationstring
continuityobject

例

curl -X POST https://domani.run/api/domains/transfer \
  -H "Authorization: Bearer domani_sk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"domain": "mysite.com", "auth_code": "EPP-AUTH-CODE"}'
POST/api/domains/{domain}/renew

ドメインを更新する

所有するドメインをさらに 1 年間 (1 ~ 10 年) 更新します。お支払いは前払いとなります。新しい有効期限が応答で返されます。ドメインのレジストラが更新を拒否した場合 (過去 30 日以内に更新済み、またはレジストラが販売していない期間)、リクエストは請求の前に 400 RENEWAL_NOT_ELIGIBLE で失敗します。価格は GET /api/domains/{domain} の renewal_price に years を掛けた金額です。その合計を max_price として送信すると、価格が変わった場合は請求の前に失敗します。

パラメータ

domain*stringあなたが所有するドメイン名

リクエストボディ

yearsinteger更新する年数 (デフォルトは 1)
payment_methodstring(card | usdc | balance)支払い方法: 「card」 (デフォルト)、「usdc」、または「balance」 (マーケットプレイスのクレジット)。
payment_txstringすでにオンチェーンで送信された USDC 支払いのトランザクション ハッシュ。
payment_chainstring(base | ethereum)USDC 支払いが送信されたチェーン。
max_pricenumber更新料金の上限は米ドルです。実際の価格がそれを超える場合、リクエストは 400 PRICE_ABOVE_MAX で失敗し、何も請求されません。エラーの `price` フィールドは受け入れる合計金額です。その max_price で再試行する前に、ユーザーに確認してください。

応答 200

domainstring
renewed_yearsinteger
new_expirystring (date-time)
pricenumber
currencystring
payment_methodstring
payment_txstring

例

curl -X POST https://domani.run/api/domains/mysite.com/renew \
  -H "Authorization: Bearer domani_sk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"years": 1}'
POST/api/domains/{domain}/buy-aftermarket

アフターマーケットドメインを購入する

Domani を通じて、アフターマーケット (Afternic / Sedo) で販売されている登録済みドメインを今すぐ購入できる価格で購入します。出品価格は請求前にライブで再チェックされます。支払う金額の上限を指定するには、max_priceを渡します。メイクオファーのみの商品はここでは購入できません。代わりにブローカー (POST /api/broker) を使用して価格を交渉してください。支払いは登録のように機能します: カード、Base (x402) の USDC、またはマーケットプレイスの残高。 domains:transferスコープが必要です。成功すると、ドメインがアカウントに追加されます (status: active、または段階的な移管が完了する間のprovisioning)。

パラメータ

domain*string購入するアフターマーケットに上場されているドメイン

リクエストボディ

max_pricenumberUSDでの厳しい価格上限。デフォルトは出品の今すぐ購入価格です。ライブ価格がこれを超える場合、購入は拒否されます。
payment_methodstring(card | usdc | balance)支払い方法: 「card」 (デフォルト)、「usdc」、または「balance」 (マーケットプレイスのクレジット)。
payment_txstringすでにオンチェーンで送信された USDC 支払いのトランザクション ハッシュ。
payment_chainstring(base | ethereum)USDC 支払いが送信されたチェーン。

応答 201

domainstring
statusstring購入完了時は「active」、段階的なドメイン移管の完了待ちは「provisioning」です。
pricenumber
currencystring
payment_methodstring
payment_txstring
marketplacestringドメインが購入されたアフターマーケット (例: 「Afternic」、「Sedo」)。
hintstring
next_stepsstring[]

例

curl -X POST https://domani.run/api/domains/coolname.com/buy-aftermarket \
  -H "Authorization: Bearer domani_sk_xxx" \
  -H "Content-Type: application/json" \
  -d '{}'

DNS

GET/api/domains/{domain}/dns

所有するドメインの DNS レコードを取得する

所有するドメイン (A、AAAA、CNAME、MX、TXT、NS など) に設定されているすべての DNS レコードを返します。それぞれに安定した id と zone_version トークン (ETag ヘッダーとしても送信されます) が含まれます。同時のゾーン変更を検出するには、PUT で zone_version を渡します。

パラメータ

domain*stringあなたが所有するドメイン名

応答 200

domainstring
recordsDnsRecord[]
zone_versionstringゾーン全体のオプティミスティック同時実行トークン。同時変更を上書きするのではなく、PUT (本体のzone_version または If-Match ヘッダー) でそれを戻すと、409 DNS_VERSION_CONFLICT で失敗します。

応答例

{
  "domain": "mysite.com",
  "records": [
    {
      "id": "rec_1a2b3c4d5e6f",
      "type": "A",
      "name": "@",
      "value": "76.76.21.21",
      "ttl": 3600
    },
    {
      "id": "rec_2b3c4d5e6f7a",
      "type": "CNAME",
      "name": "www",
      "value": "mysite.com",
      "ttl": 3600
    },
    {
      "id": "rec_3c4d5e6f7a8b",
      "type": "MX",
      "name": "@",
      "value": "mail.example.com",
      "ttl": 3600,
      "priority": 10
    }
  ],
  "zone_version": "zv_9f8e7d6c5b4a3f2e"
}

例

curl https://domani.run/api/domains/mysite.com/dns \
  -H "Authorization: Bearer domani_sk_xxx"
PUT/api/domains/{domain}/dns

所有するドメインの DNS レコードを設定する

rrset レベルで DNS レコードを更新/挿入します。ペイロードに存在する各 (タイプ、名前) について、その (タイプ、名前) の既存のレコードが、送信したレコードで置き換えられます。ペイロードで言及されていない rrset は保存され、NS レコードには決して触れられません。各書き込みの前に、ゾーンのサーバー側の自動バックアップが作成されます。 同時実行性: 前の GET (本文フィールドまたは If-Match ヘッダー) からzone_versionを渡します。それ以降にゾーンが変更された場合、書き込みは 409 DNS_VERSION_CONFLICT で失敗し、現在のレコードとバージョンが返されるため、再マージして再試行できます。 メールのルーティング: ドメインのメールの配信先を変える変更 (MX または NS レコード、ゾーン内の MX ホストが解決に使うアドレスレコード、または Domani のメールを受信していて MX を公開していないホストのアドレスレコード) には email:auth_secrets スコープが必要です。メールを受け取る者は、そのサインインコードも受け取るためです。このスコープがない場合、リクエストは何かが変更される前に 403 INSUFFICIENT_SCOPE を返し、メールボックスに限定されたトークンはこのスコープがあっても 403 MAILBOX_CONFINED を返します。その他のレコードに必要なのは domains:write だけです。ルーティングの変更はすべて監査ログに記録されます。

パラメータ

domain*stringあなたが所有するドメイン名

リクエストボディ

records*DnsRecord[]
zone_versionstring以前の GET からのzone_version。不一致の場合、書き込みは 409 DNS_VERSION_CONFLICT (何も書き込まれません) で拒否されます。別のアクターが同じゾーンを編集する可能性がある場合は常に推奨されます。

応答 200

successboolean
domainstring
recordsDnsRecord[]

応答例

{
  "success": true,
  "domain": "mysite.com",
  "records": [
    {
      "type": "A",
      "name": "@",
      "value": "76.76.21.21",
      "ttl": 3600
    },
    {
      "type": "CNAME",
      "name": "www",
      "value": "cname.vercel-dns.com",
      "ttl": 3600
    }
  ]
}

例

curl -X PUT https://domani.run/api/domains/mysite.com/dns \
  -H "Authorization: Bearer domani_sk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"records": [
    {"type": "A", "name": "@", "value": "76.76.21.21", "ttl": 3600},
    {"type": "CNAME", "name": "www", "value": "cname.vercel-dns.com", "ttl": 3600}
  ]}'
GET/api/domains/{domain}/dnssec

所有するドメインの DNSSEC DS レコードを一覧表示する

所有するドメインのレジストリで公開された DNSSEC 委任署名者 (DS) レコードと、DNSSEC が有効かどうかを返します。 DANE の TLSA レコード (DNS エンドポイント経由で設定) とペアになります。

パラメータ

domain*stringあなたが所有するドメイン名

応答 200

domainstring
enabledboolean少なくとも 1 つの DS レコードが公開されている場合は True
recordsDsRecord[]

応答例

{
  "domain": "mysite.com",
  "enabled": true,
  "records": [
    {
      "keyTag": "12345",
      "algorithm": "13",
      "digestType": "2",
      "digest": "A1B2C3..."
    }
  ]
}

例

curl https://domani.run/api/domains/mysite.com/dnssec \
  -H "Authorization: Bearer domani_sk_xxx"
POST/api/domains/{domain}/dnssec

DNSSEC DS レコードを公開する (DNSSEC を有効にする)

レジストリで委任署名者 (DS) レコードを公開し、ドメインの DNSSEC を有効にします。ゾーンに署名した後、DNS/ゾーン プロバイダーから DS 値を取得します。

パラメータ

domain*stringあなたが所有するドメイン名

応答 200

successboolean
domainstring
enabledboolean
recordsDsRecord[]

例

curl -X POST https://domani.run/api/domains/mysite.com/dnssec \
  -H "Authorization: Bearer domani_sk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"keyTag": "12345", "algorithm": "13", "digestType": "2", "digest": "A1B2C3..."}'
DELETE/api/domains/{domain}/dnssec

DNSSEC DS レコードを削除する (DNSSEC を無効にする)

キータグによってレジストリの委任署名者 (DS) レコードを削除します。すべての DS レコードを削除すると、ドメインの DNSSEC が無効になります。

パラメータ

domain*stringあなたが所有するドメイン名
keyTag*string削除する DS レコードのキータグ

応答 200

successboolean
domainstring
enabledboolean
recordsDsRecord[]

例

curl -X DELETE "https://domani.run/api/domains/mysite.com/dnssec?keyTag=12345" \
  -H "Authorization: Bearer domani_sk_xxx"
POST/api/domains/{domain}/dns/snapshot

DNSスナップショットをキャプチャする

パブリック DNS ルックアップ (Cloudflare DoH) 経由でドメインのすべての DNS レコードをキャプチャします。 Certificate Transparency ログ、SPF レコード、および共通名からサブドメインを検出します。スナップショットはバックアップとしてサーバー側にも保存されます。

パラメータ

domain*stringあなたが所有するドメイン名

リクエストボディ

extra_subdomainsstring[]スナップショットに含める追加のサブドメイン

応答 200

domainstring
recordsDnsRecord[]
subdomainsstring[]
sourcesstring[]
capturedAtstring (date-time)

応答例

{
  "domain": "mysite.com",
  "records": [
    {
      "type": "A",
      "name": "@",
      "value": "76.76.21.21",
      "ttl": 3600
    },
    {
      "type": "CNAME",
      "name": "www",
      "value": "mysite.com",
      "ttl": 3600
    },
    {
      "type": "MX",
      "name": "@",
      "value": "aspmx.l.google.com",
      "ttl": 3600,
      "priority": 1
    }
  ],
  "subdomains": [
    "www",
    "mail",
    "api"
  ],
  "sources": [
    "ct",
    "wordlist"
  ],
  "capturedAt": "2026-03-06T12:00:00.000Z"
}

例

curl -X POST https://domani.run/api/domains/mysite.com/dns/snapshot \
  -H "Authorization: Bearer domani_sk_xxx"
POST/api/domains/{domain}/dns/restore

スナップショットから DNS を復元する

スナップショットの DNS レコードをドメインの現在のレジストラに適用します。差分アルゴリズムを使用し、既存レコードの重複を防ぎます。本文にスナップショットがない場合は、サーバー側のバックアップ(スナップショットまたは移管時に作成)から復元します。 メールのルーティング: ドメインのメールの配信先を変える変更 (MX または NS レコード、ゾーン内の MX ホストが解決に使うアドレスレコード、または Domani のメールを受信していて MX を公開していないホストのアドレスレコード) には email:auth_secrets スコープが必要です。メールを受け取る者は、そのサインインコードも受け取るためです。このスコープがない場合、リクエストは何かが変更される前に 403 INSUFFICIENT_SCOPE を返し、メールボックスに限定されたトークンはこのスコープがあっても 403 MAILBOX_CONFINED を返します。その他のレコードに必要なのは domains:write だけです。ルーティングの変更はすべて監査ログに記録されます。

パラメータ

domain*stringあなたが所有するドメイン名

リクエストボディ

snapshotobjectDNS スナップショット オブジェクト (スナップショット エンドポイントによって返される)。省略した場合、保存されているサーバー側のバックアップが使用されます。
dry_runbooleanプレビューのみ: 何も書き込まずに、復元で作成 (would_apply) され、スキップされるものを返します。

応答 200

domainstring
appliedinteger作成されたレコードの数
skippedintegerすでに存在するレコードの数
recordCountintegerスナップショット内の合計レコード数
errorsstring[]
dry_runbooleanこれがプレビューの場合は True - 何も書き込まれませんでした
would_applyDnsRecord[]ドライランのみ: リストアによって作成されるレコード

応答例

{
  "domain": "mysite.com",
  "applied": 5,
  "skipped": 2,
  "recordCount": 7,
  "errors": []
}

例

curl -X POST https://domani.run/api/domains/mysite.com/dns/restore \
  -H "Authorization: Bearer domani_sk_xxx"
POST/api/domains/{domain}/dns/clone

別のドメインの DNS をこのドメインに複製します

所有するソース ドメインの DNS 設定をこのドメインにコピーします。同じ A/CNAME/MX を共有する複数の TLD ブランド (brand.com → brand.dev) に役立ちます。デフォルトでマージします (タイプと名前の衝突が発生した場合はソース レコードが優先され、このドメインの他のレコードは保持されます)。正確なミラーにはreplace: trueを設定します。 メールのルーティング: ドメインのメールの配信先を変える変更 (MX または NS レコード、ゾーン内の MX ホストが解決に使うアドレスレコード、または Domani のメールを受信していて MX を公開していないホストのアドレスレコード) には email:auth_secrets スコープが必要です。メールを受け取る者は、そのサインインコードも受け取るためです。このスコープがない場合、リクエストは何かが変更される前に 403 INSUFFICIENT_SCOPE を返し、メールボックスに限定されたトークンはこのスコープがあっても 403 MAILBOX_CONFINED を返します。その他のレコードに必要なのは domains:write だけです。ルーティングの変更はすべて監査ログに記録されます。

パラメータ

domain*string対象ドメイン(DNSはここに書きます)

リクエストボディ

from*stringDNS のコピー元のソース ドメイン (自分のものである必要があります)
replaceboolean正確なミラー - ソースにないターゲット レコードを削除します。デフォルト: マージ

応答 200

successboolean
from_domainstring
to_domainstring
recordsDnsRecord[]

例

curl -X POST https://domani.run/api/domains/brand.dev/dns/clone \
  -H "Authorization: Bearer domani_sk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"from": "brand.com"}'
GET/api/domains/{domain}/nameservers

ドメインのネームサーバーを取得する

所有するドメインに対して構成された権限のあるネームサーバーを返します。空の場合、ネームサーバーが割り当てられるまで、DNS 操作 (パーキング、電子メール、接続) は失敗します。

パラメータ

domain*stringあなたが所有するドメイン名

応答 200

domainstring
nameserversstring[]
default_nameserversstring[]ドメインのゾーンを配信するネームサーバー: Domani がそこでゾーンをホストしている場合はゾーンホスト、それ以外はレジストラのデフォルト (不明な場合は null)
dns_providerstringドメインのゾーンに応答する主体: レジストラ自身の DNS、Domani が Cloudflare でホストするゾーン、またはインポートされたドメインの場合は外部プロバイダー
hintstring

応答例

{
  "domain": "mysite.com",
  "nameservers": [
    "ns1.systemdns.com",
    "ns2.systemdns.com",
    "ns3.systemdns.com"
  ],
  "default_nameservers": [
    "ns1.systemdns.com",
    "ns2.systemdns.com",
    "ns3.systemdns.com"
  ],
  "dns_provider": "registrar",
  "hint": "3 nameservers configured for mysite.com."
}

例

curl https://domani.run/api/domains/mysite.com/nameservers \
  -H "Authorization: Bearer domani_sk_xxx"
PUT/api/domains/{domain}/nameservers

ドメインのネームサーバーを設定する

所有するドメインのネームサーバーを置き換えます。 2 ~ 13 個の有効なホスト名が必要です。共通の値: OpenSRS DNS (ns1.systemdns.com、ns2.systemdns.com、ns3.systemdns.com)。ネームサーバーは、サインインコードを含め、ドメインのすべてのメールの行き先を決めます。変更するには email:auth_secrets スコープと、メールボックスに限定されていないトークンが必要です (それ以外は 403 INSUFFICIENT_SCOPE または 403 MAILBOX_CONFINED)。変更はすべて監査ログに記録されます。

パラメータ

domain*stringあなたが所有するドメイン名

リクエストボディ

nameservers*string[]ネームサーバーのホスト名 (2 ~ 13 個が必要)

応答 200

successboolean
domainstring
nameserversstring[]
hintstring

応答例

{
  "success": true,
  "domain": "mysite.com",
  "nameservers": [
    "ns1.systemdns.com",
    "ns2.systemdns.com",
    "ns3.systemdns.com"
  ],
  "hint": "Nameservers for mysite.com updated to ns1.systemdns.com, ns2.systemdns.com, ns3.systemdns.com. Changes may take up to 48 hours to propagate."
}

例

curl -X PUT https://domani.run/api/domains/mysite.com/nameservers \
  -H "Authorization: Bearer domani_sk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"nameservers": ["ns1.systemdns.com", "ns2.systemdns.com", "ns3.systemdns.com"]}'

接続する

POST/api/domains/{domain}/connect

ドメインをホスティング プロバイダーまたは電子メール プロバイダーに接続する

ターゲット URL からプロバイダーを自動検出するか、明示的なプロバイダー名を受け入れることにより、ドメインをホスティング プロバイダーまたは電子メール プロバイダーに接続します。 プラットフォームを通じて管理されるドメインの場合、DNS レコードは自動的に設定されます (ステータス: dns_set)。インポートされたドメイン (外部レジストラー) の場合、レジストラーで手動で追加する指示としてレコードを返します (ステータス: manual_setup_required、レコードのステータスは pending)。 サポートされているホスティング プロバイダー: vercel、netlify、cloudflare-pages、github-pages、railway、fly。 サポートされているメールプロバイダー: google-workspace、fastmail、proton。 GET /api/domains/{domain}/connect を使用して、利用可能なすべてのプロバイダーとメソッドをリストします。 メールのルーティング: ドメインのメールの配信先を変える変更 (MX または NS レコード、ゾーン内の MX ホストが解決に使うアドレスレコード、または Domani のメールを受信していて MX を公開していないホストのアドレスレコード) には email:auth_secrets スコープが必要です。メールを受け取る者は、そのサインインコードも受け取るためです。このスコープがない場合、リクエストは何かが変更される前に 403 INSUFFICIENT_SCOPE を返し、メールボックスに限定されたトークンはこのスコープがあっても 403 MAILBOX_CONFINED を返します。その他のレコードに必要なのは domains:write だけです。ルーティングの変更はすべて監査ログに記録されます。

パラメータ

domain*stringあなたが所有するドメイン名

リクエストボディ

targetstring自動検出のターゲット URL (例: my-app.vercel.app)
providerstring明示的なプロバイダ名 (例: vercel、google-workspace)
methodstringプロバイダーが複数ある場合の接続方法 (例: cname-only)
dry_runbooleanプレビューのみ: 何も書き込まずに差分 (create/replace/already_set/keep) を返します。
confirm_replace_mxboolean接続が別のプロバイダーを指す既存の MX レコードを置き換える場合に必要です (それ以外の場合は 409 MX_REPLACEMENT_REQUIRES_CONFIRMATION)。ドメインの電子メールを再ルーティングします。

応答 200

domainstring
providerstring
categorystring
methodstring
recordsDnsRecord[]
docsstring (uri)
statusstringdns_set = レコードを自動的に書き込みます。manual_setup_required = インポート済みドメインのため、レジストラでレコードを追加します。dry_run = プレビューのみで、何も書き込みません。
hintstring
next_stepsstring[]DNS レコードの設定後に完了するプロバイダー固有のアクション
diffobjectドライランのみ:書き込みによる処理(create、replace[削除される既存レコード]、already_set、keep[変更されない rrsets])を返します。

例

curl -X POST https://domani.run/api/domains/mysite.com/connect \
  -H "Authorization: Bearer domani_sk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"target": "my-app.vercel.app"}'
GET/api/domains/{domain}/connect

ドメインに接続するために利用可能なプロバイダーをリストする

サポートされているすべてのホスティング プロバイダーと電子メール プロバイダーをその接続方法とともに返します。これを使用して、POST を呼び出す前に利用可能なプロバイダーを確認します。

パラメータ

domain*stringあなたが所有するドメイン名

応答 200

domainstring
providersobject
POST/api/domains/{domain}/verify

プロバイダー接続が機能していることを確認する

プロバイダーの検証チェックを実行して、DNS レコードが伝播され、接続がアクティブであることを確認します。 POST /api/domains/{domain}/connect の後に使用して確認します。

パラメータ

domain*stringあなたが所有するドメイン名

リクエストボディ

targetstring自動検出の対象
providerstringプロバイダ名
methodstringメソッド名

応答 200

domainstring
providerstring
methodstring
verifiedboolean
messagestring
hintstring
next_stepsstring[]プロバイダー固有のトラブルシューティング手順 (検証結果が false の場合のみ)

例

curl -X POST https://domani.run/api/domains/mysite.com/verify \
  -H "Authorization: Bearer domani_sk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"target": "my-app.vercel.app"}'

ステータス

GET/api/domains/{domain}/status

ドメインの健全性を確認します: DNS、SSL、電子メール、有効期限

DNS-over-HTTPS 経由でドメインの健全性をチェックします: A/AAAA/CNAME/MX/TXT/NS レコード、SSL 証明書ステータス、電子メール設定、有効期限。 Accept: text/event-stream経由で SSE ストリーミングをサポート - 接続を閉じると、サーバー側での実行中の DNS/SSL チェックがキャンセルされます。接続後にこれを使用して、DNS の伝播を確認します。

パラメータ

domain*stringあなたが所有するドメイン名

応答 200

domainstring
statusstring
expiresstring (date-time)
days_until_expiryinteger
dnsobject
sslobject
emailobject

応答例

{
  "domain": "mysite.com",
  "status": "active",
  "expires": "2027-02-18T00:00:00.000Z",
  "days_until_expiry": 365,
  "dns": {
    "propagated": true,
    "a": [
      "76.76.21.21"
    ],
    "aaaa": [],
    "cname": [],
    "mx": [],
    "txt": [],
    "ns": [
      "ns1.porkbun.com",
      "ns2.porkbun.com"
    ],
    "registrar_records": [
      {
        "type": "A",
        "name": "@",
        "value": "76.76.21.21",
        "ttl": 3600
      }
    ]
  },
  "ssl": {
    "active": true
  },
  "email": {
    "configured": false,
    "mx": []
  }
}

例

curl https://domani.run/api/domains/mysite.com/status \
  -H "Authorization: Bearer domani_sk_xxx"

サービスの検証

POST/api/domains/{domain}/verify-service

DNS レコードを追加してサードパーティ サービスのドメイン所有権を確認する

正しい DNS レコード (TXT、CNAME) を追加して、ドメインの所有権をサードパーティ サービスに証明します。 Stripe、Google Search Console、AWS SES、Postmark、Resend、Facebook、HubSpot、Microsoft 365 をサポートします。不明なサービス名は汎用の TXT レコードにフォールバックされます。 レコードは既存の DNS とマージされ、既存のレコードは保持されます。 メールのルーティング: ドメインのメールの配信先を変える変更 (MX または NS レコード、ゾーン内の MX ホストが解決に使うアドレスレコード、または Domani のメールを受信していて MX を公開していないホストのアドレスレコード) には email:auth_secrets スコープが必要です。メールを受け取る者は、そのサインインコードも受け取るためです。このスコープがない場合、リクエストは何かが変更される前に 403 INSUFFICIENT_SCOPE を返し、メールボックスに限定されたトークンはこのスコープがあっても 403 MAILBOX_CONFINED を返します。その他のレコードに必要なのは domains:write だけです。ルーティングの変更はすべて監査ログに記録されます。

パラメータ

domain*stringあなたが所有するドメイン名

リクエストボディ

service*stringサービス名 (e.g. stripe, google-search-console, aws-ses, postmark, resend, facebook, hubspot, microsoft-365)
token*stringサービスが提供する検証トークン

応答 200

domainstring
servicestring
service_display_namestring
known_serviceboolean
records_addedDnsRecord[]
total_recordsinteger
docsstring (uri) | null
hintstring

応答例

{
  "domain": "mysite.com",
  "service": "stripe",
  "service_display_name": "Stripe",
  "known_service": true,
  "records_added": [
    {
      "type": "TXT",
      "name": "@",
      "value": "stripe-verification=abc123def456",
      "ttl": 3600
    }
  ],
  "total_records": 3,
  "docs": "https://docs.stripe.com/identity/verification-checks/selfie#domain-verification",
  "hint": "Stripe verification records added. Return to Stripe to complete verification."
}

例

curl -X POST https://domani.run/api/domains/mysite.com/verify-service \
  -H "Authorization: Bearer domani_sk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"service": "stripe", "token": "abc123def456"}'
GET/api/domains/{domain}/verify-service

ドメイン検証でサポートされているサービスの一覧表示

すべての既知のサービスをその名前、説明、ドキュメント URL とともに返します。不明なサービスは汎用 TXT レコードにフォールバックします。

パラメータ

domain*stringあなたが所有するドメイン名

応答 200

domainstring
servicesobject[]
hintstring

発見

GET/api/domains/{domain}/profile公共

パブリック ドメイン プロファイルを取得する

ドメインのプライバシーに安全で証拠に裏付けられた最新の公開文書を返します。このエンドポイントは、マスクされた観察や生の登録連絡先詳細を返すことはありません。

パラメータ

domain*string

応答 200

profilePublicDomainProfile
POST/api/domains/{domain}/profile公共

パブリック ドメイン プロファイルを調査または更新する

パブリック レジストリ、DNS、ライブ サイト、構造化データ、およびアーカイブ ソースを使用して限定された分析を実行し、正規のパブリック ページのプライバシーに安全なプロファイルを保存します。インスタント深度は、高速な最初のレンダリングに使用されます。 deep がデフォルトで、歴史的調査が追加されます。

パラメータ

domain*string
depthstring(instant | deep)研究の深さ。デフォルトはディープです。

応答 201

profilePublicDomainProfile
GET/api/domains/whois公共

RDAP経由でドメイン登録データを検索する

RDAP (登録データ アクセス プロトコル) ネットワークにドメイン登録データをクエリします。レジストラ、作成/有効期限/更新日、有効期限までの日数、ステータス コード、ネームサーバー、DNSSEC ステータス、および連絡先情報 (登録者、管理担当、技術担当、請求担当、不正利用対応) を返します。どのドメインでも機能します - 所有権は必要ありません。 RDAP は、WHOIS に代わる最新の JSON ネイティブです。 RDAP を使用しない TLD の場合は WHOIS (ポート 43) にフォールバックし、連絡先が見つからない場合は WHOIS 参照データで RDAP を補完します (GDPR 後の一般的)。連絡先情報は、GDPR またはプライバシー保護サービスにより、部分的または完全にマスクされる場合があります。 パブリック エンドポイント - 認証は必要ありません。認証されたリクエストには、より高いレート制限が適用されます (30/分対 10/分)。

パラメータ

q*string検索するドメイン (例: example.com)

応答 200

domainstring
registeredbooleanドメインが現在登録されているかどうか
registrarstring | null現在のレジストラ名
registrar_urlstring | nullレジストラ Web サイトの URL
registrar_iana_idstring | nullレジストラ IANA ID (RDAP publicIds から)
createdstring | null登録日(YYYY-MM-DD)
expiresstring | null有効期限 (YYYY-MM-DD)
updatedstring | null最終更新日 (YYYY-MM-DD)
days_until_expiryinteger | null有効期限までの日数 (登録されていない場合は null)
statusstring[]EPPステータスコード
nameserversstring[]権限のあるネームサーバー
dnssecbooleanDNSSECが有効かどうか
redactedbooleanWHOIS/RDAP データがプライバシーのためにマスクされているかどうか (GDPR)
contactsobject役割別の連絡先情報 (利用可能なデータがない場合は null、マスクされた場合はフィールドが null になる可能性があります)

例

curl "https://domani.run/api/domains/whois?q=google.com"
GET/api/domains/{domain}/og公共

ドメインの Web サイト プレビュー メタデータを取得する

ドメインの Open Graph メタデータ (タイトル、説明、画像、ファビコン) を返します。データは遅延フェッチされ、7 日間キャッシュされます。ドメインに対する最初のリクエストには 1 ~ 5 秒かかる場合があります (ライブフェッチ)。後続のリクエストは即座に行われます (キャッシュ ヒット)。サイトにアクセスできない場合、または OG タグがない場合は、null フィールドを返します。 パブリック エンドポイント - 認証は必要ありません。

パラメータ

domain*stringメタデータを取得するドメイン (例: google.com)

応答 200

titlestring | nullページタイトル (og:title > twitter:title > <title>)
descriptionstring | nullページの説明 (og:description > メタディスクリプション)
imagestring | nullOG画像URL(絶対)
faviconstring | nullファビコン URL (絶対)

例

curl "https://domani.run/api/domains/google.com/og"

請求

POST/api/billing/setup

支払い方法を追加するための URL を取得する

クレジットカードを追加するために、Stripe Checkout の url と SetupIntent の client_secret を常に両方返します。Stripe.js を実行できないエージェントはブラウザで url を開き、ユーザーにそこでカードを追加するよう伝えてください。Stripe Elements を直接埋め込むフロコード (Domani のダッシュボードなど) は代わりに client_secret を使用します。これはカードでドメインを購入する前に必要です。ユーザーがチェックアウトを完了すると、ダッシュボードにリダイレドされます。

リクエストボディ

modestring(setup_intent | checkout)非推奨: この値に関係なく `url` と `client_secret` は常に両方返されます。後方互換性のために残されています。

応答 200

urlstring (uri)Stripe Checkout URL - ブラウザで開いてカードを追加します
client_secretstringStripe SetupIntent クリエント シーレット。Stripe.js を直接使用するフロコード向け
hintstring次のステップのガイダンス

応答例

{
  "url": "https://checkout.domani.run/session/cs_abc123...",
  "client_secret": "seti_abc123_secret_xyz",
  "hint": "Open `url` in a browser to add your payment card."
}

例

curl -X POST https://domani.run/api/billing/setup \
  -H "Authorization: Bearer domani_sk_xxx"
DELETE/api/billing/card

保存した支払い方法を削除する

ユーザーの保存したクレジット カードをアカウントから削除します。削除後、ドメインを購入する前に新しいカードを追加する必要があります。

応答 200

removedboolean

応答例

{
  "removed": true
}

例

curl -X DELETE https://domani.run/api/billing/card \
  -H "Authorization: Bearer domani_sk_xxx"
GET/api/billing/connect

マーケットプレイスの支払いステータスを取得する

販売者の Stripe Connect オンボーディング ステータスと利用可能なマーケットプレイスの残高を返します。オンボーディングが完了し、販売者が銀行支払いを受け取ることができると、payouts_enabled は true になります。

応答 200

onboardedboolean販売者は Connect オンボーディングの詳細を送信しました
payouts_enabledboolean銀行の支払いは有効です
details_submittedboolean
balance_centsinteger利用可能なマーケットプレイスの残高(セント単位)

応答例

{
  "onboarded": true,
  "payouts_enabled": true,
  "details_submitted": true,
  "balance_cents": 45000
}

例

curl https://domani.run/api/billing/connect \
  -H "Authorization: Bearer domani_sk_xxx"
POST/api/billing/connect

銀行支払いのオンボーディングを開始する

マーケットプレイス販売者向けの Stripe Connect Express オンボーディングを作成 (または再開) し、ユーザーをリダイレクトするホストされたオンボーディング URL を返します。売り手が銀行に収益を引き出す前に必要です。

応答 200

urlstring (uri)Stripe がホストするオンボーディング URL

応答例

{
  "url": "https://connect.stripe.com/setup/e/acct_123/..."
}

例

curl -X POST https://domani.run/api/billing/connect \
  -H "Authorization: Bearer domani_sk_xxx"
POST/api/billing/connect/payout

マーケットプレイスの残高を銀行に引き出す

販売者の利用可能なマーケットプレイスの残高全体を、接続されている銀行口座に転送します。完了した支払いオンボーディング (POST /api/billing/connect) が必要です。残高は送金前に確保され、失敗した場合には復元されるため、失敗しても資金が失われることはありません。

応答 200

amount_centsinteger送金額(セント)
transfer_idstringStripe 転送 ID

応答例

{
  "amount_cents": 45000,
  "transfer_id": "tr_123"
}

例

curl -X POST https://domani.run/api/billing/connect/payout \
  -H "Authorization: Bearer domani_sk_xxx"
GET/api/billing/invoices

支払い請求書の一覧表示

請求書番号、金額、日付、PDF を表示またはダウンロードするためのリンクを含む支払い済み請求書のリストを返します。請求書は、ドメインの購入、更新、移管ごとに自動的に生成されます。

パラメータ

limitinteger返送する請求書の最大数

応答 200

invoicesobject[]
has_moreboolean
hintstring

例

curl https://domani.run/api/billing/invoices \
  -H "Authorization: Bearer domani_sk_xxx"

紹介

GET/api/referrals

紹介による収益と履歴を取得する

あなたの一意の紹介コード、手数料率 (20%)、収益の内訳 (合計、支払済み、保留中)、および紹介されたすべての購入の履歴を返します。紹介コードを他の人と共有します。他の人があなたのコードで登録すると (ref パラメータ経由で)、今後のすべてのドメイン購入に対して自動的にコミッションを受け取ります。

応答 200

referral_codestring共有する独自の紹介コード
referral_rateinteger手数料率 (現在 20%)
total_earned_centsinteger総収益 (セント)
total_paid_centsinteger支払総額(セント)
total_pending_centsinteger保留中のセント単位の支払い
referralsobject[]

応答例

{
  "referral_code": "x7k9m2",
  "referral_rate": 20,
  "total_earned_cents": 400,
  "total_paid_cents": 200,
  "total_pending_cents": 200,
  "referrals": [
    {
      "id": "cm5ref001",
      "domains": [
        "friend-site.com"
      ],
      "earned_cents": 200,
      "paid_out": true,
      "created_at": "2025-01-20T10:00:00.000Z"
    },
    {
      "id": "cm5ref002",
      "domains": [
        "another.dev"
      ],
      "earned_cents": 200,
      "paid_out": false,
      "created_at": "2025-02-10T15:30:00.000Z"
    }
  ]
}

例

curl https://domani.run/api/referrals \
  -H "Authorization: Bearer domani_sk_xxx"

バックオーダー

POST/api/backorders

登録済みドメインをバックオーダーする

他の人が登録しているドメインを監視し、登録可能になった時点でお客様に代わって自動的に登録を試みます。空き状況は数分ごとに確認されるため、解放後すぐに処理できます。前払いはなく、登録に成功した場合のみ料金が発生します。価格上限により、解放までに登録価格が上昇しても支出を制限できます。 登録成功時の支払いには、保存済みの支払い方法(カード)または payment_method: "balance" が必要です。成功は保証されず、競争率の高いドメインは専門業者に先に登録される場合があります。

リクエストボディ

domain*string現在登録済みで、解放時の登録を試みるために監視するドメイン。
max_pricenumber登録に支払う上限額(USD)。デフォルトは現在の登録価格です。現在の価格以上(>=)である必要があります。
payment_methodstring(card | balance)登録成功時に使用する支払い方法。デフォルトは優先支払い方法です。

応答 201

backorderBackorder
hintstring

例

curl -X POST https://domani.run/api/backorders \
  -H "Authorization: Bearer domani_sk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"domain": "taken.com"}'
GET/api/backorders

バックオーダーを一覧表示する

バックオーダーを新しい順に返します。status(watching、caught、failed、cancelled、expired)で絞り込みます。

パラメータ

statusstring(watching | caught | failed | cancelled | expired)ステータスでフィルタリングします。

応答 200

backordersBackorder[]
GET/api/backorders/{id}

バックオーダーを取得する

パラメータ

id*stringバックオーダーID。

応答 200

backorderBackorder
DELETE/api/backorders/{id}

バックオーダーをキャンセルする

ドメインの監視を停止します。キャンセルできるのはwatching状態のバックオーダーのみです。

パラメータ

id*stringバックオーダーID。

応答 200

idstring
statusstring
hintstring

マーケットプレイス

POST/api/domains/sell

ドメインを出品する(公開マーケットプレイス)

他のレジストラのドメインも含め、Domani マーケットプレイスで販売されているドメインを出品します。 Domani アカウントに既に存在するドメインは自動検証され、すぐに出品に表示されます (ステータスactive)。外部ドメインには TXT 所有権の検証が必要です (ステータス pending_verification)。 料金: 販売が成功した場合の 10% のプラットフォーム手数料。 deals:writeスコープが必要です。

リクエストボディ

domain*string販売リストに掲載するドメイン名
price*number販売価格(米ドル)
descriptionstringオプションの出品の説明

応答 201

listingobject
txt_recordobject | null所有権検証のために追加する TXT レコード (外部ドメインのみ)
hintstring
POST/api/domains/sell/verify

外部リスティングの TXT 所有権を確認する

TXT 所有権レコードが外部ドメインの出品に追加されていることを確認します。成功すると、出品のステータスがpending_verificationからactiveに変わり、購入可能になります。 deals:writeスコープが必要です。

リクエストボディ

domain*string確認するドメイン名

応答 200

listingobject
hintstring
GET/api/domains/sell/status

出品状況と取引状況を確認する

ドメインの出品とアクティブな取引のステータスを確認します。出品の詳細、取引パイプラインのステータス、およびコンテキスト上のヒントを返します。 deals:read スコープが必要です。

パラメータ

domain*string確認するドメイン名

応答 200

listingobject | null
dealobject | null
hintstring
GET/api/deals

取引をリストアップする

あなたが買い手または売り手であるマーケットプレイスの取引をリストします。役割またはステータスでフィルタリングします。 deals:read スコープが必要です。

パラメータ

rolestring(buyer | seller)役割でフィルタリングする
statusstring(active | escrow_held | epp_pending | transfer_started | completed | refunded | expired)ステータスによるフィルター (「active」 = すべての非ターミナル)
domainstringドメイン名でフィルタリングする
limitinteger返される取引の数 (デフォルトは 50、最大 100)
cursorstring前の応答のページネーション カーソル

応答 200

dealsobject[]
has_morebooleanさらに結果が得られるかどうか
next_cursorstring | null次のページへのカーソル
POST/api/deals

外部ドメインを購入する (取引を作成する)

マーケットプレイスに上場されているドメインを購入するためのエスクロー取引を作成します。購入者の支払いは、ドメイン移管が完了するまでエスクローに保管されます。販売者には通知が届き、7 日以内に EPP/認証コードを提供する必要があります。 domains:transferスコープが必要です。

リクエストボディ

domain*string購入するドメイン名
payment_methodstring(card | usdc | balance)支払い方法: 「card」 (デフォルト)、「usdc」、または「balance」 (マーケットプレイスのクレジット)。

応答 201

dealobject
hintstring
next_stepsstring[]
GET/api/deals/{id}

タイムラインで取引の詳細を取得する

価格の内訳、期限、イベントのタイムラインなど、取引の詳細をすべて確認します。買い手と売り手の両方が取引にアクセスできます。 deals:read スコープが必要です。

パラメータ

id*string取引ID

応答 200

dealobject
hintstring
PATCH/api/deals/{id}

EPP/認証コードを提供する (販売者)

販売者は、ドメイン移管を開始するための EPP/認証コードを提供します。コードは保存時に暗号化され、レジストラの移管を開始するために使用されます。最大 3 回の試行。 deals:writeスコープが必要です。

パラメータ

id*string取引ID

リクエストボディ

auth_code*string現在のレジストラからの EPP/認証コード

応答 200

dealobject
hintstring
GET/api/deals/{id}/invoice

取引の領収書/明細書を取得する

マーケットプレイス取引の役割を認識した請求書を返します。購入者は購入レシートを受け取ります。売り手は、売上、プラットフォームの手数料ライン、純支払い額を示す明細書を受け取ります。すべての支払い方法 (カード/USDC/残高) で動作します。 deals:read スコープが必要です。

パラメータ

id*string

応答 200

invoiceDealInvoice
GET/api/negotiations

交渉内容をリストアップする

あなたが買い手または売り手である場合の価格交渉をリストします。取引相手は匿名化されます (役割のみ)。 deals:read スコープが必要です。

パラメータ

rolestring(buyer | seller)自分の役割でフィルターをかける
statusstringステータスで絞り込みます(open|agreed|completed|declined|expired|cancelled|all)。

応答 200

negotiationsNegotiation[]
POST/api/negotiations

リスティングでオファーをする

アクティブに出品されているドメインに対して、最初のオファーで匿名の価格交渉を開始します。売り手は再提示か、受け入れるか、拒否することができます。承諾すると、買い手は支払いを完了し、合意された価格で取引が成立します。 deals:writeスコープが必要です。

リクエストボディ

domain*string交渉対象となる出品されたドメイン
offer*numberUSDでの初回オファー
messagestring販売者へのオプションのメッセージ

応答 201

negotiationNegotiation

例

curl -X POST https://domani.run/api/negotiations \
  -H "Authorization: Bearer domani_sk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"domain":"example.com","offer":500}'
GET/api/negotiations/{id}

交渉スレッドを取得する

匿名化された完全なオファー スレッドを含む取引交渉を返します (オファーには「you」または「counterparty」というラベルが付けられます)。 deals:read スコープが必要です。

パラメータ

id*string

応答 200

negotiationNegotiation
POST/api/negotiations/{id}

再提示、受け入れる、または拒否する

自分の番が来たら、テーブル上の現在のオファーに応答します。 counterには新しい量が必要です。 acceptは、現在テーブルにある金額で価格をロックします。 declineすると取引交渉が終了します。 deals:writeスコープが必要です。

パラメータ

id*string

リクエストボディ

action*string(counter | accept | decline)
counternumberUSD での新しい金額 (action=counter の場合に必要)
messagestring

応答 200

negotiationNegotiation
DELETE/api/negotiations/{id}

交渉を撤回する

買い手はオープンまたは合意された交渉を撤回します。 deals:writeスコープが必要です。

パラメータ

id*string

応答 200

cancelledboolean
POST/api/negotiations/{id}/finalize

合意された交渉を完了する(有料)

買い手はエスクロー取引を作成するために合意した価格を支払い、その後標準の送金フローが実行されます。マーケットプレイスでの購入と同じ支払い方法 (カード、USDC、x402) を受け入れます。支払いが行われない場合は、支払い指示を含む 402 を返します。ブローカーによる買収の場合、合意価格が設定した max_budget を超えている場合、409 BUDGET_EXCEEDED が返されます。続行するには、confirm_over_budget: true を指定して再送信してください。 domains:transferスコープが必要です。

パラメータ

id*string

リクエストボディ

payment_methodstring(card | usdc | balance)
payment_signaturestring | null
payment_txstring
payment_chainstring
confirm_over_budgetbooleanブローカー取引の場合: 合意価格が設定した max_budget を超えている場合でも続行します。
GET/api/broker

ブローカーリクエストをリストします

ドメイン取得リクエストとそのステータスをリストします。 deals:read スコープが必要です。

パラメータ

statusstringステータスまたは「all」でフィルタリングします

応答 200

requestsBrokerRequest[]
POST/api/broker

登録済みドメインの取得をリクエストする

domani に、お客様に代わって特定の登録済みの非公開ドメインを取得するよう依頼してください。エージェントは RDAP 経由で所有者を調達し、匿名で連絡を取って交渉します。コミッションのみで、前払い料金はかかりません。所有者の関心により、匿名の交渉が開始されます。注: 多くの所有者にアクセスできません (GDPR でマスクされた WHOIS) - その後、リクエストはno_contactで終了します。 deals:writeスコープが必要です。

リクエストボディ

domain*string希望する登録済みドメイン
max_budgetnumberUSDでの上限(オプション)

応答 201

requestBrokerRequest

例

curl -X POST https://domani.run/api/broker \
  -H "Authorization: Bearer domani_sk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"domain":"dream.com","max_budget":5000}'
GET/api/broker/{id}

ブローカーリクエストを取得する

ブローカーリクエストの 1 つを返します。 deals:read スコープが必要です。

パラメータ

id*string

応答 200

requestBrokerRequest
DELETE/api/broker/{id}

ブローカーリクエストをキャンセルする

アクティブなドメインの取得リクエストをキャンセルします。 deals:writeスコープが必要です。

パラメータ

id*string

応答 200

cancelledboolean
GET/api/broker/respond公共

ブローカーの問い合わせの状態を読み取る (所有者側)

オーナー エージェント読み取りパス: 行動する前に、tokenを使用して問い合わせの現在の匿名化された状態をポーリングします。ドメイン、テーブル上の買い手のオファー、誰の動きであるか、現在利用可能なアクションを返します。購入者の身元や予算を決して公開しないでください。トークン認証済み。

パラメータ

token*stringお問い合わせメールからのアウトリーチ トークン。

応答 200

domainstring
statusstring
your_turnbooleanそれがオーナーの動きなのかどうか。
current_offer_usdnumber | nullテーブルの上の買い手のオファー。
agreed_price_usdnumber | null
actionsstring[]現在利用可能なアクション (offer/counter/accept/decline/opt_out のサブセット)。

例

curl "https://domani.run/api/broker/respond?token=<from your inbox>"
POST/api/broker/respond公共

仲介業者からの問い合わせに応じる(オーナー側)

オーナーとエージェントのパス: 受信箱に配信されたアウトリーチ電子メールのtokenを使用して、ブローカーの買収に関する問い合わせに応答します。これは、電子メールで返信したり、人間による請求リンクをクリックしたりするのに代わる、完全に自律的な代替手段です。 offer/counterは、希望価格で匿名の交渉を開始または進行させます。 decline と opt_out で終了します。トークン承認 (トークンは機能です) - アカウントやスコープは必要ありません。

リクエストボディ

token*string問い合わせメールのアウトリーチ トークン (返信先は Broker+<token>@)。
action*string(offer | counter | accept | decline | opt_out)offer/counter で価格を指定します。accept は現在の買い手オファーを承認し、decline は拒否、opt_out は今後の連絡を停止します。
pricenumberUSD での希望価格 (オファー/再提示に必要)。

応答 200

handledboolean
outcomestringステータス値:opted_out | declined | negotiation_opened | countered | ignored_not_your_turn | unclear
statusstring
negotiation_idstring
domainstring

例

curl -X POST https://domani.run/api/broker/respond \
  -H "Content-Type: application/json" \
  -d '{"token":"<from your inbox>","action":"offer","price":800}'

Auth

POST/api/oauth/register

OAuth クライアントを登録する (RFC 7591)

OAuth 対応の MCP クライアント (Claude.ai、ChatGPT、Grok Bot コネクタ) 向けの動的クライアント登録。オープン登録です: 登録自体は何も付与せず、すべての認可は引き続きユーザーの同意画面を通過します。パブリック クライアント (token_endpoint_auth_method=none) は PKCE S256 を使用する必要があります。ディスカバリー: /.well-known/oauth-authorization-server。

リクエストボディ

redirect_uris*string[]完全一致のリダイレクト URI (https、ループバック上の http、またはネイティブのカスタム スキーム)
client_namestring同意画面に表示されます
token_endpoint_auth_methodstring(none | client_secret_post | client_secret_basic)
client_uristring
logo_uristring

応答 201

client_idstring
client_namestring
redirect_urisstring[]
token_endpoint_auth_methodstring
grant_typesstring[]
response_typesstring[]
client_id_issued_atinteger
client_secretstringコンフィデンシャル クライアントのみ。一度だけ返されます
POST/api/oauth/token

OAuth トークン エンドポイント

認可コード (PKCE code_verifier 付き) をアクセス トークンと交換するか、grant_type=refresh_token でローテーションします。アクセス トークンは、承認されたスコープとメールボックスの限定を保持する通常の domani API トークンです。コードは 1 回限り使用可能で、リフレッシュ トークンは使用のたびにローテーションされます。

応答 200

access_tokenstring
token_typestring
expires_ininteger
refresh_tokenstring
scopestring