---
title: "Every method"
description: "All 116, one row each, against the endpoint each one calls."
url: "https://openemail.uk/docs/sdk/reference/methods"
area: "SDK"
category: "Reference"
---

# Every method

All 116, one row each, against the endpoint each one calls.

## Every method

One method for every documented operation, and the package's parity check proves it. It reads the OpenAPI document, calls every method against a recording `fetch`, and fails when an operation has no method, when a method sends anything other than the exact request its row names, or when a row's scopes differ from the ones the operation requires.

`listAll` and `iterate` page through the same endpoint as the `list` beside them, and so do `listAllRuns` and `iterateRuns` on `rules`, so one request can appear on more than one row.

| Call | Endpoint | Scope |
| --- | --- | --- |
| `me.get()` | `GET /keys/self` | none |
| `me.ping()` | `GET /ping` | none |
| `me.rotate()` | `POST /keys/self/rotate` | `keys:write` |
| `addresses.list()` | `GET /addresses` | `emails:send` |
| `languages.list()` | `GET /languages` | none |
| `emails.send()` | `POST /emails` | `emails:send` |
| `emails.sendBatch()` | `POST /emails/batch` | `emails:send` |
| `emails.translate()` | `POST /emails/translate` | `emails:send` |
| `emails.list()` | `GET /emails` | `emails:read` |
| `emails.listAll()` | `GET /emails` | `emails:read` |
| `emails.iterate()` | `GET /emails` | `emails:read` |
| `emails.get()` | `GET /emails/{id}` | `emails:read` |
| `emails.listEvents()` | `GET /emails/{id}/events` | `emails:read` |
| `emails.getTracking()` | `GET /emails/{id}/tracking` | `emails:read` |
| `emails.cancel()` | `POST /emails/{id}/cancel` | `emails:send` |
| `emails.reschedule()` | `PATCH /emails/{id}` | `emails:send` |
| `templates.list()` | `GET /templates` | `templates:read` |
| `templates.listAll()` | `GET /templates` | `templates:read` |
| `templates.iterate()` | `GET /templates` | `templates:read` |
| `templates.get()` | `GET /templates/{id}` | `templates:read` |
| `templates.create()` | `POST /templates` | `templates:write` |
| `templates.update()` | `PATCH /templates/{id}` | `templates:write` |
| `templates.delete()` | `DELETE /templates/{id}` | `templates:write` |
| `templates.listVersions()` | `GET /templates/{id}/versions` | `templates:read` |
| `templates.publish()` | `POST /templates/{id}/versions` | `templates:write` |
| `templates.preview()` | `POST /templates/{id}/preview` | `templates:read` |
| `templates.send()` | `POST /templates/{id}/send` | `templates:write` + `emails:send` |
| `tracking.list()` | `GET /tracking` | `emails:read` |
| `tracking.getStats()` | `GET /tracking/stats` | `emails:read` |
| `tracking.get()` | `GET /tracking/{id}` | `emails:read` |
| `tracking.listOpens()` | `GET /tracking/{id}/opens` | `emails:read` |
| `tracking.listClicks()` | `GET /tracking/{id}/clicks` | `emails:read` |
| `threads.list()` | `GET /threads` | `threads:read` |
| `threads.listAll()` | `GET /threads` | `threads:read` |
| `threads.iterate()` | `GET /threads` | `threads:read` |
| `threads.get()` | `GET /threads/{id}` | `threads:read` |
| `threads.update()` | `PATCH /threads/{id}` | `threads:write` |
| `threads.trash()` | `POST /threads/{id}/trash` | `threads:write` |
| `threads.snooze()` | `POST /threads/{id}/snooze` | `threads:write` |
| `threads.unsnooze()` | `POST /threads/{id}/unsnooze` | `threads:write` |
| `threads.listAttachments()` | `GET /threads/{id}/messages/{messageId}/attachments` | `threads:read` |
| `drafts.list()` | `GET /drafts` | `drafts:read` |
| `drafts.listAll()` | `GET /drafts` | `drafts:read` |
| `drafts.iterate()` | `GET /drafts` | `drafts:read` |
| `drafts.get()` | `GET /drafts/{id}` | `drafts:read` |
| `drafts.create()` | `POST /drafts` | `drafts:write` |
| `drafts.update()` | `PATCH /drafts/{id}` | `drafts:write` |
| `drafts.delete()` | `DELETE /drafts/{id}` | `drafts:write` |
| `labels.list()` | `GET /labels` | `labels:read` |
| `labels.get()` | `GET /labels/{id}` | `labels:read` |
| `labels.create()` | `POST /labels` | `labels:write` |
| `labels.update()` | `PATCH /labels/{id}` | `labels:write` |
| `labels.delete()` | `DELETE /labels/{id}` | `labels:write` |
| `contacts.list()` | `GET /contacts` | `contacts:read` |
| `contacts.get()` | `GET /contacts/{email}` | `contacts:read` |
| `contacts.create()` | `POST /contacts` | `contacts:write` |
| `contacts.update()` | `PATCH /contacts/{email}` | `contacts:write` |
| `contacts.delete()` | `DELETE /contacts/{email}` | `contacts:write` |
| `audiences.list()` | `GET /audiences` | `audiences:read` |
| `audiences.get()` | `GET /audiences/{id}` | `audiences:read` |
| `audiences.create()` | `POST /audiences` | `audiences:write` |
| `audiences.update()` | `PATCH /audiences/{id}` | `audiences:write` |
| `audiences.delete()` | `DELETE /audiences/{id}` | `audiences:write` |
| `audiences.listContacts()` | `GET /audiences/{id}/contacts` | `audiences:read` |
| `audiences.addContact()` | `POST /audiences/{id}/contacts` | `audiences:write` |
| `audiences.removeContact()` | `DELETE /audiences/{id}/contacts/{email}` | `audiences:write` |
| `domains.list()` | `GET /domains` | `domains:read` |
| `domains.get()` | `GET /domains/{id}` | `domains:read` |
| `domains.update()` | `PATCH /domains/{id}` | `domains:write` |
| `rules.list()` | `GET /rules` | `rules:read` |
| `rules.listAll()` | `GET /rules` | `rules:read` |
| `rules.iterate()` | `GET /rules` | `rules:read` |
| `rules.get()` | `GET /rules/{id}` | `rules:read` |
| `rules.create()` | `POST /rules` | `rules:write` |
| `rules.update()` | `PATCH /rules/{id}` | `rules:write` |
| `rules.delete()` | `DELETE /rules/{id}` | `rules:write` |
| `rules.reorder()` | `POST /rules/reorder` | `rules:write` |
| `rules.test()` | `POST /rules/{id}/test` | `rules:read` |
| `rules.listRuns()` | `GET /rules/runs` | `rules:read` |
| `rules.listAllRuns()` | `GET /rules/runs` | `rules:read` |
| `rules.iterateRuns()` | `GET /rules/runs` | `rules:read` |
| `webhooks.list()` | `GET /webhooks` | `webhooks:read` |
| `webhooks.get()` | `GET /webhooks/{id}` | `webhooks:read` |
| `webhooks.create()` | `POST /webhooks` | `webhooks:write` |
| `webhooks.update()` | `PATCH /webhooks/{id}` | `webhooks:write` |
| `webhooks.delete()` | `DELETE /webhooks/{id}` | `webhooks:write` |
| `webhooks.rotateSecret()` | `POST /webhooks/{id}/rotate-secret` | `webhooks:write` |
| `webhooks.test()` | `POST /webhooks/{id}/test` | `webhooks:write` |
| `webhooks.listDeliveries()` | `GET /webhooks/{id}/deliveries` | `webhooks:read` |
| `calendar.listEvents()` | `GET /calendar/events` | `calendar:read` |
| `calendar.getEvent()` | `GET /calendar/events/{id}` | `calendar:read` |
| `calendar.getEventIcs()` | `GET /calendar/events/{id}/ics` | `calendar:read` |
| `settings.get()` | `GET /settings` | `settings:read` |
| `settings.update()` | `PATCH /settings` | `settings:write` |
| `roles.list()` | `GET /roles` | `roles:read` |
| `roles.get()` | `GET /roles/{id}` | `roles:read` |
| `roles.create()` | `POST /roles` | `roles:write` |
| `roles.update()` | `PATCH /roles/{id}` | `roles:write` |
| `roles.delete()` | `DELETE /roles/{id}` | `roles:write` |
| `roles.listPermissions()` | `GET /roles/permissions` | `roles:read` |
| `members.list()` | `GET /members` | `members:read` |
| `members.get()` | `GET /members/{userId}` | `members:read` |
| `members.add()` | `POST /members` | `members:write` |
| `members.update()` | `PATCH /members/{userId}` | `members:write` |
| `members.remove()` | `DELETE /members/{userId}` | `members:write` |
| `members.grantAddress()` | `POST /members/{userId}/addresses` | `members:write` |
| `members.revokeAddress()` | `DELETE /members/{userId}/addresses/{addressId}` | `members:write` |
| `tempMail.listDomains()` | `GET /temp-mail/domains` | none |
| `tempMail.create()` | `POST /temp-mail/inboxes` | none |
| `tempMail.get()` | `GET /temp-mail/inboxes/{id}` | inbox token |
| `tempMail.extend()` | `POST /temp-mail/inboxes/{id}/extend` | inbox token |
| `tempMail.delete()` | `DELETE /temp-mail/inboxes/{id}` | inbox token |
| `tempMail.listMessages()` | `GET /temp-mail/inboxes/{id}/messages` | inbox token |
| `tempMail.getMessage()` | `GET /temp-mail/inboxes/{id}/messages/{messageId}` | inbox token |
| `tempMail.deleteMessage()` | `DELETE /temp-mail/inboxes/{id}/messages/{messageId}` | inbox token |
| `tempMail.listAttachments()` | `GET /temp-mail/inboxes/{id}/messages/{messageId}/attachments` | inbox token |

> The `tempMail` rows say "inbox token" where every other row names a scope, and that is not shorthand for one. Disposable inboxes are the only anonymous resource on the API: `listDomains` and `create` send no credential at all, and the other seven authenticate with the `oe_inbox_` token that `create` returned once. Pass it as `inboxToken` on each call, or build a client for that inbox with `createTempMail({ inboxToken })`. Without one, a workspace client falls back to its API key, which the API refuses by name rather than silently accepting.
