Manually complete warmup
Manually complete the warm-up ramp (warming_up to active), bypassing the schedule. Use only for an IP already warmed elsewhere. Completion sets warmup.progress to 100, clears warmup.daily_cap, and applies the ramp-complete allowance to the current UTC day: warmup.today.cap becomes 100000000, warmup.today.granted keeps the sends already released today, and warmup.today.remaining becomes cap minus granted. Once completion applies this allowance, an exhausted stage allowance does not block the next eligible first-attempt send. The response reports these values. On an active IP, warmup.progress and warmup.daily_cap are informational: they can keep earlier values after a suspension is lifted and do not limit sending.
POST
/
email
/
dedicated_ips
/
{id}
/
actions
/
complete_warmup
JavaScript
import Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
});
const response = await client.email.dedicatedIps.actions.completeWarmup('id');
console.log(response.data);import os
from telnyx import Telnyx
client = Telnyx(
api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted
)
response = client.email.dedicated_ips.actions.complete_warmup(
"id",
)
print(response.data)
package main
import (
"context"
"fmt"
"github.com/team-telnyx/telnyx-go"
"github.com/team-telnyx/telnyx-go/option"
)
func main() {
client := telnyx.NewClient(
option.WithAPIKey("My API Key"),
)
response, err := client.Email.DedicatedIps.Actions.CompleteWarmup(
context.TODO(),
"id",
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Data)
}
package com.telnyx.sdk.example;
import com.telnyx.sdk.client.TelnyxClient;
import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;
public final class Main {
private Main() {}
public static void main(String[] args) {
TelnyxClient client = TelnyxOkHttpClient.fromEnv();
var response = client.email().dedicatedIps().actions().completeWarmup("id");
}
}require "telnyx"
telnyx = Telnyx::Client.new(api_key: "My API Key")
response = telnyx.email.dedicated_ips.actions.complete_warmup("id")
puts(response)<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Telnyx\Client;
use Telnyx\Core\Exceptions\APIException;
$client = new Client(apiKey: getenv('TELNYX_API_KEY') ?: 'My API Key');
try {
$response = $client->email->dedicatedIps->actions->completeWarmup(
'id',
);
var_dump($response);
} catch (APIException $e) {
echo $e->getMessage();
}telnyx email:dedicated-ips:actions complete-warmup \
--api-key 'My API Key' \
--id idcurl --request POST \
--url https://api.telnyx.com/v2/email/dedicated_ips/{id}/actions/complete_warmup \
--header 'Authorization: Bearer <token>'{
"data": {
"id": "6a7f9a30-1234-4b5c-8d9e-0f1a2b3c4d5e",
"record_type": "dedicated_ip",
"ip_address": "64.16.239.170",
"ip_version": "ipv4",
"pool_id": "9b1c4d70-abcd-4e5f-8a9b-0c1d2e3f4a5b",
"region": "ewr-nj1",
"status": "active",
"warmup": {
"started_at": "2026-10-14T20:36:50.000000Z",
"progress": 100,
"daily_cap": null,
"paused": false,
"paused_at": null,
"today": {
"day": "2026-10-24",
"cap": 100000000,
"granted": 1250,
"remaining": 99998750
}
},
"billing": {
"status": "active",
"charged": true
},
"provisioning_status": "dns_confirmed",
"provisioning": {
"dns_status": "dns_confirmed",
"ptr_request_state": "confirmed",
"ptr_request_pr_url": null,
"checklist": {
"ptr_requested": true,
"ptr_authored": false,
"ptr_merged": true,
"forward_confirmed": true
}
},
"ptr_hostname": "mta-64-16-239-170.msgtelnyx.com",
"dns_confirmed_at": "2026-10-14T20:12:41.552310Z",
"quarantine_until": null,
"released_at": null,
"suspension_reason": null,
"created_at": "2026-09-30T02:03:09.474123Z",
"updated_at": "2026-10-24T21:45:00.000000Z"
}
}{
"errors": [
{
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>",
"parameter": "<string>"
}
}
]
}{
"errors": [
{
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>",
"parameter": "<string>"
}
}
]
}{
"errors": [
{
"code": "10001",
"title": "Not Found",
"detail": "The requested dedicated IP was not found"
}
]
}{
"errors": [
{
"code": "40901",
"title": "Conflict",
"detail": "a suspended dedicated IP is operator-held and cannot be activated by customer action (operator suspension: abuse review)"
}
]
}{
"errors": [
{
"code": "10015",
"title": "Validation Failed",
"detail": "complete_warmup requires status warming_up (cannot complete warmup from provisioning)",
"source": {
"pointer": "/data/attributes/status"
}
}
]
}Authorizations
Was this page helpful?
JavaScript
import Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
});
const response = await client.email.dedicatedIps.actions.completeWarmup('id');
console.log(response.data);import os
from telnyx import Telnyx
client = Telnyx(
api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted
)
response = client.email.dedicated_ips.actions.complete_warmup(
"id",
)
print(response.data)
package main
import (
"context"
"fmt"
"github.com/team-telnyx/telnyx-go"
"github.com/team-telnyx/telnyx-go/option"
)
func main() {
client := telnyx.NewClient(
option.WithAPIKey("My API Key"),
)
response, err := client.Email.DedicatedIps.Actions.CompleteWarmup(
context.TODO(),
"id",
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Data)
}
package com.telnyx.sdk.example;
import com.telnyx.sdk.client.TelnyxClient;
import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;
public final class Main {
private Main() {}
public static void main(String[] args) {
TelnyxClient client = TelnyxOkHttpClient.fromEnv();
var response = client.email().dedicatedIps().actions().completeWarmup("id");
}
}require "telnyx"
telnyx = Telnyx::Client.new(api_key: "My API Key")
response = telnyx.email.dedicated_ips.actions.complete_warmup("id")
puts(response)<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Telnyx\Client;
use Telnyx\Core\Exceptions\APIException;
$client = new Client(apiKey: getenv('TELNYX_API_KEY') ?: 'My API Key');
try {
$response = $client->email->dedicatedIps->actions->completeWarmup(
'id',
);
var_dump($response);
} catch (APIException $e) {
echo $e->getMessage();
}telnyx email:dedicated-ips:actions complete-warmup \
--api-key 'My API Key' \
--id idcurl --request POST \
--url https://api.telnyx.com/v2/email/dedicated_ips/{id}/actions/complete_warmup \
--header 'Authorization: Bearer <token>'{
"data": {
"id": "6a7f9a30-1234-4b5c-8d9e-0f1a2b3c4d5e",
"record_type": "dedicated_ip",
"ip_address": "64.16.239.170",
"ip_version": "ipv4",
"pool_id": "9b1c4d70-abcd-4e5f-8a9b-0c1d2e3f4a5b",
"region": "ewr-nj1",
"status": "active",
"warmup": {
"started_at": "2026-10-14T20:36:50.000000Z",
"progress": 100,
"daily_cap": null,
"paused": false,
"paused_at": null,
"today": {
"day": "2026-10-24",
"cap": 100000000,
"granted": 1250,
"remaining": 99998750
}
},
"billing": {
"status": "active",
"charged": true
},
"provisioning_status": "dns_confirmed",
"provisioning": {
"dns_status": "dns_confirmed",
"ptr_request_state": "confirmed",
"ptr_request_pr_url": null,
"checklist": {
"ptr_requested": true,
"ptr_authored": false,
"ptr_merged": true,
"forward_confirmed": true
}
},
"ptr_hostname": "mta-64-16-239-170.msgtelnyx.com",
"dns_confirmed_at": "2026-10-14T20:12:41.552310Z",
"quarantine_until": null,
"released_at": null,
"suspension_reason": null,
"created_at": "2026-09-30T02:03:09.474123Z",
"updated_at": "2026-10-24T21:45:00.000000Z"
}
}{
"errors": [
{
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>",
"parameter": "<string>"
}
}
]
}{
"errors": [
{
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>",
"parameter": "<string>"
}
}
]
}{
"errors": [
{
"code": "10001",
"title": "Not Found",
"detail": "The requested dedicated IP was not found"
}
]
}{
"errors": [
{
"code": "40901",
"title": "Conflict",
"detail": "a suspended dedicated IP is operator-held and cannot be activated by customer action (operator suspension: abuse review)"
}
]
}{
"errors": [
{
"code": "10015",
"title": "Validation Failed",
"detail": "complete_warmup requires status warming_up (cannot complete warmup from provisioning)",
"source": {
"pointer": "/data/attributes/status"
}
}
]
}