Skip to main content
GET
/
v1
/
tools
/
email
/
domains
curl -sS https://win.oneshotagent.com/v1/tools/email/domains \
  -H "X-Agent-ID: 0x..."
{
  "agent_id": "0x2b06a0b0bD111B83509C5850d934F5Bf2076B191",
  "domains": [
    {
      "domain": "oneshotagents.com",
      "pool_status": "active",
      "provisioning_status": "verified",
      "warmup_score": null,
      "warmup_started_at": "2026-06-08T15:56:20.266Z",
      "daily_send_limit": 50,
      "daily_sent_count": 3,
      "daily_sent_date": "2026-06-08",
      "last_used_at": "2026-06-08T15:53:53.738Z"
    },
    {
      "domain": "soulhunt.ai",
      "pool_status": "active",
      "provisioning_status": "verified",
      "warmup_score": null,
      "warmup_started_at": null,
      "daily_send_limit": 50,
      "daily_sent_count": 0,
      "daily_sent_date": null,
      "last_used_at": null
    }
  ]
}

Authentication

Requires X-Agent-ID header with your wallet address. Free read endpoint — no x402 payment required.

Response

agent_id
string
The caller’s wallet (echoed).
domains
array
Every non-removed domain the caller owns. Ordered by created_at ascending (oldest first), matching how agents typically think about their pool (“first I bought…”).

Each domain

domain
string
The bare domain — oneshotagents.com, cina-lolucci.soulhunt.ai, etc.
pool_status
string
One of:
  • active — eligible for rotation.
  • warming — out of rotation until its reputation warmup score crosses WARMUP_ACTIVE_THRESHOLD (default 75). Newly-provisioned domains land here.
  • paused — manually paused via /domains/:domain/pause. Resume with /domains/:domain/resume.
  • removed — never returned by this endpoint.
provisioning_status
string
Underlying provisioning state — unprovisioned, provisioning, verified, or blocked. Distinct from pool_status: a verified row can still be warming if warmup hasn’t graduated it yet.
warmup_score
integer | null
Latest reputation warmup score (0-100). Refreshed daily by the reconciler; null until the first poll lands. Used by the rotation selector to gate warming → active (>= WARMUP_ACTIVE_THRESHOLD) and active → paused (< MIN_ROTATION_SCORE).
warmup_started_at
string | null
When the domain was enrolled in warmup (ISO 8601). null for domains that predate the warmup integration and haven’t been backfilled.
daily_send_limit
integer
Per-domain per-UTC-day cap consumed by the rotation selector. Defaults to 50; freshly-enrolled domains start at WARMUP_DAY1_LIMIT (default 20) and ramp via the lifecycle reconciler.
daily_sent_count
integer
Count of recipient-units sent today (resets when daily_sent_date rolls over).
daily_sent_date
string | null
UTC date the current daily_sent_count belongs to.
last_used_at
string | null
When this domain was last picked by rotation (drives LRU ordering).
curl -sS https://win.oneshotagent.com/v1/tools/email/domains \
  -H "X-Agent-ID: 0x..."
{
  "agent_id": "0x2b06a0b0bD111B83509C5850d934F5Bf2076B191",
  "domains": [
    {
      "domain": "oneshotagents.com",
      "pool_status": "active",
      "provisioning_status": "verified",
      "warmup_score": null,
      "warmup_started_at": "2026-06-08T15:56:20.266Z",
      "daily_send_limit": 50,
      "daily_sent_count": 3,
      "daily_sent_date": "2026-06-08",
      "last_used_at": "2026-06-08T15:53:53.738Z"
    },
    {
      "domain": "soulhunt.ai",
      "pool_status": "active",
      "provisioning_status": "verified",
      "warmup_score": null,
      "warmup_started_at": null,
      "daily_send_limit": 50,
      "daily_sent_count": 0,
      "daily_sent_date": null,
      "last_used_at": null
    }
  ]
}

Notes

  • This is a read-only inventory. To pause / resume rotation on a domain, see pause and resume.
  • Soul-owned domains (set via domains.soul_agent_id) are NOT returned here — this endpoint scopes by agent_id only.
  • Use this before a high-volume send burst to confirm there’s enough capacity left in the pool today. If sum(daily_send_limit - daily_sent_count) across active rows is below your batch size, consider buying another domain or waiting for the UTC rollover.