MisarMisar Docs
MisarMailMisarBlogMisarReachMisarPostMisarDevMisarCoderMisarSEOMisar PlatformMisar SSO
API Reference

Dedicated IPs

Request, manage, and warm up dedicated sending IP addresses

Dedicated IPs give you exclusive control over a sending IP's reputation. Unlike shared pools, your IP is never affected by other senders. Dedicated IPs are available on the Max and Enterprise plans and are billed at $29 per IP per month.

Authentication

Read operations require the ips, ips:read, or admin scope. Write operations require the ips, ips:write, or admin scope. Base URL: https://api.misar.io/mail.

Each dedicated IP belongs to a dedicated IP pool (pool_id). A hard cap of 10 dedicated IPs per account applies. New IPs are provisioned by the operations team (the ip_address starts as a placeholder) and warm up automatically.


Endpoints

MethodPathDescription
GET/api/v1/dedicated-ipsList assigned IPs
POST/api/v1/dedicated-ipsRequest a dedicated IP for a pool
GET/api/v1/dedicated-ips/:idIP details, warm-up schedule, and reputation history
PATCH/api/v1/dedicated-ips/:idUpdate warm-up flag or pool assignment

List dedicated IPs

GET/mail/v1/dedicated-ips

List all dedicated IPs assigned to the account, ordered by newest first.

Response fields

successboolean

true when the request succeeded.

dataArray<IP>

The assigned IPs. Each includes id, ip_address, hostname, ptr_record, status, warmup_enabled, warmup_start_date, warmup_day, warmup_target_volume, daily_volume, reputation_score, last_used_at, monthly_price_cents, billing_active, created_at, updated_at, and the nested dedicated_ip_pools (id, pool_name).

Request
curl https://api.misar.io/mail/v1/dedicated-ips \
  -H "Authorization: Bearer msk_YOUR_API_KEY"
200 — OK
{
  "success": true,
  "data": [
    {
      "id":                   "550e8400-e29b-41d4-a716-446655440000",
      "ip_address":           "198.51.100.42",
      "hostname":             "mail.yourdomain.com",
      "ptr_record":           "mail.yourdomain.com",
      "status":               "warming",
      "warmup_enabled":       true,
      "warmup_start_date":    "2026-03-15",
      "warmup_day":           14,
      "warmup_target_volume": 25000,
      "daily_volume":         3800,
      "reputation_score":     84,
      "last_used_at":         "2026-03-29T09:12:00Z",
      "monthly_price_cents":  2900,
      "billing_active":       true,
      "created_at":           "2026-03-15T10:00:00Z",
      "updated_at":           "2026-03-29T09:12:00Z",
      "dedicated_ip_pools": {
        "id":        "11111111-2222-3333-4444-555555555555",
        "pool_name": "Marketing"
      }
    }
  ]
}

Request a dedicated IP

POST/mail/v1/dedicated-ips

Request a new dedicated IP into an existing dedicated IP pool you own. The IP is created with a placeholder ip_address (0.0.0.0) that the operations team overwrites during provisioning; warm-up is enabled automatically. Billed at monthly_price_cents: 2900 ($29/mo).

Request body

pool_idUUIDbodyrequired

ID of a dedicated IP pool that belongs to you.

Response fields

successboolean

true when the IP was created.

dataobject

The newly created dedicated IP row.

Request
curl -X POST https://api.misar.io/mail/v1/dedicated-ips \
  -H "Authorization: Bearer msk_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "pool_id": "11111111-2222-3333-4444-555555555555" }'
201 — Created
{
  "success": true,
  "data": {
    "id":                  "550e8400-e29b-41d4-a716-446655440000",
    "pool_id":             "11111111-2222-3333-4444-555555555555",
    "ip_address":          "0.0.0.0",
    "status":              "provisioning",
    "monthly_price_cents": 2900,
    "warmup_enabled":      true,
    "warmup_day":          0
  }
}
422 — IP cap reached
{
  "success": false,
  "error": "Maximum of 10 dedicated IPs per account"
}

Get IP details

GET/mail/v1/dedicated-ips/:id

Get a single dedicated IP with its current warm-up schedule entry and its last 30 days of reputation history.

Path parameters

idUUIDpathrequired

ID of the dedicated IP.

Response fields

successboolean

true when the request succeeded.

dataobject

The IP row plus warmup_schedule_entry (the matching ip_warmup_schedule row, or null) and reputation_history (array of recent reputation samples).

Request
curl https://api.misar.io/mail/v1/dedicated-ips/550e8400-e29b-41d4-a716-446655440000 \
  -H "Authorization: Bearer msk_YOUR_API_KEY"
200 — OK
{
  "success": true,
  "data": {
    "id":                   "550e8400-e29b-41d4-a716-446655440000",
    "ip_address":           "198.51.100.42",
    "status":               "warming",
    "warmup_enabled":       true,
    "warmup_day":           14,
    "warmup_target_volume": 25000,
    "reputation_score":     84,
    "warmup_schedule_entry": { "day": 14, "daily_limit": 4000 },
    "reputation_history": [
      { "sampled_at": "2026-03-28", "reputation_score": 82 },
      { "sampled_at": "2026-03-29", "reputation_score": 84 }
    ]
  }
}

Update IP settings

PATCH/mail/v1/dedicated-ips/:id

Toggle warm-up or reassign the IP to a different pool you own.

Path parameters

idUUIDpathrequired

ID of the dedicated IP.

Request body

warmup_enabledbooleanbody

Enable or disable automatic warm-up.

pool_idUUIDbody

Reassign to a different dedicated IP pool. Must belong to you.

Response fields

successboolean

true when the update succeeded.

dataobject

The updated dedicated IP row.

Request
curl -X PATCH https://api.misar.io/mail/v1/dedicated-ips/550e8400-e29b-41d4-a716-446655440000 \
  -H "Authorization: Bearer msk_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "warmup_enabled": false, "pool_id": "66666666-7777-8888-9999-000000000000" }'
200 — OK
{
  "success": true,
  "data": {
    "id":             "550e8400-e29b-41d4-a716-446655440000",
    "warmup_enabled": false,
    "pool_id":        "66666666-7777-8888-9999-000000000000"
  }
}

Status codes

  • 200 — OK. List, detail, or update succeeded.
  • 201 — Created. Dedicated IP requested.
  • 400 — Bad request. Invalid IP id, malformed JSON, or failed body validation (error: "Validation failed" with details).
  • 401 — Unauthorized. Missing or invalid API key.
  • 403 — Forbidden. API key lacks the required ips scope.
  • 404 — Not found. Dedicated IP, or the target pool, does not belong to you.
  • 415 — Unsupported Media Type. Content-Type is not application/json on a write.
  • 422 — IP cap reached. The account already has 10 dedicated IPs.