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: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, 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: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 | Read Mailzero assistant settings、the Today queue, Work items, exact action previews, history-import progress, and content-minimized Activity |
| assistant:write | Change 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_KEY | 401 |
| INVALID_API_KEY | 401 |
| EXPIRED_API_KEY | 401 |
| MISSING_PARAMETER | 400 |
| INVALID_DOMAIN | 400 |
| PAYMENT_REQUIRED | 402 |
| DOMAIN_UNAVAILABLE | 409 |
| RATE_LIMIT_EXCEEDED | 429 |
| USER_EXISTS | 409 |
| NOT_FOUND | 404 |
| UNKNOWN_PROVIDER | 400 |
| UNKNOWN_METHOD | 400 |
| TARGET_REQUIRED | 400 |
| INVALID_PARAMETER | 400 |
| CONTACT_REQUIRED | 400 |
| INVALID_CONTACT | 400 |
| INSUFFICIENT_SCOPE | 403 |
| SCOPE_ESCALATION | 400 |
| MAILBOX_CONFINED | 400 |
| DOMAIN_EXISTS | 400 |
| DOMAIN_NOT_ACTIVE | 400 |
| UNSUPPORTED_TLD | 400 |
| TLD_NOT_IN_PUBLIC_DNS | 400 |
| NOT_AVAILABLE | 400 |
| ALREADY_REGISTERED | 400 |
| TRANSFER_NOT_ELIGIBLE | 400 |
| RENEWAL_NOT_ELIGIBLE | 400 |
| ALREADY_LISTED | 400 |
| LISTING_SOLD | 400 |
| SELF_PURCHASE | 400 |
| DESCRIPTION_TOO_LONG | 400 |
| DEAL_NOT_FOUND | 400 |
| INVALID_DEAL_STATE | 400 |
| EPP_ATTEMPTS_EXCEEDED | 400 |
| ACTIVE_DEAL_EXISTS | 400 |
| AGENT_IDENTITY_NOT_FOUND | 400 |
| AGENT_IDENTITY_ESCALATION | 400 |
| AGENT_MAILBOXES_REQUIRED | 400 |
| CREDENTIAL_REVOKE_FAILED | 400 |
| INVALID_IDEMPOTENCY_KEY | 400 |
| IDEMPOTENCY_KEY_MISMATCH | 400 |
| IDEMPOTENCY_KEY_REUSED | 400 |
| OPERATION_IN_PROGRESS | 400 |
| OPERATION_SUPERSEDED | 400 |
| INVALID_OPERATION_RECEIPT | 400 |
| WORKSPACE_ADMIN_REQUIRED | 400 |
| WORKSPACE_OWNER_REQUIRED | 400 |
| PRINCIPAL_NOT_IN_WORKSPACE | 400 |
| MAILBOX_NOT_IN_WORKSPACE | 400 |
| GROUP_NOT_IN_WORKSPACE | 400 |
| COLLECTION_NOT_IN_WORKSPACE | 400 |
| ACCESS_VERSION_CONFLICT | 400 |
| ACCESS_OFFER_INVALID | 400 |
| ACCESS_OFFER_EMAIL_MISMATCH | 400 |
| MAIL_DOMAIN_CAPACITY_EXHAUSTED | 400 |
| MAIL_PROVIDER_ERROR | 400 |
| INVALID_HTTP_ROUTE_HOSTNAME | 400 |
| INVALID_HTTP_ROUTE_UPSTREAM | 400 |
| INVALID_HTTP_ROUTE_UPSTREAM_HEADERS | 400 |
| INVALID_HTTP_ROUTE_LEASE | 400 |
| INVALID_HTTP_ROUTE_POLICY | 400 |
| INVALID_HOSTNAME_BINDING | 400 |
| HTTP_ROUTE_HOSTNAME_NOT_ALLOWED | 400 |
| HTTP_ROUTE_HOSTNAME_REQUIRED | 400 |
| HTTP_ROUTE_HOSTNAME_RESERVED | 400 |
| HTTP_ROUTE_HOSTNAME_UNAVAILABLE | 400 |
| HTTP_ROUTE_CONCURRENCY_LIMIT | 400 |
| HTTP_ROUTE_WORKSPACE_LIMIT | 400 |
| HTTP_ROUTE_DOMAIN_NOT_OWNED | 400 |
| HTTP_ROUTE_TERMINAL | 400 |
| HTTP_ROUTE_VERIFICATION_NOT_ENABLED | 400 |
| HTTP_ROUTE_VERIFICATION_REQUIRES_HTTPS | 400 |
| HTTP_ROUTE_POLICY_WITHOUT_SCOPE | 400 |
| HTTP_ROUTE_POLICY_REQUIRED | 400 |
| HTTP_ROUTE_AGENT_IDENTITY_REQUIRED | 400 |
| HTTP_ROUTE_POLICY_ESCALATION | 400 |
| HOSTNAME_BINDING_NOT_ACTIVE | 400 |
| HOSTNAME_BINDING_DNS_CONFLICT | 400 |
| HOSTNAME_BINDING_ACK_REQUIRED | 400 |
| HOSTNAME_BINDING_BROWSER_MODE_MISMATCH | 400 |
| HOSTNAME_DNS_CONFLICT | 400 |
| ZONE_READ_FAILED | 400 |
| DNS_VERSION_CONFLICT | 400 |
| UNAUTHORIZED | 400 |
| APEX_WEB_MODE_CONFLICT | 400 |
| APEX_DELEGATION_ACK_REQUIRED | 400 |
| VERIFICATION_COOLDOWN | 400 |
| VERIFICATION_SEND_FAILED | 400 |
| UPGRADE_REQUIRED | 400 |
| FREE_LIMIT_EXCEEDED | 400 |
レート制限
すべての応答にはレート制限ヘッダーが含まれます。
`X-RateLimit-Limit`- ウィンドウごとの最大リクエスト`X-RateLimit-Remaining`- リクエストが残っています`X-RateLimit-Reset`- ウィンドウがリセットされたときの UNIX タイムスタンプ
レートが制限されている場合 (HTTP 429)、 `Retry-After` ヘッダーを数秒間待機します。
Mailzeroアシスタント
/api/assistant/rules常設委任を一覧表示
オーナーの常設委任ルールを順番に表示: 名前、マッチ述語、担当者 (エージェントアイデンティティまたはワークスペースメンバー)、自律性レベル、各マッチ回数。assistant:read が必要です。エージェントトークンは拒否されます。
応答 200
| rules | AssistantRule[] |
/api/assistant/rules常設委任を作成
案件の種類をエージェントまたは人に一度引き渡します。match は明示的な述語であり、モデル呼び出しではありません: senderAddress, senderDomain, organisation, workKeyPrefix, senderKind, mailboxIds, labels, subjectPattern (アンカー付き、大文字小文字を区別しない), minOccurrences、minConfidence(校正済み分類器が category: ラベルに付けた確率、0.5 から 1) のいずれか。記載されたすべての条件が成立する必要があります。ルールは順序付けられており、最初にマッチしたものが適用されます。レベルは特に指定がない限り observe です。マッチするルールは次のマッチするアイテムを担当者に引き渡し、委任通知を通じて伝え、Today が理由を表示します。assistant:write が必要です。エージェントトークンは拒否されます。
応答 201
| id | string | |
| name | string | |
| enabled | boolean | |
| position | integer | |
| match | AssistantRuleMatch | |
| assignee | object | |
| level | string | |
| grants | AssistantGrants | |
| match_count | integer | |
| last_matched_at | string (date-time) | null | |
| created_at | string (date-time) | |
| updated_at | string (date-time) |
/api/assistant/rules/{id}常設委任を変更
名前変更、有効化または無効化、並べ替え、マッチ、担当者、レベルまたは付与の変更。レベルを observe に下げることは、ルールのワンクリック停止スイッチです。assistant:write が必要です。エージェントトークンは拒否されます。
パラメータ
| id* | string |
応答 200
| id | string | |
| name | string | |
| enabled | boolean | |
| position | integer | |
| match | AssistantRuleMatch | |
| assignee | object | |
| level | string | |
| grants | AssistantGrants | |
| match_count | integer | |
| last_matched_at | string (date-time) | null | |
| created_at | string (date-time) | |
| updated_at | string (date-time) |
/api/assistant/rules/{id}常設委任を削除
ルールを削除します。引き渡されたアイテムはオーナーに戻り、担当者が行ったことの記録は残ります。assistant:write が必要です。エージェントトークンは拒否されます。
パラメータ
| id* | string |
応答 200
| deleted | boolean | |
| released_items | integer |
/api/assistant/rules/testサンプルの事実で常設委任を試行
模拟运行:哪条规则会处理具有这些事实(邮箱、键、发件人、主题、标签、出现次数)的事项,以及原因。不会更改任何内容。需要 assistant:write;智能体令牌会被拒绝。
リクエストボディ
| mailbox_id* | string | |
| key* | string | 作業アイテムキー、例: org:tucows:invoice |
| sender_address | string | null | |
| sender_kind | string(human | automated) | |
| subject | string | null | |
| labels | string[] | |
| occurrences | integer | |
| confidence | object | minConfidence を持つルール向けの、ラベルごとの分類器の確率 |
応答 200
| matched | boolean | |
| rule | AssistantRule | |
| why | string[] | |
| considered | integer |
/api/assistant/rules/{id}/check既存の委任のレベルと権限に対して効果を試行します
今日ルールの下でリクエストされた効果の検証順序のドライラン: レベルが種類を許可するか; 権限が受信者、ボリューム(今日実行された効果の数)、スケジュール、支出、案件から読み取られたリスククラスを許可するか; 必須の承認者が承認したか。プランが取る状態(proposed、approved、escalatedまたはrejected)をすべてのチェックとその理由とともに返します。何も変更されません。assistant:writeが必要です; エージェントトークンは拒否されます。
パラメータ
| id* | string |
リクエストボディ
| effect* | object | |
| matter | object | |
| at | string (date-time) | スケジュールをチェックする時刻; デフォルトは現在 |
| approved_by | string[] | 既に承認したメンバーID |
応答 200
| rule | object | |
| allowed_kinds | string[] | |
| effective_grants | AssistantGrants | |
| outcome | string | |
| check | AssistantGrantCheck | |
| hint | string |
/api/assistant/metricsタスクメトリクスを読み取る
ローリングウィンドウ(デフォルトで30日、window_daysは1から90)上のタスクレイヤーの7つの数値、アカウント全体および各常設委任について: オーナーなしでクローズされた案件、到着から完了までの時間、提案通りに実行されたプラン、編集および却下されたプラン、案件あたりのエスカレーション、実行後の修正、衝突、案件あたりのモデルコスト。レシート、プラン、エスカレーション、台帳から読み取られます。推定値は含まれません。assistant:readが必要です。
パラメータ
| window_days | integer |
応答 200
| type | string | |
| as_of | string (date-time) | |
| window_days | integer | |
| account | AssistantTaskNumbers | |
| rules | object[] |
/api/assistant/approvals承認キューを取得
オーナーを待っているプラン(ドラフトで提案されたもの、または権限によって保留されているもの)と、担当者が尋ねた質問(閲覧者が見ることができる案件全体)。作業項目のインタラクションを通じて回答: プランを承認または却下、質問に対してオプションを選択または指示。assistant:readが必要です。認証メールがアシスタントから除外される前にそのメールから作られた案件は、email:auth_secrets のない閲覧者には、タイトル、要約、依頼内容、プランの効果を伏せた状態で表示されます。
応答 200
| type | string | |
| as_of | string (date-time) | |
| plans | object[] | |
| escalations | object[] |
/api/assistant/suggestions委任提案を一覧表示
アシスタントが提案する常設委任:90日間に少なくとも3回繰り返された案件(同じ組織または送信者)で、毎回同じ方法で処理されたもの(ignored、answered、closed、1人のエージェントにhanded)。ルールは事前入力されています。デフォルトでは未処理のもの。オーナーが承認するまで何も作成されません。assistant:readが必要です。エージェントトークンは拒否されます。
パラメータ
| status | string(open | accepted | dismissed) |
応答 200
| suggestions | AssistantSuggestion[] |
/api/assistant/suggestions/{id}委任提案を承認または却下
承認:提案が閉じられ、事前入力されたルールがクライアントに返されて作成されます(POST /api/assistant/rules)。却下:提案が閉じられ、同じ案件と処理方法に対して二度と表示されません。assistant:writeが必要です。エージェントトークンは拒否されます。
パラメータ
| id* | string |
リクエストボディ
| action* | string(accept | dismiss) |
応答 200
| suggestion | AssistantSuggestion | |
| rule | AssistantRuleInput |
/api/assistant/grants担当者に付与された権限をリストします
オーナーのエージェントとメンバーに付与された権限。案件を割り当てるすべてのルールに加えて適用されます; ルールと担当者のうち、より厳格な方が適用されます。assistant:readが必要です; エージェントトークンは拒否されます。
応答 200
| grants | AssistantAssigneeGrants[] |
/api/assistant/grants担当者の権限を設定します
エージェントIDまたはワークスペースメンバーに権限を付与します; これらは担当者の以前の権限を置き換え、案件を割り当てるすべてのルールに上限を設定します。assistant:writeが必要です; エージェントトークンは拒否されます。
リクエストボディ
| assignee_type* | string(agent | member) | |
| assignee_ref* | string | エージェントアイデンティティスラグ、またはメンバーのユーザーID |
| grants* | AssistantGrants |
応答 200
| assignee | object | |
| grants | AssistantGrants | |
| created_at | string (date-time) | |
| updated_at | string (date-time) |
/api/assistant/grants/{type}/{ref}担当者の権限を削除します
担当者は各ルールが付与するもののみを保持します。assistant:writeが必要です; エージェントトークンは拒否されます。
パラメータ
| type* | string(agent | member) | |
| ref* | string |
応答 200
| deleted | boolean |
/api/assistant/tasks/{id}タスクエンベロープを読み取る
担当者が必要とするmatter: 証拠を含むbrief、facts、delegation(担当者、ルール、レベル、許可された効果の種類、有効な権限)、進行中および最近のplans、lease。agentトークンは自身に割り当てられたmatterと操作するメールボックスのmatterを読み取ります; オーナーは自分自身のものを読み取ります。assistant:readが必要です。認証メールがアシスタントから除外される前にそのメールから作られた案件は、email:auth_secrets のない閲覧者には、タイトル、要約、依頼内容、プランの効果を伏せた状態で表示されます。
パラメータ
| id* | string | 作業アイテムID |
応答 200
| id | string | 作業アイテムID |
| version | integer | |
| status | string | |
| deadline | string (date-time) | null | |
| you | object | |
| delegation | object | |
| lease | AssistantTaskLease | |
| brief | object | null | GET /api/assistant/work-items/{id}/briefが返すmatterのbrief |
| facts | object | null | GET /api/assistant/work-items/{id}/factsが返すmatterのfacts |
| plans | object | |
| escalations | object[] | タスクで尋ねられた質問とその回答、新しい順 |
/api/assistant/tasks/{id}/leaseタスクのleaseを取得または更新する
2人の担当者が1つのmatterを同時に作業することはありません: leaseは誰がいつまで作業するかを指定します(デフォルトで15分、最大1時間)。再度取得すると更新されます; 別の保持者は期限までTASK_LEASEDで拒否されます。効果リクエストは自動的にleaseを取得します。assistant:writeが必要です。
パラメータ
| id* | string |
リクエストボディ
| ttl_seconds | integer |
応答 200
| task_id | string | |
| lease | AssistantTaskLease |
/api/assistant/tasks/{id}/leaseleaseを返却する
呼び出し元が保持しているleaseを解放します; 別の担当者が保持しているleaseはそのままにされます。assistant:writeが必要です。
パラメータ
| id* | string |
応答 200
| task_id | string | |
| released | boolean | |
| lease | AssistantTaskLease |
/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 | |
| note | string | このリクエストについて担当者がオーナーに知らせたい内容 |
応答 200
| task_id | string | |
| replayed | boolean | |
| plan | AssistantPlan | |
| execution | object | null | |
| lease | AssistantTaskLease | |
| hint | string |
/api/assistant/tasks/{id}/escalate停止してオーナーに尋ねる
アサイニーは証拠とともに質問をし、有用な場合は見えている選択肢を示します。オーナーはこれによって作成される決定に対して通常のchooseまたはinstructインタラクションで回答します。案件はTodayでオーナーを必要としていると表示され、リースは解放され、タスクは待機します。assistant:writeが必要です。
パラメータ
| id* | string |
リクエストボディ
| question* | string | |
| options | object[] | |
| evidence_refs | string[] |
応答 200
| task_id | string | |
| escalation_id | string | |
| decision_id | string | |
| status | string | |
| version | integer | |
| hint | string |
/api/assistant/tasks/{id}/reportタスクについて報告する
アサイニーが行ったことと結果:done(案件が解決するか、回答がまだ期待されている場合は待機)、blocked(オーナーに尋ねる)、またはhanded back(オーナーが引き継ぎ、ルールはこの案件から外れる)。クレームはプラットフォームが書いたレシートと照合されます。レシートのないクレームはクレームとして記録され、決して事実としては記録されません。リースは解放されます。assistant:writeが必要です。
パラメータ
| id* | string |
リクエストボディ
| outcome* | string(done | blocked | handed_back) | |
| summary* | string | |
| evidence_refs | string[] | |
| claims | object[] |
応答 200
| task_id | string | |
| outcome | string | |
| status | string | |
| reconciliation | object | |
| receipt_id | string | |
| hint | string |
/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_id | string | |
| thread_id | string | |
| analysed | boolean | |
| reason | string | analysed が false の場合のみ |
| analysis | object | |
| facts | Fact[] | |
| entities | object[] | |
| commitments | object[] | |
| expectations | object[] |
/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 なし |
| instructions | string | オプションのガイダンス、例: EUR での金額 |
応答 200
| message_id | string | |
| data | object | |
| confidence | number | |
| evidence_quotes | string[] | |
| model | string | |
| cached | boolean | |
| generated_at | string (date-time) | |
| usage | object |
/api/assistant/settingsMailzero アシスタント設定を取得
アシスタントのオプトイン状態、shadow/pause フラグ、同意バージョン、プライバシールート、メールボックススコープ、および所有するすべてのメールボックスを返します。assistant:read のアクセス許可が必要です。
応答 200
| enabled | boolean | |
| shadow_enabled | boolean | |
| paused | boolean | |
| mailbox_ids | string[] | |
| agent_mailbox_ids | string[] | エージェントが運用するメールボックス。その項目は Needs you ではなく Today のエージェントセクションに表示されます。 |
| agents | object[] | 委任のためのエージェント ID。 |
| search_opt_out_mailbox_ids | string[] | 仅通过关键词搜索邮件的邮箱:这些邮箱的邮件永远不会发送到嵌入模型。 |
| brief_opt_out_mailbox_ids | string[] | ブリーフが決定論的なままのメールボックス: 要約と次の行動のためにモデルに証拠の抜粋が送信されません (到着メールの分析は変更されません) |
| history_window_days | integer | |
| privacy_route | string | |
| attachment_vision | boolean | |
| community_signals | boolean | フィッシング報告はコミュニティのフィンガープリント(ドメイン、件名の形式、テキストやアドレスは含まない)にカウントされ、コミュニティのカウントは信頼シグナルに反映されます。デフォルトでオン、オフにすると両方ともローカルに保持されます。 |
| pipeline_version | string | |
| consent | object | |
| mailboxes | object[] |
応答例
{
"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"
}
]
}/api/assistant/settingsMailzero アシスタント設定を更新
アシスタント処理を明示的に有効化、一時停止、再開、またはスコープ設定します。mailbox_ids: [] を送信すると、すべてのメールボックスが無効化され、実行中の履歴インポートがキャンセルされます。再開には現在の同意バージョンが必要です。メール受信は独立して動作します。assistant:write のアクセス許可が必要です。
リクエストボディ
| enabled | boolean | Today の決定を表示し、オンデマンドで下書きを生成 |
| shadow_enabled | boolean | 決定を表示せずにメールを分析 |
| paused | boolean | |
| mailbox_ids | string[] | 処理する所有メールボックス ID。空の配列はすべてを無効化 |
| agent_mailbox_ids | string[] | エージェントが運用するメールボックス。その項目は Needs you ではなく Today のエージェントセクションに表示されます。 |
| history_window_days | integer | |
| attachment_vision | boolean |
応答 200
| ok | boolean | |
| enabled | boolean | |
| shadow_enabled | boolean | |
| paused | boolean | |
| mailbox_ids | string[] |
応答例
{
"ok": true,
"enabled": true,
"shadow_enabled": true,
"paused": false,
"mailbox_ids": [
"mbx_123"
]
}/api/assistant/preview同意してバックグラウンド履歴インポートを開始
現在の明示的なAI同意を記録し、選択されたユーザー所有のメールボックスでシャドウ処理を有効にし、最近の履歴の再開可能なバックグラウンドインポートを作成します。クライアントは直ちに終了してGET /api/assistant/backfillをポーリングできます。assistant:writeスコープが必要です。
リクエストボディ
| mailbox_ids* | string[] | |
| history_window_days | integer | |
| consent* | boolean(true) | |
| consent_version* | string(mailzero-personal-ai.v1) |
応答 200
| ok | boolean | |
| preview | object |
応答例
{
"ok": true,
"preview": {
"mailbox_ids": [
"mbx_123"
],
"history_window_days": 30,
"scanned": 0,
"enqueued": 0,
"capped": false,
"background": true,
"backfill_id": "bf_456"
}
}/api/assistant/backfillバックグラウンド履歴インポートの進捗を取得
スキャン/分析フェーズ、処理済みメッセージと総メッセージ数、パーセンテージ、適応型ETA、一時停止状態、およびアプリを終了できるかどうかを返します。assistant:readスコープが必要です。
応答 200
| backfill | object | 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
}
}/api/assistant/backfill失敗した履歴インポートメッセージを再試行
AI有効のままのメールボックスについて、最新のインポートからの最終的な失敗を再キューイングします。メッセージがここに表示される前に、自動再試行はすでに使い果たされています。assistant:writeスコープが必要です。
応答 200
| ok | boolean | |
| retried | integer |
応答例
{
"ok": true,
"retried": 2
}/api/assistant/todayグラウンディングされたTodayの決定キューを取得
バージョン管理された Now、Needs you、Waiting、Upcoming、および最近の Handled プロジェクションを as_of、lag、coverage、warnings とともに返します。各項目はソースメッセージにリンクしており、ここではメールは送信されません。assistant:read のアクセス許可が必要です。認証メール (サインインコード、パスワードリセット、マジックリンク) が案件になることはなく、モデルに渡ることもありません。認証メールがアシスタントから除外される前にそのメールから作られた案件は、email:auth_secrets のない閲覧者には、タイトル、要約、依頼内容、プランの効果を伏せた状態で表示されます。
パラメータ
| agent | string | エージェントのビューは1つのみ: 操作するメールボックスのアイテムと、そのエージェントに渡されたアイテム。エージェントIDにバインドされたトークンは常にそのエージェントのビューを取得します。別のエージェントを指定すると403 AGENT_SCOPEが返されます。 |
| category | string | 1 つの案件の種類のみ(invoice、meeting_request、newsletter など)。レスポンスの categories フィールドには、ビューに含まれる各種類とその件数が列挙されます。不明な種類には 400 INVALID_CATEGORY が返されます。 |
| tag | string | このタグ(本人のタグの1つ)を持つ案件のみ。レスポンスの tags フィールドにはビュー内の各タグとその件数が並びます。 |
応答 200
| type | string | |
| as_of | string | |
| projection_lag_ms | integer | |
| category | string | null | ビューを絞り込んでいる案件の種類(category クエリ)。すべての種類の場合は null。 |
| categories | object | フィルター前のビューに含まれるすべての案件の種類と、それぞれに含まれる項目数。 |
| tag | string | null | ビューを絞り込んでいるタグ(tag クエリ)、すべての案件の場合は null。 |
| tags | object | フィルター前のビューにある本人のすべてのタグと、それを持つ案件の数。 |
| sections | object |
応答例
{
"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": []
}
}/api/assistant/work-items/{id}アシスタントの Work 項目と正確な現在のプランを取得
根拠のある Work 項目、その未解決の Decision とオプション、正確な現在の Action プラン、未解決のコミットメントと期待、インタラクション、レシートを返します。assistant:read のアクセス許可が必要です。認証メールがアシスタントから除外される前にそのメールから作られた案件は、email:auth_secrets のない閲覧者には、タイトル、要約、依頼内容、プランの効果を伏せた状態で表示されます。
パラメータ
| id* | string | Today キューからの Work 項目 ID |
応答 200
| id | string | |
| version | integer | |
| status | string | |
| title | string | |
| summary | string | |
| ask | string | null | 所有者が行うか決めるべき唯一のこと。なければ null。 |
| category | string | null | 分析が見つけた案件の種類(請求書、会議依頼、ニュースレターなど)。分析が何も示していない場合は null。ルールはラベル category:<kind> としてこれを照合します。 |
| tags | string[] | 案件に付いた本人のタグ(CT-01b):一度確認したもの、または手動で付けたもので、それぞれプロバイダー側のスレッドのラベルになります。ルールはラベル tag:<name> として照合します。 |
| proposed_tags | string[] | エンジンが案件に提案するタグ(名前を挙げたプロジェクトごとに1つ)で、まだ確認されていないもの。tag インタラクションで確認すると、同じプロジェクトの次の案件に確認なしで適用されます。 |
| suspect | boolean | 信頼シグナルが送信者を疑わしいと判定しました: この案件はSuspectセクションに配置され、Nowになることはなく、決定も持たず、本人が正当と報告するまでエフェクトは実行されません。 |
| suspect_reasons | string[] | 疑わしいと判定された理由を、シグナルごとに1文で説明します(認証の失敗、Reply-Toの相違、類似ドメイン、借用された名前、金銭に関する初回連絡、アシスタントへの指示、返信で秘密を要求)。 |
| sender | object | null | |
| recurrence | object | 同じ状況が何回戻ってきたか。1 件のアイテムに N 通のメッセージ。 |
| mailbox | object | |
| opened_at | string | null | |
| delegated_to | string | null | 所有者がこの項目を任せたエージェントの slug、または null。 |
| delegation_rule | object | null | このアイテムを引き渡した常設委任と、それがマッチした理由。オーナーがアイテムを取り戻すと一時停止されます。 |
| unread | boolean | 所有者が最新の変更後にこの項目を開くまで true になります。 |
| messages | object[] | この項目の元になったメッセージ。新しい順。 |
| history | object[] | この件でこれまでに起きたこと。古い順に、以前のメッセージごとに 1 行。 |
| source | object | |
| attention | object | |
| analysis | object | |
| evidence_refs | string[] | |
| entity_refs | string[] | |
| snoozed_until | string | null | |
| decision | object | null | |
| plan | object | null |
/api/assistant/work-items/{id}/briefWorkアイテムのシチュエーションブリーフをRead
エージェントが行動する前に読む1つのドキュメント: シチュエーション(ステータス、アテンション、リカレンス、センダー)、これまでのストーリー(分析済みか否かを問わず、そのすべてのメール)、分析が確立したファクト(バリュー、ベーシス、バリディティを持つクレーム、およびエンティティ)、誰から何をいつから待っているかを含むオープンなコミットメントとエクスペクテーション、すでに解決したもの(クローズされたループと受領)、現在のDecisionとそのオプション、提案される次のステップ(Decisionの推奨オプションがある場合はそれ、ない場合はルール: 期限切れのプロミス、追跡すべき期限切れのエクスペクテーション、センダーのアスクへの回答)、およびエビデンスメッセージ。決定論的で安価: モデルコールなし。エージェントトークンは、操作するメールボックスのアイテムと、渡されたアイテムをRead。
パラメータ
| id* | string | Work アイテム ID |
| synthesis | boolean | モデルの解釈(要約、具体的な次のアクション、未解決の質問)をスキップして決定論的ブリーフのみを読む場合はfalseに設定、解釈は証拠の状態ごとにキャッシュされる |
応答 200
| id | string | |
| version | integer | |
| generated_at | string (date-time) | |
| title | string | |
| summary | string | |
| ask | string | null | |
| mailbox | object | |
| delegated_to | string | null | |
| situation | object | |
| story | object[] | 状況のすべてのメール、古い順、分析が付けた1行のタイトル付き |
| facts | object[] | |
| entities | object[] | |
| commitments | object[] | オーナー側が行ったオープンな約束 |
| expectations | object[] | 他者から待っているオープンな事項 |
| settled | object[] | クローズされたループと受領、新しい順 |
| awaiting | object[] | |
| decision | object | null | 現在準備されているDecisionとそのオプション |
| summary_source | string | 要約がモデルによる証拠の解釈なのか、パイプライン自身の文なのか |
| suggested_next | object | null | |
| open_questions | string[] | 次のアクション前にオーナーのみが決定できること、最大3つの質問 |
| synthesis | object | null | 要約と次のアクションを書いたモデル呼び出し、ブリーフが決定論的のみの場合はnull |
| evidence | object[] | |
| owner_replies | object[] | |
| evidence_refs | string[] |
/api/assistant/briefコレスポンデントのシチュエーションブリーフをRead
人に返信する前に知るべきこと: 読み取り可能なメールボックス(または1つのメールボックス)全体での最新のアクティブなWorkアイテムのブリーフ、その人が関係する他のアイテム、および最後の10通のメール。briefは、まだ何も分析されていない場合はnull。
パラメータ
| correspondent* | string | その人のメールアドレス |
| mailbox | string | 1つのメールボックスアドレス(slug@domain)に制限 |
応答 200
| correspondent | string | |
| mailboxes | string[] | |
| brief | any | |
| related | object[] | |
| recent_mail | object[] | |
| generated_at | string (date-time) |
/api/assistant/work-items/{id}/factsWork アイテムの背後にある事実を読む
アイテムのすべての分析からマージされた主張とエンティティ (最新のものが優先)、さらに保存されたコミットメントと期待とそのステータス。エージェントトークンは、操作するメールボックスのアイテムと、それらに渡されたアイテムを読み取ります。
パラメータ
| id* | string | Work アイテム ID |
応答 200
| work_item_id | string | |
| version | integer | |
| analysed | boolean | |
| analyses | object[] | |
| facts | Fact[] | |
| entities | object[] | |
| commitments | object[] | |
| expectations | object[] | |
| evidence_refs | string[] |
/api/assistant/work-items/{id}/openWork 項目を開封済みにする
所有者がこの Work 項目を現在のバージョンで開いたことを記録し、項目が再び変更されるまで未読マーカーを消します。assistant:write スコープが必要です。
パラメータ
| id* | string |
応答 200
| ok | boolean | |
| opened_at | string | |
| unread | boolean |
/api/assistant/learnedアシスタントがあなたについて学習したこと
同じ送信者または組織が戻ってくるたびに無視された後にアシスタントが提案する静音ルール、有効なミュート(アシスタントが「今日」から外している送信者、ドメイン、状況)とそれぞれの理由、そして一度確認したタグ(それぞれ同じプロジェクトの次の案件に確認なしで適用)。静音ルールは suggestions エンドポイントで受け入れ、ミュートは mutes エンドポイントで、タグは tags エンドポイントで忘れます。
応答 200
| mutes | object[] | 有効なミュート、新しい順。 |
| suggestions | AssistantSuggestion[] | 開いている静寂ルール: suggestionsエンドポイントを通じて1つを受け入れると、それが持つミュートが設定されます。 |
| tags | object[] | 一度確認したタグ(CT-01b)、新しい順:それぞれ忘れられるまで、同じプロジェクトの次の案件に確認なしで適用されます。 |
/api/assistant/learned/mutesミュートを忘れる
その送信者、ドメイン、または状況の次のメールが再びアイテムになります。
リクエストボディ
| kind* | string(sender | sender_domain | situation) | |
| value* | string | learnedビューがリストするアドレス、ドメイン、または状況キー。 |
応答 200
| ok | boolean | |
| kind | string | |
| value | string |
/api/assistant/learned/tagsタグを忘れる
確認なしで適用されるものはなくなります:そのプロジェクトの次の案件は再びタグを提案します。タグを持つ案件はそのまま保持します。
リクエストボディ
| name* | string | learned ビューに表示されているとおりのタグ。 |
応答 200
| ok | boolean | |
| name | string |
/api/assistant/work-items/{id}/investigate事案を調査する: レジストリとリンクが示すもの
その瞬間に、公開インフラストラクチャが送信者のドメインについて保持している事実(その登録日とレジストラ、そのSPFとDMARC態勢、メールを受信するかどうか)、ソースメッセージのすべてのリンクが実際にどこに向かうか(一度に一ホップずつ辿られるリダイレクト、最終ホストとそのドメインの事実)、および各添付ファイルの実体(名前と宣言された種類に対する最初のバイト列)を読み取ります。これらの事実が追加するシグナル(数日前に登録されたドメイン、別の場所に着地するリンク、何も保護しない送信者のドメイン、ドキュメントとして名付けられたプログラム)とともにドシエを返します。ベンダーなし、アカウントなし、何も保存されません。失敗したルックアップはそれ自体が一つの事実です。
パラメータ
| id* | string |
応答 200
| work_item_id | string | |
| source | string | 送信元メッセージが読まれたか、または送信者のアドレスのみが読まれたか。 |
| checked_at | string | |
| sender | object | |
| links | object[] | |
| attachments | object[] | 各添付ファイルの実体を、その名前と宣言された種類が約束するものに対して、最初のバイト列から読み取ったもの。 |
| signals | object[] | 事実が評価に何を加えるか、それぞれ1文で。 |
/api/assistant/work-items/{id}/sender案件の背後にいるのは誰か: 組織、関係者、履歴
案件の送信者カードを返します: 保存されたドメインプロファイルが知る送信者の組織 (名前、法人名、カテゴリ、ウェブサイト、登録日、メールの体制。gmail.com のような共有メールドメインや一度も分析されていないドメインの場合は null で、リアルタイムの分析は決して行いません)、ストーリーのメッセージが from、to、cc に含む人々とその役割、同じ組織に属するかどうか (読者自身のメールボックスは除外)、そして関係: 読者のメールボックス全体でこのアドレスからどれだけのメールが来たか (最大 50 件まで)、最初と最後はいつか、送信者の他の案件、同じドメインの同僚が持ち込んだ案件。assistant:read スコープが必要です。
パラメータ
| id* | string |
応答 200
| work_item_id | string | |
| sender | object | null | |
| organisation | object | null | 共有メールドメインまたは一度も分析されていないドメインの場合は null。 |
| participants | object[] | |
| relationship | object | |
| generated_at | string (date-time) |
/api/assistant/work-items/{id}/interactionsフェンスされた人間の Decision を記録
オプションを選択、指示を与える、引き継ぐ、スヌーズ、無視、修正、信頼判定を報告(フィッシングまたは正当)、または待機中のプランを承認または却下します(承認されたプランは即座に実行され、その受領書が応答に含まれます)。この呼び出しはwork_item_versionで保護され、idempotency_keyによって冪等に再実行されます。選択または指示は正確な下書きを準備しますが、通常の返信フローを経由します。このエンドポイントはメールを送信しません。assistant:writeスコープが必要です。
パラメータ
| id* | string |
リクエストボディ
| scope | string(item | sender | sender_domain | situation) | タイプ ignore の場合: 送信者、そのドメイン、またはこの繰り返し発生する状況をミュートして、二度と戻らないようにします。 |
| verdict | string(phishing | legitimate) | typeがreportの場合: 信頼シグナルに対する本人の判定。Phishingは案件をクローズし、送信者をミュートし、その他の進行中の案件もクローズします。legitimateは疑わしい判定とその理由をクリアします。 |
| plan_id | string | typeがapproveまたはrejectの場合:待機中のアクションプラン(提案またはエスカレーション済み)。 |
| reason | string | typeがrejectの場合:理由、プランに保持されます。 |
| type* | string(choose | instruct | take_over | snooze | ignore | correct | delegate | approve | reject | report | tag) | |
| add | string[] | type が tag の場合:案件に付けるタグ(提案されたものの確認、または手動のもの。小文字、英字、数字、ハイフン)。一度追加したタグは学習され、同じプロジェクトの次の案件に確認なしで付きます。 |
| remove | string[] | type が tag の場合:案件から外すタグ(ここで指定した提案は却下されます)。learned ページはタグを完全に忘れます。 |
| agent_slug | string | null | delegate タイプの場合:この項目を任せるエージェントの slug、または取り戻す場合は null。 |
| member_id | string | null | type delegateの場合: エージェントの代わりにアイテムを引き渡すワークスペースのメンバーのユーザーID。そのメンバーは自分のTodayのhanded_to_youの下でそれを見つけ、自分のアクセス権限の下でタスクエンドポイントを通じて作業します |
| work_item_version* | integer | |
| decision_id | string | |
| decision_version | integer | |
| option_id | string | |
| instruction | string | |
| until | string (date-time) | |
| remind_at | string (date-time) | |
| field | string | |
| correction | string | |
| idempotency_key* | string |
応答 200
| ok | boolean | |
| work_item | AssistantWorkItem | |
| plan_id | string | null |
/api/assistant/action-plans/{id}不透明 ID による正確なアクションプレビューを取得
準備された Action プランの正確な返信アイデンティティ、受信者、本文、コミットメント、副作用、さらにその有効期限とソースリビジョンを返します。これにより、クライアントはユーザーが assistant_plan_id を使用して既存の返信エンドポイント経由で送信する前に何が起こるかを表示できます。assistant:read スコープが必要です。
パラメータ
| id* | string | 不透明な Action プラン ID |
応答 200
| id | string | |
| status | string | |
| expires_at | string | |
| source_revision | integer | |
| effects | object[] |
/api/assistant/activityコンテンツを最小化したアシスタント Activity を取得
呼び出し元に帰属する最近のインタラクションとレシートをメッセージ本文なしで一覧表示します。assistant:read スコープが必要です。
パラメータ
| limit | integer |
応答 200
| type | string | |
| as_of | string | |
| events | object[] |
/api/assistant/data派生したアシスタントデータをエクスポート
分析、承認されたクレーム、Decision、インタラクション、レシート、モデル使用状況を JSON 添付ファイルとしてエクスポートします。ソースメール本文や添付ファイルのバイトは含まれません。assistant:write スコープが必要です。さらに email:auth_secrets も必要です (それ以外は 403 INSUFFICIENT_SCOPE)。派生状態には、認証メールがアシスタントから除外される前に、アシスタントがそのメールから得た内容が含まれている可能性があります。
応答 200
| format | string | |
| exported_at | string | |
| note | string |
/api/assistant/dataアシスタント派生データを削除
派生インテリジェンス、ジョブ、モデル使用状況、デバイス、インポート、設定を冪等的に削除し、元のメールは保持します。assistant:write スコープが必要です。
応答 200
| ok | boolean | |
| deleted | object | |
| source_mail_deleted | boolean |
応答例
{
"ok": true,
"deleted": {
"work_items": 12,
"claims": 40,
"entities": 9,
"jobs": 52
},
"source_mail_deleted": false
}/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_detail | string(redacted | sender_only) |
応答 200
| ok | boolean | |
| device | object |
/api/assistant/devicesデバイス登録を取り消す
1つのインストールのすべてのプッシュ登録を取り消します(例: サインアウト時)。assistant:write スコープが必要です。
パラメータ
| installation_id* | string |
応答 200
| ok | boolean |
メール
/api/domains/{domain}/email/check電子メールの DNS 健全性を確認する (MX、SPF、DMARC、DKIM)
ドメインの電子メール DNS 構成 (MX レコード、SPF、DMARC、DKIM) をチェックします。 MX レコード (Google Workspace、Proton、Fastmail) からメール プロバイダーを自動検出します。
パラメータ
| domain* | string | あなたが所有するドメイン名 |
応答 200
| domain | string | |
| provider | string | null | 自動検出されたメールプロバイダー(google-workspace、proton、fastmail)。未検出の場合は null |
| mx | object | |
| spf | object | |
| dmarc | object | |
| dkim | object |
応答例
{
"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"
/api/domains/{domain}/email/deliverability所有者を対象とした電子メール到達性の健全性を取得する
確定的な認証の準備状況、30 日間の受信者に重み付けされた配信結果、アカウントの安全性の状態、および測定されたプロバイダーの配置を分離します。準備スコアは受信トレイの確率ではなく、測定されていない配置は not_tested として返されます。
パラメータ
| domain* | string | あなたが所有するドメイン名 |
応答 200
| domain | string | |
| status | string | |
| confidence | string | |
| checked_at | string (date-time) | |
| window_days | integer | |
| readiness | object | 確定的な DNS 構成の準備。スコアは受信箱の確率ではありません。 |
| sending_health | object | |
| placement | object | |
| actions | object[] | |
| caveats | string[] |
例
curl https://domani.run/api/domains/mysite.com/email/deliverability \ -H "Authorization: Bearer domani_sk_xxx"
/api/domains/{domain}/email/setupドメインに電子メールを設定する
ドメイン上で電子メール DNS を事前構成します (オプション)。これは、必要に応じて create_mailbox によって自動的に呼び出されます。既存のメール プロバイダー (Google Workspace、Fastmail、Proton) をオーバーライドするには、force=true を渡します。
パラメータ
| domain* | string | ドメイン名 |
リクエストボディ
| force | boolean | 既存のメール プロバイダー (Google Workspace、Fastmail、Proton) をオーバーライドします。デフォルト: false |
応答 200
| domain | string | |
| status | string | |
| verified_at | string | null | |
| receiving_verified | boolean | ドメインの MX がプラットフォームの受信サーバーを指しており、そのアドレス宛のメールが受け付けられる場合は true。 |
| sending_configured | boolean | |
| sending_verified | boolean | |
| records | DnsRecord[] | |
| hint | string |
/api/domains/{domain}/email/setupドメインからメールを削除する
ドメインから電子メールを削除し、すべてのメールボックスとメッセージを削除して、emailEnabled を false に設定します。ドメイン全体のメールを変更するため、メールボックスに限定されたトークンには 403 MAILBOX_CONFINED が返されます。
パラメータ
| domain* | string | ドメイン名 |
/api/domains/{domain}/email/statusメールのDNSステータスを確認する
ドメインの電子メール DNS 検証ステータスを確認します。ドメインが検証され準備ができているかどうか、DNS レコードの詳細、およびメールボックス数を返します。
パラメータ
| domain* | string | ドメイン名 |
応答 200
| domain | string | |
| enabled | boolean | |
| verified | boolean | 受信と送信の両方が検証された場合にのみ True |
| receiving_verified | boolean | ドメインの MX がプラットフォームの受信サーバーを指しており、そのアドレス宛のメールが受け付けられる場合は true。 |
| sending_configured | boolean | |
| sending_verified | boolean | |
| records | DnsRecord[] | |
| mailbox_count | integer | |
| dns_managed | boolean | Domani がドメインのゾーンを自ら書き込む場合は true。保留中のレコードは毎時の監査で公開・修復され、手動で追加するものはありません。外部ゾーンの場合は false で、保留中のレコードは DNS プロバイダーで追加する必要があります。 |
| unreachable_addresses | string[] | 受信 MX が拒否するドメイン上のアドレス(ホスト型ドメインにあり、まだメールホストに登録されていない api メールボックス)。すべてのアドレスが受信できる場合は空です。登録は自動的に再試行されます。 |
| provider_status | string | |
| mailbox_plan_key | string | ここでカスタムドメインのメールボックスに適用されるワークスペースのプランキー (ワークスペース自身のサブスクリプションであり、サインイン中のユーザーの個人プランとは限りません)。 |
| mailbox_limit | integer | null | ワークスペース全体でプランが許可するカスタムドメインのメールボックス数。null は無制限です。 |
| mailbox_limit_reached | boolean | ワークスペースがプランのメールボックス上限に達すると True。このドメインにメールボックスを追加するには、先にアップグレードが必要です。 |
| mailbox_upgrade_plan | object | null | もう 1 つメールボックスを追加できる最も安いプラン。すでに無制限の場合は null。 |
| hint | string |
/api/emaildomani.run でメールボックスを作成する
domani.run で無料のメール アドレスを作成します (例: hello@domani.run)。ドメインの所有権は必要ありません。無料の @domani.run メールボックスはユーザーごとに 1 つに制限されています。一般的なナメクジの多くは予約されています。
リクエストボディ
| slug* | string | 電子メール アドレスのローカル部分 (例: hello@domani.run の場合は「hello」) |
| name | string | 表示名 (デフォルトでは大文字のスラッグ) |
応答 201
| id | string | |
| address | string | |
| name | string | null | |
| slug | string | |
| domain | string | |
| kind | string | |
| workspace_id | string | null | |
| access_role | string | |
| effective_capabilities | MailboxEffectiveCapabilities | |
| collaboration_enabled | boolean | |
| shared | boolean | 呼び出し元以外に、このメールボックスを読めるユーザーが少なくとも 1 人いるかどうか |
| message_count | integer | |
| webhook_url | string | null | |
| header_names | string[] | 構成された Webhook 認証ヘッダー名。値は決して返されません |
| forward_to | string | null | |
| signing_secret | string | null | |
| created_at | string (date-time) | |
| hint | string |
/api/emailすべてのメールボックスをリストする
ワークスペース許可を含め、代理プリンシパルがすべてのドメインにわたってアクセスできるすべてのメールボックスをリストします。
パラメータ
| domain | string | ドメインでフィルタリングする |
応答 200
| mailboxes | object[] |
/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 |
| name | string | 送信メールの表示名 (例: 「John Doe」) |
| force | boolean | 既存の MX レコードをオーバーライドします。デフォルト: false |
| kind | string(api | hosted) | 「api」(デフォルト: API + webhook 経由で送受信)または「hosted」(ドメイン上の実際の IMAP/SMTP メールボックス) |
| workspace_id | string | メールボックスを所有するワークスペース。ワークスペース所有者のみがリソースを採用できます。 |
応答 201
| id | string | |
| address | string | |
| name | string | null | |
| domain | string | |
| slug | string | |
| kind | string | |
| workspace_id | string | null | |
| access_role | string | |
| effective_capabilities | MailboxEffectiveCapabilities | |
| collaboration_enabled | boolean | |
| shared | boolean | 呼び出し元以外に、このメールボックスを読めるユーザーが少なくとも 1 人いるかどうか |
| message_count | integer | |
| webhook_url | string | null | |
| header_names | string[] | 構成された Webhook 認証ヘッダー名。値は決して返されません |
| forward_to | string | null | |
| signing_secret | string | null | 受信 Webhook ペイロードを検証するための HMAC シークレット (作成時に 1 回表示されます) |
| host_id | string | ホストされているメールボックスのメールホスト プリンシパル ID |
| dns_records | DnsRecord[] | |
| dns_status | string | |
| receiving_status | string | |
| sending_status | string | |
| sending_error | object | |
| client_settings | object | |
| credential | object | |
| storage_quota_bytes | integer | |
| created_at | string (date-time) | |
| hint | string |
/api/emailsすべてのメールボックスをリストする
ワークスペース許可を含め、代理プリンシパルがアクセスできるすべてのメールボックスをリストします。 GET /api/email と同じです。
パラメータ
| domain | string | ドメインでフィルタリングする |
応答 200
| mailboxes | object[] |
/api/emails/{address}メールボックスの詳細を取得する
特定のメールボックスの詳細を完全な電子メール アドレス (URL エンコードされたもの、例: hello%40mysite.com) で取得します。
パラメータ
| address* | string | 完全な電子メール アドレス (URL エンコードされたもの、例: hello%40mysite.com) |
応答 200
| id | string | |
| address | string | |
| slug | string | |
| domain | string | |
| kind | string | |
| workspace_id | string | null | |
| access_role | string | |
| effective_capabilities | MailboxEffectiveCapabilities | |
| webhook_url | string | null | |
| forward_to | string | null | |
| signing_secret | string | null | マネージャー用の HMAC シークレット。ビューア/レスポンダの場合は null |
| message_count | integer | |
| storage_quota_bytes | integer | null | |
| storage_used_bytes | integer | null | |
| storage_measured_at | string (date-time) | null | |
| created_at | string (date-time) |
/api/emails/{address}メールボックスを更新する
メールボックスの表示名、Webhook URL、または転送先電子メール アドレスを完全な電子メール アドレスで更新します。無効/クリアするには null に設定します。
パラメータ
| address* | string | 完全な電子メール アドレス (URL エンコード) |
リクエストボディ
| name | string | null | メールボックスの表示名。クリアするには null に設定します。 |
| webhook_url | string | null | 受信電子メール Webhook の HTTPS URL、またはクリアする場合は null |
| forward_to | string | null | 受信メールの転送先のメール アドレス、またはクリアする場合は null |
| drop_spam | boolean | スパムとしてフラグが付けられた受信メッセージをドロップします (保存または Webhook しません)。 |
| tone_notes | string | null | このメールボックスから下書きを作成する前にエージェントが読む文体のヒント (トーン、署名、言い回しの推奨事項と禁止事項)。クリアするには null に設定します。 |
応答 200
| id | string | |
| address | string | |
| slug | string | |
| domain | string | |
| name | string | null | |
| webhook_url | string | null | |
| forward_to | string | null | |
| tone_notes | string | null | |
| signing_secret | string | 受信 Webhook ペイロードを検証するための HMAC シークレット |
/api/emails/{address}メールボックスを削除する
完全な電子メール アドレスを使用してメールボックスを削除します。本体にconfirm=trueが必要です。確認を行わない場合は、message_count を含むプレビューを返します。
パラメータ
| address* | string | 完全な電子メール アドレス (URL エンコード) |
リクエストボディ
| confirm | boolean | 実際に削除するには true にする必要があります。プレビューを省略します。 |
/api/emails/{address}/sendメールを送信する
完全なメールアドレスで識別されるメールボックスからメールを送信します。サーバーは最初に必須のバージョン付きポリシーを実行し、客観的な安全上の問題を拒否し、評判や内容品質の問題を警告として返します。共同スレッド返信では、作成リース、確認済みの reply_version、安定した冪等性キーを渡します。サーバーは送信直前に古い返信や二重返信をアトミックに拒否します。1 通あたり最大 20 人、メールボックスあたり 1 時間 100 人までです。
パラメータ
| address* | string | 送信者のメールアドレス(URLエンコード) |
リクエストボディ
| to* | any | 受信者の電子メールアドレス |
| cc | any | CC 受信者 |
| bcc | any | BCC 受信者 |
| subject | string | |
| text | string | プレーンテキスト本文 |
| html | string | HTML本文 |
| reply_to | string | 返信先アドレス |
| in_reply_to | string | 返信される電子メールのメッセージ ID (スレッド用) |
| references | string | スペースで区切られたメッセージ ID チェーン (スレッド用) |
| idempotency_key | string | 重複送信を防ぐ安定したキー |
| send_at | string (date-time) | 送信を予約します (ISO 8601、30 秒後から 30 日後まで)。メッセージはステータス 'scheduled' で保存され、サーバー側で送信されます。キャンセルするには、その前にゴミ箱に移動してください。send_at では添付ファイルはまだサポートされていません。 |
| coordination | object | 保護された共同返信に必要です。 |
| allow_risky_content | boolean | 非推奨の互換性フィールド。パブリック HTTPS サードパーティ認証リンクは警告付きで許可されます。客観的な安全ブロックを無効にすることはできません。 |
| attachments | object[] | 添付ファイル (最大 10 個、合計最大 40MB)。コンテンツはbase64でエンコードされている必要があります。 |
応答 200
| id | string | |
| message_id | string | RFC 5322 メッセージ ID |
| from | string | |
| to | string | |
| bcc | string | null | 送信した Bcc 受信者。自分の送信メッセージにのみ返されます。ヘッダーとして配信されることはなく、受信したメッセージに含まれることもありません。 |
| status | string | |
| attachments_count | integer | |
| suppressed | string[] | |
| deliverability | object | この送信に適用されたバージョン付きポリシー レポート。決定と分類されたチェックを検査する |
/api/emails/{address}/deliverability-checkアウトバウンド電子メールのプリフライト
電子メール クォータを送信または消費せずに、送信エンドポイントによって使用される正確なバージョン管理されたサーバー側ポリシーを実行します。サードパーティ ドメイン上のパブリック HTTPS 認証リンクは、レピュテーション警告付きで許可されます。ローカル/プライベート URL、非 HTTPS 認証リンク、および実行可能添付ファイルはブロックされます。 102 KB を超えるボディでは、クリッピング警告が生成されます。
パラメータ
| address* | string | 送信者のメールアドレス(URLエンコード) |
リクエストボディ
| subject | string | |
| text | string | |
| html | string | |
| idempotency_key | string | |
| allow_risky_content | boolean | 非推奨の互換性フィールド。客観的な安全ブロックを無効にすることはできません。 |
| attachments | object[] |
応答 200
| policy_version | string | |
| decision | string | |
| safe_to_send | boolean | 決定 != 拒否と同等の下位互換性のあるブール値 |
| risk | string | |
| score | integer | |
| authentication_message | boolean | |
| checks | object[] | |
| blocked_reasons | string[] | |
| warnings | string[] | |
| override_used | boolean |
/api/emails/{address}/messagesメールの一覧表示
正規のフォルダーまたは仮想ビュー内の電子メールを一覧表示します。デフォルトは受信トレイです。フォルダーの場所は、メッセージの方向やスパム判定とは無関係です。 認証メール (OTP / 検証コード、パスワード リセット、マジック リンク) にはsecurity: "auth"というタグが付けられます。 email:auth_secrets スコープのないトークンには、件名と本文がマスク済み (redacted: true) のメッセージが表示されます。メタデータ (送信者、日付) は表示されたままになります。subject、q、attachments の各フィルターは、呼び出し元が読める内容に対して一致します。このスコープがない場合、そのようなメッセージはマスクされた件名と本文でのみ一致するため、含まれるコードで検索しても何も見つかりません。
パラメータ
| address* | string | メールボックスのメールアドレス(URLエンコード) |
| cursor | string | 前の応答のページネーション カーソル |
| limit | integer | 返される最大メッセージ数 |
| direction | string(in | out | all) | 方向によるフィルター (デフォルト: すべて) |
| folder | string(inbox | archive | sent | spam | trash) | システムフォルダー。 view とは相互に排他的です。デフォルトは受信トレイです。 |
| label | string | カンマ区切りのラベル: これらのいずれかを持つメッセージのみ |
| view | string(starred | all | needs_human | scheduled) | 仮想ビュー。フォルダーとは相互に排他的です。 |
| since | string | ISO タイムスタンプ - この日付以降に作成されたメッセージのみを返します |
| until | string | ISO タイムスタンプ - この日付より前に作成されたメッセージのみを返します |
| from | string | 送信者アドレスでフィルタリングする |
| to | string | 受信者アドレスでフィルタリングする |
| subject | string | 件名でフィルタリングする |
| q | string | 送信者、受信者、件名、プレーンテキスト本文にわたる大文字と小文字を区別しない広範な検索 |
| unread | boolean | 未読メッセージのみを返す |
| attachments | boolean | 添付ファイルのみを含むメッセージを返す |
| spam | boolean | スパム フラグによるフィルター (スパム フラグの付いた受信を非表示にするには false を渡します) |
応答 200
| messages | object[] | |
| next_cursor | string | null |
/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 がない場合、受信した認証メールはランキングの前に除外されます。どの単語、演算子、フィルターにも一致しないため、サインインコードを検索しても何も見つかりません。
パラメータ
| mailbox | string | 1つのメールボックスアドレス(slug@domain)に限定します。 |
| q* | string | 探しているもの(任意の言語):名前、参照、またはメールの説明。Gmail演算子も使えます (`from:dave is:unread newer_than:7d -invoice "exact phrase"`)。 |
| mode | string(hybrid | semantic | keyword) | hybridは埋め込みと単語をランクで融合します。semanticは意味のみを使用します。keywordは単語のみを使用します。 |
| limit | integer | 返す結果の数。 |
| since | string | このISOタイムスタンプ以降に受信したメールのみ。 |
| until | string | このISOタイムスタンプ以前に受信したメールのみ。 |
| folder | string(inbox | archive | sent | spam | trash | anywhere) | 1つのフォルダ。ゴミ箱は指定するか`anywhere`を使わない限り除外されます。 |
| from | string | 送信者アドレスに含まれる文字列。 |
| label | string | カンマ区切りのラベル: これらのいずれかを持つメッセージのみ |
応答 200
| results | object[] | |
| mode | string | |
| query | string | |
| took_ms | integer | |
| hint | string |
例
curl "https://domani.run/api/emails/search?q=facture+tucows+ao%C3%BBt&limit=5" \ -H "Authorization: Bearer domani_sk_xxx"
/api/emails/connect/gmailGmailの受信トレイの接続を開始
あなたのアカウントとインポート境界に紐付けられたGoogleの同意URLを返します。ブラウザで開いてください。同意後、受信トレイは独自のアドレスで接続されたメールボックスになり、境界より後に受信したメール(デフォルト: 過去24時間)がインポートされ、新しいメールは到着と同時に追従します。受信トレイ全体は決してインポートされません: 後でPOST /api/emails/{address}/importで拡大してください。email:writeが必要です。サーバーでGoogle OAuthが設定されている必要があります。
リクエストボディ
| access | string(read | write) | read (デフォルト) は受信トレイを読み取ります; writeはプラットフォームがラベルと既読状態を変更し、その人として送信することも許可し、継続的な委任の効果を持ちます。read-onlyグラントを拡張するにはwriteで再接続してください。 |
| since | string (date-time) | この時刻より後に受信したメールをインポート |
| window | string(24h | 7d | 30d | 1y) | sinceの代わりのプリセット、デフォルトは24h |
| workspace_id | string | メールボックスが属するワークスペース、デフォルトはあなたの個人ワークスペース |
| login_hint | string | 事前選択するGoogleアカウント |
| return_to | string | 同意後にブラウザを送るアプリパス |
応答 200
| auth_url | string | |
| state | string | |
| import_since | string (date-time) | |
| expires_in | integer | |
| access | string |
/api/emails/connect/outlookOutlookの受信トレイの接続を開始
あなたのアカウントとインポート境界に紐付けられたMicrosoftの同意URLを返します。ブラウザで開いてください。同意後、受信トレイは独自のアドレスで接続されたメールボックスになり、境界以降に受信したメール(デフォルト: 過去24時間)がインポートされ、新着メールは到着次第追従します。受信トレイ全体は決してインポートされません。後でPOST /api/emails/{address}/importで範囲を広げてください。email:writeが必要です。サーバーでMicrosoft OAuthが設定されている必要があります。
リクエストボディ
| access | string(read | write) | read (デフォルト) は受信トレイを読み取ります; writeはプラットフォームがラベルと既読状態を変更し、その人として送信することも許可し、継続的な委任の効果を持ちます。read-onlyグラントを拡張するにはwriteで再接続してください。 |
| since | string (date-time) | この時刻より後に受信したメールをインポート |
| window | string(24h | 7d | 30d | 1y) | sinceの代わりのプリセット、デフォルトは24h |
| workspace_id | string | メールボックスが属するワークスペース、デフォルトはあなたの個人ワークスペース |
| login_hint | string | 事前選択するMicrosoftアカウント |
| return_to | string | 同意後にブラウザを送るアプリパス |
応答 200
| auth_url | string | |
| state | string | |
| import_since | string (date-time) | |
| expires_in | integer | |
| access | string |
/api/emails/connect/providers受信トレイを接続できる方法を一覧表示
プロバイダーごとに1行(Gmail、Outlook、転送による任意の受信トレイ、ここでホストされるアドレス):接続の開始方法(同意画面、転送ルール、作成されたアドレス)、接続ができること(読み取り、または読み取りと書き込み)、古いメールをインポートするかどうか、このサーバーがそれに対して設定されているかどうか。configuredがtrueの場合のみ接続ボタンを表示します。reasonはオペレーターに対して不足している変数を示します。email:readが必要です。
応答 200
| providers | MailProvider[] |
/api/emails/connect/forwarding転送により受信箱を接続
受信箱自身のアドレスで接続されたメールボックスを作成し、プラットフォームの転送ドメイン上の転送先アドレスと、Gmail、Outlook、その他のプロバイダーの手順を返します。プロバイダーで転送ルールを追加します。そのアドレスに到着したものは展開され(元の送信者、日付、件名)、接続されたメールボックスの下に保存されます。Gmailは転送先アドレスに確認を求めます:コードとリンクが接続に表示されます。最初に戻ってくるメール、またはプローブ(POST /api/emails/{address}/connector/verify)により、接続がアクティブになります。この方法では新しいメールのみが到着します。古いメールはインポートできません。email:writeが必要です。転送ドメインはサーバーで設定されている必要があります。
リクエストボディ
| address* | string | 接続する受信箱、例:someone@gmail.com |
| workspace_id | string | メールボックスが属するワークスペース、デフォルトはあなたの個人ワークスペース |
応答 200
| address | string | |
| mailbox_id | string | |
| status | string | |
| forwarding_address | string | |
| instructions | object | |
| guide | ForwardingGuide |
/api/emails/{address}/connector/verify転送ルールを通じてプローブを送信
接続された受信箱にメールを送信します。転送ルールがそれを転送先アドレスに戻すと、接続がアクティブになります。転送による接続の場合のみ。email:writeが必要です。
パラメータ
| address* | string | 接続されたアドレス、例: someone@gmail.com |
応答 200
| sent_to | string | |
| forwarding_address | string |
/api/emails/{address}/connector接続されたメールボックスの接続を読み取り
类型、状态、导入边界、同步阶段(导入扫描,然后历史记录)、导入进度(已扫描、已复制、待分析、已分析)、最后同步和最后错误。需要 email:read。転送の確認 (Gmail のコードとリンク) は認証メールです。email:auth_secrets がない場合、その code と url は null になり、redacted: true が付きます。メールボックスに限定されたトークンが見つけられるのは、自身のメールボックスだけです (それ以外は 404)。
パラメータ
| address* | string | 接続されたアドレス、例: someone@gmail.com |
応答 200
| address | string | |
| mailbox_id | string | |
| kind | string | |
| status | string | |
| import_since | string (date-time) | null | 最初のインポートの境界: それより前に受信したメールはコピーされない |
| phase | string | 导入扫描在边界后翻阅邮件时列出,一旦新邮件遵循源的历史记录,历史记录就会列出 |
| paused_reason | string | null | |
| import_run | object | null | このメールボックスの現在または最後のインポート実行 |
| source_messages_total | integer | null | スケールのために、ソースが受信トレイ全体について報告する内容 |
| last_sync_at | string (date-time) | null | |
| last_error | string | null | |
| backoff_until | string (date-time) | null | |
| verified_at | string (date-time) | null | |
| connected_at | string (date-time) | |
| cost_cap_usd | number | インポート実行ごとに許可されるモデル使用量の上限(米ドル) |
| access | string | null | Gmailコネクションの場合: グラントが許可する内容; writeは双方向のラベル操作とその人として送信することを意味します |
| forwarding | object | null | 転送による接続の場合:転送先アドレス、到着したもの、Gmailの確認、プローブ、手順 |
/api/emails/{address}/connector接続されたメールボックスを切断
その人自身のコピー(メッセージ、添付ファイル、検索行、保留中のジョブ)と認証情報を削除します。メールボックス行、切断とマークされたリンク、エージェントが行ったこと(受領)は保持されます。接続されたメールボックスのみ切断できます。email:writeが必要です。
パラメータ
| address* | string |
応答 200
| disconnected | boolean | |
| address | string | |
| removed_messages | integer | |
| removed_attachments | integer |
/api/emails/{address}/import接続されたメールボックスの古いメールをインポート
将导入扩大到更早的日期:新的导入运行按到达顺序复制新边界和当前边界之间的邮件,在其自己的成本上限下。在导入扫描仍在运行时拒绝。需要 email:write。
パラメータ
| address* | string |
リクエストボディ
| since* | string (date-time) | 新しい境界、現在のものより早い |
応答 200
| import_run_id | string | |
| import_since | string (date-time) | |
| import_until | string (date-time) |
/api/emails/{address}/search1つのメールボックスを意味と単語で検索
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"`)。 |
| mode | string(hybrid | semantic | keyword) | hybridは埋め込みと単語をランクで融合します。semanticは意味のみを使用します。keywordは単語のみを使用します。 |
| limit | integer | 返す結果の数。 |
| since | string | このISOタイムスタンプ以降に受信したメールのみ。 |
| until | string | このISOタイムスタンプ以前に受信したメールのみ。 |
| folder | string(inbox | archive | sent | spam | trash | anywhere) | 1つのフォルダ。ゴミ箱は指定するか`anywhere`を使わない限り除外されます。 |
| from | string | 送信者アドレスに含まれる文字列。 |
| label | string | カンマ区切りのラベル: これらのいずれかを持つメッセージのみ |
応答 200
| results | object[] | |
| mode | string | |
| query | string | |
| took_ms | integer | |
| hint | string |
/api/emails/{address}/threadsメールボックスの会話を一覧表示
メールクライアントがグループ化する方法でグループ化されたメッセージ: 返信は応答するメッセージのスレッドに参加します(In-Reply-To、次にReferencesチェーン)、使用可能なヘッダーのないメールは、30日以内に同じ件名と共通の通信相手を持つ最新のスレッドに参加します、それ以外はすべて最初のメッセージのIDをIDとするスレッドを開始します。スレッドは最終アクティビティ順に並べられます。ゴミ箱とスパムは、フォルダとして指定されない限り参加しません。folder=inbox|archive|sentは、そこにメッセージがあるスレッドを保持しますが、会話全体をカウントします。
パラメータ
| address* | string | |
| folder | string(all | inbox | archive | sent | spam | trash) | |
| since | string | この時刻以降にアクティビティがあるスレッドのみ |
| limit | integer | |
| cursor | string | 前のページのnext_cursor |
| label | string | カンマ区切りのラベル: これらのいずれかを持つメッセージを含むスレッドのみ |
応答 200
| threads | EmailThread[] | |
| next_cursor | string | null | |
| has_more | boolean |
/api/emails/{address}/threads/{id}1つの会話を読み取り、最も古いメッセージから順に表示
スレッドのすべてのメッセージ(ゴミ箱を含む、ストーリーから何も欠けないように)とそのテキスト、最も古いものから順に、参加者と未読数を含みます。認証メールはメッセージ読み取りと同じ方法で編集されます。
パラメータ
| address* | string | |
| id* | string | スレッドID(そのメッセージのいずれかのthread_id) |
応答 200
| id | string | |
| subject | string | null | |
| participants | string[] | |
| message_count | integer | |
| unread_count | integer | |
| first_message_at | string (date-time) | |
| last_message_at | string (date-time) | |
| messages | object[] |
/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 | |
| since | string | 再生開始位置のcursor。以前のイベントの`cursor`または/api/email/changesのnext_cursor |
/api/emails/{address}/folders電子メールのフォルダーと数を一覧表示する
システム フォルダーと仮想ビューのサーバー由来の数と、メールボックス バックエンドのライフサイクル機能を返します。
パラメータ
| address* | string |
応答 200
| folders | object[] | |
| views | object[] | |
| capabilities | object |
/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) | |
| destination | string(inbox | archive | sent | spam | trash) | |
| read | boolean | |
| starred | boolean | |
| add | string[] | label: 追加するラベル |
| remove | string[] | label: 削除するラベル |
| set | string[] | label: すべてのラベルを置き換える (add と remove より優先) |
| idempotency_key | string | この正確な論理バッチの安定したキー。タイムアウト後に再利用します。 |
応答 200
| operation_id | string | |
| idempotency_key | string | |
| idempotent_replay | boolean | この応答が不変の完了した受信を再利用し、新しい変更を実行しない場合は True。 |
| action | string | |
| status | string | |
| results | object[] | |
| summary | object | |
| created_at | string (date-time) | |
| completed_at | string (date-time) | null |
/api/emails/{address}/messages/readメッセージを既読または未読としてマークする
再試行安全な読み取り状態更新のための互換性エンドポイント。正規の永続的なアイテムごとの操作レシートと従来のカウントを返します。タイムアウト後に Idempotency-Key ヘッダーまたは互換性 idempotency_key フィールドを指定して再利用します。
パラメータ
| address* | string | メールボックスのメールアドレス(URLエンコード) |
リクエストボディ
| message_ids* | string[] | マークするメッセージの ID |
| read* | boolean | 既読としてマークする場合は true、未読としてマークする場合は false |
| idempotency_key | string |
応答 200
| operation_id | string | |
| idempotency_key | string | |
| idempotent_replay | boolean | この応答が不変の完了した受信を再利用し、新しい変更を実行しない場合は True。 |
| action | string | |
| status | string | |
| results | object[] | |
| summary | object | |
| created_at | string (date-time) | |
| completed_at | string (date-time) | null | |
| count | integer |
/api/emails/{address}/messages/deleteメッセージの一括削除
メッセージを再試行しても安全にゴミ箱に移動する互換性エンドポイント。正規の永続的なアイテムごとの操作レシートと従来のカウントを返します。タイムアウト後に Idempotency-Key ヘッダーまたは互換性 idempotency_key フィールドを指定して再利用します。
パラメータ
| address* | string | メールボックスのメールアドレス(URLエンコード) |
リクエストボディ
| message_ids* | string[] | 削除するメッセージのID |
| idempotency_key | string |
応答 200
| operation_id | string | |
| idempotency_key | string | |
| idempotent_replay | boolean | この応答が不変の完了した受信を再利用し、新しい変更を実行しない場合は True。 |
| action | string | |
| status | string | |
| results | object[] | |
| summary | object | |
| created_at | string (date-time) | |
| completed_at | string (date-time) | null | |
| count | integer |
/api/emails/{address}/messages/{id}メッセージを受け取る
完全な電子メール アドレスで識別されるメールボックスから、ID を使用して 1 つのメッセージを取得します。認証メール (OTP、パスワード リセット、マジック リンク) として分類されたメッセージは、トークンが email:auth_secrets スコープを持っていない限り、件名/本文がマスクされて返されます。
パラメータ
| address* | string | メールボックスのメールアドレス(URLエンコード) |
| id* | string | メッセージID |
応答 200
| id | string | |
| thread_id | string | スレッドのすべてのメッセージで共有される会話ID(ルートメッセージID) |
| labels | string[] | メッセージ上のすべてのラベル; `label` は最初のもの |
| thread_key | string | 正規のバックエンド名前空間会話キー |
| thread_aliases | string[] | 会話状態を変更するときに返されるレガシー ワークフロー キー |
| message_id | string | null | |
| direction | string | |
| from | string | From ヘッダーから取った送信者の表示名とアドレス (例: 'Alice <alice@example.com>')。メールに名前がなかった場合はアドレスのみ。 |
| avatar_url | string (uri) | null | プライバシーを保護する送信者アバターの Domani プロキシ URL |
| to | string | ヘッダーのすべての To 受信者を、表示名付きで、送信者が書いた順序のまま (このメールをメールボックスへ振り分けたエンベロープアドレスだけではない)。 |
| cc | string | null | ヘッダーのすべての Cc 受信者を表示名付きで。メールに Cc がなかった場合は null。 |
| bcc | string | null | Bcc 受信者。自分の送信メッセージにのみ含まれます (受信したメッセージには含まれず、ヘッダーとして配信されることもありません)。 |
| reply_to | string | null | |
| subject | string | |
| text | string | null | |
| html | string | null | |
| in_reply_to | string | null | |
| references | string | null | |
| attachments | object[] | |
| status | string | |
| is_read | boolean | |
| read_at | string | null | |
| events | object[] | |
| created_at | string (date-time) |
/api/emails/{address}/messages/{id}メッセージを削除する
メッセージをゴミ箱に移動します。これはリバーシブルです。 delete_permanently と email:delete トークンを指定したライフサイクル アクションを使用して、すでにゴミ箱に入っているメッセージを消去します。
パラメータ
| address* | string | メールボックスのメールアドレス(URLエンコード) |
| id* | string | メッセージID |
応答 200
| id | string | |
| deleted | boolean |
/api/emails/{address}/messages/{id}/replyメッセージに返信する
完全なメールアドレスで識別されるメールボックス内のメッセージに返信します。スレッドヘッダーは自動入力され、quote が false でない限り、メールクライアントと同様に返信の下に元のメッセージが引用されます(アカウントの言語による引用元の行、テキストでは > 行、HTML では gmail_quote ブロック)。共同クライアントは、作成リース、確認済みの reply_version、安定した冪等性キーを渡す必要があります。サーバーは送信直前に古い返信や二重返信をアトミックに拒否します。
パラメータ
| address* | string | メールボックスのメールアドレス(URLエンコード) |
| id* | string | 返信するメッセージID |
リクエストボディ
| text | string | プレーンテキストの返信本文 |
| html | string | HTML返信本文 |
| cc | any | 追加の CC 受信者 |
| all | boolean | 全員に返信: 元の宛先/CC から CC を自動入力します。 |
| quote | boolean | 返信の下に元のメッセージを引用します。false の場合は指定したテキストまたは HTML のみを送信します |
| idempotency_key | string | べき冪性キーの本体互換性形式 |
| coordination | object |
応答 200
| id | string | |
| message_id | string | |
| from | string | |
| to | string | |
| status | string | |
| reply_version | integer | 保護された応答用に予約された生成 |
/api/emails/{address}/messages/{id}/forwardメッセージを転送する
完全な電子メール アドレスで識別されるメールボックスから別の受信者にメッセージを転送します。認証メール (OTP、パスワード リセット、マジック リンク) の転送には email:auth_secrets スコープが必要です。これによりシークレットが漏洩されてしまいます。
パラメータ
| address* | string | メールボックスのメールアドレス(URLエンコード) |
| id* | string | 転送するメッセージID |
リクエストボディ
| to* | string | 受信者のメールアドレス |
| text | string | 先頭に追加するオプションのメモ |
応答 200
| id | string | |
| message_id | string | |
| from | string | |
| to | string | |
| status | string |
/api/emails/{address}/avatarメールボックスのアバター情報を取得する
Gravatar URL (設定されている場合) と、完全な電子メール アドレスで識別されるメールボックスのサインアップ リンクを返します。
パラメータ
| address* | string | メールボックスのメールアドレス(URLエンコード) |
応答 200
| address | string | |
| gravatar_url | string | null | |
| gravatar_signup | string | |
| has_avatar | boolean | |
| hint | string |
/api/emails/{address}/webhookメールボックス Webhook 構成を取得する
Webhook URL、署名シークレット、構成された認証ヘッダー名、およびメールボックスのステータスを返します。ヘッダー値は決して返されません。
パラメータ
| address* | string | メールボックスのメールアドレス(URLエンコード) |
応答 200
| address | string | |
| webhook_url | string | null | |
| signing_secret | string | null | |
| has_webhook | boolean | |
| events | string[] | このWebhookが配信するイベント: email.received、送信メールの配信結果(email.delivered, email.bounced, email.failed, email.suppressed, email.complained, email.delayed)、およびエージェントへの引き継ぎ通知(assistant.item.delegated, assistant.item.recalled); Webhookなしの場合は空 |
| header_names | string[] | 設定された認証ヘッダー名。値は決して返されません |
| hint | string |
/api/emails/{address}/webhookメールボックス Webhook を設定する
HMAC 署名付きメールボックス イベントの HTTPS 宛先を構成します。既定では受信メール、さらに (events でオプトインすると) メールボックスから送信したメールの配信結果も届きます。バウンスは送信が受理されてから数秒で送信者に届き、メッセージの履歴にしか残らないということがなくなります。ライブ受信配信は永続的に保存され、すぐに試行され、最大 3 回まで再試行されます。各試行には、1 から始まる X-Domani-Delivery-Attempt が含まれます。オプションの認証または X-API-Key の値は暗号化され、返されません。人間のオペレーターは、CLI 環境変数オプションを使用してモデル コンテキストの外でそれらを送信する必要があります。
パラメータ
| address* | string | メールボックスのメールアドレス(URLエンコード) |
リクエストボディ
| url* | string | HTTPS Webhook URL |
| events | string[] | プッシュするイベント(assistant.item.delegatedとassistant.item.recalledは、オーナーがTodayアイテムをエージェントに引き継いだ、または取り戻したことをエージェントに通知します; エージェントが操作するすべてのメールボックスのWebhookがこれらを受信します)。省略すると現在のサブスクリプションを維持します(新しいWebhookの場合は受信のみ)。メールボックスから送信されたメールの配信結果はオプトインで、同じURLに同じ署名で届きます: {event, mailbox, email, message: {id, message_id, to, subject, status, detail}}。 |
| headers | object | オプションの暗号化された認証ヘッダー。承認と X-API キーのみが受け入れられます。 {} を送信してクリアします。モデルコンテキストを介して値を渡さないでください。 CLI は --authorization-env と --api-key-env をサポートします。 |
応答 200
| address | string | |
| webhook_url | string | |
| signing_secret | string | |
| has_webhook | boolean | |
| events | string[] | このWebhookが配信するイベント: email.received、送信メールの配信結果(email.delivered, email.bounced, email.failed, email.suppressed, email.complained, email.delayed)、およびエージェントへの引き継ぎ通知(assistant.item.delegated, assistant.item.recalled); Webhookなしの場合は空 |
| header_names | string[] | 設定された認証ヘッダー名。値は決して返されません |
| hint | string |
例
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"]}'/api/emails/{address}/webhookメールボックス Webhook を削除する
Webhook URL と署名シークレットをメールボックスから削除します。受信メールのみが保存されます。
パラメータ
| address* | string | メールボックスのメールアドレス(URLエンコード) |
応答 200
| address | string | |
| webhook_url | string | null | |
| signing_secret | string | null | |
| has_webhook | boolean | |
| events | string[] | このWebhookが配信するイベント: email.received、送信メールの配信結果(email.delivered, email.bounced, email.failed, email.suppressed, email.complained, email.delayed)、およびエージェントへの引き継ぎ通知(assistant.item.delegated, assistant.item.recalled); Webhookなしの場合は空 |
| header_names | string[] | |
| hint | string |
/api/emails/{address}/webhook/rotateWebhook 署名シークレットをローテーションする
メールボックス Webhook の HMAC-SHA256 署名シークレットを再生成します。古いシークレットはすぐに無効になります。
パラメータ
| address* | string | メールボックスのメールアドレス(URLエンコード) |
応答 200
| address | string | |
| webhook_url | string | |
| signing_secret | string | |
| has_webhook | boolean | |
| hint | string |
/api/emails/{address}/webhook/testメールボックス Webhook のテスト
1 つの署名付きテスト ペイロードをメールボックス Webhook URL に送信します。 HTTP ステータスと配信が成功したかどうかを返します。テストは再試行されません。ライブ受信配信は最大 3 回まで再試行されます。
パラメータ
| address* | string | メールボックスのメールアドレス(URLエンコード) |
応答 200
| address | string | |
| webhook_url | string | |
| status | integer | |
| success | boolean | |
| hint | string |
/api/emails/{address}/aliasesメールボックスのエイリアスの一覧表示
メールボックスに配信されるすべてのエイリアス アドレスをリストします。エイリアスを使用すると、メールボックス スロットを使用せずに、複数のアドレス (sales@、hello@、contact@) が 1 つの受信トレイを共有できます。
パラメータ
| address* | string | メールボックスのメールアドレス(URLエンコード) |
応答 200
| mailbox | string | |
| aliases | object[] | |
| hint | string |
/api/emails/{address}/aliasesメールボックスのエイリアスを追加する
メールボックス スロットを使用せずに、このメールボックスに配信するエイリアス アドレスを追加します。エイリアスはメールボックスと同じドメイン上にある必要があります。裸のスラッグ (「sales」) または完全なアドレス (「sales@mysite.com」) を入力します。
パラメータ
| address* | string | メールボックスのメールアドレス(URLエンコード) |
リクエストボディ
| alias* | string | エイリアス アドレス - 同じドメイン上のベア slug または完全な slug@domain |
応答 201
| address | string | |
| mailbox | string | |
| created_at | string (date-time) | |
| hint | string |
/api/emails/{address}/aliases/{alias}メールボックスのエイリアスを削除する
メールボックスからエイリアスを削除します。そのアドレスへの電子メールは配信されなくなります。
パラメータ
| address* | string | メールボックスのメールアドレス(URLエンコード) |
| alias* | string | 削除するエイリアス アドレス (URL エンコードされた、または裸のスラッグ) |
応答 200
| address | string | |
| deleted | boolean | |
| hint | string |
/api/emails/{address}/client-settingsメールクライアント設定の取得(ホスト型)
ホストされたメールボックスの IMAP/SMTP 接続設定を取得して、Apple Mail、Thunderbird、またはその他のメール クライアントを構成します。ユーザー名は完全なアドレスです。パスワードはアプリのパスワードです (POST /api/emails/{address}/credentials を使用して作成します)。ホスト型メールボックスのみ。
パラメータ
| address* | string | ホスト型メールボックス アドレス (URL エンコード) |
応答 200
| mailbox | string | |
| username | string | |
| imap | object | |
| smtp | object | |
| hint | string |
/api/emails/{address}/credentialsアプリのパスワードをリストする (ホスト型)
ホストされているメールボックスのアプリ パスワードを一覧表示します。シークレットは作成時に 1 回だけ表示されます。これはラベルとメタデータのみを返します。ホスト型メールボックスのみ。
パラメータ
| address* | string | ホスト型メールボックス アドレス (URL エンコード) |
応答 200
| mailbox | string | |
| credentials | object[] | |
| hint | string |
/api/emails/{address}/credentialsアプリのパスワードを作成する (ホスト型)
メール クライアント (IMAP/SMTP) のパスワードとして使用される、ホストされたメールボックスのアプリ パスワードを作成します。シークレットは一度返されます。今すぐ保存してください。ホスト型メールボックスのみ。
パラメータ
| address* | string | ホスト型メールボックス アドレス (URL エンコード) |
リクエストボディ
| label | string | このアプリのパスワードを識別するためのラベル。例: 「ラップトップメール」 |
応答 201
| id | string | |
| label | string | |
| password | string | アプリのパスワード - 一度表示されますので、すぐに保存してください |
| client_settings | object | |
| hint | string |
/api/emails/{address}/credentials/{id}アプリのパスワードを取り消す (ホスト型)
アプリのパスワードを取り消します。これを使用しているメール クライアントはすぐに接続を停止します。ホスト型メールボックスのみ。
パラメータ
| address* | string | ホスト型メールボックス アドレス (URL エンコード) |
| id* | string | アプリのパスワード ID (リストのエンドポイントから) |
応答 200
| id | string | |
| revoked | boolean | |
| hint | string |
/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 |
リクエストボディ
| reason | string | 人間が必要な理由 - 通知に表示されます |
| clear | boolean | フラグを設定する代わりにクリアします (人間が引き継ぎました) |
応答 200
| id | string | |
| needs_human | boolean | |
| escalation_reason | string | null | |
| thread_key | string |
/api/emails/{address}/messages/{id}/remindフォローアップ リマインダーを設定する
メッセージに 1 回限りのフォローアップ リマインダーを設定します (または clear=true でクリアします)。remind_at の時刻になってもメッセージが未回答の場合 (受信: 返信を送信していない、送信: 相手からの返信を受け取っていない)、email.reminder_due が Webhook とアプリ内通知として発火し、リマインダーは自動的にクリアされます。
パラメータ
| address* | string | メールボックスのメールアドレス(URLエンコード) |
| id* | string | 監視するメッセージ ID |
リクエストボディ
| remind_at | string (date-time) | リマインドする ISO 8601 形式の時刻 (1 分後から 90 日後まで) |
| note | string | リマインダーの発火時に表示されるコンテキスト |
| clear | boolean | 保留中のリマインダーをクリアします |
応答 200
| id | string | |
| remind_at | string | null | |
| reminder_note | string | null |
/api/contacts連絡先を一覧表示する
メールの往来から自動的に蓄積されるアカウントのアドレス帳: 相手、メッセージ数、最終アクティビティ、メモ。既定では最近アクティブだった順 (order=recent) で、表示向けです。ページ送りのスキャン中に新しいメールを受け取った連絡先はカーソルより前に移動するため、そのスキャンでは取りこぼされることがあります。アドレス帳全体を同期するには order=created を指定してください: 作成日時、次に id の古い順で、この並び順のキーは決して変わらないため、スキャン中ずっと存在する連絡先はちょうど 1 回ずつ返され、その間に作成された連絡先は末尾に来ます。カーソルは発行元と同じ並び順でのみ続行できます (それ以外は 400 INVALID_CURSOR)。すべてのメールボックスのデータを集約するため、メールボックスに限定されたトークンは拒否されます (400 MAILBOX_CONFINED)。
パラメータ
| q | string | アドレスまたは名前の部分文字列でフィルターする |
| limit | integer | 返す連絡先の数 (デフォルトは 50) |
| cursor | string | 前の応答のページネーション カーソル |
| order | string(recent | created) | 並び順。recent (既定): 最近アクティブだった順で、表示向け。created: 作成日時、次に id の古い順で、全件スキャンでも安定します。それ以外の値は 400 INVALID_ORDER になります。 |
応答 200
| contacts | object[] | |
| next_cursor | string | null |
/api/contacts連絡先を作成または更新する
連絡先を保存します: 表示名を設定し、メモ ('prefers short emails'、'decision maker at Acme' など) を添付します。いずれの場合も、メールの往来によってメッセージ数は更新され続けます。
リクエストボディ
| address* | string | 連絡先のメール アドレス |
| name | string | null | 表示名 (null でクリアされます) |
| notes | string | null | エージェントと人間がコンテキストとして読むメモ (null でクリアされます) |
/api/contacts/{address}連絡先を削除する
アドレス帳から連絡先を削除します。相手が再びメールを送ってきた場合、メールの往来によって自動連絡先として再作成されます。
パラメータ
| address* | string | 連絡先のメール アドレス (URL エンコード) |
/api/emails/{address}/rules受信メールルールをリストする
メールボックスの受信フィルタリング ルールを、適用される優先順位でリストします (最初に一致したものが優先)。
パラメータ
| address* | string | メールボックスのメールアドレス(URLエンコード) |
応答 200
| mailbox | string | |
| rules | MailRule[] | |
| hint | string |
/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_arg | string | 転送アドレス (forward の場合)、ラベル値 (label の場合)、または人間に表示される理由 (escalate の場合) |
| priority | integer | 低いものが最初に実行されます (デフォルトは 0) |
| enabled | boolean | デフォルトは true |
応答 201
| id | string | |
| priority | integer | 低いほうが先に実行される |
| match_field | string | |
| match_op | string | |
| match_value | string | |
| action | string | |
| action_arg | string | null | |
| enabled | boolean | |
| created_at | string (date-time) |
/api/emails/{address}/rules/{ruleId}受信メールルールを削除する
メールボックスから受信フィルタリング ルールを削除します。
パラメータ
| address* | string | メールボックスのメールアドレス(URLエンコード) |
| ruleId* | string | ルールID |
応答 200
| id | string | |
| deleted | boolean | |
| hint | string |
/api/domains/{domain}/email/catch-allドメインキャッチオールを設定する
ドメイン上の一致しないアドレスに送信されたすべての電子メールを、指定されたメールボックスにルーティングします。メールボックス、サブアドレス、またはエイリアスに一致しないものはすべてキャッチオールに入ります。メールボックスはドメイン上にすでに存在している必要があります。ドメイン全体のメールを変更するため、メールボックスに限定されたトークンには 403 MAILBOX_CONFINED が返されます。
パラメータ
| domain* | string | ドメイン名 |
リクエストボディ
| mailbox* | string | キャッチオール メールボックス - このドメイン上の裸のスラッグまたは完全なアドレス |
応答 200
| domain | string | |
| catch_all | string | null | |
| hint | string |
/api/domains/{domain}/email/catch-allドメインキャッチオールをクリアする
ドメイン上のキャッチオールを削除します。一致しないアドレスへの電子メールは再びドロップされます。ドメイン全体のメールを変更するため、メールボックスに限定されたトークンには 403 MAILBOX_CONFINED が返されます。
パラメータ
| domain* | string | ドメイン名 |
応答 200
| domain | string | |
| catch_all | string | null | |
| hint | string |
/api/email/changes1 つのメールボックスを増分同期する
カーソルを使用せずに呼び出して、制限された完全なスナップショットの前にベースラインをキャプチャします。次に、next_cursor を渡して、そのスナップショット中およびその後に発生した変更を再生します。カーソルは不透明で、署名され、メールボックスにバインドされ、30 日後に期限切れになります。プッシュ通知は無効化のヒントにすぎません。このジャーナルは永続的な回復源です。認証メールから作られた作業項目に関するエントリーは、email:auth_secrets のないトークンに対して title と ask がマスクされた状態で届きます。
パラメータ
| mailbox_id* | string | |
| cursor | string | 前の応答の不透明な next_cursor |
| limit | integer |
応答 200
| changes | MailboxChange[] | |
| next_cursor | string | |
| has_more | boolean | |
| requires_full_sync | boolean | |
| reason | string |
/api/suppressions抑制されたアドレスをリストする
サプレッション リストにアドレスをリストします。ハード バウンスと苦情 (配信イベントから自動的に取り込まれます) に加えて手動エントリを追加します。これらのアドレスへの送信はスキップされます。カーソルでページ分割されます。
パラメータ
| cursor | string | 前の応答のページネーション カーソル |
| limit | integer | 最大エントリ数 (デフォルトは 50、最大 100) |
応答 200
| suppressions | object[] | |
| next_cursor | string | null | |
| hint | string |
/api/suppressions抑制を追加する
アドレスを抑制リストに手動で追加して、今後の送信でそのアドレスをスキップします。ハード バウンスと苦情は自動的に追加されます。電子メールの送信を停止したいアドレスにこれを使用します。冪等。
リクエストボディ
| address* | string | 抑制するメールアドレス |
| reason | string(manual | hard_bounce | complaint) | 理由 (デフォルト: 手動) |
応答 201
| address | string | |
| reason | string | |
| source | string | |
| created_at | string (date-time) | |
| hint | string |
/api/suppressions/{address}抑制を解除する
サプレッションリストからアドレスを削除すると、再度メールを送信できるようになります (受信者がメールボックスを修正した後など)。
パラメータ
| address* | string | 抑制された電子メール アドレス (URL エンコード) |
応答 200
| address | string | |
| deleted | boolean | |
| hint | string |
Collaboration
/api/workspaces/{id}/ownership-transferワークスペースの所有権の譲渡をリクエストする
所有者限定。 48 時間の承認リンクを既存のメンバーに送信します。認証されたメンバーが受け入れるまでは何も動きません。
パラメータ
| id* | string |
リクエストボディ
| membership_id* | string |
/api/workspaces/{id}/ownership-transfer/{transferId}保留中の所有権移転を取り消す
パラメータ
| id* | string | |
| transferId* | string |
/api/workspaces/ownership-transfers/acceptワークスペースの所有権を受け入れる
移譲先専用。ワークスペース、対象ドメイン、メールボックスの所有権を一括で移譲します。以前の所有者は管理者となり、既存の支払者は変わりません。
リクエストボディ
| token* | string |
認証
/api/auth/register公共新しいアカウントを作成する
サインインリンクをメールで送信して新しいアカウントの作成(または既存アカウントのサインイン)を開始します。ここではAPIキーは返されません。ブラウザでそのリンクをクリックした人は、すでにサインイン済みの状態でダッシュボードに移動します。ブラウザセッションを持たないCLIやエージェントは、代わりにデバイスログインフロー(POST /api/auth/cli の後に GET /api/auth/cli/poll をポーリング)を使うべきで、同じ承認をメールで送り、承認されるとAPIキーを返します - レスポンスの next_steps にその旨が示されます。ref コードを渡すと、新しいユーザーが紹介者と永続的に結び付けられます - 紹介者はこのユーザーの今後のすべてのドメイン購入についてコミッションを得ます。
リクエストボディ
| email* | string (email) | |
| ref | string | 紹介コード - このユーザーを紹介者に永続的にリンクします。紹介者はドメインを購入するたびに手数料を受け取ります。 |
応答 202
| ok | boolean | |
| verification_required | boolean | |
| message | string | |
| hint | string | |
| next_steps | string[] |
応答例
{
"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"}'/api/auth/login公共マジック リンクのサインイン メールを送信する
指定された電子メールにサインイン リンクを送信します。ユーザーが存在しない場合は、最初にアカウントを作成します。マジック リンクは、認証資格情報を使用してダッシュボードにリダイレクトします。プログラムによる API アクセスの場合は、POST /api/auth/register を使用して API キーを直接取得します。
リクエストボディ
| email* | string (email) |
応答 200
| ok | boolean | |
| message | string |
応答例
{
"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"}'/api/auth/verify公共マジックリンクトークンを検証する
マジック リンク トークンを検証し、認証資格情報を使用してダッシュボードにリダイレクトします。マジック リンク 電子メールによって使用されます。通常、エージェントによって直接呼び出されることはありません。エージェントは代わりに POST /api/auth/register を使用する必要があります。
パラメータ
| token* | string | 電子メールからのマジック リンク トークン (base64url エンコード) |
/api/auth/handoffホスト間で使うワンタイムのサインインコードを発行する
ブラウザ専用: domani.run または mailzero.run にサインインしている人が、2 通目のマジックリンクなしでもう一方のホストのセッションを再開できるようにします。60 秒間有効で 1 回限り、ホストに紐づいたコードをフラグメントに含む URL を返します。このコードはログに記録されず、クエリ文字列で送信されることもありません。ブラウザセッションの外では役に立たないため、エージェントツールとしては公開されません。
リクエストボディ
| target* | string(mail | domani) | |
| path* | string |
応答 200
| url | string |
応答例
{
"url": "https://mailzero.run/auth/handoff#code=xxx&next=%2Finbox"
}/api/auth/handoff/redeem公共ホスト間で使うワンタイムのサインインコードを引き換える
ブラウザ専用: 対象ホストの /auth/handoff ページが呼び出し、URL フラグメントのコードをセッションと交換します。マジックリンクに対する GET /api/auth/verify とまったく同じ動作です。コードは、このリクエストが届いた Host と一致する必要があります。エージェントツールではありません。
リクエストボディ
| code* | string |
応答 200
| ok | boolean | |
| next | string |
応答例
{
"ok": true,
"next": "/inbox"
}アカウント
/api/me現在のアカウントの詳細を取得する
電子メール、支払いステータス、連絡先情報ステータス、紹介コード、使用回数など、認証されたユーザーのアカウント情報を返します。エージェントは、購入を試みる前に、認証後にこれを呼び出してhas_payment_methodとhas_contactを確認する必要があります。
応答 200
| id | string | |
| string (email) | ||
| plan | string | 有効な個人用 Domani プラン キー |
| workspace_plans | string[] | ユーザーがアクセスできるワークスペース上の個別のアクティブな Mailzero プラン キー |
| has_payment_method | boolean | ユーザーがカードを登録しているかどうか (ドメインを購入する前に必要) |
| preferred_payment_method | string | null | |
| preferred_locale | string | Domani インターフェースとトランザクション通信で使用されるロケール |
| has_contact | boolean | ユーザーが WHOIS 連絡先情報を設定済みかどうか。購入時は任意です (設定されるまでは、Domani の連絡先がユーザーに代わって新しいドメインを保有します)。ドメインを移管で受け入れる前には必須です。 |
| contact | RegistrantContact | 登録者の連絡先情報 (設定されていない場合は null) |
| referral_code | string | あなただけの紹介コード |
| referral_rate | integer | 紹介された購入に対する手数料率 |
| balance | number | マーケットプレイスのクレジット残高 (USD) (売上から得たもの) |
| domain_count | integer | 所有ドメイン数 |
| token_count | integer | アクティブな API トークンの数 |
| features | string[] | このアカウントで有効になっている機能フラグ (GA 機能に加えて、ユーザーに付与されたプレビュー機能)。例: mailzero_assistant |
| can_manage_assistant | boolean | 呼び出し元のトークンが assistant:read スコープを持っているかどうか。`features` とは独立しています: 機能フラグはアカウントがアシスタントを利用できる資格があることを示しますが、これはこの特定のトークン(フルアクセス、またはスコープ指定された CLI/OAuth/委任トークン)が設定を読み取りまたは変更できるかどうかを示します。 |
| is_admin | boolean | |
| mailbox_entitlement | object | アカウントの個人ワークスペースにおけるカスタムドメインのメールボックス枠。上の `plan` ではなく独自のプランです。ユーザー自身のプランが無料のままでも、ワークスペースは独自の Mailzero サブスクリプションを持てます。 |
| created_at | string (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"
/api/meアカウント設定を更新する
認証されたユーザーの優先支払い方法および/または BCP 47 ロケールを更新します。 API 応答は構造化されたままであり、翻訳されません。
リクエストボディ
| preferred_payment_method | string | null(card | usdc) | 購入時のデフォルトの支払い方法(card、usdc、または自動選択の場合は null) |
| preferred_locale | string(en | fr | es | pt-BR | ja | zh-Hans | it) | Domani インターフェースとトランザクション通信で使用されるロケール |
応答 200
| preferred_payment_method | string | null | |
| preferred_locale | string | |
| hint | string |
/api/meアカウントの削除 (ドメインが保持されている間はブロックされます)
認証されたユーザーのアカウント、トークン、Webhook、メールボックス、およびその他のアプリケーション データを完全に削除します。登録されたドメインはアカウントとともに削除されません。すべてのドメインが移管されるまで、リクエストは 409 HAS_DOMAINS で失敗します。この操作は元に戻すことができません。
応答 200
| deleted | boolean | |
| hint | string |
/api/me/activation真実のアクティベーション状態と推奨される次のアクションを取得する
サーバー由来の製品マイルストーンと機能を認識した次のアクションを返します。トークンの作成、トークンの使用、ページビュー、クライアントチェックリストの状態は意図的に除外されています。
応答 200
| version | integer | |
| account_created_at | string (date-time) | |
| entry | object | |
| milestones | object | |
| status | string | |
| recommended_actions | object[] | |
| available_paths | string[] | |
| dismissed_version | integer | |
| pending_claim | object | null |
例
curl https://domani.run/api/me/activation \ -H "Authorization: Bearer domani_sk_xxx"
/api/me/activation初回実行ガイダンスを閉じるか復元する
プレゼンテーション設定のみを保存します。製品のマイルストーンを完了することはできません。
リクエストボディ
| dismissed_version* | integer |
応答 200
| dismissed_version | integer | |
| hint | string |
/api/me/contact登録者の連絡先情報を取得する
認証済みユーザーの WHOIS 登録者連絡先情報を返します。購入時は任意です (設定されるまでは、Domani の連絡先がユーザーに代わって新しいドメインを保有します)。ドメインを移管で受け入れる前には必須です。
応答 200
| has_contact | boolean | |
| contact | RegistrantContact |
応答例
{
"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"
/api/me/contact登録者の連絡先情報を設定する
WHOIS 登録者連絡先情報を設定または更新します。購入時は任意で、ドメインを移管で受け入れる前には必須です。この情報はドメインの登録者および請求先の連絡先になります。設定されるまでは、Domani の連絡先があなたに代わってドメインを保有します。更新すると、連絡先の変更に対応するレジストラにあるすべての有効なドメインに新しい連絡先が送られ、あなたがその登録者になります。レジストラから 15 日以内に確認を求めるメールが届くことがあります。
応答 200
| contact | RegistrantContact |
例
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"}'/api/me/resend-verification連絡先メールアドレスの確認を再送信する
アカウントの連絡先メールアドレスへ確認メールを再送信します。送信はアドレスごとに 15 分に 1 回までです。
リクエストボディ
| string (email) | 確認する電子メール アドレス (デフォルトはアカウントの連絡先電子メール) |
応答 200
| sent | boolean | |
| already_verified | boolean | |
| hint | string |
/api/sessionsサインイン中のデバイスを一覧表示
アカウントにサインインしているすべてのブラウザ、モバイルアプリ、ターミナル。呼び出し元のセッション (current) が先頭です。サインインごとに独自のセッションが開くため、新しいデバイスでサインインしても他のデバイスがサインアウトされることはありません。場所はデバイスがサインインした場所 (IP から推定した国と都市) で、不明な場合は省略されます。API キーはセッションではありません。GET /api/tokens で一覧表示します。
応答 200
| sessions | object[] | |
| hint | string |
応答例
{
"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"
/api/sessions他のすべてのデバイスをサインアウト
リクエストを行っているセッションを除き、アカウントのすべてのセッションをサインアウトします。それらのデバイスは次のリクエストで再度サインインを求められます。API キーは変更されません。
応答 200
| revoked | integer | |
| hint | string |
応答例
{
"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"
/api/sessions/{id}デバイスをサインアウト
1 つのセッションをサインアウトします。current はリクエストを行っているセッションを指します (自分のサインアウトにスコープは不要)。それ以外のセッションには tokens:write が必要です。
パラメータ
| id* | string | セッション ID (GET /api/sessions から取得)、または `current` |
応答 200
| success | boolean | |
| current | boolean | 呼び出し元が自分自身をサインアウトした場合は True。そのキーはもう使えません |
| hint | string |
応答例
{
"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トークン
/api/agents/identity/{slug}/tokensエージェント ID の API トークン一覧を取得
このエージェント ID に紐付けられたトークン(マスクされたキー、スコープ、メールボックスの制限、最終使用日時)。エージェント紐付けトークンは、そのエージェントがすべてのアシスタントとメール画面を見る際のビューです。
パラメータ
| slug* | string | エージェント ID のハンドル。 |
/api/agents/identity/{slug}/tokens1 回の呼び出しでエージェントに専用の API キーを付与
このエージェント ID に紐付けられたトークンを作成します。エージェントが操作するメールボックスに制限され、エージェントが必要とする最小限のスコープ(assistant:read、assistant:write、email:read、email:write)を持ちます。このキーを使用すると、エージェントは自身の Today、自身のメールボックス、および自身に渡されたアイテムのみを読み取ります。別のエージェントを指定すると 403 が返され、オーナー専用ルート(設定、バックフィル、エクスポート)はそれを拒否します。完全なキーはこのレスポンスでのみ返されます。tokens:write が必要です。メールボックスを運用していないエージェントには、既定ではメール系のスコープが付与されず、それを要求すると 400 AGENT_MAILBOXES_REQUIRED が返されます。メールボックスのないキーは、アカウントのすべてのメールボックスに届いてしまうためです。
パラメータ
| slug* | string | エージェント ID のハンドル。 |
リクエストボディ
| name | string | デフォルトは '<slug> agent' です。 |
| scopes | string[] | デフォルトは assistant:read、assistant:write、email:read、email:write です。呼び出し元自身のスコープを超えることはできません。 |
| mailboxes | string[] | トークンが制限されるメールボックスアドレス。デフォルトはエージェントが操作するメールボックスです。 |
| expires_in | integer | 有効期限までの秒数(最大 1 年)。 |
応答 201
| success | boolean | |
| token | object | |
| agent | object | |
| hint | string |
例
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"}'/api/agents/identity/{slug}/tokens/{id}エージェントの API トークンを取り消し
このエージェント ID に紐付けられたトークンを取り消します。即座に機能しなくなります。tokens:write が必要です。
パラメータ
| slug* | string | |
| id* | string |
応答 200
| success | boolean | |
| hint | string |
/api/tokensAPI トークンをリストする
認証されたユーザーのすべての API トークンを返します。キーはセキュリティのためにマスクされています (最初の 12 文字と最後の 4 文字が表示されます)。これを使用して、アクティブなトークンを監査します。
応答 200
| tokens | TokenInfo[] |
応答例
{
"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"
/api/tokens新しいAPIトークンを作成する
新しい API トークンを作成します。完全なキーはこの応答でのみ返されます。安全に保管してください。複数のトークンを作成して、さまざまなアプリケーションのアクセスを分離できます。
リクエストボディ
| name | string | このトークンを識別するための人間が判読できる名前 |
| expires_in | integer | トークンの有効期間 (秒単位) (最小 3600 = 1 時間、最大 31536000 = 1 年)。有効期限がない場合は省略します。 |
| expires_at | string (date-time) | 絶対有効期限 (ISO 8601)。 expires_in の代替。 |
| scopes | string[] | このトークンの権限スコープ。フルアクセスには ['*'] を使用します (デフォルト)。トークンは、すでに持っているスコープのみを付与できます (スコープの減衰)。スコープ: 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_tx | number | トランザクションごとの支出上限 (USD)。これを超える 1 回のチャージは 403 SPEND_CAP_EXCEEDED で失敗します。トークンは、それ自体の上限以下の上限のみを付与できます (それ以外の場合は CAP_ESCALATION)。 |
| max_per_month | number | このトークンを使用して行われたすべての有料操作にわたる、米ドルでのローリング暦月の支出上限。 |
| agent_identity_id | string | このアカウントが所有するエージェント ID のオプションの ID。トークンを使用して行われたメール アクションは、そのエージェントに帰属します。 |
| http_route_policy | object | http-routes:read または http-routes:write を持つスコープ指定トークンに必須の構造化された権限。 |
| mailboxes | string[] | トークンをこれらのメールボックス アドレス (slug@domain) に限定します。限定されたトークンは、それらのメールボックスのみを参照して操作できます。限定された呼び出し元は、自身の範囲のサブセットのみを委任できます (それ以外の場合は 400 MAILBOX_ESCALATION)。 |
応答 201
| id | string | |
| name | string | |
| key | string | 完全な API キー - これを保存すると、再度表示されなくなります |
| expiresAt | string (date-time) | null | このトークンの有効期限が切れたとき (null = なし) |
| scopes | string[] | このトークンに付与される権限スコープ |
| createdAt | string (date-time) | |
| max_per_tx | number | null | トランザクションごとの支出上限 (USD) (null = 上限なし) |
| max_per_month | number | null | 毎月の支出上限 (USD) (null = 上限なし) |
| mailbox_ids | string[] | このトークンが限定されているメールボックス ID |
| http_route_policy | HttpRoutePolicy | |
| agent_identity | object | 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"}'/api/tokens/{id}APIトークンを取り消す
API トークンを永久に取り消します。このトークンを使用するアプリケーションはすぐにアクセスできなくなります。この操作は元に戻すことができません。
パラメータ
| id* | string | トークン ID (GET /api/tokens 応答から) |
応答 200
| success | boolean |
応答例
{
"success": true
}例
curl -X DELETE https://domani.run/api/tokens/cm5abc123 \ -H "Authorization: Bearer domani_sk_xxx"
/api/auditセキュリティ監査イベントのリストを表示する
アカウントのセキュリティ監査ログを新しい順に返します。トークンのライフサイクル(作成、失効、権限昇格の試行)、支出上限と max_price による拒否、請求、支払いリクエスト、ブロックされたアカウント削除を含みます。エージェントトークンの動作監視に使用します。
パラメータ
| limit | integer | ページごとのイベント数 |
| cursor | string | ページネーション カーソル (前のページの next_cursor) |
| type | string | イベントタイプによるフィルタリング (例: token.created、purchase.charged、purchase.denied_cap) |
応答 200
| events | object[] | |
| next_cursor | string | null | |
| hint | string |
応答例
{
"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
/api/webhooksWebhook をリストする
アカウントに構成されているすべての Webhook エンドポイントを一覧表示します。各 Webhook の URL、サブスクライブされたイベント、およびアクティブなステータスを返します。シークレットは作成後に返されることはありません。メールボックスに限定されたトークンには、自身のメールボックスに限定された Webhook だけが表示されます。
応答 200
| webhooks | object[] | |
| hint | string |
応答例
{
"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"
/api/webhooksWebhook の作成
新しい HTTPS Webhook エンドポイントを登録します。オプションの認証または X-API キーの値は保存時に暗号化され、すべての配信に含まれます。署名シークレットは 1 回だけ返されます。アカウントあたり最大 5 つの Webhook。メールボックスに限定されたトークンが作成した Webhook は同じメールボックスに限定され、ほかのメールボックスのメールイベントは一切受け取りません。
リクエストボディ
| url* | string (uri) | Webhook POST リクエストを受信する HTTPS URL |
| events* | string[] | サブスクライブするイベントのタイプ。 GET /api/webhooks/events を使用して、使用可能なタイプをリストします。 |
| headers | object | オプションの暗号化された認証ヘッダー。認証と X-API キーのみが受け入れられます。 |
応答 200
| id | string | |
| url | string (uri) | |
| events | string[] | |
| secret | string | HMAC-SHA256 署名シークレット (1 回のみ表示) |
| active | boolean | |
| header_names | string[] | 設定された認証ヘッダー名。値は決して返されません |
| created_at | string (date-time) | |
| hint | string |
応答例
{
"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"}}'/api/webhooks/{id}Webhook を更新する
Webhook の URL、サブスクライブされたイベント、アクティブなステータス、または暗号化された認証ヘッダーを更新します。変更したいフィールドのみを送信してください。メールボックスに限定されたトークンが操作できるのは、自身のメールボックスに限定された Webhook だけです (それ以外は 404)。
パラメータ
| id* | string | Webhook ID |
リクエストボディ
| url | string (uri) | 新しいHTTPS URL |
| events | string[] | イベントタイプの新しいリスト |
| active | boolean | 一時停止するには false を設定し、再開するには true を設定します |
| headers | object | 暗号化された認証ヘッダーを置き換えます。 {} を送信してクリアします。認証と X-API キーのみが受け入れられます。 |
応答 200
| id | string | |
| url | string (uri) | |
| events | string[] | |
| active | boolean | |
| header_names | string[] | 設定された認証ヘッダー名。値は決して返されません |
| hint | string |
/api/webhooks/{id}Webhook の削除
Webhook エンドポイントを削除します。保留中の配信はすべてキャンセルされます。これを元に戻すことはできません。メールボックスに限定されたトークンが操作できるのは、自身のメールボックスに限定された Webhook だけです (それ以外は 404)。
パラメータ
| id* | string | Webhook ID |
応答 200
| success | boolean | |
| hint | string |
/api/webhooks/{id}/deliveriesWebhook 配信の一覧表示
Webhook の最近の配信試行を取得します。イベント タイプ、HTTP ステータス、試行回数、エラーが表示されます。失敗した配信をデバッグするのに役立ちます。メールボックスに限定されたトークンが操作できるのは、自身のメールボックスに限定された Webhook だけです (それ以外は 404)。
パラメータ
| id* | string | Webhook ID |
| limit | integer | 返す Webhook 配信の最大件数 |
応答 200
| deliveries | object[] | |
| hint | string |
応答例
{
"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."
}/api/webhooks/{id}/deliveries/{deliveryId}/replayWebhook配信を再生する
不変 Webhook イベントのクローンを作成し、すぐに再配信します。イベント ペイロードとイベント ID は同一のままです。 HMAC 署名は新しいタイムスタンプを受け取ります。必須の冪等性キーにより、呼び出し側が 2 回送信を再試行しないことが保証されます。メールボックスに限定されたトークンが操作できるのは、自身のメールボックスに限定された Webhook だけです (それ以外は 404)。同一のペイロードには例外が一つあります。認証メールからコピーされた件名はマスクされて送信されます。最初の送信以降に Webhook の URL が変わっている可能性があるためです。
パラメータ
| id* | string | Webhook ID |
| deliveryId* | string | 元の配信 ID |
リクエストボディ
| idempotency_key* | string |
応答 200
| delivery_id | string | |
| original_delivery_id | string | |
| event_type | string | |
| status | string | |
| http_status | integer | null | |
| attempts | integer | |
| idempotency_key | string | |
| idempotent_replay | boolean | |
| created_at | string (date-time) | |
| hint | string |
/api/webhooks/eventsWebhook イベント タイプの一覧表示
利用可能なすべての Webhook イベント タイプを説明とともにリストします。認証は必要ありません。
応答 200
| events | object[] |
応答例
{
"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
通知
/api/notificationsリスト通知
カーソルベースのページネーションでアプリ内通知を一覧表示します。取引イベント、出品の更新、システムアラートが含まれます。 notifications:read スコープが必要です。 メールの件名を書き込み時にマスクするようになる前に書かれた通知は、email:auth_secrets のないトークンに対して、body と data.subject の認証メールの件名がマスクされた状態で読み取られます。
パラメータ
| limit | integer | 返される通知の最大数 |
| cursor | string | ページネーション用のカーソル (前の応答の next_cursor から) |
応答 200
| notifications | object[] | |
| has_more | boolean | |
| next_cursor | string | null |
/api/notifications/count未読通知数を取得する
未読通知数をポーリングするための軽量エンドポイント。 notifications:read スコープが必要です。
応答 200
| unread_count | integer |
応答例
{
"unread_count": 3
}/api/notifications/{id}通知を既読としてマークする
単一の通知を既読としてマークします。 notifications:read スコープが必要です。
パラメータ
| id* | string | 通知ID |
リクエストボディ
| read* | boolean | 既読としてマークするには true に設定します |
応答 200
| ok | boolean |
/api/notifications/read-allすべての通知を既読としてマークする
すべての未読通知を既読としてマークします。 notifications:read スコープが必要です。
応答 200
| ok | boolean | |
| count | integer | 既読としてマークされた通知の数 |
/api/notifications/preferences通知設定を取得する
カテゴリとチャネル(in_app、email)ごとにユーザーの通知設定を返します。設定がない場合はデフォルトで有効です。 notifications:read スコープが必要です。
応答 200
| preferences | object[] | |
| expiry_alert_days | integer[] | 有効期限の前日、ユーザーは更新のリマインダーを受け取ります (デフォルトは 30/7/1)。空 = 有効期限のリマインダーはありません。 |
/api/notifications/preferences通知設定を更新する
特定のカテゴリとチャネルの通知設定を更新します。 notifications:read スコープが必要です。
リクエストボディ
| preferences | object[] | |
| expiry_alert_days | integer[] | 更新通知を受け取る有効期限の前日。空の配列 = 有効期限リマインダーなし。 |
応答 200
| ok | boolean |
TLD
/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_price | number | 最大登録価格(USD) |
| min_price | number | 最低登録価格(USD) |
| sort | string(tld | price | renewal) | 並べ替えフィールド - 'tld' (アルファベット順)、'price' (登録)、または 'renewal' |
| order | string(asc | desc) | 並べ替え順序 |
| search | string | この文字列を含むTLD名をフィルタリングします |
| limit | integer | ページあたりの最大結果 |
| offset | integer | スキップする結果の数 |
| kind | string | 返す種類 (カンマ区切り): `tld`、`second_level`、`alt_root`。既定値: `tld,second_level` (パブリック DNS で名前解決されるエントリ)。`alt_root` のエントリ (IANA ルートゾーン外) は、指定した場合にのみ返されます。 |
応答 200
| tlds | TldInfo[] | |
| total | integer | 一致する TLD の合計 (ページネーション前) |
| offset | integer | |
| limit | integer | 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
ドメイン検索
/api/domains/search公共ドメインの可用性と価格を確認する
RDAP と小売価格を介して 1 つ以上のドメインの可用性と価格を確認します。RDAP で未登録とされた名前は、続いてレジストラで確認されます。レジストリのプレミアム名または予約名は、available: false、registry_status、reason 付きで返されます。単一のドメインの場合は q を使用するか (フラット オブジェクトを返す)、複数のドメインの場合は domains を使用します (配列を返します)。 Accept: text/event-streamヘッダーを介して SSE ストリーミングをサポートします。接続を閉じると、サーバー側で実行中のすべての RDAP ルックアップがキャンセルされます。リクエストあたり最大 200 ドメイン。 パブリック エンドポイント - 認証は必要ありません。認証されたリクエストには、より高いレート制限が適用されます (60/分対 20/分)。
パラメータ
| q | string | TLD を含む単一ドメイン (短縮形 - フラット オブジェクトを返す)。 `domains`とは相互に排他的です。 |
| domains | string | チェックする完全なドメイン名のカンマ区切りリスト (最大 200)。配列の結果を返します。 |
| max_price | number | この価格 (USD) 未満のドメインのみを含めます |
| sort | string(price | tld) | 結果を価格または TLD 名で並べ替えます |
| source | string(all | primary | secondary) | ソースごとに結果をフィルタリングします: 「primary」 (レジストラの可用性のみ)、「secondary」 (Domani マーケットプレイスの出品のみ)、または「all」 (両方) |
| order | string(asc | desc) |
応答 200
| available | boolean | ドメインが登録可能かどうか |
| domain | string | TLDを含む完全なドメイン名 |
| price | number | 指定された通貨での登録価格 |
| currency | string | ISO 4217 通貨コード (常に USD) |
| error | boolean | RDAP ルックアップが失敗した場合は True (可用性は不明) |
| for_sale | object | ドメインが販売用に出品されている場合 (Domani マーケットプレイスで、または外部のアフターマーケットで検出された場合) に存在します。 |
| tld_kind | string | ドメインのサフィックスのルートゾーン上の種類: `tld`、`second_level`、`alt_root`。`alt_root` のドメインは IANA ルートゾーン外にあり、パブリック DNS では名前解決されません。確認は行われず、理由は `reason` に示されます。 |
| registry_status | string | RDAP では未登録とされる名前をレジストリが保留している場合に設定されます: `premium` (レジストリが独自に価格を設定。`registry_price` を参照) または `reserved` (登録できません)。このような結果は `POST /api/domains/buy` で登録できないため `available: false` となり、`reason` に理由が示されます。 |
| registry_price | number | レジストラが価格を提示した場合に `premium` の結果に含まれます: レジストリが設定する初年度の価格 (USD)。`price` は TLD の標準価格のままで、この名前には適用されません。 |
| renewal_price | number | この名前を登録するレジストラでの、初年度以降の各年の料金 (USD)。更新時に請求される金額です。不明な場合は含まれません。`premium` の結果では、`price` と同じく TLD の標準価格です。 |
| reason | string | ドメインが提供されない理由: パブリック DNS 外の名前 (`tld_kind` `alt_root`)、またはレジストリが保留している名前 (`registry_status`)。 |
例
curl "https://domani.run/api/domains/search?q=mysite.com"
/api/domains/suggest公共AI を活用した可用性のあるドメインの提案
プロジェクトの説明を指定すると、クリエイティブな TLD を使用して完全なドメイン名 (codebuddy.dev、wavify.fm など) を生成し、利用可能かどうかを確認し、利用可能なドメインのみを価格とともに返します。十分な利用可能なドメインが見つかるまで再試行するエージェント ループを使用します。 Accept: text/event-stream経由で SSE ストリーミングをサポート - 接続を閉じると、実行中の LLM 生成とサーバー側の RDAP ルックアップがキャンセルされます。 パブリック エンドポイント - 認証は必要ありません。
パラメータ
| prompt* | string | ドメインの提案を生成するためのプロジェクトの説明またはキーワード (最小 3 文字) |
| count | integer | 返される利用可能なドメインの数 (デフォルトは 10) |
| exclude | string | 提案から除外するドメインのカンマ区切りのリスト (例: 以前のバッチから) |
| tlds | string | カンマ区切りの優先 TLD (ドットなし)。結果はこれらの TLD を強く支持します。 |
| style | string(single | creative | short | brandable | keyword) | 名前のスタイルの好み: 「single」 (1 語)、「creative」 (刺激的/比喩的)、「short」 (3 ~ 6 文字)、「brandable」 (発明された)、「keyword」 (説明的)。 |
| lang | string(japanese | spanish | french | italian | latin | nordic | arabic | sanskrit) | 名前の言語/文化的インスピレーション。名前はこの言語の言葉、美学、文化から引用されます。 |
応答 200
| suggestions | object[] | 利用可能なドメイン名と価格設定 |
| checked | integer | チェックされたドメインの合計 |
| iterations | integer | LLMラウンド数 |
応答例
{
"suggestions": [
{
"domain": "codebuddy.dev",
"price": 13,
"currency": "USD",
"renewal_price": 13
},
{
"domain": "aiforge.sh",
"price": 33,
"currency": "USD"
},
{
"domain": "devcraft.app",
"price": 13,
"currency": "USD"
}
],
"checked": 42,
"iterations": 2
}例
curl "https://domani.run/api/domains/suggest?prompt=AI+coding+assistant"
/api/domains/dns-check公共高速な DNS ベースのドメイン存在チェック
DNS クエリを使用して、ドメイン名が多数の TLD ですでに登録されているかどうかをテストします (検索よりも高速で、価格設定はありません)。 'taken' (確実に登録されている) 配列と 'candidates' (利用可能な可能性がある) 配列を返します。価格の検索を呼び出す前に、これを使用して絞り込みます。 パブリック エンドポイント - 認証は必要ありません。
パラメータ
| name* | string | TLD のないドメイン名、例: 「myapp」 |
| tlds* | string | チェックするカンマ区切りの TLD (例: 「com,dev,ai,io」 |
応答 200
| name | string | |
| taken | string[] | 確実に登録されているTLD |
| candidates | string[] | 利用可能な可能性のある TLD |
ドメイン
/api/domains登録されているすべてのドメインをリストする
認証されたユーザーが所有するすべてのドメインを購入日順 (新しい順) で返します。ドメイン名、ステータス、購入日、有効期限が含まれます。
応答 200
| domains | DomainRecord[] |
応答例
{
"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"
/api/agents/identityフリーエージェント ID を要求する (<ハンドル>.domani.run)
<slug>.domani.run でエージェントに無料の ID を付与します。これはライブ プロファイル ページであり、ドメインを購入する必要はありません。スムーズな開始方法。後で実際に所有されているドメインにアップグレードしてください。 account:writeが必要です。
リクエストボディ
| slug* | string | ハンドル - <slug>.domani.run になります。 |
| name | string | 表示名 |
| bio | string | |
| emoji | string | アバター絵文字 |
| string (email) | 公開連絡先 (例: 無料の @domani.run 受信箱) | |
| links | object[] |
応答 200
| id | string | スコープ指定された API トークンをバインドするために使用される安定した ID ID |
| slug | string | |
| url | string | ID サブドメイン (正規) |
| page_url | string | 常に機能するパスのフォールバック |
| name | string | null | |
| bio | string | null | |
| emoji | string | null | |
| string | null | ||
| links | object[] | |
| views | integer | |
| created_at | string (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": "🤖"}'/api/agents/identityエージェント ID をリストする
あなたが主張した無料の ID (<handle>.domani.run) をリストします。 account:readが必要です。
応答 200
| identities | AgentIdentity[] |
/api/agents/identity/{slug}エージェント ID を更新する
無料アイデンティティの name/bio/emoji/email/links フィールドを更新します。account:write が必要です。
パラメータ
| slug* | string | 更新するハンドル |
リクエストボディ
| name | string | |
| bio | string | |
| emoji | string | |
| string | ||
| links | object[] |
応答 200
| id | string | スコープ指定された API トークンをバインドするために使用される安定した ID ID |
| slug | string | |
| url | string | ID サブドメイン (正規) |
| page_url | string | 常に機能するパスのフォールバック |
| name | string | null | |
| bio | string | null | |
| emoji | string | null | |
| string | null | ||
| links | object[] | |
| views | integer | |
| created_at | string (date-time) |
/api/agents/identity/{slug}エージェント ID を解放する
無料の ID ハンドルを解放して、再び利用できるようにします。 account:writeが必要です。
パラメータ
| slug* | string | 解放するハンドル |
応答 200
| success | boolean | |
| slug | string | |
| released | boolean |
/api/agents/provision1 回の通話で完全なエージェント 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 | エージェントに与えるドメイン。まだ所有していない場合は購入。 |
| slug | string | メールボックスのローカル部分(hi@domain)。デフォルトは 'hi' です。 |
| name | string | 送信メールの表示名。 |
| webhook_url | string (uri) | 受信電子メール + ドメイン イベントを受信するためのオプションの HTTPS URL。 |
| webhook_headers | object | オプションの配信認証。値は保存時に暗号化され、返されることはありません。応答では header_names のみを公開します。 |
| webhook_events | string[] | Webhook イベントの種類。デフォルトは email.received/delivered/bounced です。 |
| payment_method | string(card | usdc | balance) | ドメインの支払い方法。 |
| payment_tx | string | USDC tx ハッシュ (2 段階フロー)。 |
| payment_chain | string(base | ethereum) | |
| years | integer | |
| max_price | number | ドメイン料金の上限 (米ドル)。実際の価格がそれを超える場合、リクエストは 400 PRICE_ABOVE_MAX で失敗し、何も請求されません。エラーの `price` フィールドは受け入れる合計金額です。その max_price で再試行する前に、ユーザーに確認してください。 |
応答 200
| domain | string | |
| domain_status | string | |
| mailbox | object | null | |
| webhook | object | null | |
| warnings | string[] | |
| hint | string | |
| next_steps | string[] |
例
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"}}'/api/domains/buy1 つ以上のドメインを購入する
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 を返します。
リクエストボディ
| domain | string | 購入する単一ドメイン (例: mysite.com) |
| domains | string[] | 購入するドメインの配列 (最大 10、ファイル上のカードが必要) |
| payment_method | string(card | usdc | balance) | 支払い方法: 'card' (デフォルト)、'usdc' (x402 - 最初の呼び出しでは支払い指示のある 402 が返されます)、または 'balance' (マーケットプレイスのクレジットを使用)。 |
| payment_tx | string | すでにオンチェーンで送信された USDC 支払いのトランザクション ハッシュ。 2 ステップの USDC フローの 2 番目の呼び出しで必要です。 |
| payment_chain | string(base | ethereum) | USDC 支払いが送信されたチェーン (例: 「base」または「ethereum」)。 |
| years | integer | 登録する年数 (1 ~ 10、デフォルトは 1)。価格は年数で乗算されます。 |
| max_price | number | 請求総額の上限 (USD)。実際の価格がこれを超えると、リクエストは 400 PRICE_ABOVE_MAX で失敗し、何も請求されません。自律エージェント向けの安全装置です。max_price がない場合の上限は検索で表示された価格です。より高いレジストラしかその名前を扱えない場合も、購入は同じように失敗します。エラーの `price` が承諾する合計で、`listed_price` と `renewal_price` が併記されます。その max_price で再試行する前に、ユーザーに確認してください。 |
| ref | string | 紹介コード (オプション) - 紹介者はコミッションを獲得します |
例
curl -X POST https://domani.run/api/domains/buy \
-H "Authorization: Bearer domani_sk_xxx" \
-H "Content-Type: application/json" \
-d '{"domain": "mysite.com"}'/api/domains/{domain}所有しているドメインに関する詳細情報を取得する
ドメインに関する包括的な情報 (ステータス、購入日、有効期限、支払い方法、セキュリティ ロック、WHOIS プライバシー、自動更新ステータス、登録日) を返します。拡張データが利用できない場合、registrarオブジェクトはnullになる可能性があります。
パラメータ
| domain* | string | あなたが所有するドメイン名 |
応答 200
| domain | string | |
| status | string | |
| auto_renew | boolean | 自動更新が有効かどうか |
| purchased_at | string (date-time) | |
| expires_at | string (date-time) | |
| days_until_expiry | integer | ドメインの有効期限が切れるまでの日数 |
| renewal_price | number | null | ドメインを保有するレジストラでの 1 年分の更新料金 (USD)。N 年の更新はその N 倍です。domani がドメインを更新できない場合、または価格が不明な場合は Null です。 |
| payment_method | string | ドメインの支払い方法 |
| payment_tx | string | null | オンチェーン送信ハッシュ (USDC 支払い) |
| registrant | string | レジストリがドメインの登録者として記載している相手。`customer`:あなた自身の連絡先情報(set_contact で設定)。`domani`:Domani のデフォルト連絡先。あなたが set_contact で連絡先を追加するまで、あなたに代わってドメインを保有します。追加すると、あなたが登録者になります。`unknown`:未確認。いずれの場合も WHOIS プライバシーにより詳細は非公開です。 |
| transfer_out | object | ドメインを別のレジストラに移管する方法。`mode` `api`:get_auth_code がコードを返します。`manual`:レジストラにそのための API がないため、Domani のチームが 1 営業日以内に手作業でコードを取得します。null:このドメインでは利用できません。 |
| registrar_status | string | ライブ レジストラ データが更新されたか、外部で管理されているか |
| registrar_checked_at | string (date-time) | レジストラの更新が試行されたとき |
| registrar | object | 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"
/api/domains/{domain}/settingsドメイン設定を更新する
所有するドメインの設定を更新します。 auto_renew、whois_privacy、security_lockをサポートします。少なくとも 1 つのフィールドを指定する必要があります。
パラメータ
| domain* | string | あなたが所有するドメイン名 |
リクエストボディ
| auto_renew | boolean | このドメインの自動更新を有効にするかどうか |
| whois_privacy | boolean | WHOISプライバシー保護を有効にするかどうか |
| security_lock | boolean | 移管に対してドメインをロックするかどうか |
応答 200
| domain | string | |
| auto_renew | boolean | |
| whois_privacy | boolean | |
| security_lock | boolean | |
| hint | string |
例
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}'/api/domains/{domain}/parkingパーキング設定を更新する
所有するドメインのパーキングとリスティングの設定を更新します。パーキング場ページを有効/無効にし、「販売中」の表示価格を設定します。パーキングが有効になっている場合、ドメインへの訪問者にはブランド ページが表示されます。出品価格が設定されると、訪問者には問い合わせフォームのある「販売中」ページが表示されます。
パラメータ
| domain* | string | ドメイン名 |
リクエストボディ
| enabled | boolean | パーキング場ページを有効にするかどうか |
| listing_price | number | null | 販売価格 (USD)、または出品を削除する場合は null |
応答 200
| domain | string | |
| parking_enabled | boolean | |
| listing_price | number | null | |
| hint | string |
/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 |
| permanent | boolean | true = 永続的 (308、デフォルト)、false = 一時的 (307) |
応答 200
| domain | string | |
| redirect_url | string | null | |
| permanent | boolean |
/api/domains/{domain}/redirectドメインの転送を停止する
ドメインのリダイレクトを削除すると、パーキング ページに戻ります。 domains:writeスコープが必要です。
パラメータ
| domain* | string | ドメイン名 |
応答 200
| domain | string | |
| redirect_url | string | null |
/api/domains/{domain}/for-saleドメインを出品する
所有するドメインを Domani マーケットプレイスに出品して販売します。購入者は API 経由で直接購入できます。ドメインはアクティブであり、まだ出品されていない必要があります。 料金: Domani は、販売が成功した場合にプラットフォーム手数料 (デフォルト 10%) を請求します。売り手は手数料を差し引いた表示価格を受け取ります。買い手は表示価格の全額を支払います。 domains:writeスコープが必要です。
パラメータ
| domain* | string | 販売リストに掲載するドメイン名 |
リクエストボディ
| price* | number | 販売価格(米ドル) |
| description | string | オプションの出品の説明 |
応答 200
| listing | object | |
| hint | string |
応答例
{
"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."
}/api/domains/{domain}/for-saleドメイン出品を更新する
アクティブなマーケットプレイスの出品の価格や説明を更新します。少なくとも 1 つのフィールドを指定する必要があります。 domains:writeスコープが必要です。
パラメータ
| domain* | string | アクティブな出品のあるドメイン名 |
リクエストボディ
| price | number | 新しい販売価格 (USD) |
| description | string | null | 新しい説明 (クリアするには null) |
応答 200
| listing | object | |
| hint | string |
応答例
{
"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."
}/api/domains/{domain}/for-saleドメインの出品をキャンセルする
所有するドメインのアクティブな販売出品を削除します。ドメインはアカウントに残りますが、マーケットプレイスでは購入できなくなります。 domains:writeスコープが必要です。
パラメータ
| domain* | string | リストから除外するドメイン名 |
応答 200
| domain | string | |
| status | string | |
| hint | string |
応答例
{
"domain": "example.com",
"status": "cancelled",
"hint": "Listing for example.com has been cancelled."
}/api/domains/{domain}/analyticsパーキング場分析を取得する
パークされたドメインの訪問者分析 - ページビュー、問い合わせ、コンバージョン率、30 日間の日次内訳、最近の問い合わせを取得します。
パラメータ
| domain* | string | ドメイン名 |
応答 200
| domain | string | |
| views_7d | integer | 過去 7 日間の合計ページビュー |
| views_30d | integer | 過去 30 日間の合計ページビュー |
| inquiries_30d | integer | 過去 30 日間の問い合わせの合計 |
| conversion_rate | number | お問い合わせと閲覧の割合(パーセンテージ) |
| daily_views | object[] | 過去 30 日間の毎日の視聴数 |
| recent_inquiries | object[] | 最近のお問い合わせ5件 |
| hint | string |
応答例
{
"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)."
}/api/domains/{domain}/auth-codeEPP認証コードを取得する
ドメインを別のレジストラに移管するために必要な 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
| domain | string | |
| status | string | `ready`:コードは auth_code にあります。`requested`:Domani のチームがレジストラからコードを取得中です。準備ができるとユーザーにメールが届きます。 |
| auth_code | string | null | 新しいレジストラに渡す EPP 認証コード。status が requested の間は null。 |
| was_unlocked | boolean | 移管のためにドメインのロックが解除されたかどうか |
| requested_at | string (date-time) | コードがリクエストされた日時 (そのための API がないレジストラの場合) |
| expected_by | string (date-time) | Domani のチームがコードを用意する期限 (status が requested の場合) |
| hint | string | |
| next_steps | string[] |
/api/domains/{domain}/transfer-awayドメイン移管(転出)ステータスを取得
ドメインの移管アウトのステータスを確認します。認証コードを取得し、新しいレジストラで移管を開始した後に使用します。transfer_out.mode が manual のドメインでは利用できません。
パラメータ
| domain* | string | あなたが所有するドメイン名 |
応答 200
| domain | string | |
| status | string | |
| gaining_registrar | string | |
| request_date | string (date-time) | |
| hint | string |
/api/domains/{domain}/transfer-statusドメイン移管(転入)ステータスを確認
受信ドメイン移管のステータスを確認します。実用的なヒントを含む詳細なステータスを返します。 POST /api/domains/transfer で移管を開始した後に使用します。
パラメータ
| domain* | string | あなたが所有するドメイン名 |
応答 200
| domain | string | |
| status | string | |
| timestamp | string | 最後のステータス更新のタイムスタンプ |
| hint | string | 現在の状況に基づいた実用的なガイダンス |
| continuity | object | 安全なドメイン移管のために記録された委任情報と移管後の検証。 |
/api/domains/import外部ドメインをインポートする
別のレジストラー (GoDaddy、Namecheap、Cloudflare など) で所有するドメインをインポートし、domani.run を通じて管理します。無料、乗り換え不要。 DNS ベースの所有権検証用の TXT レコードを返します。
リクエストボディ
| domain* | string | インポートするドメイン |
応答 200
| domain | string | |
| status | string | |
| token | string | |
| txt_record | object | |
| hint | string |
/api/domains/import/verifyドメインのインポートを確認して完了する
DNS TXT レコードを確認し、ドメインのインポートを完了します。 POST /api/domains/import によって返された TXT レコードを追加した後に呼び出します。 Cloudflare DNS-over-HTTPS を使用して伝播をチェックします。
リクエストボディ
| domain* | string | 確認するドメイン |
応答 201
| domain | string | |
| status | string | |
| expires | string (date-time) | |
| registrar | string | |
| payment_method | string | |
| hint | string |
/api/domains/adoption-plan既存のドメインを採用する方法を計画する
既存のドメインを接続または移管する前に、そのドメインを読み取り専用で検査します。現在のレジストラ、権威ネームサーバー、DNS プロバイダー、DNSSEC 状態、アカウント状態、移転価格、安全性の不変条件、および正確な次の API アクションを返します。 EPP コードをリクエストする前にこれを呼び出します。接続すると、レジストラと DNS は変更されません。移管ではネームサーバーが保持され、DNS は移行されません。
パラメータ
| domain* | string | 検査する既存のドメイン。 mysite.com |
応答 200
| version | integer | |
| domain | string | |
| registered | boolean | |
| account_state | string | |
| recommended_action | string | |
| current | object | |
| options | object | |
| invariants | string[] | |
| warnings | string[] |
/api/domains/transfer-check譲渡資格の事前確認
開始する前に、ドメインが移管の対象となるかどうかを確認してください。移転価格、資格ステータス、およびブロッカー (サポートされていない TLD、ICANN 待機期間、ドメインのロック) を返します。 POST /api/domains/transfer の前にこれを呼び出します。
パラメータ
| domain* | string | チェックするドメイン、例: mysite.com |
応答 200
| domain | string | |
| tld | string | |
| eligible | boolean | |
| price | number | null | USD での移転価格 (TLD がサポートされていない場合は null) |
| currency | string | |
| renewal_price | number | 移転可能な場合のみ: 移転先のレジストラでの、移転後の各年の料金 (USD)。不明な場合は含まれません。 |
| reason | string | 資格がない場合、人が読める形式の理由 |
| code | string | |
| eligible_at | string (date) | ドメインが適格となる ISO 日付 (ICANN 待機期間) |
| hint | string |
/api/domains/transfer-watchドメインの移管資格を監視する
ドメインを監視し、移管可能になったときに通知(メール + transfer.eligible Webhook)を受け取ります。RDAP で EPP ステータスコードと ICANN の 60 日ロック期間を確認します。すでに移管可能な場合は、監視を作成せず直ちに返します。
リクエストボディ
| domain* | string | 監視するドメイン、例: mysite.com |
応答 200
| domain | string | |
| eligible | boolean | ドメインが現在移管できるかどうか |
| eligible_at | string (date) | ドメインが適格となる ISO 日付 (まだ適格でない場合) |
| hint | string | 実用的なガイダンス |
| watching | boolean | 通知が設定されているかどうか |
/api/domains/transfer別のプロバイダーからドメインを移管する
planDomainAdoption と明示的な価格の確認後に、ドメイン移入を開始します。現在のプロバイダーからの認証/EPP コードが必要です。既存の権限のあるネームサーバーは保存され、検証されます。 DNS の移行は暗黙的に行われることはありません。通常、移管が完了するまでに 1 ~ 5 日かかります。お支払いはカードまたは USDC 経由で前払いされます。
リクエストボディ
| domain* | string | 移管するドメイン、例: mysite.com |
| auth_code* | string | 現在のプロバイダーからの認可/EPP コード |
| payment_method | string(card | usdc | balance) | 支払い方法: 「card」 (デフォルト)、「usdc」、または「balance」 (マーケットプレイスのクレジット)。 |
| payment_tx | string | すでにオンチェーンで送信された USDC 支払いのトランザクション ハッシュ。 |
| payment_chain | string(base | ethereum) | USDC 支払いが送信されたチェーン。 |
| extra_subdomains | string[] | 移管前の DNS スナップショットに含める追加のサブドメイン。CT ログ、SPF、MX/DKIM 推論、一般的な単語リストからサブドメインを自動検出します。検出できない可能性があるカスタムサブドメインを指定してください。 |
| max_price | number | 移管費用の上限 (USD)。実際の価格がこれを超えると、リクエストは 400 PRICE_ABOVE_MAX で失敗し、何も請求されません。max_price がない場合の上限は表示された移管価格です。より高いレジストラしか扱えない場合も、移管は同じように失敗します。エラーの `price` が承諾する合計です。その max_price で再試行する前に、ユーザーに確認してください。 |
応答 202
| domain | string | |
| status | string | |
| expires | string (date-time) | |
| price | number | |
| currency | string | |
| payment_method | string | |
| payment_tx | string | |
| auto_renew | boolean | |
| hint | string | |
| dns_snapshot | object | 移管前に取得された復旧バックアップの概要。明示的な復旧操作が必要な場合にのみ適用されます。 |
| nameservers_preserved | boolean | |
| dns_migration | string | |
| continuity | object |
例
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"}'/api/domains/{domain}/renewドメインを更新する
所有するドメインをさらに 1 年間 (1 ~ 10 年) 更新します。お支払いは前払いとなります。新しい有効期限が応答で返されます。ドメインのレジストラが更新を拒否した場合 (過去 30 日以内に更新済み、またはレジストラが販売していない期間)、リクエストは請求の前に 400 RENEWAL_NOT_ELIGIBLE で失敗します。価格は GET /api/domains/{domain} の renewal_price に years を掛けた金額です。その合計を max_price として送信すると、価格が変わった場合は請求の前に失敗します。
パラメータ
| domain* | string | あなたが所有するドメイン名 |
リクエストボディ
| years | integer | 更新する年数 (デフォルトは 1) |
| payment_method | string(card | usdc | balance) | 支払い方法: 「card」 (デフォルト)、「usdc」、または「balance」 (マーケットプレイスのクレジット)。 |
| payment_tx | string | すでにオンチェーンで送信された USDC 支払いのトランザクション ハッシュ。 |
| payment_chain | string(base | ethereum) | USDC 支払いが送信されたチェーン。 |
| max_price | number | 更新料金の上限は米ドルです。実際の価格がそれを超える場合、リクエストは 400 PRICE_ABOVE_MAX で失敗し、何も請求されません。エラーの `price` フィールドは受け入れる合計金額です。その max_price で再試行する前に、ユーザーに確認してください。 |
応答 200
| domain | string | |
| renewed_years | integer | |
| new_expiry | string (date-time) | |
| price | number | |
| currency | string | |
| payment_method | string | |
| payment_tx | string |
例
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}'/api/domains/{domain}/buy-aftermarketアフターマーケットドメインを購入する
Domani を通じて、アフターマーケット (Afternic / Sedo) で販売されている登録済みドメインを今すぐ購入できる価格で購入します。出品価格は請求前にライブで再チェックされます。支払う金額の上限を指定するには、max_priceを渡します。メイクオファーのみの商品はここでは購入できません。代わりにブローカー (POST /api/broker) を使用して価格を交渉してください。支払いは登録のように機能します: カード、Base (x402) の USDC、またはマーケットプレイスの残高。 domains:transferスコープが必要です。成功すると、ドメインがアカウントに追加されます (status: active、または段階的な移管が完了する間のprovisioning)。
パラメータ
| domain* | string | 購入するアフターマーケットに上場されているドメイン |
リクエストボディ
| max_price | number | USDでの厳しい価格上限。デフォルトは出品の今すぐ購入価格です。ライブ価格がこれを超える場合、購入は拒否されます。 |
| payment_method | string(card | usdc | balance) | 支払い方法: 「card」 (デフォルト)、「usdc」、または「balance」 (マーケットプレイスのクレジット)。 |
| payment_tx | string | すでにオンチェーンで送信された USDC 支払いのトランザクション ハッシュ。 |
| payment_chain | string(base | ethereum) | USDC 支払いが送信されたチェーン。 |
応答 201
| domain | string | |
| status | string | 購入完了時は「active」、段階的なドメイン移管の完了待ちは「provisioning」です。 |
| price | number | |
| currency | string | |
| payment_method | string | |
| payment_tx | string | |
| marketplace | string | ドメインが購入されたアフターマーケット (例: 「Afternic」、「Sedo」)。 |
| hint | string | |
| next_steps | string[] |
例
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
/api/domains/{domain}/dns所有するドメインの DNS レコードを取得する
所有するドメイン (A、AAAA、CNAME、MX、TXT、NS など) に設定されているすべての DNS レコードを返します。それぞれに安定した id と zone_version トークン (ETag ヘッダーとしても送信されます) が含まれます。同時のゾーン変更を検出するには、PUT で zone_version を渡します。
パラメータ
| domain* | string | あなたが所有するドメイン名 |
応答 200
| domain | string | |
| records | DnsRecord[] | |
| zone_version | string | ゾーン全体のオプティミスティック同時実行トークン。同時変更を上書きするのではなく、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"
/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_version | string | 以前の GET からのzone_version。不一致の場合、書き込みは 409 DNS_VERSION_CONFLICT (何も書き込まれません) で拒否されます。別のアクターが同じゾーンを編集する可能性がある場合は常に推奨されます。 |
応答 200
| success | boolean | |
| domain | string | |
| records | DnsRecord[] |
応答例
{
"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}
]}'/api/domains/{domain}/dnssec所有するドメインの DNSSEC DS レコードを一覧表示する
所有するドメインのレジストリで公開された DNSSEC 委任署名者 (DS) レコードと、DNSSEC が有効かどうかを返します。 DANE の TLSA レコード (DNS エンドポイント経由で設定) とペアになります。
パラメータ
| domain* | string | あなたが所有するドメイン名 |
応答 200
| domain | string | |
| enabled | boolean | 少なくとも 1 つの DS レコードが公開されている場合は True |
| records | DsRecord[] |
応答例
{
"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"
/api/domains/{domain}/dnssecDNSSEC DS レコードを公開する (DNSSEC を有効にする)
レジストリで委任署名者 (DS) レコードを公開し、ドメインの DNSSEC を有効にします。ゾーンに署名した後、DNS/ゾーン プロバイダーから DS 値を取得します。
パラメータ
| domain* | string | あなたが所有するドメイン名 |
応答 200
| success | boolean | |
| domain | string | |
| enabled | boolean | |
| records | DsRecord[] |
例
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..."}'/api/domains/{domain}/dnssecDNSSEC DS レコードを削除する (DNSSEC を無効にする)
キータグによってレジストリの委任署名者 (DS) レコードを削除します。すべての DS レコードを削除すると、ドメインの DNSSEC が無効になります。
パラメータ
| domain* | string | あなたが所有するドメイン名 |
| keyTag* | string | 削除する DS レコードのキータグ |
応答 200
| success | boolean | |
| domain | string | |
| enabled | boolean | |
| records | DsRecord[] |
例
curl -X DELETE "https://domani.run/api/domains/mysite.com/dnssec?keyTag=12345" \ -H "Authorization: Bearer domani_sk_xxx"
/api/domains/{domain}/dns/snapshotDNSスナップショットをキャプチャする
パブリック DNS ルックアップ (Cloudflare DoH) 経由でドメインのすべての DNS レコードをキャプチャします。 Certificate Transparency ログ、SPF レコード、および共通名からサブドメインを検出します。スナップショットはバックアップとしてサーバー側にも保存されます。
パラメータ
| domain* | string | あなたが所有するドメイン名 |
リクエストボディ
| extra_subdomains | string[] | スナップショットに含める追加のサブドメイン |
応答 200
| domain | string | |
| records | DnsRecord[] | |
| subdomains | string[] | |
| sources | string[] | |
| capturedAt | string (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"
/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 | あなたが所有するドメイン名 |
リクエストボディ
| snapshot | object | DNS スナップショット オブジェクト (スナップショット エンドポイントによって返される)。省略した場合、保存されているサーバー側のバックアップが使用されます。 |
| dry_run | boolean | プレビューのみ: 何も書き込まずに、復元で作成 (would_apply) され、スキップされるものを返します。 |
応答 200
| domain | string | |
| applied | integer | 作成されたレコードの数 |
| skipped | integer | すでに存在するレコードの数 |
| recordCount | integer | スナップショット内の合計レコード数 |
| errors | string[] | |
| dry_run | boolean | これがプレビューの場合は True - 何も書き込まれませんでした |
| would_apply | DnsRecord[] | ドライランのみ: リストアによって作成されるレコード |
応答例
{
"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"
/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* | string | DNS のコピー元のソース ドメイン (自分のものである必要があります) |
| replace | boolean | 正確なミラー - ソースにないターゲット レコードを削除します。デフォルト: マージ |
応答 200
| success | boolean | |
| from_domain | string | |
| to_domain | string | |
| records | DnsRecord[] |
例
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"}'/api/domains/{domain}/nameserversドメインのネームサーバーを取得する
所有するドメインに対して構成された権限のあるネームサーバーを返します。空の場合、ネームサーバーが割り当てられるまで、DNS 操作 (パーキング、電子メール、接続) は失敗します。
パラメータ
| domain* | string | あなたが所有するドメイン名 |
応答 200
| domain | string | |
| nameservers | string[] | |
| default_nameservers | string[] | ドメインのゾーンを配信するネームサーバー: Domani がそこでゾーンをホストしている場合はゾーンホスト、それ以外はレジストラのデフォルト (不明な場合は null) |
| dns_provider | string | ドメインのゾーンに応答する主体: レジストラ自身の DNS、Domani が Cloudflare でホストするゾーン、またはインポートされたドメインの場合は外部プロバイダー |
| hint | string |
応答例
{
"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"
/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
| success | boolean | |
| domain | string | |
| nameservers | string[] | |
| hint | string |
応答例
{
"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"]}'接続する
/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 | あなたが所有するドメイン名 |
リクエストボディ
| target | string | 自動検出のターゲット URL (例: my-app.vercel.app) |
| provider | string | 明示的なプロバイダ名 (例: vercel、google-workspace) |
| method | string | プロバイダーが複数ある場合の接続方法 (例: cname-only) |
| dry_run | boolean | プレビューのみ: 何も書き込まずに差分 (create/replace/already_set/keep) を返します。 |
| confirm_replace_mx | boolean | 接続が別のプロバイダーを指す既存の MX レコードを置き換える場合に必要です (それ以外の場合は 409 MX_REPLACEMENT_REQUIRES_CONFIRMATION)。ドメインの電子メールを再ルーティングします。 |
応答 200
| domain | string | |
| provider | string | |
| category | string | |
| method | string | |
| records | DnsRecord[] | |
| docs | string (uri) | |
| status | string | dns_set = レコードを自動的に書き込みます。manual_setup_required = インポート済みドメインのため、レジストラでレコードを追加します。dry_run = プレビューのみで、何も書き込みません。 |
| hint | string | |
| next_steps | string[] | DNS レコードの設定後に完了するプロバイダー固有のアクション |
| diff | object | ドライランのみ:書き込みによる処理(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"}'/api/domains/{domain}/connectドメインに接続するために利用可能なプロバイダーをリストする
サポートされているすべてのホスティング プロバイダーと電子メール プロバイダーをその接続方法とともに返します。これを使用して、POST を呼び出す前に利用可能なプロバイダーを確認します。
パラメータ
| domain* | string | あなたが所有するドメイン名 |
応答 200
| domain | string | |
| providers | object |
/api/domains/{domain}/verifyプロバイダー接続が機能していることを確認する
プロバイダーの検証チェックを実行して、DNS レコードが伝播され、接続がアクティブであることを確認します。 POST /api/domains/{domain}/connect の後に使用して確認します。
パラメータ
| domain* | string | あなたが所有するドメイン名 |
リクエストボディ
| target | string | 自動検出の対象 |
| provider | string | プロバイダ名 |
| method | string | メソッド名 |
応答 200
| domain | string | |
| provider | string | |
| method | string | |
| verified | boolean | |
| message | string | |
| hint | string | |
| next_steps | string[] | プロバイダー固有のトラブルシューティング手順 (検証結果が 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"}'ステータス
/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
| domain | string | |
| status | string | |
| expires | string (date-time) | |
| days_until_expiry | integer | |
| dns | object | |
| ssl | object | |
| object |
応答例
{
"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"
サービスの検証
/api/domains/{domain}/verify-serviceDNS レコードを追加してサードパーティ サービスのドメイン所有権を確認する
正しい 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
| domain | string | |
| service | string | |
| service_display_name | string | |
| known_service | boolean | |
| records_added | DnsRecord[] | |
| total_records | integer | |
| docs | string (uri) | null | |
| hint | string |
応答例
{
"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"}'/api/domains/{domain}/verify-serviceドメイン検証でサポートされているサービスの一覧表示
すべての既知のサービスをその名前、説明、ドキュメント URL とともに返します。不明なサービスは汎用 TXT レコードにフォールバックします。
パラメータ
| domain* | string | あなたが所有するドメイン名 |
応答 200
| domain | string | |
| services | object[] | |
| hint | string |
発見
/api/domains/{domain}/profile公共パブリック ドメイン プロファイルを取得する
ドメインのプライバシーに安全で証拠に裏付けられた最新の公開文書を返します。このエンドポイントは、マスクされた観察や生の登録連絡先詳細を返すことはありません。
パラメータ
| domain* | string |
応答 200
| profile | PublicDomainProfile |
/api/domains/{domain}/profile公共パブリック ドメイン プロファイルを調査または更新する
パブリック レジストリ、DNS、ライブ サイト、構造化データ、およびアーカイブ ソースを使用して限定された分析を実行し、正規のパブリック ページのプライバシーに安全なプロファイルを保存します。インスタント深度は、高速な最初のレンダリングに使用されます。 deep がデフォルトで、歴史的調査が追加されます。
パラメータ
| domain* | string | |
| depth | string(instant | deep) | 研究の深さ。デフォルトはディープです。 |
応答 201
| profile | PublicDomainProfile |
/api/domains/whois公共RDAP経由でドメイン登録データを検索する
RDAP (登録データ アクセス プロトコル) ネットワークにドメイン登録データをクエリします。レジストラ、作成/有効期限/更新日、有効期限までの日数、ステータス コード、ネームサーバー、DNSSEC ステータス、および連絡先情報 (登録者、管理担当、技術担当、請求担当、不正利用対応) を返します。どのドメインでも機能します - 所有権は必要ありません。 RDAP は、WHOIS に代わる最新の JSON ネイティブです。 RDAP を使用しない TLD の場合は WHOIS (ポート 43) にフォールバックし、連絡先が見つからない場合は WHOIS 参照データで RDAP を補完します (GDPR 後の一般的)。連絡先情報は、GDPR またはプライバシー保護サービスにより、部分的または完全にマスクされる場合があります。 パブリック エンドポイント - 認証は必要ありません。認証されたリクエストには、より高いレート制限が適用されます (30/分対 10/分)。
パラメータ
| q* | string | 検索するドメイン (例: example.com) |
応答 200
| domain | string | |
| registered | boolean | ドメインが現在登録されているかどうか |
| registrar | string | null | 現在のレジストラ名 |
| registrar_url | string | null | レジストラ Web サイトの URL |
| registrar_iana_id | string | null | レジストラ IANA ID (RDAP publicIds から) |
| created | string | null | 登録日(YYYY-MM-DD) |
| expires | string | null | 有効期限 (YYYY-MM-DD) |
| updated | string | null | 最終更新日 (YYYY-MM-DD) |
| days_until_expiry | integer | null | 有効期限までの日数 (登録されていない場合は null) |
| status | string[] | EPPステータスコード |
| nameservers | string[] | 権限のあるネームサーバー |
| dnssec | boolean | DNSSECが有効かどうか |
| redacted | boolean | WHOIS/RDAP データがプライバシーのためにマスクされているかどうか (GDPR) |
| contacts | object | 役割別の連絡先情報 (利用可能なデータがない場合は null、マスクされた場合はフィールドが null になる可能性があります) |
例
curl "https://domani.run/api/domains/whois?q=google.com"
/api/domains/{domain}/og公共ドメインの Web サイト プレビュー メタデータを取得する
ドメインの Open Graph メタデータ (タイトル、説明、画像、ファビコン) を返します。データは遅延フェッチされ、7 日間キャッシュされます。ドメインに対する最初のリクエストには 1 ~ 5 秒かかる場合があります (ライブフェッチ)。後続のリクエストは即座に行われます (キャッシュ ヒット)。サイトにアクセスできない場合、または OG タグがない場合は、null フィールドを返します。 パブリック エンドポイント - 認証は必要ありません。
パラメータ
| domain* | string | メタデータを取得するドメイン (例: google.com) |
応答 200
| title | string | null | ページタイトル (og:title > twitter:title > <title>) |
| description | string | null | ページの説明 (og:description > メタディスクリプション) |
| image | string | null | OG画像URL(絶対) |
| favicon | string | null | ファビコン URL (絶対) |
例
curl "https://domani.run/api/domains/google.com/og"
請求
/api/billing/setup支払い方法を追加するための URL を取得する
クレジットカードを追加するために、Stripe Checkout の url と SetupIntent の client_secret を常に両方返します。Stripe.js を実行できないエージェントはブラウザで url を開き、ユーザーにそこでカードを追加するよう伝えてください。Stripe Elements を直接埋め込むフロコード (Domani のダッシュボードなど) は代わりに client_secret を使用します。これはカードでドメインを購入する前に必要です。ユーザーがチェックアウトを完了すると、ダッシュボードにリダイレドされます。
リクエストボディ
| mode | string(setup_intent | checkout) | 非推奨: この値に関係なく `url` と `client_secret` は常に両方返されます。後方互換性のために残されています。 |
応答 200
| url | string (uri) | Stripe Checkout URL - ブラウザで開いてカードを追加します |
| client_secret | string | Stripe SetupIntent クリエント シーレット。Stripe.js を直接使用するフロコード向け |
| hint | string | 次のステップのガイダンス |
応答例
{
"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"
/api/billing/card保存した支払い方法を削除する
ユーザーの保存したクレジット カードをアカウントから削除します。削除後、ドメインを購入する前に新しいカードを追加する必要があります。
応答 200
| removed | boolean |
応答例
{
"removed": true
}例
curl -X DELETE https://domani.run/api/billing/card \ -H "Authorization: Bearer domani_sk_xxx"
/api/billing/connectマーケットプレイスの支払いステータスを取得する
販売者の Stripe Connect オンボーディング ステータスと利用可能なマーケットプレイスの残高を返します。オンボーディングが完了し、販売者が銀行支払いを受け取ることができると、payouts_enabled は true になります。
応答 200
| onboarded | boolean | 販売者は Connect オンボーディングの詳細を送信しました |
| payouts_enabled | boolean | 銀行の支払いは有効です |
| details_submitted | boolean | |
| balance_cents | integer | 利用可能なマーケットプレイスの残高(セント単位) |
応答例
{
"onboarded": true,
"payouts_enabled": true,
"details_submitted": true,
"balance_cents": 45000
}例
curl https://domani.run/api/billing/connect \ -H "Authorization: Bearer domani_sk_xxx"
/api/billing/connect銀行支払いのオンボーディングを開始する
マーケットプレイス販売者向けの Stripe Connect Express オンボーディングを作成 (または再開) し、ユーザーをリダイレクトするホストされたオンボーディング URL を返します。売り手が銀行に収益を引き出す前に必要です。
応答 200
| url | string (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"
/api/billing/connect/payoutマーケットプレイスの残高を銀行に引き出す
販売者の利用可能なマーケットプレイスの残高全体を、接続されている銀行口座に転送します。完了した支払いオンボーディング (POST /api/billing/connect) が必要です。残高は送金前に確保され、失敗した場合には復元されるため、失敗しても資金が失われることはありません。
応答 200
| amount_cents | integer | 送金額(セント) |
| transfer_id | string | Stripe 転送 ID |
応答例
{
"amount_cents": 45000,
"transfer_id": "tr_123"
}例
curl -X POST https://domani.run/api/billing/connect/payout \ -H "Authorization: Bearer domani_sk_xxx"
/api/billing/invoices支払い請求書の一覧表示
請求書番号、金額、日付、PDF を表示またはダウンロードするためのリンクを含む支払い済み請求書のリストを返します。請求書は、ドメインの購入、更新、移管ごとに自動的に生成されます。
パラメータ
| limit | integer | 返送する請求書の最大数 |
応答 200
| invoices | object[] | |
| has_more | boolean | |
| hint | string |
例
curl https://domani.run/api/billing/invoices \ -H "Authorization: Bearer domani_sk_xxx"
紹介
/api/referrals紹介による収益と履歴を取得する
あなたの一意の紹介コード、手数料率 (20%)、収益の内訳 (合計、支払済み、保留中)、および紹介されたすべての購入の履歴を返します。紹介コードを他の人と共有します。他の人があなたのコードで登録すると (ref パラメータ経由で)、今後のすべてのドメイン購入に対して自動的にコミッションを受け取ります。
応答 200
| referral_code | string | 共有する独自の紹介コード |
| referral_rate | integer | 手数料率 (現在 20%) |
| total_earned_cents | integer | 総収益 (セント) |
| total_paid_cents | integer | 支払総額(セント) |
| total_pending_cents | integer | 保留中のセント単位の支払い |
| referrals | object[] |
応答例
{
"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"
バックオーダー
/api/backorders登録済みドメインをバックオーダーする
他の人が登録しているドメインを監視し、登録可能になった時点でお客様に代わって自動的に登録を試みます。空き状況は数分ごとに確認されるため、解放後すぐに処理できます。前払いはなく、登録に成功した場合のみ料金が発生します。価格上限により、解放までに登録価格が上昇しても支出を制限できます。 登録成功時の支払いには、保存済みの支払い方法(カード)または payment_method: "balance" が必要です。成功は保証されず、競争率の高いドメインは専門業者に先に登録される場合があります。
リクエストボディ
| domain* | string | 現在登録済みで、解放時の登録を試みるために監視するドメイン。 |
| max_price | number | 登録に支払う上限額(USD)。デフォルトは現在の登録価格です。現在の価格以上(>=)である必要があります。 |
| payment_method | string(card | balance) | 登録成功時に使用する支払い方法。デフォルトは優先支払い方法です。 |
応答 201
| backorder | Backorder | |
| hint | string |
例
curl -X POST https://domani.run/api/backorders \
-H "Authorization: Bearer domani_sk_xxx" \
-H "Content-Type: application/json" \
-d '{"domain": "taken.com"}'/api/backordersバックオーダーを一覧表示する
バックオーダーを新しい順に返します。status(watching、caught、failed、cancelled、expired)で絞り込みます。
パラメータ
| status | string(watching | caught | failed | cancelled | expired) | ステータスでフィルタリングします。 |
応答 200
| backorders | Backorder[] |
/api/backorders/{id}バックオーダーを取得する
パラメータ
| id* | string | バックオーダーID。 |
応答 200
| backorder | Backorder |
/api/backorders/{id}バックオーダーをキャンセルする
ドメインの監視を停止します。キャンセルできるのはwatching状態のバックオーダーのみです。
パラメータ
| id* | string | バックオーダーID。 |
応答 200
| id | string | |
| status | string | |
| hint | string |
マーケットプレイス
/api/domains/sellドメインを出品する(公開マーケットプレイス)
他のレジストラのドメインも含め、Domani マーケットプレイスで販売されているドメインを出品します。 Domani アカウントに既に存在するドメインは自動検証され、すぐに出品に表示されます (ステータスactive)。外部ドメインには TXT 所有権の検証が必要です (ステータス pending_verification)。 料金: 販売が成功した場合の 10% のプラットフォーム手数料。 deals:writeスコープが必要です。
リクエストボディ
| domain* | string | 販売リストに掲載するドメイン名 |
| price* | number | 販売価格(米ドル) |
| description | string | オプションの出品の説明 |
応答 201
| listing | object | |
| txt_record | object | null | 所有権検証のために追加する TXT レコード (外部ドメインのみ) |
| hint | string |
/api/domains/sell/verify外部リスティングの TXT 所有権を確認する
TXT 所有権レコードが外部ドメインの出品に追加されていることを確認します。成功すると、出品のステータスがpending_verificationからactiveに変わり、購入可能になります。 deals:writeスコープが必要です。
リクエストボディ
| domain* | string | 確認するドメイン名 |
応答 200
| listing | object | |
| hint | string |
/api/domains/sell/status出品状況と取引状況を確認する
ドメインの出品とアクティブな取引のステータスを確認します。出品の詳細、取引パイプラインのステータス、およびコンテキスト上のヒントを返します。 deals:read スコープが必要です。
パラメータ
| domain* | string | 確認するドメイン名 |
応答 200
| listing | object | null | |
| deal | object | null | |
| hint | string |
/api/deals取引をリストアップする
あなたが買い手または売り手であるマーケットプレイスの取引をリストします。役割またはステータスでフィルタリングします。 deals:read スコープが必要です。
パラメータ
| role | string(buyer | seller) | 役割でフィルタリングする |
| status | string(active | escrow_held | epp_pending | transfer_started | completed | refunded | expired) | ステータスによるフィルター (「active」 = すべての非ターミナル) |
| domain | string | ドメイン名でフィルタリングする |
| limit | integer | 返される取引の数 (デフォルトは 50、最大 100) |
| cursor | string | 前の応答のページネーション カーソル |
応答 200
| deals | object[] | |
| has_more | boolean | さらに結果が得られるかどうか |
| next_cursor | string | null | 次のページへのカーソル |
/api/deals外部ドメインを購入する (取引を作成する)
マーケットプレイスに上場されているドメインを購入するためのエスクロー取引を作成します。購入者の支払いは、ドメイン移管が完了するまでエスクローに保管されます。販売者には通知が届き、7 日以内に EPP/認証コードを提供する必要があります。 domains:transferスコープが必要です。
リクエストボディ
| domain* | string | 購入するドメイン名 |
| payment_method | string(card | usdc | balance) | 支払い方法: 「card」 (デフォルト)、「usdc」、または「balance」 (マーケットプレイスのクレジット)。 |
応答 201
| deal | object | |
| hint | string | |
| next_steps | string[] |
/api/deals/{id}タイムラインで取引の詳細を取得する
価格の内訳、期限、イベントのタイムラインなど、取引の詳細をすべて確認します。買い手と売り手の両方が取引にアクセスできます。 deals:read スコープが必要です。
パラメータ
| id* | string | 取引ID |
応答 200
| deal | object | |
| hint | string |
/api/deals/{id}EPP/認証コードを提供する (販売者)
販売者は、ドメイン移管を開始するための EPP/認証コードを提供します。コードは保存時に暗号化され、レジストラの移管を開始するために使用されます。最大 3 回の試行。 deals:writeスコープが必要です。
パラメータ
| id* | string | 取引ID |
リクエストボディ
| auth_code* | string | 現在のレジストラからの EPP/認証コード |
応答 200
| deal | object | |
| hint | string |
/api/deals/{id}/invoice取引の領収書/明細書を取得する
マーケットプレイス取引の役割を認識した請求書を返します。購入者は購入レシートを受け取ります。売り手は、売上、プラットフォームの手数料ライン、純支払い額を示す明細書を受け取ります。すべての支払い方法 (カード/USDC/残高) で動作します。 deals:read スコープが必要です。
パラメータ
| id* | string |
応答 200
| invoice | DealInvoice |
/api/negotiations交渉内容をリストアップする
あなたが買い手または売り手である場合の価格交渉をリストします。取引相手は匿名化されます (役割のみ)。 deals:read スコープが必要です。
パラメータ
| role | string(buyer | seller) | 自分の役割でフィルターをかける |
| status | string | ステータスで絞り込みます(open|agreed|completed|declined|expired|cancelled|all)。 |
応答 200
| negotiations | Negotiation[] |
/api/negotiationsリスティングでオファーをする
アクティブに出品されているドメインに対して、最初のオファーで匿名の価格交渉を開始します。売り手は再提示か、受け入れるか、拒否することができます。承諾すると、買い手は支払いを完了し、合意された価格で取引が成立します。 deals:writeスコープが必要です。
リクエストボディ
| domain* | string | 交渉対象となる出品されたドメイン |
| offer* | number | USDでの初回オファー |
| message | string | 販売者へのオプションのメッセージ |
応答 201
| negotiation | Negotiation |
例
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}'/api/negotiations/{id}交渉スレッドを取得する
匿名化された完全なオファー スレッドを含む取引交渉を返します (オファーには「you」または「counterparty」というラベルが付けられます)。 deals:read スコープが必要です。
パラメータ
| id* | string |
応答 200
| negotiation | Negotiation |
/api/negotiations/{id}再提示、受け入れる、または拒否する
自分の番が来たら、テーブル上の現在のオファーに応答します。 counterには新しい量が必要です。 acceptは、現在テーブルにある金額で価格をロックします。 declineすると取引交渉が終了します。 deals:writeスコープが必要です。
パラメータ
| id* | string |
リクエストボディ
| action* | string(counter | accept | decline) | |
| counter | number | USD での新しい金額 (action=counter の場合に必要) |
| message | string |
応答 200
| negotiation | Negotiation |
/api/negotiations/{id}交渉を撤回する
買い手はオープンまたは合意された交渉を撤回します。 deals:writeスコープが必要です。
パラメータ
| id* | string |
応答 200
| cancelled | boolean |
/api/negotiations/{id}/finalize合意された交渉を完了する(有料)
買い手はエスクロー取引を作成するために合意した価格を支払い、その後標準の送金フローが実行されます。マーケットプレイスでの購入と同じ支払い方法 (カード、USDC、x402) を受け入れます。支払いが行われない場合は、支払い指示を含む 402 を返します。ブローカーによる買収の場合、合意価格が設定した max_budget を超えている場合、409 BUDGET_EXCEEDED が返されます。続行するには、confirm_over_budget: true を指定して再送信してください。 domains:transferスコープが必要です。
パラメータ
| id* | string |
リクエストボディ
| payment_method | string(card | usdc | balance) | |
| payment_signature | string | null | |
| payment_tx | string | |
| payment_chain | string | |
| confirm_over_budget | boolean | ブローカー取引の場合: 合意価格が設定した max_budget を超えている場合でも続行します。 |
/api/brokerブローカーリクエストをリストします
ドメイン取得リクエストとそのステータスをリストします。 deals:read スコープが必要です。
パラメータ
| status | string | ステータスまたは「all」でフィルタリングします |
応答 200
| requests | BrokerRequest[] |
/api/broker登録済みドメインの取得をリクエストする
domani に、お客様に代わって特定の登録済みの非公開ドメインを取得するよう依頼してください。エージェントは RDAP 経由で所有者を調達し、匿名で連絡を取って交渉します。コミッションのみで、前払い料金はかかりません。所有者の関心により、匿名の交渉が開始されます。注: 多くの所有者にアクセスできません (GDPR でマスクされた WHOIS) - その後、リクエストはno_contactで終了します。 deals:writeスコープが必要です。
リクエストボディ
| domain* | string | 希望する登録済みドメイン |
| max_budget | number | USDでの上限(オプション) |
応答 201
| request | BrokerRequest |
例
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}'/api/broker/{id}ブローカーリクエストを取得する
ブローカーリクエストの 1 つを返します。 deals:read スコープが必要です。
パラメータ
| id* | string |
応答 200
| request | BrokerRequest |
/api/broker/{id}ブローカーリクエストをキャンセルする
アクティブなドメインの取得リクエストをキャンセルします。 deals:writeスコープが必要です。
パラメータ
| id* | string |
応答 200
| cancelled | boolean |
/api/broker/respond公共ブローカーの問い合わせの状態を読み取る (所有者側)
オーナー エージェント読み取りパス: 行動する前に、tokenを使用して問い合わせの現在の匿名化された状態をポーリングします。ドメイン、テーブル上の買い手のオファー、誰の動きであるか、現在利用可能なアクションを返します。購入者の身元や予算を決して公開しないでください。トークン認証済み。
パラメータ
| token* | string | お問い合わせメールからのアウトリーチ トークン。 |
応答 200
| domain | string | |
| status | string | |
| your_turn | boolean | それがオーナーの動きなのかどうか。 |
| current_offer_usd | number | null | テーブルの上の買い手のオファー。 |
| agreed_price_usd | number | null | |
| actions | string[] | 現在利用可能なアクション (offer/counter/accept/decline/opt_out のサブセット)。 |
例
curl "https://domani.run/api/broker/respond?token=<from your inbox>"
/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 は今後の連絡を停止します。 |
| price | number | USD での希望価格 (オファー/再提示に必要)。 |
応答 200
| handled | boolean | |
| outcome | string | ステータス値:opted_out | declined | negotiation_opened | countered | ignored_not_your_turn | unclear |
| status | string | |
| negotiation_id | string | |
| domain | string |
例
curl -X POST https://domani.run/api/broker/respond \
-H "Content-Type: application/json" \
-d '{"token":"<from your inbox>","action":"offer","price":800}'Auth
/api/oauth/registerOAuth クライアントを登録する (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_name | string | 同意画面に表示されます |
| token_endpoint_auth_method | string(none | client_secret_post | client_secret_basic) | |
| client_uri | string | |
| logo_uri | string |
応答 201
| client_id | string | |
| client_name | string | |
| redirect_uris | string[] | |
| token_endpoint_auth_method | string | |
| grant_types | string[] | |
| response_types | string[] | |
| client_id_issued_at | integer | |
| client_secret | string | コンフィデンシャル クライアントのみ。一度だけ返されます |
/api/oauth/tokenOAuth トークン エンドポイント
認可コード (PKCE code_verifier 付き) をアクセス トークンと交換するか、grant_type=refresh_token でローテーションします。アクセス トークンは、承認されたスコープとメールボックスの限定を保持する通常の domani API トークンです。コードは 1 回限り使用可能で、リフレッシュ トークンは使用のたびにローテーションされます。
応答 200
| access_token | string | |
| token_type | string | |
| expires_in | integer | |
| refresh_token | string | |
| scope | string |