MESSAGING · EMAIL
Send email and manage domains, audiences, and broadcasts on their own key.
Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.
Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.
Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
resend_delete_api_keys_by_api_key_idWRITERemove an existing API key via DELETE /api-keys/{api_key_id}
resend_delete_audiences_by_idWRITERemove an existing audience via DELETE /audiences/{id}
resend_delete_automations_by_automation_idWRITEDelete an automation via DELETE /automations/{automation_id}
resend_delete_broadcasts_by_idWRITERemove an existing broadcast that is in the draft status via DELETE /broadcasts/{id}
resend_delete_contact_properties_by_idWRITERemove an existing contact property via DELETE /contact-properties/{id}
resend_delete_contacts_by_contact_id_segments_by_segment_idWRITERemove a contact from a segment via DELETE /contacts/{contact_id}/segments/{segment_id}
resend_delete_contacts_by_idWRITERemove an existing contact by ID or email via DELETE /contacts/{id}
resend_delete_domains_by_domain_idWRITERemove an existing domain via DELETE /domains/{domain_id}
resend_delete_events_by_identifierWRITEDelete an event via DELETE /events/{identifier}
resend_delete_oauth_grants_by_oauth_grant_idWRITERevoke an OAuth grant via DELETE /oauth/grants/{oauth_grant_id}
resend_delete_segments_by_idWRITERemove an existing segment via DELETE /segments/{id}
resend_delete_suppressions_by_suppressionWRITERemove a single suppression by ID or email via DELETE /suppressions/{suppression}
resend_delete_templates_by_idWRITERemove an existing template via DELETE /templates/{id}
resend_delete_topics_by_idWRITERemove an existing topic via DELETE /topics/{id}
resend_delete_webhooks_by_webhook_idWRITERemove an existing webhook via DELETE /webhooks/{webhook_id}
resend_get_api_keysREADRetrieve a list of API keys via GET /api-keys
resend_get_audiencesREADRetrieve a list of audiences via GET /audiences
resend_get_audiences_by_idREADRetrieve a single audience via GET /audiences/{id}
resend_get_automationsREADRetrieve a list of automations via GET /automations
resend_get_automations_by_automation_idREADRetrieve a single automation via GET /automations/{automation_id}
resend_get_automations_by_automation_id_runsREADRetrieve a list of automation runs via GET /automations/{automation_id}/runs
resend_get_automations_by_automation_id_runs_by_run_idREADRetrieve a single automation run via GET /automations/{automation_id}/runs/{run_id}
resend_get_broadcastsREADRetrieve a list of broadcasts via GET /broadcasts
resend_get_broadcasts_by_idREADRetrieve a single broadcast via GET /broadcasts/{id}
resend_get_broadcasts_by_id_clicked_linksREADRetrieve a broadcast's clicked links via GET /broadcasts/{id}/clicked-links
resend_get_broadcasts_by_id_recipientsREADRetrieve broadcast recipients via GET /broadcasts/{id}/recipients
resend_get_contact_propertiesREADRetrieve a list of contact properties via GET /contact-properties
resend_get_contact_properties_by_idREADRetrieve a single contact property via GET /contact-properties/{id}
resend_get_contactsREADRetrieve a list of contacts via GET /contacts
resend_get_contacts_by_contact_id_segmentsREADRetrieve a list of segments for a contact via GET /contacts/{contact_id}/segments
resend_get_contacts_by_contact_id_topicsREADRetrieve topics for a contact via GET /contacts/{contact_id}/topics
resend_get_contacts_by_idREADRetrieve a single contact by ID or email via GET /contacts/{id}
resend_get_contacts_importsREADRetrieve a list of contact imports via GET /contacts/imports
resend_get_contacts_imports_by_idREADRetrieve a single contact import via GET /contacts/imports/{id}
resend_get_domainsREADRetrieve a list of domains via GET /domains
resend_get_domains_by_domain_idREADRetrieve a single domain via GET /domains/{domain_id}
resend_get_domains_by_domain_id_claimREADRetrieve a domain claim via GET /domains/{domain_id}/claim
resend_get_emailsREADRetrieve a list of emails via GET /emails
resend_get_emails_by_email_idREADRetrieve a single email via GET /emails/{email_id}
resend_get_emails_by_email_id_attachmentsREADRetrieve a list of attachments for a sent email via GET /emails/{email_id}/attachments
resend_get_emails_by_email_id_attachments_by_attachment_idREADRetrieve a single attachment for a sent email via GET /emails/{email_id}/attachments/{attachment_id}
resend_get_emails_metricsREADRetrieve account-level email metrics via GET /emails/metrics
resend_get_emails_receivingREADRetrieve a list of received emails via GET /emails/receiving
resend_get_emails_receiving_by_email_idREADRetrieve a single received email via GET /emails/receiving/{email_id}
resend_get_emails_receiving_by_email_id_attachmentsREADRetrieve a list of attachments for a received email via GET /emails/receiving/{email_id}/attachments
resend_get_emails_receiving_by_email_id_attachments_by_attachment_idREADRetrieve a single attachment for a received email via GET /emails/receiving/{email_id}/attachments/{attachment_id}
resend_get_eventsREADRetrieve a list of events via GET /events
resend_get_events_by_identifierREADRetrieve a single event via GET /events/{identifier}
resend_get_logsREADRetrieve a list of logs via GET /logs
resend_get_logs_by_log_idREADRetrieve a single log via GET /logs/{log_id}
resend_get_oauth_grantsREADRetrieve a list of OAuth grants via GET /oauth/grants
resend_get_segmentsREADRetrieve a list of segments via GET /segments
resend_get_segments_by_idREADRetrieve a single segment via GET /segments/{id}
resend_get_suppressionsREADRetrieve a list of suppressions via GET /suppressions
resend_get_suppressions_by_suppressionREADRetrieve a single suppression by ID or email via GET /suppressions/{suppression}
resend_get_templatesREADRetrieve a list of templates via GET /templates
resend_get_templates_by_idREADRetrieve a single template via GET /templates/{id}
resend_get_topicsREADRetrieve a list of topics via GET /topics
resend_get_topics_by_idREADRetrieve a single topic via GET /topics/{id}
resend_get_webhooksREADRetrieve a list of webhooks via GET /webhooks
resend_get_webhooks_by_webhook_idREADRetrieve a single webhook via GET /webhooks/{webhook_id}
resend_get_webhooks_by_webhook_id_eventsREADRetrieve a list of webhook events via GET /webhooks/{webhook_id}/events
resend_get_webhooks_by_webhook_id_events_by_event_idREADRetrieve a single webhook event via GET /webhooks/{webhook_id}/events/{event_id}
resend_get_webhooks_by_webhook_id_events_by_event_id_attemptsREADRetrieve a list of webhook event attempts via GET /webhooks/{webhook_id}/events/{event_id}/attempts
resend_patch_api_keys_by_api_key_idWRITEUpdate an existing API key via PATCH /api-keys/{api_key_id}
resend_patch_automations_by_automation_idWRITEUpdate an automation via PATCH /automations/{automation_id}
resend_patch_broadcasts_by_idWRITEUpdate an existing broadcast via PATCH /broadcasts/{id}
resend_patch_contact_properties_by_idWRITEUpdate an existing contact property via PATCH /contact-properties/{id}
resend_patch_contacts_by_contact_id_topicsWRITEUpdate topics for a contact via PATCH /contacts/{contact_id}/topics
resend_patch_contacts_by_idWRITEUpdate a single contact by ID or email via PATCH /contacts/{id}
resend_patch_domains_by_domain_idWRITEUpdate an existing domain via PATCH /domains/{domain_id}
resend_patch_emails_by_email_idWRITEUpdate a single email via PATCH /emails/{email_id}
resend_patch_events_by_identifierWRITEUpdate an event via PATCH /events/{identifier}
resend_patch_segments_by_idWRITEUpdate an existing segment via PATCH /segments/{id}
resend_patch_templates_by_idWRITEUpdate an existing template via PATCH /templates/{id}
resend_patch_topics_by_idWRITEUpdate an existing topic via PATCH /topics/{id}
resend_patch_webhooks_by_webhook_idWRITEUpdate an existing webhook via PATCH /webhooks/{webhook_id}
resend_post_api_keysWRITECreate a new API key via POST /api-keys
resend_post_audiencesWRITECreate a list of contacts via POST /audiences
resend_post_automationsWRITECreate an automation via POST /automations
resend_post_automations_by_automation_id_duplicateWRITEDuplicate an automation via POST /automations/{automation_id}/duplicate
resend_post_automations_by_automation_id_stopWRITEStop an automation via POST /automations/{automation_id}/stop
resend_post_broadcastsWRITECreate a broadcast via POST /broadcasts
resend_post_broadcasts_by_id_cancelWRITECancel a broadcast via POST /broadcasts/{id}/cancel
resend_post_broadcasts_by_id_sendWRITESend or schedule a broadcast via POST /broadcasts/{id}/send
resend_post_contact_propertiesWRITECreate a new contact property via POST /contact-properties
resend_post_contactsWRITECreate a new contact via POST /contacts
resend_post_contacts_by_contact_id_segments_by_segment_idWRITEAdd a contact to a segment via POST /contacts/{contact_id}/segments/{segment_id}
resend_post_domainsWRITECreate a new domain via POST /domains
resend_post_domains_by_domain_id_claim_verifyWRITEVerify a domain claim via POST /domains/{domain_id}/claim/verify
resend_post_domains_by_domain_id_verifyWRITEVerify an existing domain via POST /domains/{domain_id}/verify
resend_post_domains_claimWRITEClaim a domain via POST /domains/claim
resend_post_emailsWRITESend an email via POST /emails
resend_post_emails_batchWRITETrigger up to 100 batch emails at once via POST /emails/batch
resend_post_emails_by_email_id_cancelWRITECancel the schedule of the e-mail via POST /emails/{email_id}/cancel
resend_post_emails_by_email_id_shareWRITECreate a shareable link for a sent or received email via POST /emails/{email_id}/share
resend_post_eventsWRITECreate an event via POST /events
resend_post_events_sendWRITESend an event via POST /events/send
resend_post_segmentsWRITECreate a new segment via POST /segments
resend_post_suppressionsWRITECreate a suppression via POST /suppressions
resend_post_suppressions_batch_addWRITEAdd up to 100 suppressions at once via POST /suppressions/batch/add
resend_post_suppressions_batch_removeWRITERemove up to 100 suppressions at once via POST /suppressions/batch/remove
resend_post_templatesWRITECreate a template via POST /templates
resend_post_templates_by_id_duplicateWRITEDuplicate a template via POST /templates/{id}/duplicate
resend_post_templates_by_id_publishWRITEPublish a template via POST /templates/{id}/publish
resend_post_topicsWRITECreate a new topic via POST /topics
resend_post_webhooksWRITECreate a new webhook via POST /webhooks
resend_post_webhooks_by_webhook_id_events_by_event_id_replayWRITEReplay a webhook event via POST /webhooks/{webhook_id}/events/{event_id}/replay
Put Resend behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.