Skip to main content

Gmail full reference

This is the full reference documentation for the Gmail agent connector.

Supported entities and actions​

The Gmail connector supports the following entities and actions.

EntityActions
ProfileGet, Context Store Search, Context Store SQL Query
MessagesList, Get, Create, Update, Context Store Search, Context Store SQL Query
LabelsList, Create, Get, Update, Delete, Context Store Search, Context Store SQL Query
DraftsList, Create, Get, Update, Delete, Context Store Search, Context Store SQL Query
Drafts SendCreate
ThreadsList, Get, Context Store Search, Context Store SQL Query
Messages TrashCreate
Messages UntrashCreate

Profile​

Profile Get​

Gets the current user's Gmail profile including email address and mailbox statistics

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "profile",
"action": "get"
}'

Python SDK​

await gmail.profile.get()

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "profile",
"action": "get"
}'
Response Schema

Records​

Field NameTypeDescription
emailAddressstring | null
messagesTotalinteger | null
threadsTotalinteger | null
historyIdstring | null

Search and filter profile records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "profile",
"action": "context_store_search",
"params": {
"query": {
"filter": {
"eq": {
"emailAddress": "<str>"
}
}
}
}
}'

Python SDK​

await gmail.profile.context_store_search(
query={"filter": {"eq": {"emailAddress": "<str>"}}}
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "profile",
"action": "context_store_search",
"params": {
"query": {"filter": {"eq": {"emailAddress": "<str>"}}}
}
}'

Parameters​

Parameter NameTypeRequiredDescription
queryobjectYesFilter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, startswith, endswith, contains, array_contains, fuzzy, keyword, not, and, or
query.filterobjectNoFilter conditions
query.sortarrayNoSort conditions
limitintegerNoMaximum results to return (default 1000)
cursorstringNoPagination cursor from previous response's meta.cursor
fieldsarrayNoField paths to include in results

Searchable Fields​

Field NameTypeDescription
emailAddressstringEmail address of the authenticated Gmail account
historyIdstringMailbox history record identifier used for incremental sync
messagesTotalnumberTotal number of messages currently in the mailbox
threadsTotalnumberTotal number of threads currently in the mailbox
Response Schema
Field NameTypeDescription
dataarrayList of matching records
metaobjectPagination metadata
meta.has_morebooleanWhether additional pages are available
meta.cursorstring | nullCursor for next page of results
meta.took_msnumber | nullQuery execution time in milliseconds
data[].emailAddressstringEmail address of the authenticated Gmail account
data[].historyIdstringMailbox history record identifier used for incremental sync
data[].messagesTotalnumberTotal number of messages currently in the mailbox
data[].threadsTotalnumberTotal number of threads currently in the mailbox

Profile Context Store SQL Query​

Run a SQL query against profile records in the Airbyte Context Store. SQL projections may return any set of columns, so each result row is a dictionary matching the query's selected fields. Only available in hosted mode.

Use the hosted server documentation to find the qualified Context Store table name and SQL guidance.

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "profile",
"action": "context_store_sql_query",
"params": {
"sql": "SELECT * FROM <qualified_context_store_table> LIMIT 100"
}
}'

Python SDK​

await gmail.profile.context_store_sql_query(
sql="SELECT * FROM <qualified_context_store_table> LIMIT 100"
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "profile",
"action": "context_store_sql_query",
"params": {
"sql": "SELECT * FROM <qualified_context_store_table> LIMIT 100"
}
}'

Parameters​

Parameter NameTypeRequiredDescription
sqlstringYesSQL query to execute against this entity's Context Store data
limitintegerNoMaximum results to return
Response Schema
Field NameTypeDescription
dataarrayProjected rows, with dictionary keys matching the selected columns
metaobjectQuery metadata
meta.has_morebooleanWhether the result was limited and more rows are available
meta.cursornullSQL query results do not use cursor pagination
meta.took_msnumber | nullQuery execution time in milliseconds

Messages​

Messages List​

Lists the messages in the user's mailbox. Returns message IDs and thread IDs.

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "messages",
"action": "list"
}'

Python SDK​

await gmail.messages.list()

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "messages",
"action": "list"
}'

Parameters​

Parameter NameTypeRequiredDescription
maxResultsintegerNoMaximum number of messages to return (1-500)
pageTokenstringNoPage token to retrieve a specific page of results
qstringNoGmail search query (same format as Gmail search box, e.g. "from:user@example.com", "is:unread", "subject:hello")
labelIdsstringNoOnly return messages with labels matching all of the specified label IDs (comma-separated)
includeSpamTrashbooleanNoInclude messages from SPAM and TRASH in the results
Response Schema

Records​

Field NameTypeDescription
idstring
threadIdstring | null

Meta​

Field NameTypeDescription
nextPageTokenstring | null
resultSizeEstimateinteger | null

Messages Get​

Gets the full email message content including headers, body, and attachments metadata

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "messages",
"action": "get",
"params": {
"messageId": "<str>"
}
}'

Python SDK​

await gmail.messages.get(
message_id="<str>"
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "messages",
"action": "get",
"params": {
"messageId": "<str>"
}
}'

Parameters​

Parameter NameTypeRequiredDescription
messageIdstringYesThe ID of the message to retrieve
format"full" | "metadata" | "minimal" | "raw"NoThe format to return the message in (full, metadata, minimal, raw)
metadataHeadersstringNoWhen format is METADATA, only include headers specified (comma-separated)
Response Schema

Records​

Field NameTypeDescription
idstring
threadIdstring | null
labelIdsarray | null
snippetstring | null
historyIdstring | null
internalDatestring | null
sizeEstimateinteger | null
rawstring | null
payloadobject | any

Messages Create​

Sends a new email message. The message should be provided as a base64url-encoded RFC 2822 formatted string in the 'raw' field. Build the complete MIME message first, including headers such as To and Subject plus a blank line before the body, then base64url-encode that message before calling this operation.

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "messages",
"action": "create",
"params": {
"raw": "<str>",
"threadId": "<str>"
}
}'

Python SDK​

await gmail.messages.create(
raw="<str>",
thread_id="<str>"
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "messages",
"action": "create",
"params": {
"raw": "<str>",
"threadId": "<str>"
}
}'

Parameters​

Parameter NameTypeRequiredDescription
rawstringYesBase64url-encoded RFC 2822/MIME email; construct headers plus a blank line plus body, then URL-safe-base64 encode the UTF-8 bytes before sending.
threadIdstringNoThe thread ID to reply to (for threading replies in a conversation)
Response Schema

Records​

Field NameTypeDescription
idstring
threadIdstring | null
labelIdsarray | null
snippetstring | null
historyIdstring | null
internalDatestring | null
sizeEstimateinteger | null
rawstring | null
payloadobject | any

Messages Update​

Modifies the labels on a message. Use this to archive (remove INBOX label), mark as read (remove UNREAD label), mark as unread (add UNREAD label), star (add STARRED label), or apply custom labels.

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "messages",
"action": "update",
"params": {
"addLabelIds": [],
"removeLabelIds": [],
"messageId": "<str>"
}
}'

Python SDK​

await gmail.messages.update(
add_label_ids=[],
remove_label_ids=[],
message_id="<str>"
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "messages",
"action": "update",
"params": {
"addLabelIds": [],
"removeLabelIds": [],
"messageId": "<str>"
}
}'

Parameters​

Parameter NameTypeRequiredDescription
addLabelIdsarray<string>NoA list of label IDs to add to the message (e.g. STARRED, UNREAD, or custom label IDs)
removeLabelIdsarray<string>NoA list of label IDs to remove from the message (e.g. INBOX to archive, UNREAD to mark as read)
messageIdstringYesThe ID of the message to modify
Response Schema

Records​

Field NameTypeDescription
idstring
threadIdstring | null
labelIdsarray | null
snippetstring | null
historyIdstring | null
internalDatestring | null
sizeEstimateinteger | null
rawstring | null
payloadobject | any

Search and filter messages records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "messages",
"action": "context_store_search",
"params": {
"query": {
"filter": {
"eq": {
"id": "<str>"
}
}
}
}
}'

Python SDK​

await gmail.messages.context_store_search(
query={"filter": {"eq": {"id": "<str>"}}}
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "messages",
"action": "context_store_search",
"params": {
"query": {"filter": {"eq": {"id": "<str>"}}}
}
}'

Parameters​

Parameter NameTypeRequiredDescription
queryobjectYesFilter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, startswith, endswith, contains, array_contains, fuzzy, keyword, not, and, or
query.filterobjectNoFilter conditions
query.sortarrayNoSort conditions
limitintegerNoMaximum results to return (default 1000)
cursorstringNoPagination cursor from previous response's meta.cursor
fieldsarrayNoField paths to include in results

Searchable Fields​

Field NameTypeDescription
idstringUnique identifier for the message
threadIdstringIdentifier of the thread this message belongs to
labelIdsarrayLabels applied to the message
snippetstringShort snippet of the message text
historyIdstringMailbox history record identifier for the message
internalDatestringInternal message creation timestamp in epoch milliseconds
sizeEstimateintegerEstimated size of the message in bytes
payloadobjectParsed MIME payload including headers, body, nested MIME parts, and attachment metadata. Use payload.headers for sender, recipients, subject, date, and other email headers.
Response Schema
Field NameTypeDescription
dataarrayList of matching records
metaobjectPagination metadata
meta.has_morebooleanWhether additional pages are available
meta.cursorstring | nullCursor for next page of results
meta.took_msnumber | nullQuery execution time in milliseconds
data[].idstringUnique identifier for the message
data[].threadIdstringIdentifier of the thread this message belongs to
data[].labelIdsarrayLabels applied to the message
data[].snippetstringShort snippet of the message text
data[].historyIdstringMailbox history record identifier for the message
data[].internalDatestringInternal message creation timestamp in epoch milliseconds
data[].sizeEstimateintegerEstimated size of the message in bytes
data[].payloadobjectParsed MIME payload including headers, body, nested MIME parts, and attachment metadata. Use payload.headers for sender, recipients, subject, date, and other email headers.

Messages Context Store SQL Query​

Run a SQL query against messages records in the Airbyte Context Store. SQL projections may return any set of columns, so each result row is a dictionary matching the query's selected fields. Only available in hosted mode.

Use the hosted server documentation to find the qualified Context Store table name and SQL guidance.

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "messages",
"action": "context_store_sql_query",
"params": {
"sql": "SELECT * FROM <qualified_context_store_table> LIMIT 100"
}
}'

Python SDK​

await gmail.messages.context_store_sql_query(
sql="SELECT * FROM <qualified_context_store_table> LIMIT 100"
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "messages",
"action": "context_store_sql_query",
"params": {
"sql": "SELECT * FROM <qualified_context_store_table> LIMIT 100"
}
}'

Parameters​

Parameter NameTypeRequiredDescription
sqlstringYesSQL query to execute against this entity's Context Store data
limitintegerNoMaximum results to return
Response Schema
Field NameTypeDescription
dataarrayProjected rows, with dictionary keys matching the selected columns
metaobjectQuery metadata
meta.has_morebooleanWhether the result was limited and more rows are available
meta.cursornullSQL query results do not use cursor pagination
meta.took_msnumber | nullQuery execution time in milliseconds

Labels​

Labels List​

Lists all labels in the user's mailbox including system and user-created labels

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "labels",
"action": "list"
}'

Python SDK​

await gmail.labels.list()

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "labels",
"action": "list"
}'
Response Schema

Records​

Field NameTypeDescription
idstring
namestring | null
typestring | null
messageListVisibilitystring | null
labelListVisibilitystring | null
messagesTotalinteger | null
messagesUnreadinteger | null
threadsTotalinteger | null
threadsUnreadinteger | null
colorobject | any

Labels Create​

Creates a new label in the user's mailbox

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "labels",
"action": "create",
"params": {
"name": "<str>",
"messageListVisibility": "<str>",
"labelListVisibility": "<str>",
"color": {}
}
}'

Python SDK​

await gmail.labels.create(
name="<str>",
message_list_visibility="<str>",
label_list_visibility="<str>",
color={}
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "labels",
"action": "create",
"params": {
"name": "<str>",
"messageListVisibility": "<str>",
"labelListVisibility": "<str>",
"color": {}
}
}'

Parameters​

Parameter NameTypeRequiredDescription
namestringYesThe display name of the label
messageListVisibility"show" | "hide"NoThe visibility of messages with this label in the message list (show or hide)
labelListVisibility"labelShow" | "labelShowIfUnread" | "labelHide"NoThe visibility of the label in the label list
colorobjectNoThe color to assign to the label
color.textColorstringNoThe text color of the label as a hex string (#RRGGBB)
color.backgroundColorstringNoThe background color of the label as a hex string (#RRGGBB)
Response Schema

Records​

Field NameTypeDescription
idstring
namestring | null
typestring | null
messageListVisibilitystring | null
labelListVisibilitystring | null
messagesTotalinteger | null
messagesUnreadinteger | null
threadsTotalinteger | null
threadsUnreadinteger | null
colorobject | any

Labels Get​

Gets a specific label by ID including message and thread counts

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "labels",
"action": "get",
"params": {
"labelId": "<str>"
}
}'

Python SDK​

await gmail.labels.get(
label_id="<str>"
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "labels",
"action": "get",
"params": {
"labelId": "<str>"
}
}'

Parameters​

Parameter NameTypeRequiredDescription
labelIdstringYesThe ID of the label to retrieve
Response Schema

Records​

Field NameTypeDescription
idstring
namestring | null
typestring | null
messageListVisibilitystring | null
labelListVisibilitystring | null
messagesTotalinteger | null
messagesUnreadinteger | null
threadsTotalinteger | null
threadsUnreadinteger | null
colorobject | any

Labels Update​

Updates the specified label

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "labels",
"action": "update",
"params": {
"id": "<str>",
"name": "<str>",
"messageListVisibility": "<str>",
"labelListVisibility": "<str>",
"color": {},
"labelId": "<str>"
}
}'

Python SDK​

await gmail.labels.update(
id="<str>",
name="<str>",
message_list_visibility="<str>",
label_list_visibility="<str>",
color={},
label_id="<str>"
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "labels",
"action": "update",
"params": {
"id": "<str>",
"name": "<str>",
"messageListVisibility": "<str>",
"labelListVisibility": "<str>",
"color": {},
"labelId": "<str>"
}
}'

Parameters​

Parameter NameTypeRequiredDescription
idstringNoThe ID of the label (must match the path parameter)
namestringNoThe new display name of the label
messageListVisibility"show" | "hide"NoThe visibility of messages with this label in the message list
labelListVisibility"labelShow" | "labelShowIfUnread" | "labelHide"NoThe visibility of the label in the label list
colorobjectNoThe color to assign to the label
color.textColorstringNoThe text color of the label as a hex string (#RRGGBB)
color.backgroundColorstringNoThe background color of the label as a hex string (#RRGGBB)
labelIdstringYesThe ID of the label to update
Response Schema

Records​

Field NameTypeDescription
idstring
namestring | null
typestring | null
messageListVisibilitystring | null
labelListVisibilitystring | null
messagesTotalinteger | null
messagesUnreadinteger | null
threadsTotalinteger | null
threadsUnreadinteger | null
colorobject | any

Labels Delete​

Deletes the specified label and removes it from any messages and threads

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "labels",
"action": "delete",
"params": {
"labelId": "<str>"
}
}'

Python SDK​

await gmail.labels.delete(
label_id="<str>"
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "labels",
"action": "delete",
"params": {
"labelId": "<str>"
}
}'

Parameters​

Parameter NameTypeRequiredDescription
labelIdstringYesThe ID of the label to delete

Search and filter labels records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "labels",
"action": "context_store_search",
"params": {
"query": {
"filter": {
"eq": {
"id": "<str>"
}
}
}
}
}'

Python SDK​

await gmail.labels.context_store_search(
query={"filter": {"eq": {"id": "<str>"}}}
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "labels",
"action": "context_store_search",
"params": {
"query": {"filter": {"eq": {"id": "<str>"}}}
}
}'

Parameters​

Parameter NameTypeRequiredDescription
queryobjectYesFilter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, startswith, endswith, contains, array_contains, fuzzy, keyword, not, and, or
query.filterobjectNoFilter conditions
query.sortarrayNoSort conditions
limitintegerNoMaximum results to return (default 1000)
cursorstringNoPagination cursor from previous response's meta.cursor
fieldsarrayNoField paths to include in results

Searchable Fields​

Field NameTypeDescription
idstringUnique identifier for the label
namestringDisplay name of the label
typestringLabel type: system or user
labelListVisibilitystringVisibility of the label in the label list
messageListVisibilitystringVisibility of the label when viewing a message list
Response Schema
Field NameTypeDescription
dataarrayList of matching records
metaobjectPagination metadata
meta.has_morebooleanWhether additional pages are available
meta.cursorstring | nullCursor for next page of results
meta.took_msnumber | nullQuery execution time in milliseconds
data[].idstringUnique identifier for the label
data[].namestringDisplay name of the label
data[].typestringLabel type: system or user
data[].labelListVisibilitystringVisibility of the label in the label list
data[].messageListVisibilitystringVisibility of the label when viewing a message list

Labels Context Store SQL Query​

Run a SQL query against labels records in the Airbyte Context Store. SQL projections may return any set of columns, so each result row is a dictionary matching the query's selected fields. Only available in hosted mode.

Use the hosted server documentation to find the qualified Context Store table name and SQL guidance.

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "labels",
"action": "context_store_sql_query",
"params": {
"sql": "SELECT * FROM <qualified_context_store_table> LIMIT 100"
}
}'

Python SDK​

await gmail.labels.context_store_sql_query(
sql="SELECT * FROM <qualified_context_store_table> LIMIT 100"
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "labels",
"action": "context_store_sql_query",
"params": {
"sql": "SELECT * FROM <qualified_context_store_table> LIMIT 100"
}
}'

Parameters​

Parameter NameTypeRequiredDescription
sqlstringYesSQL query to execute against this entity's Context Store data
limitintegerNoMaximum results to return
Response Schema
Field NameTypeDescription
dataarrayProjected rows, with dictionary keys matching the selected columns
metaobjectQuery metadata
meta.has_morebooleanWhether the result was limited and more rows are available
meta.cursornullSQL query results do not use cursor pagination
meta.took_msnumber | nullQuery execution time in milliseconds

Drafts​

Drafts List​

Lists the drafts in the user's mailbox

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "drafts",
"action": "list"
}'

Python SDK​

await gmail.drafts.list()

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "drafts",
"action": "list"
}'

Parameters​

Parameter NameTypeRequiredDescription
maxResultsintegerNoMaximum number of drafts to return (1-500)
pageTokenstringNoPage token to retrieve a specific page of results
qstringNoGmail search query to filter drafts
includeSpamTrashbooleanNoInclude drafts from SPAM and TRASH in the results
Response Schema

Records​

Field NameTypeDescription
idstring
messageobject | any

Meta​

Field NameTypeDescription
nextPageTokenstring | null
resultSizeEstimateinteger | null

Drafts Create​

Creates a new draft with the specified message content

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "drafts",
"action": "create",
"params": {
"message": {
"raw": "<str>"
}
}
}'

Python SDK​

await gmail.drafts.create(
message={
"raw": "<str>"
}
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "drafts",
"action": "create",
"params": {
"message": {
"raw": "<str>"
}
}
}'

Parameters​

Parameter NameTypeRequiredDescription
messageobjectYesThe draft message content encoded in Gmail raw message format
message.rawstringYesBase64url-encoded RFC 2822/MIME email; construct headers plus a blank line plus body, then URL-safe-base64 encode the UTF-8 bytes before creating or updating the draft.
message.threadIdstringNoThe thread ID for the draft (for threading in a conversation)
Response Schema

Records​

Field NameTypeDescription
idstring
messageobject | any

Drafts Get​

Gets the specified draft including its message content

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "drafts",
"action": "get",
"params": {
"draftId": "<str>"
}
}'

Python SDK​

await gmail.drafts.get(
draft_id="<str>"
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "drafts",
"action": "get",
"params": {
"draftId": "<str>"
}
}'

Parameters​

Parameter NameTypeRequiredDescription
draftIdstringYesThe ID of the draft to retrieve
format"full" | "metadata" | "minimal" | "raw"NoThe format to return the draft message in (full, metadata, minimal, raw)
Response Schema

Records​

Field NameTypeDescription
idstring
messageobject | any

Drafts Update​

Replaces a draft's content with the specified message content

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "drafts",
"action": "update",
"params": {
"message": {
"raw": "<str>"
},
"draftId": "<str>"
}
}'

Python SDK​

await gmail.drafts.update(
message={
"raw": "<str>"
},
draft_id="<str>"
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "drafts",
"action": "update",
"params": {
"message": {
"raw": "<str>"
},
"draftId": "<str>"
}
}'

Parameters​

Parameter NameTypeRequiredDescription
messageobjectYesThe draft message content encoded in Gmail raw message format
message.rawstringYesBase64url-encoded RFC 2822/MIME email; construct headers plus a blank line plus body, then URL-safe-base64 encode the UTF-8 bytes before creating or updating the draft.
message.threadIdstringNoThe thread ID for the draft (for threading in a conversation)
draftIdstringYesThe ID of the draft to update
Response Schema

Records​

Field NameTypeDescription
idstring
messageobject | any

Drafts Delete​

Immediately and permanently deletes the specified draft (does not move to trash)

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "drafts",
"action": "delete",
"params": {
"draftId": "<str>"
}
}'

Python SDK​

await gmail.drafts.delete(
draft_id="<str>"
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "drafts",
"action": "delete",
"params": {
"draftId": "<str>"
}
}'

Parameters​

Parameter NameTypeRequiredDescription
draftIdstringYesThe ID of the draft to delete

Search and filter drafts records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "drafts",
"action": "context_store_search",
"params": {
"query": {
"filter": {
"eq": {
"id": "<str>"
}
}
}
}
}'

Python SDK​

await gmail.drafts.context_store_search(
query={"filter": {"eq": {"id": "<str>"}}}
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "drafts",
"action": "context_store_search",
"params": {
"query": {"filter": {"eq": {"id": "<str>"}}}
}
}'

Parameters​

Parameter NameTypeRequiredDescription
queryobjectYesFilter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, startswith, endswith, contains, array_contains, fuzzy, keyword, not, and, or
query.filterobjectNoFilter conditions
query.sortarrayNoSort conditions
limitintegerNoMaximum results to return (default 1000)
cursorstringNoPagination cursor from previous response's meta.cursor
fieldsarrayNoField paths to include in results

Searchable Fields​

Field NameTypeDescription
idstringUnique identifier for the draft
messageobjectDraft message payload (headers, body, and metadata)
Response Schema
Field NameTypeDescription
dataarrayList of matching records
metaobjectPagination metadata
meta.has_morebooleanWhether additional pages are available
meta.cursorstring | nullCursor for next page of results
meta.took_msnumber | nullQuery execution time in milliseconds
data[].idstringUnique identifier for the draft
data[].messageobjectDraft message payload (headers, body, and metadata)

Drafts Context Store SQL Query​

Run a SQL query against drafts records in the Airbyte Context Store. SQL projections may return any set of columns, so each result row is a dictionary matching the query's selected fields. Only available in hosted mode.

Use the hosted server documentation to find the qualified Context Store table name and SQL guidance.

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "drafts",
"action": "context_store_sql_query",
"params": {
"sql": "SELECT * FROM <qualified_context_store_table> LIMIT 100"
}
}'

Python SDK​

await gmail.drafts.context_store_sql_query(
sql="SELECT * FROM <qualified_context_store_table> LIMIT 100"
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "drafts",
"action": "context_store_sql_query",
"params": {
"sql": "SELECT * FROM <qualified_context_store_table> LIMIT 100"
}
}'

Parameters​

Parameter NameTypeRequiredDescription
sqlstringYesSQL query to execute against this entity's Context Store data
limitintegerNoMaximum results to return
Response Schema
Field NameTypeDescription
dataarrayProjected rows, with dictionary keys matching the selected columns
metaobjectQuery metadata
meta.has_morebooleanWhether the result was limited and more rows are available
meta.cursornullSQL query results do not use cursor pagination
meta.took_msnumber | nullQuery execution time in milliseconds

Drafts Send​

Drafts Send Create​

Sends the specified existing draft to its recipients

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "drafts_send",
"action": "create",
"params": {
"id": "<str>"
}
}'

Python SDK​

await gmail.drafts_send.create(
id="<str>"
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "drafts_send",
"action": "create",
"params": {
"id": "<str>"
}
}'

Parameters​

Parameter NameTypeRequiredDescription
idstringYesThe ID of the draft to send
Response Schema

Records​

Field NameTypeDescription
idstring
threadIdstring | null
labelIdsarray | null
snippetstring | null
historyIdstring | null
internalDatestring | null
sizeEstimateinteger | null
rawstring | null
payloadobject | any

Threads​

Threads List​

Lists the threads in the user's mailbox

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "threads",
"action": "list"
}'

Python SDK​

await gmail.threads.list()

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "threads",
"action": "list"
}'

Parameters​

Parameter NameTypeRequiredDescription
maxResultsintegerNoMaximum number of threads to return (1-500)
pageTokenstringNoPage token to retrieve a specific page of results
qstringNoGmail search query to filter threads
labelIdsstringNoOnly return threads with labels matching all of the specified label IDs (comma-separated)
includeSpamTrashbooleanNoInclude threads from SPAM and TRASH in the results
Response Schema

Records​

Field NameTypeDescription
idstring
snippetstring | null
historyIdstring | null

Meta​

Field NameTypeDescription
nextPageTokenstring | null
resultSizeEstimateinteger | null

Threads Get​

Gets the specified thread including all messages in the conversation

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "threads",
"action": "get",
"params": {
"threadId": "<str>"
}
}'

Python SDK​

await gmail.threads.get(
thread_id="<str>"
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "threads",
"action": "get",
"params": {
"threadId": "<str>"
}
}'

Parameters​

Parameter NameTypeRequiredDescription
threadIdstringYesThe ID of the thread to retrieve
format"full" | "metadata" | "minimal"NoThe format to return the messages in (full, metadata, minimal)
metadataHeadersstringNoWhen format is METADATA, only include headers specified (comma-separated)
Response Schema

Records​

Field NameTypeDescription
idstring
snippetstring | null
historyIdstring | null
messagesarray | null
messages[].idstring
messages[].threadIdstring | null
messages[].labelIdsarray | null
messages[].snippetstring | null
messages[].historyIdstring | null
messages[].internalDatestring | null
messages[].sizeEstimateinteger | null
messages[].rawstring | null
messages[].payloadobject | any

Search and filter threads records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "threads",
"action": "context_store_search",
"params": {
"query": {
"filter": {
"eq": {
"id": "<str>"
}
}
}
}
}'

Python SDK​

await gmail.threads.context_store_search(
query={"filter": {"eq": {"id": "<str>"}}}
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "threads",
"action": "context_store_search",
"params": {
"query": {"filter": {"eq": {"id": "<str>"}}}
}
}'

Parameters​

Parameter NameTypeRequiredDescription
queryobjectYesFilter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, startswith, endswith, contains, array_contains, fuzzy, keyword, not, and, or
query.filterobjectNoFilter conditions
query.sortarrayNoSort conditions
limitintegerNoMaximum results to return (default 1000)
cursorstringNoPagination cursor from previous response's meta.cursor
fieldsarrayNoField paths to include in results

Searchable Fields​

Field NameTypeDescription
idstringUnique identifier for the thread
historyIdstringMailbox history record identifier for the thread
snippetstringShort snippet of the thread's most recent message
Response Schema
Field NameTypeDescription
dataarrayList of matching records
metaobjectPagination metadata
meta.has_morebooleanWhether additional pages are available
meta.cursorstring | nullCursor for next page of results
meta.took_msnumber | nullQuery execution time in milliseconds
data[].idstringUnique identifier for the thread
data[].historyIdstringMailbox history record identifier for the thread
data[].snippetstringShort snippet of the thread's most recent message

Threads Context Store SQL Query​

Run a SQL query against threads records in the Airbyte Context Store. SQL projections may return any set of columns, so each result row is a dictionary matching the query's selected fields. Only available in hosted mode.

Use the hosted server documentation to find the qualified Context Store table name and SQL guidance.

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "threads",
"action": "context_store_sql_query",
"params": {
"sql": "SELECT * FROM <qualified_context_store_table> LIMIT 100"
}
}'

Python SDK​

await gmail.threads.context_store_sql_query(
sql="SELECT * FROM <qualified_context_store_table> LIMIT 100"
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "threads",
"action": "context_store_sql_query",
"params": {
"sql": "SELECT * FROM <qualified_context_store_table> LIMIT 100"
}
}'

Parameters​

Parameter NameTypeRequiredDescription
sqlstringYesSQL query to execute against this entity's Context Store data
limitintegerNoMaximum results to return
Response Schema
Field NameTypeDescription
dataarrayProjected rows, with dictionary keys matching the selected columns
metaobjectQuery metadata
meta.has_morebooleanWhether the result was limited and more rows are available
meta.cursornullSQL query results do not use cursor pagination
meta.took_msnumber | nullQuery execution time in milliseconds

Messages Trash​

Messages Trash Create​

Moves the specified message to the trash

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "messages_trash",
"action": "create",
"params": {
"messageId": "<str>"
}
}'

Python SDK​

await gmail.messages_trash.create(
message_id="<str>"
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "messages_trash",
"action": "create",
"params": {
"messageId": "<str>"
}
}'

Parameters​

Parameter NameTypeRequiredDescription
messageIdstringYesThe ID of the message to trash
Response Schema

Records​

Field NameTypeDescription
idstring
threadIdstring | null
labelIdsarray | null
snippetstring | null
historyIdstring | null
internalDatestring | null
sizeEstimateinteger | null
rawstring | null
payloadobject | any

Messages Untrash​

Messages Untrash Create​

Removes the specified message from the trash

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "gmail",
"entity": "messages_untrash",
"action": "create",
"params": {
"messageId": "<str>"
}
}'

Python SDK​

await gmail.messages_untrash.create(
message_id="<str>"
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "messages_untrash",
"action": "create",
"params": {
"messageId": "<str>"
}
}'

Parameters​

Parameter NameTypeRequiredDescription
messageIdstringYesThe ID of the message to untrash
Response Schema

Records​

Field NameTypeDescription
idstring
threadIdstring | null
labelIdsarray | null
snippetstring | null
historyIdstring | null
internalDatestring | null
sizeEstimateinteger | null
rawstring | null
payloadobject | any