Resume a paused SMTP credential
/api/v1/smtp-credentials/{credential}/resumeLifts a pause the mail server placed on the credential after it sent unlike itself — far more recipients or domains in an hour than its own history, or from a sending host it had never used — and lets the mail it was holding go.
A pause is not a revocation. The credential still authenticates and nothing was
bounced: mail submitted during the pause was deferred, and delivers once the pause
lifts. It also lifts on its own after the pause window (six hours by default) if nobody
acts. The credential reads state: "paused" while it is held.
Use this when the activity was yours. If it was not, revoke the credential instead
and create a new one — resuming a stolen key resumes the theft. Calling this on a
credential that is not paused is harmless and returns it unchanged.
A transactional credential paused because it kept sending newsletters cannot be resumed
here: it answers 409 with error_code: "newsletter_hold", and only Mailyte support
starts it again. Newsletters and other bulk email go through a marketing credential.
This endpoint takes no request body.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
credentialrequired | path | string | The credential identifier. |
Request
/api/v1/smtp-credentials/{credential}/resumecurl -X POST 'https://app.mailyte.com/api/v1/smtp-credentials/01JBT8XQ2M9WYC3K4F6R7S8T9V/resume' \
-H 'Authorization: Bearer mk_live_YOUR_API_KEY'const response = await fetch('https://app.mailyte.com/api/v1/smtp-credentials/01JBT8XQ2M9WYC3K4F6R7S8T9V/resume', {
method: 'POST',
headers: {
Authorization: 'Bearer mk_live_YOUR_API_KEY',
},
});
const { data } = await response.json();import requests
response = requests.post(
"https://app.mailyte.com/api/v1/smtp-credentials/01JBT8XQ2M9WYC3K4F6R7S8T9V/resume",
headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
)
data = response.json()["data"]<?php
$response = Http::withToken('mk_live_YOUR_API_KEY')
->post('https://app.mailyte.com/api/v1/smtp-credentials/01JBT8XQ2M9WYC3K4F6R7S8T9V/resume');
$data = $response->json('data');require "net/http"
require "json"
uri = URI("https://app.mailyte.com/api/v1/smtp-credentials/01JBT8XQ2M9WYC3K4F6R7S8T9V/resume")
request = Net::HTTP::Post.new(uri)
request["Authorization"] = "Bearer mk_live_YOUR_API_KEY"
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }Response
Success.
dataobjectobjectstringsmtp_credentialidstringUnique identifier for the credential.
namestringYour name for the key. It is not used to sign in.
usernamestringThe SMTP username, to set in your mail library. Delivery events name it. Safe to log.
statestringactive | paused | revoked | inactive | expired | suspended | pending_review | provisioning | failed | deletingWhether the key can send. Only
activecan. -deleting,failed: being removed, or setup failed. -pending_review: a marketing key waiting for approval. -expired: pastexpires_at. -suspended: switched off by us or after delivery failures. -inactive: retired after a long time unused (the owner was warned three times). Turning it back on keeps the same username and secret. -paused: on hold because it suddenly sent far more than usual or from a new host. Its mail waits rather than bouncing. The hold lifts by itself (after six hours by default), or now withPOST /smtp-credentials/{credential}/resume.streamstringtransactional | marketingWhich lane mail sent with this credential is treated as. The stream decides reputation handling and marketing gating; it is not a label.
domainobjectThe one domain this key may send as.
idstringThe domain's ID. Always set.
namestringThe domain's name. Some responses leave it null; use
domain.id, or read the key fromGET /smtp-credentials.
ip_allowlistobjectEnforced by the mail server at AUTH time, not by this API.
enabled: falsewith a populated list is a configured allowlist that is currently off, not a contradiction.enabledbooleanaddressesarray<string>IPv4/IPv6 addresses or CIDR ranges.
limitsobjectLimits for this key alone, below your plan's limits.
hourlyintegerRecipients per hour for this key. Null means no key limit is set; your plan's limit still applies.
dailyintegerRecipients per day for this key. Null means no key limit is set; your plan's limit still applies.
tracking_enabledbooleanWhether open and click tracking is injected into HTML sent with this credential.
last_used_atstringWhen this key last signed in to send. It can be up to an hour behind. Null means no use has been seen yet, which is not proof the key is idle. For a live figure, use
GET /smtp-credentials/{credential}/usage.expires_atstringWhen the key stops working, in ISO 8601 UTC. Null means it never expires (the default). Null does not mean expired.
created_atstringISO 8601 UTC.
Returned inside the standard envelope.
Errors
| Status | When |
|---|---|
401 | The API key is missing, unknown, revoked or expired. All four answer identically, on purpose: distinguishing them would confirm which keys exist. |
403 | The key is valid but may not do this: it lacks the required scope, its IP allowlist does not include you, or this endpoint does not accept API keys. |
404 | No such resource in this organization. |
422 | The request was understood but the values were not acceptable. |
429 | Too many requests, or the organization has spent its sending allowance. `Retry-After` says how long to wait. |
Every status, with what causes it and what to do, is on the error reference.