---
title: "Create a Gmail draft with direct multipart workspace attachments"
method: POST
path: "/v1/direct-uploads/google-workspace/gmail-drafts"
tags: ["Direct uploads"]
---

# Create a Gmail draft with direct multipart workspace attachments

`POST /v1/direct-uploads/google-workspace/gmail-drafts`

Authenticated host transport for openwork-cloud-uploads. The route immediately creates the draft and does not persist attachment bytes or expose them to the model.

## Response `200`

Gmail draft created.

- GoogleWorkspaceDraftResponse
  - `ok` true, required
  - `draftId` string, required
  - `messageId` string, nullable, required
  - `draftUrl` string, nullable, required — Gmail URL for the ready-to-send draft. Always share draftUrl with the user so they can open the draft in Gmail for review and send.
  - `threadUrl` string, nullable, required — Gmail URL for the conversation thread when this draft is a threaded reply.
  - `to` string, required
  - `subject` string, required
  - `threadId` string, nullable, required
  - `quotedHistoryIncluded` boolean, required — True when quoted conversation history was included by the server or already present in the request body.
  - `attachments` object[]
    - `filename` string, required
    - `mimeType` string, required
    - `size` integer, required

## Other responses

- `400` — The multipart draft request was invalid.
- `401` — The caller must be signed in.
- `409` — The calling member has not connected their Google account or is missing permission.
- `502` — Google rejected the request.

---

[API](https://skmtc.net/openworklabs/apis/den-api.md) · [All operations](https://skmtc.net/openworklabs/apis/den-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/openworklabs/den-api/versions/55ba7d5c7a7b/schema)
