PulsePigeonemail infrastructure

Diagnostic checklist

Walk through these in any order. Each item points to the catalog entry that describes the failure and the fix.

AreaWhat to check
RoleA Viewer can read but cannot send. Ask an owner or admin for the Developer role or higher.
Project mode and captured markerIf the project is in Test mode the API responds with a captured marker and never reaches a real inbox. Send from a Live project with a verified domain.
API key and project mode matchA project API key only works with a project in its own mode. Create a key in the same project and mode, or use a workspace key with access to all environments.
Account review (vetting)Live sends require a finished account review. Production returns 428 until that step is complete.
Verified sending domainLive sends need a domain you have verified in Domains, or a single sender address that you have confirmed.
Send controlWorkspace sending status or a safety restriction can halt new sends. Read the reason on that page.
Recipient blocksSuppressed, deleted, or opted-out recipients are refused. Remove the affected address and resend the rest.
Plan limitsMonthly email, active contact, or daily caps that would be exceeded are rejected before acceptance.
Batch item failuresA batch returns 200 with per-item accepted and failed entries. Resend unchanged failed items with their original Idempotency-Key and use a new key for a corrected message.
Accepted then bounced, deferred, or failedAfter acceptance a message can still be deferred, bounced, or fail locally. Inspect Bounces and the delivery timeline rather than resending unconditionally.

Lifecycle states after acceptance

A 2xx response means the API accepted the message for delivery. After acceptance, the message still moves through one of the states below.

StateMeaning
CapturedThe project is in Test mode, so the API accepted the message for inspection but never handed it to a provider.
PendingThe message is queued and not yet handed to a provider.
DeferredThe provider reported a delay for this recipient. Check the delivery timeline and Bounces before you resend.
SuppressedThe address bounced, so future sends to it are refused. Fix or remove it; a suppressed address is not retried.
Terminal failurePulsePigeon could not hand the message to a provider because of a delivery or configuration problem. Contact support if the reason repeats.

A deferred or captured message does not need an unconditional resend. Retries reuse the original Idempotency-Key, and a corrected message uses a new key. Inspect Bounces and the delivery timeline before sending again.

Send conditions catalog

The HTTP status, typed code, reason, and fix for every entry in the catalog's send group. The same entries drive the support block returned with each API error.

HTTPCodeWhyFix
403permission_deniedYour role is Viewer, which is read-only.Ask an owner or admin for the Developer role or higher.
markerdelivery_mode=test_captureThis project is in Test mode, so sends are captured and never reach a real inbox.Send from a Live project with a verified domain to deliver real email. More
403api_key_environment_mismatchThis API key belongs to a different project or mode than the one you used.Create a key in the same project and mode, then use it. More
403api_key_project_mismatchThis API key belongs to a different project or mode than the one you used.Create a key in the same project and mode, then use it. More
422api_key_environment_project_mismatchThis API key belongs to a different project or mode than the one you used.Create a key in the same project and mode, then use it. More
403domain_not_verifiedThe From address is not on a domain you have verified.Verify the domain, or confirm this single sender address, then send again. More
428pre_send_vetting_requiredProduction sending starts after your account passes a short review.Finish the review, or contact support if it is stuck. More
markertemplate_test_send_vettingTemplate test sends need the account review even for Test projects.Finish the account review, or send a test through the message API to a Test project. More
423sending_haltedSending is paused for this workspace.Read the reason shown, then contact support to appeal.
402subscription_restrictedYour subscription state blocks new sends. Exports stay available.Fix billing to resume sending.
402subscription_suspendedYour subscription state blocks new sends. Exports stay available.Fix billing to resume sending.
402subscription_canceledYour subscription state blocks new sends. Exports stay available.Fix billing to resume sending.
402subscription_quarantinedYour subscription state blocks new sends. Exports stay available.Fix billing to resume sending.
402plan_monthly_limit_exceededYour plan's monthly email or active contact limit is used up.Upgrade your plan or wait for the next period.
402plan_contact_limit_exceededYour plan's monthly email or active contact limit is used up.Upgrade your plan or wait for the next period.
429hard_spend_cap_exceededYour daily sending cap is reached.Retry after the daily reset or review your limits.
429sending_limit_exceededYour daily sending cap is reached.Retry after the daily reset or review your limits.
403recipient_unsubscribedThis recipient opted out of this kind of email.Do not resend to this address in this category. More
422recipient_suppressedA recipient is suppressed or was deleted.Remove that recipient from the send. More
422recipient_deletedA recipient is suppressed or was deleted.Remove that recipient from the send. More
422recipient_suppressed_by_dsrA recipient is suppressed or was deleted.Remove that recipient from the send. More
422consent_requiredMarketing mail needs recipient consent. Set mailing address under /compliance.Save your mailing address on /compliance, then record consent for recipients.
422physical_address_requiredMarketing mail needs recipient consent. Set mailing address under /compliance.Save your mailing address on /compliance, then record consent for recipients.
422can_spam_footer_requiredMarketing mail needs recipient consent. Set mailing address under /compliance.Save your mailing address on /compliance, then record consent for recipients.
markerbatch_item_failedAn item in the batch failed; others may still have been accepted.Read that item's error; resend unchanged failed items with their original key, and use a new key for a corrected message. More
markerdelivery_pendingThe message is queued and not yet handed to a provider.Wait; no action needed. More
markerdelivery_deferredThe provider reported a delay for this recipient.Check the delivery timeline and Bounces before you resend. More
markerdelivery_bounced_suppressedThe address bounced, so it is suppressed and future sends to it are refused.Fix or remove the address; a suppressed address is not retried. More
markerdelivery_failed_localPulsePigeon could not hand the message to a provider because of a delivery or configuration problem on our side or in your setup.Check the failure reason on the message; contact support if it repeats. More
503recipient_gate_unavailableA recipient eligibility check could not be completed.Check whether the send was accepted before retrying; if it was not, try again later.
403recipient_suppressed_globalA workspace suppression blocks this recipient.Review the workspace suppression before attempting another send; a stream change will not remove it.
403recipient_suppressed_streamAn active suppression for this stream blocks the recipient.Review the stream suppression and recipient preference before attempting another send.
503stream_suppression_unavailableThe stream suppression service could not complete a required check or token operation.Check whether the operation was accepted before retrying; if its outcome is unknown, verify its current state first.
503unsubscribe_origin_unavailableThe hosted unsubscribe origin is unavailable for this send.Check whether the send was accepted before retrying; contact support if link generation remains unavailable.
422transactional_content_promotionalTransactional, security, and billing mail cannot include promotional phrasing.Send this as category=marketing with real recipient consent, or remove the promotional phrasing. More
503unsubscribe_link_unavailableThe unsubscribe link for this marketing send could not be minted.Retry the send. Contact support if link generation remains unavailable.
422marketing_footer_too_largeThe marketing footer would push this HTML body past the allowed size.Shorten the HTML body and retry the send.

When to ask support

  • The message accepted with a 2xx response, never bounced or deferred, but still did not arrive.
  • The message landed in Dead letters with a failure reason for an address that should be routable.
  • A batch reported every item as failed with no shared error code.

Include the message ID, the project ID, and the timestamp. Do not paste the raw payload, any Idempotency-Key, or recipient addresses into a public ticket.

Diagnostic prompts

Use these prompts to drive your own checks before asking support. They are not an execution order.

  1. Did the send return a 2xx response, or did it fail with a typed error code?
  2. If it returned 2xx, is the project in Test mode (then the message was captured, not delivered)?
  3. If you use a project API key, is it bound to the same project and mode that you sent from?
  4. Has the workspace passed the production account review?
  5. Is the From address on a verified domain or a single confirmed sender?
  6. Is the recipient opted in, not suppressed, not deleted, and not blocked by your blocklists?
  7. Would this send push the workspace past its plan, contact, or daily cap?
  8. For batches: did any item fail even though the response was 200?
  9. For accepted messages: did the message later appear in Bounces or the delivery timeline as deferred or failed?

Related guides

API error reference · Test and Live projects · Webhook verification · Bounces · Contact support