Imports
Every operation in this group: what it accepts, what it returns and the errors it can answer with.
Operations
Two ways to bring an existing setup across.
A mailbox import reads an export file: Google Takeout archives, .mbox, .eml, .zip and .tgz. Create the import, upload each file in parts, then start it. Imported mail is quiet, so no rules, forwards, notifications, summaries or webhooks run for it.
A provider import reads a Resend account with a full-access key: suppressions, segments as audiences, subscribed contacts, templates, and webhooks created switched off, plus a checklist of the domains and API keys to recreate by hand. Inspect it first to see what would come across. The key is held encrypted only while the import runs and is erased when it ends, and running it twice duplicates nothing.
GET/imports
List mailbox imports
Every import in the workspace, newest first, one page at a time, each with its status, byte progress and running counts. Nothing is dropped from the history, so following nextCursor reaches the first import. A key limited to particular addresses sees only imports into those addresses.
Requires the threads:read scope.
Query parameters
addressIdstringOnly imports into this address.
limitintegerRows per page, 1 to 100.
At least 1At most 100Default25cursorstringAn import id. Keyset, not offset: pass the previous page's
nextCursor. One that names nothing in this list is a 400invalid_cursor.
Returns
A page of imports, newest first, with hasMore and nextCursor.
Errors
The errors every operation can return400401403404422500Error catalog
Also available in
POST/imports
Start a mailbox import
Creates an import into one address and returns it with status: uploading. Upload each file in parts of chunkBytes with the chunk operation, then call start. The import reads Google Takeout archives, .mbox, .eml, .zip and .tgz files. Imported mail is quiet: no rules, forwards, notifications, summaries or webhooks run for it.
Requires the threads:write scope.
Request body
addressIdstringRequiredThe address the mail belongs to.
filesobject[]RequiredEach file as
{ name, bytes }, 1 to 50 of them, each at most 100 GB.1 to 50 itemsnamestringRequired- Up to 255 characters
bytesintegerRequired- At least 1At most 107374182400
optionsobjectkeepInbox,includeSpamandincludeTrash, as forcreate.keepInboxbooleanDefault true. Mail that was in the old inbox lands in Inbox with its unread state; false files everything under Archive.
includeSpambooleanDefault false.
includeTrashbooleanDefault false.
Returns
The import, waiting for its files.
Errors
The errors every operation can return400401403404422500Error catalog
Also available in
GET/imports/{id}
Get a mailbox import
Status, byte progress and counts. Poll it while the import runs.
Requires the threads:read scope.
Path parameters
idstringRequiredImport id,
imp_followed by 24 hex characters.
Returns
The import.
Errors
The errors every operation can return400401403404422500Error catalog
Also available in
GET/imports/{id}/upload
Which parts have arrived
For each file, the indexes of the parts already stored, so an interrupted upload sends only what is missing.
Requires the threads:write scope.
Path parameters
idstringRequiredImport id,
imp_followed by 24 hex characters.
Returns
Received parts per file.
Errors
The errors every operation can return400401403404422500Error catalog
Also available in
DELETE/imports/{id}/upload
Delete the uploaded files
Removes the uploaded archive. Mail already imported stays in the mailbox. Refused with 409 while the import is queued or running.
Requires the threads:write scope.
Path parameters
idstringRequiredImport id,
imp_followed by 24 hex characters.
Returns
The import, with uploadDeleted: true.
Errors
The errors every operation can return400401403404422500Error catalog
Also available in
PUT/imports/{id}/files/{file}/chunks/{chunk}
Upload one part of a file
Stores bytes chunk * chunkBytes up to the next part of file file. Every part is exactly chunkBytes long except the last. Sending a part again replaces it, so a failed part can simply be retried.
Requires the threads:write scope.
Path parameters
idstringRequiredImport id,
imp_followed by 24 hex characters.fileintegerRequiredThe file index, in the order given to
create.At least 0chunkintegerRequiredThe part index, from 0.
At least 0
Request body
Content typeapplication/octet-stream
Returns
The part was stored.
Errors
The errors every operation can return400401403404422500Error catalog
Also available in
POST/imports/{id}/start
Start reading the uploaded files
Checks that every part of every file has arrived and queues the import. 412 missing_chunks names the files still incomplete.
Requires the threads:write scope.
Path parameters
idstringRequiredImport id,
imp_followed by 24 hex characters.
Returns
The import, queued.
Errors
The errors every operation can return400401403404422500Error catalog
Also available in
POST/imports/{id}/cancel
Cancel a mailbox import
Stops the import at its next checkpoint. Mail already imported stays.
Requires the threads:write scope.
Path parameters
idstringRequiredImport id,
imp_followed by 24 hex characters.
Returns
The import, cancelled.
Errors
The errors every operation can return400401403404422500Error catalog
Also available in
GET/imports/{id}/failures
What an import could not bring across
Each message or archive entry that did not come across, with the reason. Page with after, the nextCursor of the previous page.
Requires the threads:read scope.
Path parameters
idstringRequiredImport id,
imp_followed by 24 hex characters.
Query parameters
afterintegerThe
nextCursorof the previous page.limitintegerAt most 100, the default.
At least 1At most 100
Returns
Failures.
Errors
The errors every operation can return400401403404422500Error catalog
Also available in
POST/provider-imports/inspect
Look inside a Resend account before importing
Reads the first page of each resource with a full-access Resend key and returns what an import would bring. Nothing is stored and the key is not kept. A sending-only key is 400 restricted_key.
Requires the settings:write scope.
Request body
apiKeystringRequired- 8 to 200 characters
Returns
Counts per resource.
Errors
The errors every operation can return400401403404422500Error catalog
Also available in
GET/provider-imports
List imports from sending providers
Every provider import in the workspace, newest first, one page at a time, each with its report. Follow nextCursor to reach the first one.
Requires the settings:read scope.
Query parameters
limitintegerRows per page, 1 to 100.
At least 1At most 100Default25cursorstringA provider import id. Keyset, not offset: pass the previous page's
nextCursor. One that names nothing in this list is a 400invalid_cursor.
Returns
A page of provider imports, newest first, with hasMore and nextCursor.
Errors
The errors every operation can return400401403404422500Error catalog
Also available in
POST/provider-imports
Import from Resend
Starts an import from a Resend account: suppressions, segments as audiences, subscribed contacts, templates, and webhooks created switched off, plus a checklist of domains and API keys. The key is held encrypted only while the import runs and is erased when it ends. Running it twice duplicates nothing.
Requires the settings:write scope.
Request body
apiKeystringRequiredA full-access Resend API key.
8 to 200 charactersresourcesstring[]RequiredAny of
suppressions,audiences,contacts,templates,webhooks,domainsandapi-keys.At least one itemOne of"suppressions""audiences""contacts""templates""webhooks""domains""api-keys"
Returns
The import, queued.
Errors
The errors every operation can return400401403404422500Error catalog
Also available in
GET/provider-imports/{id}
Get an import from a sending provider
Status, current step and the report so far.
Requires the settings:read scope.
Path parameters
idstringRequiredProvider import id,
pimp_followed by 24 hex characters.
Returns
The provider import.
Errors
The errors every operation can return400401403404422500Error catalog
Also available in
POST/provider-imports/{id}/cancel
Cancel an import from a sending provider
Stops it and erases the key. What already came across stays.
Requires the settings:write scope.
Path parameters
idstringRequiredProvider import id,
pimp_followed by 24 hex characters.
Returns
The provider import, cancelled.
Errors
The errors every operation can return400401403404422500Error catalog