Create a presigned upload for a large attachment
const url = 'https://api.frontmail.dev/v1/uploads';const options = { method: 'POST', headers: { 'X-Frontmail-Public-Key': '<X-Frontmail-Public-Key>', 'Content-Type': 'application/json' }, body: '{"filename":"example","content_type":"example","size":1,"user_id":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.frontmail.dev/v1/uploads \ --header 'Content-Type: application/json' \ --header 'X-Frontmail-Public-Key: <X-Frontmail-Public-Key>' \ --data '{ "filename": "example", "content_type": "example", "size": 1, "user_id": "example" }'Returns a presigned S3 PUT URL valid for 15 minutes. Upload the file with the returned headers, then reference { "upload_id" } in attachments. Uploads expire after 24 h. With a public key, the organization needs at least one template that accepts dynamic attachments, and public uploads have a daily byte budget per organization (plan attachment limit × 200); over it → 429 rate_limited.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
Exact size in bytes (signed into the URL).
Public key (alternative to the header).
Examplegenerated
{ "filename": "example", "content_type": "example", "size": 1, "user_id": "example"}Responses
Section titled “ Responses ”Presigned upload.
object
object
Example
{ "method": "PUT"}Invalid request body, query or Idempotency-Key (invalid_body, bad_request, invalid_idempotency_key).
object
object
Stable error code. See https://docs.frontmail.dev/reference/errors/.
Example
{ "error": { "code": "invalid_template_params", "message": "Invalid template parameters. email: Enter a valid e-mail address.", "docs_url": "https://docs.frontmail.dev/reference/errors/#invalid-template-params", "details": { "issues": [ { "param": "email", "code": "invalid_email", "message": "Enter a valid e-mail address." } ] } }}Missing or invalid key (unauthorized, invalid_public_key, invalid_private_key).
object
object
Stable error code. See https://docs.frontmail.dev/reference/errors/.
Example
{ "error": { "code": "invalid_template_params", "message": "Invalid template parameters. email: Enter a valid e-mail address.", "docs_url": "https://docs.frontmail.dev/reference/errors/#invalid-template-params", "details": { "issues": [ { "param": "email", "code": "invalid_email", "message": "Enter a valid e-mail address." } ] } }}Forbidden: origin, CAPTCHA (required, failed, not configured), headless, block list, private key required, suspended, unverified owner e-mail, plan limit, dynamic recipient, attachments.
object
object
Stable error code. See https://docs.frontmail.dev/reference/errors/.
Example
{ "error": { "code": "invalid_template_params", "message": "Invalid template parameters. email: Enter a valid e-mail address.", "docs_url": "https://docs.frontmail.dev/reference/errors/#invalid-template-params", "details": { "issues": [ { "param": "email", "code": "invalid_email", "message": "Enter a valid e-mail address." } ] } }}Request or attachments too large (payload_too_large, attachment_too_large).
object
object
Stable error code. See https://docs.frontmail.dev/reference/errors/.
Example
{ "error": { "code": "invalid_template_params", "message": "Invalid template parameters. email: Enter a valid e-mail address.", "docs_url": "https://docs.frontmail.dev/reference/errors/#invalid-template-params", "details": { "issues": [ { "param": "email", "code": "invalid_email", "message": "Enter a valid e-mail address." } ] } }}Rate limited – see Retry-After (seconds).
object
object
Stable error code. See https://docs.frontmail.dev/reference/errors/.
Example
{ "error": { "code": "invalid_template_params", "message": "Invalid template parameters. email: Enter a valid e-mail address.", "docs_url": "https://docs.frontmail.dev/reference/errors/#invalid-template-params", "details": { "issues": [ { "param": "email", "code": "invalid_email", "message": "Enter a valid e-mail address." } ] } }}Headers
Section titled “Headers”Seconds to wait before retrying.
Seconds to wait before retrying.
Unexpected error; details.request_id identifies the request.
object
object
Stable error code. See https://docs.frontmail.dev/reference/errors/.
Example
{ "error": { "code": "invalid_template_params", "message": "Invalid template parameters. email: Enter a valid e-mail address.", "docs_url": "https://docs.frontmail.dev/reference/errors/#invalid-template-params", "details": { "issues": [ { "param": "email", "code": "invalid_email", "message": "Enter a valid e-mail address." } ] } }}