Sendry Docs
API Reference

Dedicated IPs

Provision and manage dedicated sending IPs and their domain assignments.

A dedicated IP is an address reserved for your organization, isolated from other senders. New IPs are provisioned through your sending provider, warmed up gradually, then assigned to domains. Available on Business and Enterprise plans.


Provision a dedicated IP

POST /v1/ips

Requires full_access scope.

Request body

FieldTypeRequiredDescription
providerstringNoSending provider: ses or mailgun. Defaults to ses.
{
  "provider": "ses"
}

Response

{
  "id": "ip_abc123",
  "ip_address": "pending-ip_abc123",
  "provider": "ses",
  "status": "provisioning",
  "warmup_day": 0,
  "warmup_progress": 0,
  "pool_name": "sendry-org_abc123-ip_abc123",
  "created_at": "2025-03-12T09:00:00Z"
}

ip_address is a placeholder until the provisioning webhook confirms the address assigned by the provider. Check status with Get dedicated IP details.


List dedicated IPs

GET /v1/ips

Requires read_only scope.

Query parameters

ParameterTypeDefaultDescription
limitnumber50Results per page (1-100).
cursorstringPagination cursor.

Response

{
  "data": [
    {
      "id": "ip_abc123",
      "ip_address": "203.0.113.10",
      "provider": "ses",
      "status": "warming",
      "warmup_day": 4,
      "warmup_progress": 35,
      "pool_name": "sendry-org_abc123-ip_abc123",
      "created_at": "2025-03-12T09:00:00Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

Get dedicated IP details

GET /v1/ips/:id

Requires read_only scope. Returns the IP plus its domain assignments.

Response

{
  "id": "ip_abc123",
  "ip_address": "203.0.113.10",
  "provider": "ses",
  "status": "active",
  "warmup_day": 30,
  "warmup_progress": 100,
  "pool_name": "sendry-org_abc123-ip_abc123",
  "assignments": [
    {
      "id": "ipa_abc123",
      "domain_id": "dom_abc123",
      "domain_name": "acme.com",
      "created_at": "2025-03-20T11:30:00Z"
    }
  ],
  "created_at": "2025-03-12T09:00:00Z"
}

Status values: provisioning, warming, active, inactive


Release a dedicated IP

DELETE /v1/ips/:id

Requires full_access scope. Releases the IP, deletes its provider pool, and removes all domain assignments.

{
  "deleted": true
}

Assign IP to a domain

POST /v1/ips/:id/assign

Requires full_access scope. The IP must be in warming or active status.

Request body

FieldTypeRequiredDescription
domain_idstringYesID of the domain to assign the IP to.
{
  "domain_id": "dom_abc123"
}

Response

{
  "id": "ipa_abc123",
  "ip_id": "ip_abc123",
  "domain_id": "dom_abc123",
  "created_at": "2025-03-20T11:30:00Z"
}

Remove IP assignment

DELETE /v1/ips/:id/assign/:assignmentId

Requires full_access scope.

{
  "deleted": true
}

Plan limits

PlanDedicated IPs
FreeNone
ProNone
Business1
EnterpriseUnlimited

On this page