---
title: GetGist API Integration on Truto
slug: getgist
category: Marketing Automation
canonical: "https://truto.one/integrations/detail/getgist/"
---

# GetGist API Integration on Truto



**Category:** Marketing Automation  
**Status:** Generally available

## MCP-ready AI tools

Truto exposes 59 tools for GetGist that AI agents can call directly.

- **list_all_get_gist_articles** — List all knowledgebase articles in your Gist workspace, sorted by creation date descending. Returns article records with id, parent_id, default_locale, statistics, and translations.
- **get_single_get_gist_article_by_id** — Get a single Gist knowledgebase article by id. Returns the article record with id, parent_id, default_locale, statistics, and translations. Required: id.
- **create_a_get_gist_article** — Create a new knowledgebase article in Gist with one or more locale translations. Returns: message.
- **update_a_get_gist_article_by_id** — Update an existing Gist knowledgebase article by id. Returns: message. Required: id and translations with per-locale author_id, title, html_text, and status.
- **get_gist_articles_search** — Search Gist knowledgebase articles by a text string. Returns matching article records with id, parent_id, default_locale, statistics, and translations. Required: search_text.
- **delete_a_get_gist_article_by_id** — Delete an article from a Gist workspace by its id. Returns: message.g. "Article deleted successfully."). Required: id.
- **list_all_get_gist_collections** — List all knowledgebase collections in the Gist workspace, sorted by creation date with the most recently created first. Returns collections with id, parent_id, default_locale, translations, created_at, and updated_at.
- **get_single_get_gist_collection_by_id** — Get a single knowledgebase collection by id. Returns: collection, message. Required: id.
- **create_a_get_gist_collection** — Create a knowledgebase collection in Gist. Returns: collection, message. Required: translations with per-locale name, description, and icon; parent_id is optional.
- **update_a_get_gist_collection_by_id** — Update a knowledgebase collection by id in Gist. Returns: collection, message. Required: id. All body fields are optional.
- **delete_a_get_gist_collection_by_id** — Delete a knowledgebase collection by id in Gist. Returns: message. Required: id.
- **get_gist_contacts_upsert** — Create or update a contact in getgist. Matches an existing contact by id, then user_id, then email and creates a new one when no match is found. Returns: contact, id, object, deleted. Requires email and user_id (both required when creating; one of the two when updating).
- **get_gist_contacts_batch_upsert** — Create or update a batch of contacts in getgist. Returns: status. Requires contacts. The import is queued and processed asynchronously; use the returned batch_id to poll the batch status.
- **get_gist_contacts_get_batch_status** — Get the status of a batch contact import in getgist. Returns: message. Required: batch_id. status is QUEUED, IN_PROGRESS or COMPLETED; imported_contacts and errors are only present when the status is COMPLETED.
- **get_single_get_gist_contact_by_id** — Retrieve a single contact in getgist by id. Returns: contact, id, object, deleted. Required: id. Alternatively look up with user_id or email (email must be URL-encoded).
- **list_all_get_gist_contacts** — List all contacts in getgist, sorted by created_at and ordered descending by default. Returns contact records with id, type, email, name, user_id, phone, created_at, signed_up_at, last_seen_at, location_data, segments, tags, and custom_properties. Optionally pass order and order_by to change sorting.
- **delete_a_get_gist_contact_by_id** — Delete a contact in getgist by its id. Returns: id, object, deleted. Required: id.
- **get_gist_events_track** — Track an event in Gist, recording that a contact performed it. Returns the tracked event object including its id, name, email, properties, and occurred_at. Required: event_name plus one contact reference — email, user_id, or id. occurred_at defaults to the current time when omitted.
- **list_all_get_gist_events** — List the events a contact performed in Gist. Returns event records including their id, name, email, properties, and occurred_at. Required: person_id. Max 60 per page.
- **get_gist_tags_upsert** — Create a new tag in getgist or update an existing tag's name. Returns the tag object under tag (id, name). Required: name. Repeated or case-variant names map to a single tag; include the tag's id to rename an existing tag.
- **delete_a_get_gist_tag_by_id** — Delete a getgist tag by id. Returns the deleted tag object under tag (id, name). Required: id.
- **list_all_get_gist_tags** — List all tags defined in a getgist workspace. Returns a paginated list of tag records, each with: id, name.
- **get_gist_tags_tag_contacts** — Add a getgist tag to multiple contacts at once, creating the tag if it does not already exist. Returns: tag, message. Required: name, contacts (each entry identifies a contact by id, email or user_id). No more than 50 contacts per request is recommended.
- **get_gist_tags_untag_contacts** — Remove a getgist tag from multiple contacts by adding untag: true to each contact object. Returns: tag, message. Required: name, contacts (each entry identifies a contact by id, email or user_id, with untag set to true).
- **list_all_get_gist_segments** — List all segments in your Gist workspace. Returns each segment's id, name, created_at, and updated_at, plus the contact count when include_count is true.
- **get_single_get_gist_segment_by_id** — Get a single Gist segment by id. Returns: id, name, created_at, updated_at, count, segment. Required: id.
- **list_all_get_gist_forms** — List all forms in your getgist workspace. Returns each form's id, title, created_at, form_type, status, and fields.
- **get_single_get_gist_form_by_id** — Get a single getgist form by id. Returns the form's id, title, created_at, form_type, status, and fields. Required: id.
- **get_gist_forms_subscribe** — Subscribe a contact to a getgist form by submitting the form's field values. Returns: acknowledge_message_header, acknowledge_message, redirect_to_url. Required: form_id, fields.
- **get_gist_forms_list_submissions** — List all submissions for a getgist form. Returns each submission's fields, submitted_at, page_url, ip_address, consent_to_process, consent_to_process_text, skip_validation, and confirmed_at. Required: form_id.
- **list_all_get_gist_campaigns** — List all getgist campaigns in the workspace, most recently created first. Returns: id, status, name, created_at, updated_at, email_count, active_subscriber_count, unsubscribed_subscriber_count, email_open_rate, email_click_rate, href.
- **get_single_get_gist_campaign_by_id** — Get a single getgist campaign by id. Returns the campaign object including id, name, status, active_subscriber_count, and email_open_rate. Required: id.
- **get_gist_campaigns_subscribe** — Subscribe a contact to a getgist campaign. Returns the campaign object including id, name, status, email_count, active_subscriber_count, and email_open_rate. Required: campaign_id and email; user_id may be sent instead of email.
- **get_gist_campaigns_unsubscribe** — Unsubscribe a contact from a getgist campaign. Returns the campaign object including id, name, status, email_count, active_subscriber_count, and email_open_rate. Required: campaign_id and email; user_id may be sent instead of email.
- **get_gist_campaigns_list_subscribers** — List all contacts subscribed to a getgist campaign. Returns: id, name, email, user_id, phone, created_at, signed_up_at, last_seen_at, updated_at, last_contacted_at, session_count, avatar, landing_url, original_referrer, last_seen_ip, last_seen_user_agent, location_data, segments, tags, social_profiles, subscription_types, custom_properties, unsubscribed_from_emails. Required: campaign_id.
- **list_all_get_gist_subscription_types** — List all subscription types in getgist. Returns subscription types with id, name, description, people_count, status, and display_order.
- **get_single_get_gist_subscription_type_by_id** — Get a single getgist subscription type by id. Returns: id, message. Required: id.
- **get_gist_subscription_types_attach** — Attach a contact to a getgist subscription type. Returns the subscription type including id, name, description, people_count, status, and display_order. Required: subscription_type_id and subscribed_status (true to add); identify the contact by user_id, email, or contact_id.
- **get_gist_subscription_types_detach** — Detach a contact from a getgist subscription type. Returns the subscription type including id, name, description, people_count, status, and display_order. Required: subscription_type_id and subscribed_status (false to remove); identify the contact by user_id, email, or contact_id.
- **create_a_get_gist_conversation** — Create a conversation in Gist initiated by a contact, identified by Gist id, your user_id or email. Useful for mirroring activity from other systems. Returns the created conversation. Required: from, body.

- **get_single_get_gist_conversation_by_id** — Get a single Gist conversation by id, including its state, assignee, contacts, teammates, tags and custom properties. Returns: conversation. Required: id.

- **get_gist_conversations_list_messages** — List the messages in a Gist conversation, oldest first, optionally including internal notes. Returns message records with id, message_type, body, from, created_at and attachments. Required: conversation_id.

- **get_gist_conversations_reply** — Reply to a Gist conversation as a contact, a teammate or a bot, or add an internal note (teammates only). Contact replies pass from.type=contact with the contact id, user_id or email; teammate replies pass from.type=teammate and teammate_id. Returns the created message. Required: conversation_id, message_type, from, body.

- **delete_a_get_gist_conversation_by_id** — Delete a Gist conversation by id. Returns an empty response on success. Required: id.

- **get_gist_conversations_assign** — Assign a Gist conversation to a teammate or a team. Only teammates can assign, so teammate_id identifies who is assigning; set assignee_type=team when assigning to a team. Returns the updated conversation. Required: conversation_id, teammate_id, assignee_id.

- **get_gist_conversations_unassign** — Unassign a Gist conversation so any teammate can pick it up when the contact replies. Sends assignee_id as null on behalf of the acting teammate. Returns the updated conversation. Required: conversation_id, teammate_id.

- **get_gist_conversations_snooze** — Snooze a Gist conversation by setting its state to snoozed, acting as a teammate (teammate_id) or as a bot (type=bot). Requires snoozed_until, the Unix time the conversation should reopen. Returns the updated conversation. Required: conversation_id, state, snoozed_until.

- **get_gist_conversations_unsnooze** — Unsnooze (reopen) a Gist conversation by setting its state to open, acting as a teammate (teammate_id) or as a bot (type=bot). Returns the updated conversation. Required: conversation_id, state.

- **get_gist_conversations_close** — Close a Gist conversation by setting its state to closed, acting as a teammate (teammate_id) or as a bot (type=bot). Returns the updated conversation. Required: conversation_id, state.

- **get_gist_conversations_prioritize** — Mark a Gist conversation as priority or not_priority, acting as a teammate or a bot. Returns the updated conversation. Required: conversation_id, priority.

- **get_gist_conversations_get_counts** — Get workspace-wide conversation counts by state: open, closed, snoozed, unassigned and assigned. A state with zero conversations is omitted. Returns: conversation_count. Takes no parameters.

- **get_gist_conversations_get_team_counts** — Get per-team conversation counts in the Gist workspace: each team's id, name and number of open, snoozed and closed conversations assigned to it. Returns: conversation_count.teams. Takes no parameters.

- **get_gist_conversations_get_teammate_counts** — Get per-teammate conversation counts in the Gist workspace: each teammate's id, name and number of open, snoozed and closed conversations assigned to them. Returns: conversation_count.teammates. Takes no parameters.

- **get_gist_conversations_tag** — Apply one or more tags (comma-separated names) to a Gist conversation, optionally to a specific message; without message_id the tags go on the last message. Returns the updated conversation. Required: conversation_id, tags.

- **get_gist_conversations_untag** — Remove a tag from a Gist conversation by tag id, from one message or, without message_id, from every message in the conversation. Returns the updated conversation. Required: conversation_id, tag_id.

- **list_all_get_gist_conversations** — List conversations in the Gist workspace, newest updated first by default. Filter by status (open, closed, snoozed) and sort by created_at, updated_at or waiting_longest. Returns conversation records with id, created_at, updated_at, channel, title, contacts, teammates, assignee, open, state, read, waiting_since, snoozed_until, priority, tags and custom_properties.

- **get_gist_conversations_search** — Search Gist conversations with a structured filter_query: an array of groups (OR between groups) each holding criteria (AND within a group) of key, operator and value. Keys include contact.id, contact.email, teammate_assigned_id, team_assigned_id, channel, state, tags and custom properties; operators include =, !=, IN, NIN, >, <. Results are sorted by updated_at descending; use status and page to narrow. Returns matching conversation records. Required: filter_query.

- **get_gist_conversations_bulk_update** — Update a single Gist conversation's title or custom properties (despite the method name, this acts on one conversation). Returns the updated conversation. Required: conversation_id.

- **get_gist_workspaces_upsert_token** — Retrieve workspace meta for the current Gist workspace via POST /token. Returns: created_at, message. An expires_in of 0 may indicate no expiration on the token. Required: none.

## How it works

1. **Link your customer's GetGist account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach GetGist.** The Proxy API is a 1-to-1 mapping of the GetGist API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Activate warehouse data in GetGist campaigns** — Reverse ETL and CDP platforms can offer customers a native GetGist destination to sync contact attributes, tags, and product events — turning Snowflake or BigQuery data into triggers for marketing automations without custom engineering.
- **Power AI support agents on GetGist Inbox** — AI copilots and ticket deflection tools can ingest the customer's GetGist knowledge base, monitor incoming conversations, auto-reply as a bot, and escalate to a human teammate — delivering an out-of-the-box GetGist connector to every customer.
- **Push qualified leads from forms and landing pages** — Form builders, webinar platforms, and lead-gen tools can let users route submissions directly into GetGist contacts, forms, and campaign sequences — eliminating Zapier middleware for their customers.
- **Mirror conversations into CRMs and systems of record** — Sales and CX platforms can sync GetGist conversations, tags, and assignments bi-directionally so reps see live chat context inside their CRM and update ticket state without leaving their workflow.
- **Centralize knowledge base content for docs and search tools** — Documentation platforms, in-app search, and content governance tools can pull GetGist articles and collections to index, translate, or audit help content as part of a broader knowledge layer.

## What you can build

- **Batch contact sync with status tracking** — Upsert thousands of contacts asynchronously using batch endpoints and poll batch status to confirm successful ingestion into GetGist.
- **Event-triggered marketing automations** — Stream product-led events like 'Plan Upgraded' or 'Usage Dropped' into GetGist to fire visual workflows and drip campaigns in real time.
- **Two-way conversation sync** — List, search, reply to, assign, snooze, tag, prioritize, and close GetGist conversations from your app to keep an external inbox or CRM in lockstep.
- **Bot-authored replies and internal notes** — Post AI-generated public replies as a bot or add internal notes on a conversation, with handoff to a human teammate when confidence is low.
- **Bulk tagging and segment orchestration** — Apply or remove tags across up to 50 contacts per call to move cohorts into GetGist segments and trigger downstream campaigns.
- **Knowledge base ingestion for RAG and search** — Pull every article and collection — including multi-locale content — to feed LLM retrieval, in-app search, or content audit pipelines.

## FAQs

### How does authentication work for GetGist through Truto?

Truto handles the GetGist auth handshake and token storage for each of your end users. Your app initiates a connection through Truto's link flow, and Truto returns a connection ID you use to make authenticated calls — no credential management on your side.

### Can I sync large volumes of contacts without hitting rate limits?

Yes. Use the batch upsert tool to send contacts asynchronously and the batch status tool to track progress. Truto also manages retries and backoff behavior transparently so you don't have to handle GetGist's rate limiting directly.

### What conversation operations are supported?

You can list, search, create, reply, assign, unassign, snooze, unsnooze, close, prioritize, tag, untag, bulk update, and delete conversations. You can also fetch conversation counts by team or teammate and list messages within a thread.

### Can replies be posted as a bot versus a human teammate?

Yes. The reply tool supports posting as a contact, a teammate, or a bot, and can also create internal notes — which is the standard pattern for AI copilots that auto-respond and then hand off to a human.

### How fresh is the data — is it polling or real-time?

The current GetGist integration exposes REST tools, so data freshness depends on how often you poll endpoints like list conversations or search. For event ingestion into GetGist, writes are made synchronously via the track and upsert tools.

### Does the integration support knowledge base articles and collections?

Yes. You can list, read, create, update, delete, and search articles, and manage collections with full CRUD. This covers the common AI training and content indexing use cases.
