This is a catch-all provider — any valid URL under
https://gmail.googleapis.com is supported. Gmail REST API endpoints. Construct URLs as https://gmail.googleapis.com/gmail/v1/{path}. Authentication is brokered through Pipedream Connect — the end-user sees a single “Pipedream wants to access your Google Account” consent screen on connect. Common roots: users/me/profile, users/me/messages, users/me/threads, users/me/labels, users/me/drafts. To send or draft mail (messages.send or drafts.create), the simplest path is structured fields: pass { to, subject, body } (plus optional cc, bcc) — to/cc/bcc may be a string or an array, body is plain text — and Lava builds and encodes the message for you (the body is delivered as HTML so it reflows in the reader’s client). Advanced callers may instead set raw to a plaintext RFC 2822 message: Lava base64url-encodes it, so do NOT pre-encode, and use an HTML body to avoid the ~78-column hard-wrap a bare text/plain send suffers. See https://developers.google.com/gmail/api/reference/rest for full reference. The endpoints below are curated examples.Endpoints
Get the connected Gmail account’s profile (email address, total messages count). Use this as a cheap auth probe after connect — confirms the OAuth grant is healthy without enumerating messages.
GEThttps://gmail.googleapis.com/gmail/v1/users/me/profile — Free
- SDK
- cURL
List messages in the user’s mailbox, optionally filtered by a Gmail search query (q param). Returns lightweight references — use messages.get to fetch full content. Supports labelIds, maxResults, pageToken.
GEThttps://gmail.googleapis.com/gmail/v1/users/me/messages?q=is%3Aunread&maxResults=10 — Free
- SDK
- cURL
Get a single message by id. Use format=metadata for cheap header-only reads, format=full for the complete body. Recommend format=metadata + metadataHeaders=Subject,From,To,Date for inbox triage workflows.
GEThttps://gmail.googleapis.com/gmail/v1/users/me/messages/18e2f5d8b1a2c3d4?format=metadata&metadataHeaders=Subject&metadataHeaders=From — Free
- SDK
- cURL
Send an email on behalf of the connected user. Simplest: pass structured fields — to (string or array of addresses), subject, and body (plain text; Lava delivers it as HTML so it reflows instead of hard-wrapping), plus optional cc/bcc. Lava assembles the RFC 2822 message and base64url-encodes it for you — no MIME or base64 by hand. Advanced: instead set raw to a plaintext RFC 2822 message (headers, blank line, body) and Lava encodes that; do NOT pre-encode. The connected account has send permission via Pipedream’s default Gmail scopes (gmail.send).
POST https://gmail.googleapis.com/gmail/v1/users/me/messages/send — Free
- SDK
- cURL
Create a draft (does NOT send). Simplest: { "message": { "to": ..., "subject": ..., "body": ... } } — the same structured fields as messages.send (string or array addresses, plain-text body); Lava builds and encodes the message. For a threaded reply, add threadId next to the fields in message and pass inReplyTo/references (the original Message-ID from messages.get) so Gmail threads it. Advanced: instead set message.raw to a plaintext RFC 2822 message; do NOT pre-encode.
POST https://gmail.googleapis.com/gmail/v1/users/me/drafts — Free
- SDK
- cURL
Add or remove labels on a message. Common use: mark as read by removing UNREAD; archive by removing INBOX; star by adding STARRED.
POSThttps://gmail.googleapis.com/gmail/v1/users/me/messages/18e2f5d8b1a2c3d4/modify — Free
- SDK
- cURL
List threads in the user’s mailbox. Threads bundle reply chains together — prefer threads.list over messages.list when an agent needs to reason about conversations rather than individual messages.
GEThttps://gmail.googleapis.com/gmail/v1/users/me/threads?q=from%3Aboss%40example.com&maxResults=5 — Free
- SDK
- cURL
Get a full thread (all messages in the reply chain). Format options match messages.get: metadata for headers, full for bodies.
GEThttps://gmail.googleapis.com/gmail/v1/users/me/threads/18e2f5d8b1a2c3d4 — Free
- SDK
- cURL
List the user’s labels — both system labels (INBOX, UNREAD, STARRED, IMPORTANT, etc.) and any custom labels the user has created. Returns ID + name for each; agents need IDs (not names) for modify operations.
GEThttps://gmail.googleapis.com/gmail/v1/users/me/labels — Free
- SDK
- cURL
Create a new custom label. Required scope is included in Pipedream’s default Gmail consent. Set labelListVisibility and messageListVisibility to control where the label appears in the Gmail UI.
POSThttps://gmail.googleapis.com/gmail/v1/users/me/labels — Free
- SDK
- cURL
Next Steps
All Providers
Browse all supported AI providers
Forward Proxy
Learn how to construct proxy URLs and authenticate requests