, \ |
| `noteType` | string | No | Content type of the note: text/plain (default) or text/html |
| `sendNotifications` | boolean | No | Whether to send notifications to subscribed users (default false) |
| `isPrivate` | boolean | No | Whether the note is private (only visible to the author) |
| `createdAt` | string | No | Backdated creation timestamp in ISO 8601 (e.g. 2024-01-01T00:00:00Z). Defaults to now. |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------- | ------- | --------------------------- |
| `id` | string | Created note UUID |
| `createdAt` | string | ISO 8601 creation timestamp |
| `isPrivate` | boolean | Whether the note is private |
| `content` | string | Note content |
| `author` | object | Author of the note |
| ↳ `id` | string | Author user UUID |
| ↳ `firstName` | string | Author first name |
| ↳ `lastName` | string | Author last name |
| ↳ `email` | string | Author email |
### Ashby Get Application [#ashby-get-application]
Retrieves full details about a single application by its ID.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------ |
| `apiKey` | string | Yes | Ashby API Key |
| `applicationId` | string | Yes | The UUID of the application to fetch |
#### Output [#output-5]
| Parameter | Type | Description |
| -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `candidates` | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses\[], phoneNumbers\[], socialLinks\[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents\[], tags\[], applicationIds\[], customFields\[], resumeFileHandle, fileHandles\[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
| `jobs` | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds\[], customFields\[], jobPostingIds\[], customRequisitionId, brandId, hiringTeam\[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings\[] with latestVersion) |
| `applications` | json | List of applications (id, status, customFields\[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields\[], archivedAt, job summary, creditedToUser, hiringTeam\[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) |
| `notes` | json | List of notes (id, content, author, isPrivate, createdAt) |
| `offers` | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields\[]/fileHandles\[]/author/approvalStatus) |
| `archiveReasons` | json | List of archive reasons (id, text, reasonType \[RejectedByCandidate/RejectedByOrg/Other], isArchived) |
| `sources` | json | List of sources (id, title, isArchived, sourceType \{id, title, isArchived}) |
| `customFields` | json | List of custom field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}) |
| `departments` | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) |
| `locations` | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) |
| `jobPostings` | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) |
| `openings` | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds\[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds\[]/hiringTeam\[]/customFields\[]) |
| `users` | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) |
| `interviewSchedules` | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents\[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) |
| `tags` | json | List of candidate tags (id, title, isArchived) |
| `id` | string | Resource UUID |
| `name` | string | Resource name |
| `title` | string | Job title or job posting title |
| `status` | string | Status |
| `candidate` | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. |
| `job` | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam\[], author, location, openings\[], createdAt, updatedAt) |
| `application` | json | Application details (id, status, customFields\[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam\[], createdAt, updatedAt) |
| `offer` | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) |
| `jobPosting` | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy\[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job \[included when expandJob=true]) |
| `content` | string | Note content |
| `author` | json | Note author (id, firstName, lastName, email) |
| `isPrivate` | boolean | Whether the note is private |
| `createdAt` | string | ISO 8601 creation timestamp |
| `moreDataAvailable` | boolean | Whether more pages exist |
| `nextCursor` | string | Pagination cursor for next page |
| `syncToken` | string | Sync token for incremental updates |
### Ashby Get Candidate [#ashby-get-candidate]
Retrieves full details about a single candidate by their ID.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `candidateId` | string | Yes | The UUID of the candidate to fetch |
#### Output [#output-6]
| Parameter | Type | Description |
| -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `candidates` | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses\[], phoneNumbers\[], socialLinks\[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents\[], tags\[], applicationIds\[], customFields\[], resumeFileHandle, fileHandles\[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
| `jobs` | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds\[], customFields\[], jobPostingIds\[], customRequisitionId, brandId, hiringTeam\[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings\[] with latestVersion) |
| `applications` | json | List of applications (id, status, customFields\[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields\[], archivedAt, job summary, creditedToUser, hiringTeam\[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) |
| `notes` | json | List of notes (id, content, author, isPrivate, createdAt) |
| `offers` | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields\[]/fileHandles\[]/author/approvalStatus) |
| `archiveReasons` | json | List of archive reasons (id, text, reasonType \[RejectedByCandidate/RejectedByOrg/Other], isArchived) |
| `sources` | json | List of sources (id, title, isArchived, sourceType \{id, title, isArchived}) |
| `customFields` | json | List of custom field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}) |
| `departments` | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) |
| `locations` | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) |
| `jobPostings` | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) |
| `openings` | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds\[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds\[]/hiringTeam\[]/customFields\[]) |
| `users` | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) |
| `interviewSchedules` | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents\[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) |
| `tags` | json | List of candidate tags (id, title, isArchived) |
| `id` | string | Resource UUID |
| `name` | string | Resource name |
| `title` | string | Job title or job posting title |
| `status` | string | Status |
| `candidate` | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. |
| `job` | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam\[], author, location, openings\[], createdAt, updatedAt) |
| `application` | json | Application details (id, status, customFields\[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam\[], createdAt, updatedAt) |
| `offer` | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) |
| `jobPosting` | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy\[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job \[included when expandJob=true]) |
| `content` | string | Note content |
| `author` | json | Note author (id, firstName, lastName, email) |
| `isPrivate` | boolean | Whether the note is private |
| `createdAt` | string | ISO 8601 creation timestamp |
| `moreDataAvailable` | boolean | Whether more pages exist |
| `nextCursor` | string | Pagination cursor for next page |
| `syncToken` | string | Sync token for incremental updates |
### Ashby Get Job [#ashby-get-job]
Retrieves full details about a single job by its ID.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `jobId` | string | Yes | The UUID of the job to fetch |
#### Output [#output-7]
| Parameter | Type | Description |
| -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `candidates` | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses\[], phoneNumbers\[], socialLinks\[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents\[], tags\[], applicationIds\[], customFields\[], resumeFileHandle, fileHandles\[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
| `jobs` | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds\[], customFields\[], jobPostingIds\[], customRequisitionId, brandId, hiringTeam\[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings\[] with latestVersion) |
| `applications` | json | List of applications (id, status, customFields\[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields\[], archivedAt, job summary, creditedToUser, hiringTeam\[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) |
| `notes` | json | List of notes (id, content, author, isPrivate, createdAt) |
| `offers` | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields\[]/fileHandles\[]/author/approvalStatus) |
| `archiveReasons` | json | List of archive reasons (id, text, reasonType \[RejectedByCandidate/RejectedByOrg/Other], isArchived) |
| `sources` | json | List of sources (id, title, isArchived, sourceType \{id, title, isArchived}) |
| `customFields` | json | List of custom field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}) |
| `departments` | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) |
| `locations` | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) |
| `jobPostings` | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) |
| `openings` | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds\[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds\[]/hiringTeam\[]/customFields\[]) |
| `users` | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) |
| `interviewSchedules` | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents\[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) |
| `tags` | json | List of candidate tags (id, title, isArchived) |
| `id` | string | Resource UUID |
| `name` | string | Resource name |
| `title` | string | Job title or job posting title |
| `status` | string | Status |
| `candidate` | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. |
| `job` | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam\[], author, location, openings\[], createdAt, updatedAt) |
| `application` | json | Application details (id, status, customFields\[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam\[], createdAt, updatedAt) |
| `offer` | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) |
| `jobPosting` | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy\[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job \[included when expandJob=true]) |
| `content` | string | Note content |
| `author` | json | Note author (id, firstName, lastName, email) |
| `isPrivate` | boolean | Whether the note is private |
| `createdAt` | string | ISO 8601 creation timestamp |
| `moreDataAvailable` | boolean | Whether more pages exist |
| `nextCursor` | string | Pagination cursor for next page |
| `syncToken` | string | Sync token for incremental updates |
### Ashby Get Job Posting [#ashby-get-job-posting]
Retrieves full details about a single job posting by its ID.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| -------------- | ------- | -------- | -------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `jobPostingId` | string | Yes | The UUID of the job posting to fetch |
| `jobBoardId` | string | No | Optional job board UUID. If omitted, returns posting for the external job board. |
| `expandJob` | boolean | No | Whether to expand and include the related job object in the response |
#### Output [#output-8]
| Parameter | Type | Description |
| --------------------------------------- | ------- | ----------------------------------------------------------------------------------- |
| `id` | string | Job posting UUID |
| `title` | string | Job posting title |
| `descriptionPlain` | string | Full description in plain text |
| `descriptionHtml` | string | Full description in HTML |
| `descriptionSocial` | string | Shortened description for social sharing (max 200 chars) |
| `descriptionParts` | object | Description broken into opening, body, and closing sections |
| ↳ `descriptionOpening` | object | Opening (from Job Boards theme settings) |
| ↳ `html` | string | HTML content |
| ↳ `plain` | string | Plain text content |
| ↳ `descriptionBody` | object | Main description body |
| ↳ `html` | string | HTML content |
| ↳ `plain` | string | Plain text content |
| ↳ `descriptionClosing` | object | Closing (from Job Boards theme settings) |
| ↳ `html` | string | HTML content |
| ↳ `plain` | string | Plain text content |
| `departmentName` | string | Department name |
| `teamName` | string | Team name |
| `teamNameHierarchy` | array | Hierarchy of team names from root to team |
| `jobId` | string | Associated job UUID |
| `locationName` | string | Primary location name |
| `locationIds` | object | Primary and secondary location UUIDs |
| ↳ `primaryLocationId` | string | Primary location UUID |
| ↳ `secondaryLocationIds` | array | Secondary location UUIDs |
| `address` | object | Postal address of the posting location |
| ↳ `postalAddress` | object | Structured postal address |
| ↳ `addressCountry` | string | Country |
| ↳ `addressRegion` | string | State or region |
| ↳ `addressLocality` | string | City or locality |
| ↳ `postalCode` | string | Postal code |
| ↳ `streetAddress` | string | Street address |
| `isRemote` | boolean | Whether the posting is remote |
| `workplaceType` | string | Workplace type (OnSite, Remote, Hybrid) |
| `employmentType` | string | Employment type (FullTime, PartTime, Intern, Contract, Temporary) |
| `isListed` | boolean | Whether publicly listed on the job board |
| `suppressDescriptionOpening` | boolean | Whether the theme opening is hidden on this posting |
| `suppressDescriptionClosing` | boolean | Whether the theme closing is hidden on this posting |
| `publishedDate` | string | ISO 8601 published date |
| `applicationDeadline` | string | ISO 8601 application deadline |
| `externalLink` | string | External link to the job posting |
| `applyLink` | string | Direct apply link |
| `compensation` | object | Compensation details for the posting |
| ↳ `compensationTierSummary` | string | Human-readable tier summary |
| ↳ `summaryComponents` | array | Structured compensation components |
| ↳ `summary` | string | Component summary |
| ↳ `compensationTypeLabel` | string | Component type label (Salary, Commission, Bonus, Equity, etc.) |
| ↳ `interval` | string | Payment interval (e.g. annual, hourly) |
| ↳ `currencyCode` | string | ISO 4217 currency code |
| ↳ `minValue` | number | Minimum value |
| ↳ `maxValue` | number | Maximum value |
| ↳ `shouldDisplayCompensationOnJobBoard` | boolean | Whether compensation is shown on the job board |
| `applicationLimitCalloutHtml` | string | HTML callout shown when the application limit is reached |
| `updatedAt` | string | ISO 8601 last update timestamp |
| `job` | object | The expanded job object, only present when the request was made with expandJob=true |
### Ashby Get Offer [#ashby-get-offer]
Retrieves full details about a single offer by its ID.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------ |
| `apiKey` | string | Yes | Ashby API Key |
| `offerId` | string | Yes | The UUID of the offer to fetch |
#### Output [#output-9]
| Parameter | Type | Description |
| -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `candidates` | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses\[], phoneNumbers\[], socialLinks\[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents\[], tags\[], applicationIds\[], customFields\[], resumeFileHandle, fileHandles\[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
| `jobs` | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds\[], customFields\[], jobPostingIds\[], customRequisitionId, brandId, hiringTeam\[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings\[] with latestVersion) |
| `applications` | json | List of applications (id, status, customFields\[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields\[], archivedAt, job summary, creditedToUser, hiringTeam\[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) |
| `notes` | json | List of notes (id, content, author, isPrivate, createdAt) |
| `offers` | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields\[]/fileHandles\[]/author/approvalStatus) |
| `archiveReasons` | json | List of archive reasons (id, text, reasonType \[RejectedByCandidate/RejectedByOrg/Other], isArchived) |
| `sources` | json | List of sources (id, title, isArchived, sourceType \{id, title, isArchived}) |
| `customFields` | json | List of custom field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}) |
| `departments` | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) |
| `locations` | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) |
| `jobPostings` | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) |
| `openings` | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds\[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds\[]/hiringTeam\[]/customFields\[]) |
| `users` | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) |
| `interviewSchedules` | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents\[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) |
| `tags` | json | List of candidate tags (id, title, isArchived) |
| `id` | string | Resource UUID |
| `name` | string | Resource name |
| `title` | string | Job title or job posting title |
| `status` | string | Status |
| `candidate` | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. |
| `job` | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam\[], author, location, openings\[], createdAt, updatedAt) |
| `application` | json | Application details (id, status, customFields\[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam\[], createdAt, updatedAt) |
| `offer` | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) |
| `jobPosting` | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy\[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job \[included when expandJob=true]) |
| `content` | string | Note content |
| `author` | json | Note author (id, firstName, lastName, email) |
| `isPrivate` | boolean | Whether the note is private |
| `createdAt` | string | ISO 8601 creation timestamp |
| `moreDataAvailable` | boolean | Whether more pages exist |
| `nextCursor` | string | Pagination cursor for next page |
| `syncToken` | string | Sync token for incremental updates |
### Ashby List Applications [#ashby-list-applications]
Lists all applications in an Ashby organization with pagination and optional filters for status, job, and creation date.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `cursor` | string | No | Opaque pagination cursor from a previous response nextCursor value |
| `perPage` | number | No | Number of results per page (default 100) |
| `status` | string | No | Filter by application status: Active, Hired, Archived, or Lead |
| `jobId` | string | No | Filter applications by a specific job UUID |
| `createdAfter` | string | No | Filter to applications created after this ISO 8601 timestamp (e.g. 2024-01-01T00:00:00Z) |
#### Output [#output-10]
| Parameter | Type | Description |
| ------------------- | ------- | ---------------------------------------- |
| `applications` | array | List of applications |
| `moreDataAvailable` | boolean | Whether more pages of results exist |
| `nextCursor` | string | Opaque cursor for fetching the next page |
### Ashby List Archive Reasons [#ashby-list-archive-reasons]
Lists all archive reasons configured in Ashby.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | --------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `includeArchived` | boolean | No | Whether to include archived archive reasons in the response (default false) |
#### Output [#output-11]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------------------------------------- |
| `archiveReasons` | array | List of archive reasons |
| ↳ `id` | string | Archive reason UUID |
| ↳ `text` | string | Archive reason text |
| ↳ `reasonType` | string | Reason type (RejectedByCandidate, RejectedByOrg, Other) |
| ↳ `isArchived` | boolean | Whether the reason is archived |
### Ashby List Candidate Tags [#ashby-list-candidate-tags]
Lists all candidate tags configured in Ashby.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | ------------------------------------------------------------------ |
| `apiKey` | string | Yes | Ashby API Key |
| `includeArchived` | boolean | No | Whether to include archived candidate tags (default false) |
| `cursor` | string | No | Opaque pagination cursor from a previous response nextCursor value |
| `syncToken` | string | No | Sync token from a previous response to fetch only changed results |
| `perPage` | number | No | Number of results per page (default 100) |
#### Output [#output-12]
| Parameter | Type | Description |
| ------------------- | ------- | ------------------------------------------------------------ |
| `tags` | array | List of candidate tags |
| ↳ `id` | string | Tag UUID |
| ↳ `title` | string | Tag title |
| ↳ `isArchived` | boolean | Whether the tag is archived |
| `moreDataAvailable` | boolean | Whether more pages of results exist |
| `nextCursor` | string | Opaque cursor for fetching the next page |
| `syncToken` | string | Sync token to use for incremental updates in future requests |
### Ashby List Candidates [#ashby-list-candidates]
Lists all candidates in an Ashby organization with cursor-based pagination.
#### Input [#input-13]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `cursor` | string | No | Opaque pagination cursor from a previous response nextCursor value |
| `perPage` | number | No | Number of results per page (default 100) |
| `createdAfter` | string | No | Only return candidates created after this ISO 8601 timestamp (e.g. 2024-01-01T00:00:00Z) |
#### Output [#output-13]
| Parameter | Type | Description |
| ------------------- | ------- | ---------------------------------------- |
| `candidates` | array | List of candidates |
| `moreDataAvailable` | boolean | Whether more pages of results exist |
| `nextCursor` | string | Opaque cursor for fetching the next page |
### Ashby List Custom Fields [#ashby-list-custom-fields]
Lists all custom field definitions configured in Ashby.
#### Input [#input-14]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | --------------------------------------------------------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `cursor` | string | No | Opaque pagination cursor from a previous response nextCursor value |
| `perPage` | number | No | Number of results per page (default and max 100) |
| `syncToken` | string | No | Opaque token from a prior sync to fetch only items changed since then |
| `includeArchived` | boolean | No | When true, includes archived custom fields in results (default false) |
#### Output [#output-14]
| Parameter | Type | Description |
| -------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `customFields` | array | List of custom field definitions |
| ↳ `id` | string | Custom field UUID |
| ↳ `title` | string | Custom field title |
| ↳ `isPrivate` | boolean | Whether the custom field is private |
| ↳ `fieldType` | string | Field data type (MultiValueSelect, NumberRange, String, Date, ValueSelect, Number, Currency, Boolean, LongText, CompensationRange) |
| ↳ `objectType` | string | Object type the field applies to (Application, Candidate, Employee, Job, Offer, Opening, Talent\_Project) |
| ↳ `isArchived` | boolean | Whether the custom field is archived |
| ↳ `isRequired` | boolean | Whether a value is required |
| ↳ `selectableValues` | array | Selectable values for MultiValueSelect fields (empty for other field types) |
| ↳ `label` | string | Display label |
| ↳ `value` | string | Stored value |
| ↳ `isArchived` | boolean | Whether archived |
| `moreDataAvailable` | boolean | Whether more pages of results exist |
| `nextCursor` | string | Opaque cursor for fetching the next page |
| `syncToken` | string | Opaque sync token returned after the last page; pass on next sync |
### Ashby List Departments [#ashby-list-departments]
Lists all departments in Ashby.
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | --------------------------------------------------------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `cursor` | string | No | Opaque pagination cursor from a previous response nextCursor value |
| `perPage` | number | No | Number of results per page (default and max 100) |
| `syncToken` | string | No | Opaque token from a prior sync to fetch only items changed since then |
| `includeArchived` | boolean | No | When true, includes archived departments in results (default false) |
#### Output [#output-15]
| Parameter | Type | Description |
| ------------------- | ------- | ----------------------------------------------------------------- |
| `departments` | array | List of departments |
| ↳ `id` | string | Department UUID |
| ↳ `name` | string | Department name |
| ↳ `externalName` | string | Candidate-facing name used on job boards |
| ↳ `isArchived` | boolean | Whether the department is archived |
| ↳ `parentId` | string | Parent department UUID |
| ↳ `createdAt` | string | ISO 8601 creation timestamp |
| ↳ `updatedAt` | string | ISO 8601 last update timestamp |
| ↳ `extraData` | json | Free-form key-value metadata |
| `moreDataAvailable` | boolean | Whether more pages of results exist |
| `nextCursor` | string | Opaque cursor for fetching the next page |
| `syncToken` | string | Opaque sync token returned after the last page; pass on next sync |
### Ashby List Interview Schedules [#ashby-list-interview-schedules]
Lists interview schedules in Ashby, optionally filtered by application or interview stage.
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `applicationId` | string | No | The UUID of the application to list interview schedules for |
| `interviewStageId` | string | No | The UUID of the interview stage to list interview schedules for |
| `cursor` | string | No | Opaque pagination cursor from a previous response nextCursor value |
| `perPage` | number | No | Number of results per page (default 100) |
| `createdAfter` | string | No | Only return interview schedules created after this ISO 8601 timestamp (e.g. 2024-01-01T00:00:00Z) |
#### Output [#output-16]
| Parameter | Type | Description |
| ------------------------ | ------- | ---------------------------------------------------------------------------------------------------------- |
| `interviewSchedules` | array | List of interview schedules |
| ↳ `id` | string | Interview schedule UUID |
| ↳ `status` | string | Schedule status (NeedsScheduling, WaitingOnCandidateBooking, Scheduled, Complete, Cancelled, OnHold, etc.) |
| ↳ `applicationId` | string | Associated application UUID |
| ↳ `interviewStageId` | string | Interview stage UUID |
| ↳ `createdAt` | string | ISO 8601 creation timestamp |
| ↳ `updatedAt` | string | ISO 8601 last update timestamp |
| ↳ `interviewEvents` | array | Scheduled interview events on this schedule |
| ↳ `id` | string | Event UUID |
| ↳ `interviewId` | string | Interview template UUID |
| ↳ `interviewScheduleId` | string | Parent schedule UUID |
| ↳ `interviewerUserIds` | array | User UUIDs of interviewers assigned to the event |
| ↳ `createdAt` | string | Event creation timestamp |
| ↳ `updatedAt` | string | Event last updated timestamp |
| ↳ `startTime` | string | Event start time |
| ↳ `endTime` | string | Event end time |
| ↳ `feedbackLink` | string | URL to submit feedback for the event |
| ↳ `location` | string | Physical location |
| ↳ `meetingLink` | string | Virtual meeting URL |
| ↳ `hasSubmittedFeedback` | boolean | Whether any feedback has been submitted |
| `moreDataAvailable` | boolean | Whether more pages of results exist |
| `nextCursor` | string | Opaque cursor for fetching the next page |
### Ashby List Job Postings [#ashby-list-job-postings]
Lists all job postings in Ashby.
#### Input [#input-17]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `location` | string | No | Filter by location name (case sensitive) |
| `department` | string | No | Filter by department name (case sensitive) |
| `listedOnly` | boolean | No | When true, only returns listed (publicly visible) job postings (default false) |
| `jobBoardId` | string | No | UUID of a specific job board to filter postings to. If omitted, returns postings on the primary external job board. |
#### Output [#output-17]
| Parameter | Type | Description |
| --------------------------------------- | ------- | ----------------------------------------------------------------- |
| `jobPostings` | array | List of job postings |
| ↳ `id` | string | Job posting UUID |
| ↳ `title` | string | Job posting title |
| ↳ `jobId` | string | Associated job UUID |
| ↳ `departmentName` | string | Department name |
| ↳ `teamName` | string | Team name |
| ↳ `locationName` | string | Primary location display name |
| ↳ `locationIds` | object | Primary and secondary location UUIDs |
| ↳ `primaryLocationId` | string | Primary location UUID |
| ↳ `secondaryLocationIds` | array | Secondary location UUIDs |
| ↳ `workplaceType` | string | Workplace type (OnSite, Remote, Hybrid) |
| ↳ `employmentType` | string | Employment type (FullTime, PartTime, Intern, Contract, Temporary) |
| ↳ `isListed` | boolean | Whether the posting is publicly listed |
| ↳ `publishedDate` | string | ISO 8601 published date |
| ↳ `applicationDeadline` | string | ISO 8601 application deadline |
| ↳ `externalLink` | string | External link to the job posting |
| ↳ `applyLink` | string | Direct apply link for the job posting |
| ↳ `compensationTierSummary` | string | Compensation tier summary for job boards |
| ↳ `shouldDisplayCompensationOnJobBoard` | boolean | Whether compensation is shown on the job board |
| ↳ `updatedAt` | string | ISO 8601 last update timestamp |
### Ashby List Jobs [#ashby-list-jobs]
Lists all jobs in an Ashby organization. By default returns Open, Closed, and Archived jobs. Specify status to filter.
#### Input [#input-18]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `cursor` | string | No | Opaque pagination cursor from a previous response nextCursor value |
| `perPage` | number | No | Number of results per page (default 100) |
| `status` | string | No | Filter by job status: Open, Closed, Archived, or Draft |
| `createdAfter` | string | No | Only return jobs created after this ISO 8601 timestamp (e.g. 2024-01-01T00:00:00Z) |
| `openedAfter` | string | No | Only return jobs opened after this ISO 8601 timestamp |
| `openedBefore` | string | No | Only return jobs opened before this ISO 8601 timestamp |
| `closedAfter` | string | No | Only return jobs closed after this ISO 8601 timestamp |
| `closedBefore` | string | No | Only return jobs closed before this ISO 8601 timestamp |
#### Output [#output-18]
| Parameter | Type | Description |
| ------------------- | ------- | ---------------------------------------- |
| `jobs` | array | List of jobs |
| `moreDataAvailable` | boolean | Whether more pages of results exist |
| `nextCursor` | string | Opaque cursor for fetching the next page |
### Ashby List Locations [#ashby-list-locations]
Lists all locations configured in Ashby.
#### Input [#input-19]
| Parameter | Type | Required | Description |
| -------------------------- | ------- | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `cursor` | string | No | Opaque pagination cursor from a previous response nextCursor value |
| `perPage` | number | No | Number of results per page (default and max 100) |
| `syncToken` | string | No | Opaque token from a prior sync to fetch only items changed since then |
| `includeArchived` | boolean | No | When true, includes archived locations in results (default false) |
| `includeLocationHierarchy` | boolean | No | When true, includes location hierarchy components/regions (default false) |
#### Output [#output-19]
| Parameter | Type | Description |
| -------------------- | ------- | ----------------------------------------------------------------- |
| `locations` | array | List of locations |
| ↳ `id` | string | Location UUID |
| ↳ `name` | string | Location name |
| ↳ `externalName` | string | Candidate-facing name used on job boards |
| ↳ `isArchived` | boolean | Whether the location is archived |
| ↳ `isRemote` | boolean | Whether the location is remote (use workplaceType instead) |
| ↳ `workplaceType` | string | Workplace type (OnSite, Hybrid, Remote) |
| ↳ `parentLocationId` | string | Parent location UUID |
| ↳ `type` | string | Location component type (Location, LocationHierarchy) |
| ↳ `address` | object | Location postal address |
| ↳ `addressCountry` | string | Country |
| ↳ `addressRegion` | string | State or region |
| ↳ `addressLocality` | string | City or locality |
| ↳ `postalCode` | string | Postal code |
| ↳ `streetAddress` | string | Street address |
| ↳ `extraData` | json | Free-form key-value metadata |
| `moreDataAvailable` | boolean | Whether more pages of results exist |
| `nextCursor` | string | Opaque cursor for fetching the next page |
| `syncToken` | string | Opaque sync token returned after the last page; pass on next sync |
### Ashby List Notes [#ashby-list-notes]
Lists all notes on a candidate with pagination support.
#### Input [#input-20]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------------------ |
| `apiKey` | string | Yes | Ashby API Key |
| `candidateId` | string | Yes | The UUID of the candidate to list notes for |
| `cursor` | string | No | Opaque pagination cursor from a previous response nextCursor value |
| `perPage` | number | No | Number of results per page |
#### Output [#output-20]
| Parameter | Type | Description |
| ------------------- | ------- | ---------------------------------------- |
| `notes` | array | List of notes on the candidate |
| ↳ `id` | string | Note UUID |
| ↳ `content` | string | Note content |
| ↳ `isPrivate` | boolean | Whether the note is private |
| ↳ `author` | object | Note author |
| ↳ `id` | string | Author user UUID |
| ↳ `firstName` | string | First name |
| ↳ `lastName` | string | Last name |
| ↳ `email` | string | Email address |
| ↳ `createdAt` | string | ISO 8601 creation timestamp |
| `moreDataAvailable` | boolean | Whether more pages of results exist |
| `nextCursor` | string | Opaque cursor for fetching the next page |
### Ashby List Offers [#ashby-list-offers]
Lists all offers with their latest version in an Ashby organization.
#### Input [#input-21]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Ashby API Key |
| `cursor` | string | No | Opaque pagination cursor from a previous response nextCursor value |
| `perPage` | number | No | Number of results per page |
| `createdAfter` | string | No | Only return offers created after this ISO 8601 timestamp (e.g. 2024-01-01T00:00:00Z) |
| `syncToken` | string | No | Opaque token from a prior sync to fetch only items changed since then |
| `applicationId` | string | No | Return only offers for the specified application UUID |
#### Output [#output-21]
| Parameter | Type | Description |
| ------------------- | ------- | ---------------------------------------- |
| `offers` | array | List of offers |
| `moreDataAvailable` | boolean | Whether more pages of results exist |
| `nextCursor` | string | Opaque cursor for fetching the next page |
### Ashby List Openings [#ashby-list-openings]
Lists all openings in Ashby with pagination.
#### Input [#input-22]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | -------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `cursor` | string | No | Opaque pagination cursor from a previous response nextCursor value |
| `perPage` | number | No | Number of results per page (default 100) |
| `createdAfter` | string | No | Only return openings created after this ISO 8601 timestamp (e.g. 2024-01-01T00:00:00Z) |
#### Output [#output-22]
| Parameter | Type | Description |
| ------------------- | ------- | ---------------------------------------- |
| `moreDataAvailable` | boolean | Whether more pages of results exist |
| `nextCursor` | string | Opaque cursor for fetching the next page |
### Ashby List Sources [#ashby-list-sources]
Lists all candidate sources configured in Ashby.
#### Input [#input-23]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | --------------------------------------------------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `includeArchived` | boolean | No | When true, includes archived sources in results (default false) |
#### Output [#output-23]
| Parameter | Type | Description |
| -------------- | ------- | ------------------------------ |
| `sources` | array | List of sources |
| ↳ `id` | string | Source UUID |
| ↳ `title` | string | Source title |
| ↳ `isArchived` | boolean | Whether the source is archived |
| ↳ `sourceType` | object | Source type grouping |
| ↳ `id` | string | Source type UUID |
| ↳ `title` | string | Source type title |
| ↳ `isArchived` | boolean | Whether archived |
### Ashby List Users [#ashby-list-users]
Lists all users in Ashby with pagination.
#### Input [#input-24]
| Parameter | Type | Required | Description |
| -------------------- | ------- | -------- | ------------------------------------------------------------------ |
| `apiKey` | string | Yes | Ashby API Key |
| `cursor` | string | No | Opaque pagination cursor from a previous response nextCursor value |
| `perPage` | number | No | Number of results per page (default 100) |
| `includeDeactivated` | boolean | No | When true, includes deactivated users in results (default false) |
#### Output [#output-24]
| Parameter | Type | Description |
| ------------------- | ------- | ---------------------------------------- |
| `users` | array | List of users |
| `moreDataAvailable` | boolean | Whether more pages of results exist |
| `nextCursor` | string | Opaque cursor for fetching the next page |
### Ashby Remove Candidate Tag [#ashby-remove-candidate-tag]
Removes a tag from a candidate in Ashby and returns the updated candidate.
#### Input [#input-25]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------ |
| `apiKey` | string | Yes | Ashby API Key |
| `candidateId` | string | Yes | The UUID of the candidate to remove the tag from |
| `tagId` | string | Yes | The UUID of the tag to remove |
#### Output [#output-25]
| Parameter | Type | Description |
| -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `candidates` | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses\[], phoneNumbers\[], socialLinks\[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents\[], tags\[], applicationIds\[], customFields\[], resumeFileHandle, fileHandles\[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
| `jobs` | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds\[], customFields\[], jobPostingIds\[], customRequisitionId, brandId, hiringTeam\[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings\[] with latestVersion) |
| `applications` | json | List of applications (id, status, customFields\[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields\[], archivedAt, job summary, creditedToUser, hiringTeam\[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) |
| `notes` | json | List of notes (id, content, author, isPrivate, createdAt) |
| `offers` | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields\[]/fileHandles\[]/author/approvalStatus) |
| `archiveReasons` | json | List of archive reasons (id, text, reasonType \[RejectedByCandidate/RejectedByOrg/Other], isArchived) |
| `sources` | json | List of sources (id, title, isArchived, sourceType \{id, title, isArchived}) |
| `customFields` | json | List of custom field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}) |
| `departments` | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) |
| `locations` | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) |
| `jobPostings` | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) |
| `openings` | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds\[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds\[]/hiringTeam\[]/customFields\[]) |
| `users` | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) |
| `interviewSchedules` | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents\[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) |
| `tags` | json | List of candidate tags (id, title, isArchived) |
| `id` | string | Resource UUID |
| `name` | string | Resource name |
| `title` | string | Job title or job posting title |
| `status` | string | Status |
| `candidate` | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. |
| `job` | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam\[], author, location, openings\[], createdAt, updatedAt) |
| `application` | json | Application details (id, status, customFields\[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam\[], createdAt, updatedAt) |
| `offer` | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) |
| `jobPosting` | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy\[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job \[included when expandJob=true]) |
| `content` | string | Note content |
| `author` | json | Note author (id, firstName, lastName, email) |
| `isPrivate` | boolean | Whether the note is private |
| `createdAt` | string | ISO 8601 creation timestamp |
| `moreDataAvailable` | boolean | Whether more pages exist |
| `nextCursor` | string | Pagination cursor for next page |
| `syncToken` | string | Sync token for incremental updates |
### Ashby Search Candidates [#ashby-search-candidates]
Searches for candidates by name and/or email with AND logic. Results are limited to 100 matches. Use candidate.list for full pagination.
#### Input [#input-26]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------ |
| `apiKey` | string | Yes | Ashby API Key |
| `name` | string | No | Candidate name to search for (combined with email using AND logic) |
| `email` | string | No | Candidate email to search for (combined with name using AND logic) |
#### Output [#output-26]
| Parameter | Type | Description |
| ------------ | ----- | ------------------------------------- |
| `candidates` | array | Matching candidates (max 100 results) |
### Ashby Update Candidate [#ashby-update-candidate]
Updates an existing candidate record in Ashby. Only provided fields are changed.
#### Input [#input-27]
| Parameter | Type | Required | Description |
| ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `candidateId` | string | Yes | The UUID of the candidate to update |
| `name` | string | No | Updated full name |
| `email` | string | No | Updated primary email address |
| `phoneNumber` | string | No | Updated primary phone number |
| `linkedInUrl` | string | No | LinkedIn profile URL |
| `githubUrl` | string | No | GitHub profile URL |
| `websiteUrl` | string | No | Personal website URL |
| `alternateEmail` | string | No | An additional email address to add to the candidate |
| `sourceId` | string | No | UUID of the source to attribute the candidate to |
| `creditedToUserId` | string | No | UUID of the Ashby user to credit with sourcing this candidate |
| `createdAt` | string | No | Backdated creation timestamp in ISO 8601. Only updatable if originally backdated. |
| `sendNotifications` | boolean | No | Whether to send a notification when the source is updated (default true) |
| `socialLinks` | json | No | Array of social link objects to set on the candidate, e.g. \[\{"type":"LinkedIn","url":"https\://..."}]. Replaces existing social links. |
#### Output [#output-27]
| Parameter | Type | Description |
| -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `candidates` | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses\[], phoneNumbers\[], socialLinks\[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents\[], tags\[], applicationIds\[], customFields\[], resumeFileHandle, fileHandles\[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
| `jobs` | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds\[], customFields\[], jobPostingIds\[], customRequisitionId, brandId, hiringTeam\[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings\[] with latestVersion) |
| `applications` | json | List of applications (id, status, customFields\[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields\[], archivedAt, job summary, creditedToUser, hiringTeam\[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) |
| `notes` | json | List of notes (id, content, author, isPrivate, createdAt) |
| `offers` | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields\[]/fileHandles\[]/author/approvalStatus) |
| `archiveReasons` | json | List of archive reasons (id, text, reasonType \[RejectedByCandidate/RejectedByOrg/Other], isArchived) |
| `sources` | json | List of sources (id, title, isArchived, sourceType \{id, title, isArchived}) |
| `customFields` | json | List of custom field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}) |
| `departments` | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) |
| `locations` | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) |
| `jobPostings` | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) |
| `openings` | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds\[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds\[]/hiringTeam\[]/customFields\[]) |
| `users` | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) |
| `interviewSchedules` | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents\[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) |
| `tags` | json | List of candidate tags (id, title, isArchived) |
| `id` | string | Resource UUID |
| `name` | string | Resource name |
| `title` | string | Job title or job posting title |
| `status` | string | Status |
| `candidate` | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. |
| `job` | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam\[], author, location, openings\[], createdAt, updatedAt) |
| `application` | json | Application details (id, status, customFields\[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam\[], createdAt, updatedAt) |
| `offer` | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) |
| `jobPosting` | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy\[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job \[included when expandJob=true]) |
| `content` | string | Note content |
| `author` | json | Note author (id, firstName, lastName, email) |
| `isPrivate` | boolean | Whether the note is private |
| `createdAt` | string | ISO 8601 creation timestamp |
| `moreDataAvailable` | boolean | Whether more pages exist |
| `nextCursor` | string | Pagination cursor for next page |
| `syncToken` | string | Sync token for incremental updates |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
### Ashby Application Submitted [#ashby-application-submitted]
Trigger workflow when a new application is submitted
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------- |
| `apiKey` | string | Yes | API Key |
#### Output [#output-28]
| Parameter | Type | Description |
| ------------------------- | ------ | -------------------------------------------------------------------- |
| `action` | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
| `application` | object | application output from the tool |
| ↳ `id` | string | Application UUID |
| ↳ `createdAt` | string | Application creation timestamp (ISO 8601) |
| ↳ `updatedAt` | string | Application last update timestamp (ISO 8601) |
| ↳ `status` | string | Application status (Active, Hired, Archived, Lead) |
| ↳ `candidate` | object | candidate output from the tool |
| ↳ `id` | string | Candidate UUID |
| ↳ `name` | string | Candidate name |
| ↳ `currentInterviewStage` | object | currentInterviewStage output from the tool |
| ↳ `id` | string | Current interview stage UUID |
| ↳ `title` | string | Current interview stage title |
| ↳ `stageType` | string | Current interview stage type (e.g., Lead, Applied, Interview, Offer) |
| ↳ `job` | object | job output from the tool |
| ↳ `id` | string | Job UUID |
| ↳ `title` | string | Job title |
***
### Ashby Candidate Deleted [#ashby-candidate-deleted]
Trigger workflow when a candidate is deleted
#### Configuration [#configuration-1]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------- |
| `apiKey` | string | Yes | API Key |
#### Output [#output-29]
| Parameter | Type | Description |
| ----------- | ------ | --------------------------------------------------------------- |
| `action` | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
| `candidate` | object | candidate output from the tool |
| ↳ `id` | string | Deleted candidate UUID |
***
### Ashby Candidate Hired [#ashby-candidate-hired]
Trigger workflow when a candidate is hired
#### Configuration [#configuration-2]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------- |
| `apiKey` | string | Yes | API Key |
#### Output [#output-30]
| Parameter | Type | Description |
| ------------------------- | ------ | -------------------------------------------------------------------- |
| `action` | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
| `application` | object | application output from the tool |
| ↳ `id` | string | Application UUID |
| ↳ `createdAt` | string | Application creation timestamp (ISO 8601) |
| ↳ `updatedAt` | string | Application last update timestamp (ISO 8601) |
| ↳ `status` | string | Application status (Hired) |
| ↳ `candidate` | object | candidate output from the tool |
| ↳ `id` | string | Candidate UUID |
| ↳ `name` | string | Candidate name |
| ↳ `currentInterviewStage` | object | currentInterviewStage output from the tool |
| ↳ `id` | string | Current interview stage UUID |
| ↳ `title` | string | Current interview stage title |
| ↳ `stageType` | string | Current interview stage type (e.g., Lead, Applied, Interview, Offer) |
| ↳ `job` | object | job output from the tool |
| ↳ `id` | string | Job UUID |
| ↳ `title` | string | Job title |
| `offer` | object | offer output from the tool |
| ↳ `id` | string | Accepted offer UUID |
| ↳ `applicationId` | string | Associated application UUID |
| ↳ `acceptanceStatus` | string | Offer acceptance status |
| ↳ `offerStatus` | string | Offer process status |
| ↳ `decidedAt` | string | Offer decision timestamp (ISO 8601) |
| ↳ `latestVersion` | object | latestVersion output from the tool |
| ↳ `id` | string | Latest offer version UUID |
***
### Ashby Candidate Stage Change [#ashby-candidate-stage-change]
Trigger workflow when a candidate changes interview stages
#### Configuration [#configuration-3]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------- |
| `apiKey` | string | Yes | API Key |
#### Output [#output-31]
| Parameter | Type | Description |
| ------------------------- | ------ | -------------------------------------------------------------------- |
| `action` | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
| `application` | object | application output from the tool |
| ↳ `id` | string | Application UUID |
| ↳ `createdAt` | string | Application creation timestamp (ISO 8601) |
| ↳ `updatedAt` | string | Application last update timestamp (ISO 8601) |
| ↳ `status` | string | Application status (Active, Hired, Archived, Lead) |
| ↳ `candidate` | object | candidate output from the tool |
| ↳ `id` | string | Candidate UUID |
| ↳ `name` | string | Candidate name |
| ↳ `currentInterviewStage` | object | currentInterviewStage output from the tool |
| ↳ `id` | string | Current interview stage UUID |
| ↳ `title` | string | Current interview stage title |
| ↳ `stageType` | string | Current interview stage type (e.g., Lead, Applied, Interview, Offer) |
| ↳ `job` | object | job output from the tool |
| ↳ `id` | string | Job UUID |
| ↳ `title` | string | Job title |
***
### Ashby Job Created [#ashby-job-created]
Trigger workflow when a new job is created
#### Configuration [#configuration-4]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------- |
| `apiKey` | string | Yes | API Key |
#### Output [#output-32]
| Parameter | Type | Description |
| ------------------ | ------- | --------------------------------------------------------------- |
| `action` | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
| `job` | object | job output from the tool |
| ↳ `id` | string | Job UUID |
| ↳ `title` | string | Job title |
| ↳ `confidential` | boolean | Whether the job is confidential |
| ↳ `status` | string | Job status (Open, Closed, Draft, Archived) |
| ↳ `employmentType` | string | Employment type (FullTime, PartTime, Intern, Contract) |
***
### Ashby Offer Created [#ashby-offer-created]
Trigger workflow when a new offer is created
#### Configuration [#configuration-5]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------- |
| `apiKey` | string | Yes | API Key |
#### Output [#output-33]
| Parameter | Type | Description |
| -------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `action` | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
| `offer` | object | offer output from the tool |
| ↳ `id` | string | Offer UUID |
| ↳ `applicationId` | string | Associated application UUID |
| ↳ `acceptanceStatus` | string | Offer acceptance status (Accepted, Declined, Pending, Created, Cancelled) |
| ↳ `offerStatus` | string | Offer process status (WaitingOnApprovalStart, WaitingOnOfferApproval, WaitingOnApprovalDefinition, WaitingOnCandidateResponse, CandidateRejected, CandidateAccepted, OfferCancelled) |
| ↳ `decidedAt` | string | Offer decision timestamp (ISO 8601). Typically null at creation; populated after candidate responds. |
| ↳ `latestVersion` | object | latestVersion output from the tool |
| ↳ `id` | string | Latest offer version UUID |
---
# Athena (/integrations/athena)
{/* MANUAL-CONTENT-START:intro */}
[Amazon Athena](https://aws.amazon.com/athena/) is an interactive query service from AWS that makes it easy to analyze data directly in Amazon S3 using standard SQL. Athena is serverless, so there is no infrastructure to manage, and you pay only for the queries you run.
With Athena, you can:
* **Query data in S3**: Run SQL queries directly against data stored in Amazon S3 without loading it into a database
* **Support multiple formats**: Query CSV, JSON, Parquet, ORC, Avro, and other common data formats
* **Integrate with AWS Glue**: Use the AWS Glue Data Catalog to manage table metadata and schemas
* **Scale automatically**: Handle queries of any size without provisioning servers or clusters
* **Save and reuse queries**: Create named queries for frequently used SQL statements
In Sim, the Athena integration enables your agents to run SQL queries against data in S3, check query execution status, retrieve results, and manage saved queries — all within your agent workflows. Supported operations include:
* **Start Query**: Execute SQL queries against your S3 data
* **Get Query Execution**: Check the status and details of a running or completed query
* **Get Query Results**: Retrieve the results of a completed query
* **Stop Query**: Cancel a running query execution
* **List Query Executions**: View recent query execution IDs
* **Create Named Query**: Save a query for reuse
* **Get Named Query**: Retrieve details of a saved query
* **List Named Queries**: View all saved query IDs
This integration empowers Sim agents to automate data analysis tasks using AWS Athena, enabling workflows that query, monitor, and manage large-scale data in S3 without manual effort or infrastructure management.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate AWS Athena into workflows. Execute SQL queries against data in S3, check query status, retrieve results, manage named queries, and list executions. Requires AWS access key and secret access key.
## Actions [#actions]
### Athena Start Query [#athena-start-query]
Start an SQL query execution in AWS Athena
#### Input [#input]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | -------------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `queryString` | string | Yes | SQL query string to execute |
| `database` | string | No | Database name within the catalog |
| `catalog` | string | No | Data catalog name (default: AwsDataCatalog) |
| `outputLocation` | string | No | S3 output location for query results (e.g., s3://bucket/path/) |
| `workGroup` | string | No | Workgroup to execute the query in (default: primary) |
#### Output [#output]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------------------- |
| `queryExecutionId` | string | Unique ID of the started query execution |
### Athena Get Query Execution [#athena-get-query-execution]
Get the status and details of an Athena query execution
#### Input [#input-1]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ---------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `queryExecutionId` | string | Yes | Query execution ID to check |
#### Output [#output-1]
| Parameter | Type | Description |
| ----------------------------- | ------ | ----------------------------------------------------------- |
| `queryExecutionId` | string | Query execution ID |
| `query` | string | SQL query string |
| `state` | string | Query state (QUEUED, RUNNING, SUCCEEDED, FAILED, CANCELLED) |
| `stateChangeReason` | string | Reason for state change (e.g., error message) |
| `statementType` | string | Statement type (DDL, DML, UTILITY) |
| `database` | string | Database name |
| `catalog` | string | Data catalog name |
| `workGroup` | string | Workgroup name |
| `submissionDateTime` | number | Query submission time (Unix epoch ms) |
| `completionDateTime` | number | Query completion time (Unix epoch ms) |
| `dataScannedInBytes` | number | Amount of data scanned in bytes |
| `engineExecutionTimeInMillis` | number | Engine execution time in milliseconds |
| `queryPlanningTimeInMillis` | number | Query planning time in milliseconds |
| `queryQueueTimeInMillis` | number | Time the query spent in queue in milliseconds |
| `totalExecutionTimeInMillis` | number | Total execution time in milliseconds |
| `outputLocation` | string | S3 location of query results |
### Athena Get Query Results [#athena-get-query-results]
Retrieve the results of a completed Athena query execution
#### Input [#input-2]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ---------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `queryExecutionId` | string | Yes | Query execution ID to get results for |
| `maxResults` | number | No | Maximum number of rows to return (1-999) |
| `nextToken` | string | No | Pagination token from a previous request |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------- | ------ | ------------------------------------------------------ |
| `columns` | array | Column metadata (name and type) |
| `rows` | array | Result rows as key-value objects |
| `nextToken` | string | Pagination token for next page of results |
| `updateCount` | number | Number of rows affected (for INSERT/UPDATE statements) |
### Athena Stop Query [#athena-stop-query]
Stop a running Athena query execution
#### Input [#input-3]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ---------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `queryExecutionId` | string | Yes | Query execution ID to stop |
#### Output [#output-3]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------------ |
| `success` | boolean | Whether the query was successfully stopped |
### Athena List Query Executions [#athena-list-query-executions]
List recent Athena query execution IDs
#### Input [#input-4]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | --------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `workGroup` | string | No | Workgroup to list executions for (default: primary) |
| `maxResults` | number | No | Maximum number of results (0-50) |
| `nextToken` | string | No | Pagination token from a previous request |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------------- | ------ | ------------------------------ |
| `queryExecutionIds` | array | List of query execution IDs |
| `nextToken` | string | Pagination token for next page |
### Athena Batch Get Query Executions [#athena-batch-get-query-executions]
Get the status and details of up to 50 Athena query executions in one call
#### Input [#input-5]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `queryExecutionIds` | string | Yes | Comma-separated query execution IDs to check (up to 50) |
#### Output [#output-5]
| Parameter | Type | Description |
| ------------------------------- | ------ | ------------------------------------------------------------------- |
| `queryExecutions` | array | Details for each successfully retrieved query execution |
| ↳ `queryExecutionId` | string | Query execution ID |
| ↳ `query` | string | SQL query string |
| ↳ `state` | string | Query state (QUEUED, RUNNING, SUCCEEDED, FAILED, CANCELLED) |
| ↳ `stateChangeReason` | string | Reason for state change |
| ↳ `statementType` | string | Statement type (DDL, DML, UTILITY) |
| ↳ `database` | string | Database name |
| ↳ `catalog` | string | Data catalog name |
| ↳ `workGroup` | string | Workgroup name |
| ↳ `submissionDateTime` | number | Query submission time (Unix epoch ms) |
| ↳ `completionDateTime` | number | Query completion time (Unix epoch ms) |
| ↳ `dataScannedInBytes` | number | Amount of data scanned in bytes |
| ↳ `engineExecutionTimeInMillis` | number | Engine execution time in milliseconds |
| ↳ `queryPlanningTimeInMillis` | number | Query planning time in milliseconds |
| ↳ `queryQueueTimeInMillis` | number | Time the query spent in queue in milliseconds |
| ↳ `totalExecutionTimeInMillis` | number | Total execution time in milliseconds |
| ↳ `outputLocation` | string | S3 location of query results |
| `unprocessedQueryExecutionIds` | array | Query execution IDs that could not be retrieved, with error details |
| ↳ `queryExecutionId` | string | Query execution ID |
| ↳ `errorCode` | string | Error code |
| ↳ `errorMessage` | string | Error message |
### Athena Create Named Query [#athena-create-named-query]
Create a saved/named query in AWS Athena
#### Input [#input-6]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | -------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `name` | string | Yes | Name for the saved query |
| `database` | string | Yes | Database the query runs against |
| `queryString` | string | Yes | SQL query string to save |
| `description` | string | No | Description of the named query |
| `workGroup` | string | No | Workgroup to create the named query in |
#### Output [#output-6]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------- |
| `namedQueryId` | string | ID of the created named query |
### Athena Get Named Query [#athena-get-named-query]
Get details of a saved/named query in AWS Athena
#### Input [#input-7]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ---------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `namedQueryId` | string | Yes | Named query ID to retrieve |
#### Output [#output-7]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------- |
| `namedQueryId` | string | Named query ID |
| `name` | string | Name of the saved query |
| `description` | string | Query description |
| `database` | string | Database the query runs against |
| `queryString` | string | SQL query string |
| `workGroup` | string | Workgroup name |
### Athena List Named Queries [#athena-list-named-queries]
List saved/named query IDs in AWS Athena
#### Input [#input-8]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ---------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `workGroup` | string | No | Workgroup to list named queries for |
| `maxResults` | number | No | Maximum number of results (0-50) |
| `nextToken` | string | No | Pagination token from a previous request |
#### Output [#output-8]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------ |
| `namedQueryIds` | array | List of named query IDs |
| `nextToken` | string | Pagination token for next page |
### Athena Delete Named Query [#athena-delete-named-query]
Delete a saved/named query in AWS Athena
#### Input [#input-9]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ---------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `namedQueryId` | string | Yes | Named query ID to delete |
#### Output [#output-9]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------------------ |
| `success` | boolean | Whether the named query was successfully deleted |
### Athena List Databases [#athena-list-databases]
List the databases available in an Athena data catalog
#### Input [#input-10]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `catalogName` | string | Yes | Data catalog name to list databases from (e.g., AwsDataCatalog) |
| `workGroup` | string | No | Workgroup for which the metadata is being fetched (required for IAM Identity Center enabled catalogs) |
| `maxResults` | number | No | Maximum number of results (1-50) |
| `nextToken` | string | No | Pagination token from a previous request |
#### Output [#output-10]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------------- |
| `databases` | array | List of databases (name, description) |
| ↳ `name` | string | Database name |
| ↳ `description` | string | Database description |
| `nextToken` | string | Pagination token for next page |
### Athena List Table Metadata [#athena-list-table-metadata]
List tables and their column/partition metadata for an Athena database
#### Input [#input-11]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `catalogName` | string | Yes | Data catalog name (e.g., AwsDataCatalog) |
| `databaseName` | string | Yes | Database name to list tables from |
| `expression` | string | No | Regex filter that pattern-matches table names |
| `workGroup` | string | No | Workgroup for which the metadata is being fetched (required for IAM Identity Center enabled catalogs) |
| `maxResults` | number | No | Maximum number of results (1-50) |
| `nextToken` | string | No | Pagination token from a previous request |
#### Output [#output-11]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------------------------------- |
| `tables` | array | Table metadata (name, type, columns, partition keys) |
| ↳ `name` | string | Table name |
| ↳ `tableType` | string | Table type |
| ↳ `createTime` | number | Table creation time (Unix epoch ms) |
| ↳ `lastAccessTime` | number | Table last access time (Unix epoch ms) |
| ↳ `columns` | array | Column definitions |
| ↳ `name` | string | Column name |
| ↳ `type` | string | Column data type |
| ↳ `comment` | string | Column comment |
| ↳ `partitionKeys` | array | Partition key definitions |
| ↳ `name` | string | Partition key name |
| ↳ `type` | string | Partition key data type |
| ↳ `comment` | string | Partition key comment |
| `nextToken` | string | Pagination token for next page |
---
# Atlassian Service Accounts (/integrations/atlassian-service-account)
Atlassian service accounts let your workflows authenticate to Jira, Jira Service Management, and Confluence as a non-human bot user — independent of any individual employee's account. Each service account has its own email, its own permissions, and its own API tokens, all managed centrally in admin.atlassian.com.
This is the recommended way to use Atlassian products in production workflows: no one person's OAuth consent expires, the bot's permissions are auditable, and access can be revoked without touching anyone's personal account.
One service account covers all three products. You add it once, and it appears as a connected credential on the Jira, Jira Service Management, and Confluence integration pages alike — there is no separate credential to create per product.
## Prerequisites [#prerequisites]
You need an Atlassian organization admin to create the service account. Service accounts are an Atlassian organization-level feature — they cannot be created from a regular user account.
## Setting Up the Service Account [#setting-up-the-service-account]
### 1. Create the Service Account [#1-create-the-service-account]
Open [admin.atlassian.com](https://admin.atlassian.com/) and go to **Directory** → **Service accounts**
{/* TODO(screenshot): admin.atlassian.com directory page with the "Service accounts" tab highlighted */}
Click **Create service account**, give it a name (e.g. `sim-jira-bot`), and finish creation
Grant the service account access to the Atlassian sites and products it needs. Open the service account, go to **Product access**, and add Jira and/or Confluence on the relevant site
{/* TODO(screenshot): service account "Product access" tab showing Jira granted on a site */}
The service account inherits permissions from the project/space roles you grant it — exactly like a human user. If a workflow needs to write to a specific Jira project, give the service account write access to that project in Jira's project settings.
### 2. Create a Scoped API Token [#2-create-a-scoped-api-token]
From the service account's page in admin.atlassian.com, open the **API tokens** tab and click **Create API token**
{/* TODO(screenshot): service account API tokens tab with "Create API token" button */}
Choose **API token** as the authentication type (not OAuth 2.0 — Sim uses the API token flow)
Select the scopes the token needs. The minimum set Sim's Jira and Confluence blocks expect is:
**Jira (classic):**
```
read:jira-user
read:jira-work
write:jira-work
```
**Jira Service Management (classic):**
```
read:servicedesk-request
write:servicedesk-request
manage:servicedesk-customer
```
**Confluence (granular):**
```
read:confluence-content.all
read:confluence-space.summary
write:confluence-content
read:page:confluence
write:page:confluence
```
Add more scopes only if you need the corresponding operations (delete, manage webhooks, etc.). The full list of scopes Sim's blocks may use is documented in [Atlassian's developer reference](https://developer.atlassian.com/cloud/jira/platform/scopes-for-oauth-2-3LO-and-forge-apps/).
Prefer the classic scopes above over granular equivalents. Atlassian enforces an endpoint's granular scope list as all-or-nothing, so a token built from a partial granular set fails with `Unauthorized; scope does not match` even though each individual scope was granted. The classic scopes each cover their product's endpoints on their own. If your organization only permits granular scopes, include every scope listed for each endpoint in Atlassian's reference — Jira Service Management request operations also require `read:user:jira`.
Use the **App** and **Scope type** filters to narrow the list to the scopes you need. Filter by `App: Jira` (or `Confluence`) and `Scope type: Classic` to find the three core Jira scopes; switch to **Granular** if your org doesn't expose Classic.
Copy the token when it's shown. Atlassian only displays it once — if you close the dialog, you'll have to create a new token.
The API token is bearer credentials for the service account. Treat it like a password — do not commit it to source control or share it publicly. Sim encrypts the token at rest.
### 3. Find Your Site Domain [#3-find-your-site-domain]
Your Atlassian site domain is the URL you use to access Jira or Confluence in your browser — for example, `your-team.atlassian.net`. Open Jira or Confluence, look at the address bar, and copy the part before the first `/`.
## Adding the Service Account to Sim [#adding-the-service-account-to-sim]
Open **Integrations** in your workspace sidebar
Open **Jira**, **Jira Service Management**, or **Confluence** — any of the three works, since they share one service account
{/* TODO(screenshot): Integrations page with Jira in the list */}
Click **Add to Sim** and choose **Add service account**
{/* TODO(screenshot): Jira integration page with the "Add to Sim" dropdown open */}
Paste the API token, enter the site domain (e.g. `your-team.atlassian.net`), and optionally set a display name and description
Click **Add service account**. Sim verifies the token by calling Atlassian's `/myself` endpoint through the gateway — if it fails, you'll see a specific error explaining what went wrong.
The token, domain, and discovered cloudId are encrypted before being stored.
Once added, the credential is listed under **Connected** on all three Atlassian integration pages. It is named after the service account's own Atlassian display name, so several service accounts on the same site stay easy to tell apart.
## Using the Service Account in Workflows [#using-the-service-account-in-workflows]
Add a Jira, Jira Service Management, or Confluence block to your workflow. In the credential dropdown, your Atlassian service account appears alongside any OAuth credentials. Select it and configure the block as you normally would.
The block calls Atlassian's API gateway (`api.atlassian.com/ex/jira/{cloudId}/...`) using the service account's token. There's no impersonation step — the service account acts as itself, with whatever permissions you granted it in admin.atlassian.com.
---
# Attio API Keys (/integrations/attio-service-account)
Attio workspace API keys let your workflows authenticate at the workspace level instead of through a person's account. The key is created by a workspace admin, belongs to the workspace rather than any individual, and does not expire — no one person's OAuth consent to lapse, and access can be revoked at any time by deleting the key.
## Prerequisites [#prerequisites]
You need an Attio **workspace admin**. Only admins can create and manage access tokens.
## Creating the API Key [#creating-the-api-key]
Open **Workspace settings** in Attio (dropdown beside your workspace name) and go to the **Developers** tab
{/* TODO(screenshot): Attio workspace settings with the Developers tab highlighted */}
Click **New access token** and give it a name (e.g. `Sim Integration`)
Select the scopes the key needs. To match everything Sim's Attio blocks can do, grant:
```
record_permission (read-write)
object_configuration (read-write)
list_configuration (read-write)
list_entry (read-write)
note (read-write)
task (read-write)
comment (read-write)
user_management (read)
webhook (read-write)
```
Record and object tools need `record_permission` plus `object_configuration`; list tools need `list_configuration` and `list_entry`; note, task, comment, and webhook tools need their respective scopes; member lookups need `user_management:read`.
{/* TODO(screenshot): Attio access token scope picker with the scopes above selected */}
Copy the key and store it somewhere safe.
Scopes are editable after creation — if a workflow later fails with a permission error, an admin can add the missing scope to the existing key in the Developers settings without rotating it.
The API key is bearer credentials for your Attio workspace. Treat it like a password — do not commit it to source control or share it publicly. Sim encrypts the key at rest.
## Adding the API Key to Sim [#adding-the-api-key-to-sim]
Open **Integrations** from your workspace sidebar
Search for "Attio" and open it, then click **Add to Sim** and choose **Add API key**
{/* TODO(screenshot): Attio integration page with the service-account connect option */}
Paste the API key and optionally set a display name and description
{/* TODO(screenshot): Add Attio API key dialog with the API key filled in */}
Click **Add API key**. Sim verifies the key by calling Attio's `/v2/self` endpoint — if it fails, you'll see a specific error explaining what went wrong.
The key is encrypted before being stored.
A key with missing scopes still validates successfully — the validation endpoint is reachable with any live key. Check the scopes granted to the key in Attio: tools whose scopes are missing will fail at run time with permission errors.
## Using the Service Account in Workflows [#using-the-service-account-in-workflows]
Add an Attio block to your workflow. In the credential dropdown, your Attio service account appears alongside any OAuth credentials. Select it and configure the block as you normally would.
{/* TODO(screenshot): Attio block in a workflow with the service account selected as the credential */}
The block calls the Attio API (`api.attio.com/v2`) with the key as a standard Bearer credential, with whatever scopes the admin granted the key.
---
# Attio (/integrations/attio)
{/* MANUAL-CONTENT-START:intro */}
[Attio](https://www.attio.com/) is a modern and flexible CRM platform built to help teams manage relationships, data, and workflows more efficiently. Attio enables organizations to create and organize custom objects (like people, companies, deals, and more), manage notes and tasks, collaborate as a team, and automate work across their relationship and data pipelines.
With Attio, you can:
* **Manage records for any object**: Store and organize people, companies, or any custom objects to fit your team's needs.
* **Track, connect, and update information**: Add and edit notes, comments, tasks, and linked records so your contextual data is always in sync.
* **Build and customize lists**: Segment records, filter and sort with powerful queries, and build views that fit your workflow.
* **Collaborate with your team**: Assign tasks, share comments, and see activities in real time.
* **Automate CRM workflows**: Create, update, and read record data via API to keep your tools and teams in the loop, or trigger actions as relationships evolve.
In Sim, the Attio integration lets your agents programmatically query lists, fetch and manipulate records, manage entries, tasks, comments, and more—making it easy to automate CRM operations, enrich data, synchronize with other systems, or trigger workflow automations based on relationship or record events. Use these tools to ensure your CRM stays up-to-date and powerful directly from within your Sim projects.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Connect to Attio to manage CRM records (people, companies, custom objects), notes, tasks, lists, list entries, comments, workspace members, and webhooks.
## Actions [#actions]
### Attio List Records [#attio-list-records]
Query and list records for a given object type (e.g. people, companies)
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | --------------------------------------------------------------------------- |
| `objectType` | string | Yes | The object type slug (e.g. people, companies) |
| `filter` | string | No | JSON filter object for querying records |
| `sorts` | string | No | JSON array of sort objects, e.g. \[\{"direction":"asc","attribute":"name"}] |
| `limit` | number | No | Maximum number of records to return (default 500) |
| `offset` | number | No | Number of records to skip for pagination |
#### Output [#output]
| Parameter | Type | Description |
| ---------------- | ------ | ------------------------------- |
| `records` | array | Array of Attio records |
| ↳ `id` | object | The record identifier |
| ↳ `workspace_id` | string | The workspace ID |
| ↳ `object_id` | string | The object ID |
| ↳ `record_id` | string | The record ID |
| ↳ `created_at` | string | When the record was created |
| ↳ `web_url` | string | URL to view the record in Attio |
| ↳ `values` | json | The record attribute values |
| `count` | number | Number of records returned |
### Attio Get Record [#attio-get-record]
Get a single record by ID from Attio
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | --------------------------------------------- |
| `objectType` | string | Yes | The object type slug (e.g. people, companies) |
| `recordId` | string | Yes | The ID of the record to retrieve |
#### Output [#output-1]
| Parameter | Type | Description |
| ---------------- | ------ | ------------------------------- |
| `record` | object | An Attio record |
| ↳ `id` | object | The record identifier |
| ↳ `workspace_id` | string | The workspace ID |
| ↳ `object_id` | string | The object ID |
| ↳ `record_id` | string | The record ID |
| ↳ `created_at` | string | When the record was created |
| ↳ `web_url` | string | URL to view the record in Attio |
| ↳ `values` | json | The record attribute values |
| `recordId` | string | The record ID |
| `webUrl` | string | URL to view the record in Attio |
### Attio Create Record [#attio-create-record]
Create a new record in Attio for a given object type
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ---------------------------------------------------- |
| `objectType` | string | Yes | The object type slug (e.g. people, companies) |
| `values` | string | Yes | JSON object of attribute values to set on the record |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------------- | ------ | ------------------------------- |
| `record` | object | An Attio record |
| ↳ `id` | object | The record identifier |
| ↳ `workspace_id` | string | The workspace ID |
| ↳ `object_id` | string | The object ID |
| ↳ `record_id` | string | The record ID |
| ↳ `created_at` | string | When the record was created |
| ↳ `web_url` | string | URL to view the record in Attio |
| ↳ `values` | json | The record attribute values |
| `recordId` | string | The ID of the created record |
| `webUrl` | string | URL to view the record in Attio |
### Attio Update Record [#attio-update-record]
Update an existing record in Attio (appends multiselect values)
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | --------------------------------------------- |
| `objectType` | string | Yes | The object type slug (e.g. people, companies) |
| `recordId` | string | Yes | The ID of the record to update |
| `values` | string | Yes | JSON object of attribute values to update |
#### Output [#output-3]
| Parameter | Type | Description |
| ---------------- | ------ | ------------------------------- |
| `record` | object | An Attio record |
| ↳ `id` | object | The record identifier |
| ↳ `workspace_id` | string | The workspace ID |
| ↳ `object_id` | string | The object ID |
| ↳ `record_id` | string | The record ID |
| ↳ `created_at` | string | When the record was created |
| ↳ `web_url` | string | URL to view the record in Attio |
| ↳ `values` | json | The record attribute values |
| `recordId` | string | The ID of the updated record |
| `webUrl` | string | URL to view the record in Attio |
### Attio Delete Record [#attio-delete-record]
Delete a record from Attio
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | --------------------------------------------- |
| `objectType` | string | Yes | The object type slug (e.g. people, companies) |
| `recordId` | string | Yes | The ID of the record to delete |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------ |
| `deleted` | boolean | Whether the record was deleted |
### Attio Search Records [#attio-search-records]
Fuzzy search for records across object types in Attio
#### Input [#input-5]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------------------------- |
| `query` | string | Yes | The search query (max 256 characters) |
| `objects` | string | Yes | Comma-separated object slugs to search (e.g. people,companies) |
| `limit` | number | No | Maximum number of results (1-25, default 25) |
#### Output [#output-5]
| Parameter | Type | Description |
| --------------- | ------ | --------------------------- |
| `results` | array | Search results |
| ↳ `recordId` | string | The record ID |
| ↳ `objectId` | string | The object type ID |
| ↳ `objectSlug` | string | The object type slug |
| ↳ `recordText` | string | Display text for the record |
| ↳ `recordImage` | string | Image URL for the record |
| `count` | number | Number of results returned |
### Attio Assert Record [#attio-assert-record]
Upsert a record in Attio — creates it if no match is found, updates it if a match exists
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `objectType` | string | Yes | The object type slug (e.g. people, companies) |
| `matchingAttribute` | string | Yes | The attribute slug to match on for upsert (e.g. email\_addresses for people, domains for companies) |
| `values` | string | Yes | JSON object of attribute values (e.g. \{"email\_addresses":\[\{"email\_address":"[test@example.com](mailto:test@example.com)"}]}) |
#### Output [#output-6]
| Parameter | Type | Description |
| ---------------- | ------ | ------------------------------- |
| `record` | object | The upserted record |
| ↳ `id` | object | The record identifier |
| ↳ `workspace_id` | string | The workspace ID |
| ↳ `object_id` | string | The object ID |
| ↳ `record_id` | string | The record ID |
| ↳ `created_at` | string | When the record was created |
| ↳ `web_url` | string | URL to view the record in Attio |
| ↳ `values` | json | The record attribute values |
| `recordId` | string | The record ID |
| `webUrl` | string | URL to view the record in Attio |
### Attio List Notes [#attio-list-notes]
List notes in Attio, optionally filtered by parent record
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------ |
| `parentObject` | string | No | Object type slug to filter notes by (e.g. people, companies) |
| `parentRecordId` | string | No | Record ID to filter notes by |
| `limit` | number | No | Maximum number of notes to return (default 10, max 50) |
| `offset` | number | No | Number of notes to skip for pagination |
#### Output [#output-7]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------------------------------------- |
| `notes` | array | Array of notes |
| ↳ `noteId` | string | The note ID |
| ↳ `parentObject` | string | The parent object slug |
| ↳ `parentRecordId` | string | The parent record ID |
| ↳ `title` | string | The note title |
| ↳ `contentPlaintext` | string | The note content as plaintext |
| ↳ `contentMarkdown` | string | The note content as markdown |
| ↳ `meetingId` | string | The linked meeting ID |
| ↳ `tags` | array | Tags on the note |
| ↳ `type` | string | The tag type (workspace-member or record) |
| ↳ `workspaceMemberId` | string | The workspace member ID (present when type is workspace-member) |
| ↳ `object` | string | The tagged object slug (present when type is record) |
| ↳ `recordId` | string | The tagged record ID (present when type is record) |
| ↳ `createdByActor` | object | The actor who created the note |
| ↳ `type` | string | The actor type (e.g. workspace-member, api-token, system) |
| ↳ `id` | string | The actor ID |
| ↳ `createdAt` | string | When the note was created |
| `count` | number | Number of notes returned |
### Attio Get Note [#attio-get-note]
Get a single note by ID from Attio
#### Input [#input-8]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------ |
| `noteId` | string | Yes | The ID of the note to retrieve |
#### Output [#output-8]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------------------------------------- |
| `noteId` | string | The note ID |
| `parentObject` | string | The parent object slug |
| `parentRecordId` | string | The parent record ID |
| `title` | string | The note title |
| `contentPlaintext` | string | The note content as plaintext |
| `contentMarkdown` | string | The note content as markdown |
| `meetingId` | string | The linked meeting ID |
| `tags` | array | Tags on the note |
| ↳ `type` | string | The tag type (workspace-member or record) |
| ↳ `workspaceMemberId` | string | The workspace member ID (present when type is workspace-member) |
| ↳ `object` | string | The tagged object slug (present when type is record) |
| ↳ `recordId` | string | The tagged record ID (present when type is record) |
| `createdByActor` | object | The actor who created the note |
| ↳ `type` | string | The actor type (e.g. workspace-member, api-token, system) |
| ↳ `id` | string | The actor ID |
| `createdAt` | string | When the note was created |
### Attio Create Note [#attio-create-note]
Create a note on a record in Attio
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------- |
| `parentObject` | string | Yes | The parent object type slug (e.g. people, companies) |
| `parentRecordId` | string | Yes | The parent record ID to attach the note to |
| `title` | string | Yes | The note title |
| `content` | string | Yes | The note content |
| `format` | string | No | Content format: plaintext or markdown (default plaintext) |
| `createdAt` | string | No | Backdate the note creation time (ISO 8601 format) |
| `meetingId` | string | No | Associate the note with a meeting ID |
#### Output [#output-9]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------------------------------------- |
| `noteId` | string | The note ID |
| `parentObject` | string | The parent object slug |
| `parentRecordId` | string | The parent record ID |
| `title` | string | The note title |
| `contentPlaintext` | string | The note content as plaintext |
| `contentMarkdown` | string | The note content as markdown |
| `meetingId` | string | The linked meeting ID |
| `tags` | array | Tags on the note |
| ↳ `type` | string | The tag type (workspace-member or record) |
| ↳ `workspaceMemberId` | string | The workspace member ID (present when type is workspace-member) |
| ↳ `object` | string | The tagged object slug (present when type is record) |
| ↳ `recordId` | string | The tagged record ID (present when type is record) |
| `createdByActor` | object | The actor who created the note |
| ↳ `type` | string | The actor type (e.g. workspace-member, api-token, system) |
| ↳ `id` | string | The actor ID |
| `createdAt` | string | When the note was created |
### Attio Delete Note [#attio-delete-note]
Delete a note from Attio
#### Input [#input-10]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------- |
| `noteId` | string | Yes | The ID of the note to delete |
#### Output [#output-10]
| Parameter | Type | Description |
| --------- | ------- | ---------------------------- |
| `deleted` | boolean | Whether the note was deleted |
### Attio List Tasks [#attio-list-tasks]
List tasks in Attio, optionally filtered by record, assignee, or completion status
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | --------------------------------------------------------------------------------------- |
| `linkedObject` | string | No | Object type slug to filter tasks by (requires linkedRecordId) |
| `linkedRecordId` | string | No | Record ID to filter tasks by (requires linkedObject) |
| `assignee` | string | No | Assignee email or member ID to filter by |
| `isCompleted` | boolean | No | Filter by completion status |
| `sort` | string | No | Sort order: created\_at:asc, created\_at:desc, completed\_at:asc, or completed\_at:desc |
| `limit` | number | No | Maximum number of tasks to return (default 500) |
| `offset` | number | No | Number of tasks to skip for pagination |
#### Output [#output-11]
| Parameter | Type | Description |
| ------------------ | ------- | --------------------------------------------------------- |
| `tasks` | array | Array of tasks |
| ↳ `taskId` | string | The task ID |
| ↳ `content` | string | The task content |
| ↳ `deadlineAt` | string | The task deadline |
| ↳ `isCompleted` | boolean | Whether the task is completed |
| ↳ `completedAt` | string | When the task was completed |
| ↳ `linkedRecords` | array | Records linked to this task |
| ↳ `targetObjectId` | string | The linked object ID |
| ↳ `targetRecordId` | string | The linked record ID |
| ↳ `assignees` | array | Task assignees |
| ↳ `type` | string | The assignee actor type (e.g. workspace-member) |
| ↳ `id` | string | The assignee actor ID |
| ↳ `createdByActor` | object | The actor who created this task |
| ↳ `type` | string | The actor type (e.g. workspace-member, api-token, system) |
| ↳ `id` | string | The actor ID |
| ↳ `createdAt` | string | When the task was created |
| `count` | number | Number of tasks returned |
### Attio Get Task [#attio-get-task]
Get a single task by ID from Attio
#### Input [#input-12]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------ |
| `taskId` | string | Yes | The ID of the task to retrieve |
#### Output [#output-12]
| Parameter | Type | Description |
| ------------------ | ------- | --------------------------------------------------------- |
| `taskId` | string | The task ID |
| `content` | string | The task content |
| `deadlineAt` | string | The task deadline |
| `isCompleted` | boolean | Whether the task is completed |
| `completedAt` | string | When the task was completed |
| `linkedRecords` | array | Records linked to this task |
| ↳ `targetObjectId` | string | The linked object ID |
| ↳ `targetRecordId` | string | The linked record ID |
| `assignees` | array | Task assignees |
| ↳ `type` | string | The assignee actor type (e.g. workspace-member) |
| ↳ `id` | string | The assignee actor ID |
| `createdByActor` | object | The actor who created this task |
| ↳ `type` | string | The actor type (e.g. workspace-member, api-token, system) |
| ↳ `id` | string | The actor ID |
| `createdAt` | string | When the task was created |
### Attio Create Task [#attio-create-task]
Create a task in Attio
#### Input [#input-13]
| Parameter | Type | Required | Description |
| --------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------- |
| `content` | string | Yes | The task content (max 2000 characters) |
| `deadlineAt` | string | No | Deadline in ISO 8601 format (e.g. 2024-12-01T15:00:00.000Z) |
| `isCompleted` | boolean | No | Whether the task is completed (default false) |
| `linkedRecords` | string | No | JSON array of linked records (e.g. \[\{"target\_object":"people","target\_record\_id":"..."}]) |
| `assignees` | string | No | JSON array of assignees (e.g. \[\{"referenced\_actor\_type":"workspace-member","referenced\_actor\_id":"..."}]) |
#### Output [#output-13]
| Parameter | Type | Description |
| ------------------ | ------- | --------------------------------------------------------- |
| `taskId` | string | The task ID |
| `content` | string | The task content |
| `deadlineAt` | string | The task deadline |
| `isCompleted` | boolean | Whether the task is completed |
| `completedAt` | string | When the task was completed |
| `linkedRecords` | array | Records linked to this task |
| ↳ `targetObjectId` | string | The linked object ID |
| ↳ `targetRecordId` | string | The linked record ID |
| `assignees` | array | Task assignees |
| ↳ `type` | string | The assignee actor type (e.g. workspace-member) |
| ↳ `id` | string | The assignee actor ID |
| `createdByActor` | object | The actor who created this task |
| ↳ `type` | string | The actor type (e.g. workspace-member, api-token, system) |
| ↳ `id` | string | The actor ID |
| `createdAt` | string | When the task was created |
### Attio Update Task [#attio-update-task]
Update a task in Attio (deadline, completion status, linked records, assignees)
#### Input [#input-14]
| Parameter | Type | Required | Description |
| --------------- | ------- | -------- | ------------------------------- |
| `taskId` | string | Yes | The ID of the task to update |
| `deadlineAt` | string | No | New deadline in ISO 8601 format |
| `isCompleted` | boolean | No | Whether the task is completed |
| `linkedRecords` | string | No | JSON array of linked records |
| `assignees` | string | No | JSON array of assignees |
#### Output [#output-14]
| Parameter | Type | Description |
| ------------------ | ------- | --------------------------------------------------------- |
| `taskId` | string | The task ID |
| `content` | string | The task content |
| `deadlineAt` | string | The task deadline |
| `isCompleted` | boolean | Whether the task is completed |
| `completedAt` | string | When the task was completed |
| `linkedRecords` | array | Records linked to this task |
| ↳ `targetObjectId` | string | The linked object ID |
| ↳ `targetRecordId` | string | The linked record ID |
| `assignees` | array | Task assignees |
| ↳ `type` | string | The assignee actor type (e.g. workspace-member) |
| ↳ `id` | string | The assignee actor ID |
| `createdByActor` | object | The actor who created this task |
| ↳ `type` | string | The actor type (e.g. workspace-member, api-token, system) |
| ↳ `id` | string | The actor ID |
| `createdAt` | string | When the task was created |
### Attio Delete Task [#attio-delete-task]
Delete a task from Attio
#### Input [#input-15]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------- |
| `taskId` | string | Yes | The ID of the task to delete |
#### Output [#output-15]
| Parameter | Type | Description |
| --------- | ------- | ---------------------------- |
| `deleted` | boolean | Whether the task was deleted |
### Attio List Objects [#attio-list-objects]
List all objects (system and custom) in the Attio workspace
#### Input [#input-16]
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
#### Output [#output-16]
| Parameter | Type | Description |
| ---------------- | ------ | ------------------------------------- |
| `objects` | array | Array of objects |
| ↳ `objectId` | string | The object ID |
| ↳ `apiSlug` | string | The API slug (e.g. people, companies) |
| ↳ `singularNoun` | string | Singular display name |
| ↳ `pluralNoun` | string | Plural display name |
| ↳ `createdAt` | string | When the object was created |
| `count` | number | Number of objects returned |
### Attio Get Object [#attio-get-object]
Get a single object by ID or slug
#### Input [#input-17]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------- |
| `object` | string | Yes | The object ID or slug (e.g. people, companies) |
#### Output [#output-17]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------- |
| `objectId` | string | The object ID |
| `apiSlug` | string | The API slug (e.g. people, companies) |
| `singularNoun` | string | Singular display name |
| `pluralNoun` | string | Plural display name |
| `createdAt` | string | When the object was created |
### Attio Create Object [#attio-create-object]
Create a custom object in Attio
#### Input [#input-18]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------- |
| `apiSlug` | string | Yes | The API slug for the object (e.g. projects) |
| `singularNoun` | string | Yes | Singular display name (e.g. Project) |
| `pluralNoun` | string | Yes | Plural display name (e.g. Projects) |
#### Output [#output-18]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------- |
| `objectId` | string | The object ID |
| `apiSlug` | string | The API slug (e.g. people, companies) |
| `singularNoun` | string | Singular display name |
| `pluralNoun` | string | Plural display name |
| `createdAt` | string | When the object was created |
### Attio Update Object [#attio-update-object]
Update a custom object in Attio
#### Input [#input-19]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------- |
| `object` | string | Yes | The object ID or slug to update |
| `apiSlug` | string | No | New API slug |
| `singularNoun` | string | No | New singular display name |
| `pluralNoun` | string | No | New plural display name |
#### Output [#output-19]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------- |
| `objectId` | string | The object ID |
| `apiSlug` | string | The API slug (e.g. people, companies) |
| `singularNoun` | string | Singular display name |
| `pluralNoun` | string | Plural display name |
| `createdAt` | string | When the object was created |
### Attio List Lists [#attio-list-lists]
List all lists in the Attio workspace
#### Input [#input-20]
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
#### Output [#output-20]
| Parameter | Type | Description |
| ------------------------- | ------ | --------------------------------------------------------- |
| `lists` | array | Array of lists |
| ↳ `listId` | string | The list ID |
| ↳ `apiSlug` | string | The API slug for the list |
| ↳ `name` | string | The list name |
| ↳ `parentObject` | string | The parent object slug (e.g. people, companies) |
| ↳ `workspaceAccess` | string | Workspace-level access (e.g. full-access, read-only) |
| ↳ `workspaceMemberAccess` | json | Member-level access entries |
| ↳ `createdByActor` | object | The actor who created the list |
| ↳ `type` | string | The actor type (e.g. workspace-member, api-token, system) |
| ↳ `id` | string | The actor ID |
| ↳ `createdAt` | string | When the list was created |
| `count` | number | Number of lists returned |
### Attio Get List [#attio-get-list]
Get a single list by ID or slug
#### Input [#input-21]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------- |
| `list` | string | Yes | The list ID or slug |
#### Output [#output-21]
| Parameter | Type | Description |
| ----------------------- | ------ | --------------------------------------------------------- |
| `listId` | string | The list ID |
| `apiSlug` | string | The API slug for the list |
| `name` | string | The list name |
| `parentObject` | string | The parent object slug (e.g. people, companies) |
| `workspaceAccess` | string | Workspace-level access (e.g. full-access, read-only) |
| `workspaceMemberAccess` | json | Member-level access entries |
| `createdByActor` | object | The actor who created the list |
| ↳ `type` | string | The actor type (e.g. workspace-member, api-token, system) |
| ↳ `id` | string | The actor ID |
| `createdAt` | string | When the list was created |
### Attio Create List [#attio-create-list]
Create a new list in Attio
#### Input [#input-22]
| Parameter | Type | Required | Description |
| ----------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ |
| `name` | string | Yes | The list name |
| `apiSlug` | string | No | The API slug for the list (auto-generated from name if omitted) |
| `parentObject` | string | Yes | The parent object slug (e.g. people, companies) |
| `workspaceAccess` | string | No | Workspace-level access: full-access, read-and-write, or read-only (omit for private) |
| `workspaceMemberAccess` | string | No | JSON array of member access entries, e.g. \[\{"workspace\_member\_id":"...","level":"read-and-write"}] |
#### Output [#output-22]
| Parameter | Type | Description |
| ----------------------- | ------ | --------------------------------------------------------- |
| `listId` | string | The list ID |
| `apiSlug` | string | The API slug for the list |
| `name` | string | The list name |
| `parentObject` | string | The parent object slug (e.g. people, companies) |
| `workspaceAccess` | string | Workspace-level access (e.g. full-access, read-only) |
| `workspaceMemberAccess` | json | Member-level access entries |
| `createdByActor` | object | The actor who created the list |
| ↳ `type` | string | The actor type (e.g. workspace-member, api-token, system) |
| ↳ `id` | string | The actor ID |
| `createdAt` | string | When the list was created |
### Attio Update List [#attio-update-list]
Update a list in Attio
#### Input [#input-23]
| Parameter | Type | Required | Description |
| ----------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ |
| `list` | string | Yes | The list ID or slug to update |
| `name` | string | No | New name for the list |
| `apiSlug` | string | No | New API slug for the list |
| `workspaceAccess` | string | No | New workspace-level access: full-access, read-and-write, or read-only (omit for private) |
| `workspaceMemberAccess` | string | No | JSON array of member access entries, e.g. \[\{"workspace\_member\_id":"...","level":"read-and-write"}] |
#### Output [#output-23]
| Parameter | Type | Description |
| ----------------------- | ------ | --------------------------------------------------------- |
| `listId` | string | The list ID |
| `apiSlug` | string | The API slug for the list |
| `name` | string | The list name |
| `parentObject` | string | The parent object slug (e.g. people, companies) |
| `workspaceAccess` | string | Workspace-level access (e.g. full-access, read-only) |
| `workspaceMemberAccess` | json | Member-level access entries |
| `createdByActor` | object | The actor who created the list |
| ↳ `type` | string | The actor type (e.g. workspace-member, api-token, system) |
| ↳ `id` | string | The actor ID |
| `createdAt` | string | When the list was created |
### Attio Query List Entries [#attio-query-list-entries]
Query entries in an Attio list with optional filter, sort, and pagination
#### Input [#input-24]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------ |
| `list` | string | Yes | The list ID or slug |
| `filter` | string | No | JSON filter object for querying entries |
| `sorts` | string | No | JSON array of sort objects (e.g. \[\{"attribute":"created\_at","direction":"desc"}]) |
| `limit` | number | No | Maximum number of entries to return (default 500) |
| `offset` | number | No | Number of entries to skip for pagination |
#### Output [#output-24]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------------------------- |
| `entries` | array | Array of list entries |
| ↳ `entryId` | string | The list entry ID |
| ↳ `listId` | string | The list ID |
| ↳ `parentRecordId` | string | The parent record ID |
| ↳ `parentObject` | string | The parent object slug |
| ↳ `createdAt` | string | When the entry was created |
| ↳ `entryValues` | json | The entry attribute values (dynamic per list) |
| `count` | number | Number of entries returned |
### Attio Get List Entry [#attio-get-list-entry]
Get a single list entry by ID
#### Input [#input-25]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------- |
| `list` | string | Yes | The list ID or slug |
| `entryId` | string | Yes | The entry ID |
#### Output [#output-25]
| Parameter | Type | Description |
| ---------------- | ------ | --------------------------------------------- |
| `entryId` | string | The list entry ID |
| `listId` | string | The list ID |
| `parentRecordId` | string | The parent record ID |
| `parentObject` | string | The parent object slug |
| `createdAt` | string | When the entry was created |
| `entryValues` | json | The entry attribute values (dynamic per list) |
### Attio Create List Entry [#attio-create-list-entry]
Add a record to an Attio list as a new entry
#### Input [#input-26]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ----------------------------------------------------------- |
| `list` | string | Yes | The list ID or slug |
| `parentRecordId` | string | Yes | The record ID to add to the list |
| `parentObject` | string | Yes | The object type slug of the record (e.g. people, companies) |
| `entryValues` | string | No | JSON object of entry attribute values |
#### Output [#output-26]
| Parameter | Type | Description |
| ---------------- | ------ | --------------------------------------------- |
| `entryId` | string | The list entry ID |
| `listId` | string | The list ID |
| `parentRecordId` | string | The parent record ID |
| `parentObject` | string | The parent object slug |
| `createdAt` | string | When the entry was created |
| `entryValues` | json | The entry attribute values (dynamic per list) |
### Attio Update List Entry [#attio-update-list-entry]
Update entry attribute values on an Attio list entry (appends multiselect values)
#### Input [#input-27]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ----------------------------------------------- |
| `list` | string | Yes | The list ID or slug |
| `entryId` | string | Yes | The entry ID to update |
| `entryValues` | string | Yes | JSON object of entry attribute values to update |
#### Output [#output-27]
| Parameter | Type | Description |
| ---------------- | ------ | --------------------------------------------- |
| `entryId` | string | The list entry ID |
| `listId` | string | The list ID |
| `parentRecordId` | string | The parent record ID |
| `parentObject` | string | The parent object slug |
| `createdAt` | string | When the entry was created |
| `entryValues` | json | The entry attribute values (dynamic per list) |
### Attio Delete List Entry [#attio-delete-list-entry]
Remove an entry from an Attio list
#### Input [#input-28]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------- |
| `list` | string | Yes | The list ID or slug |
| `entryId` | string | Yes | The entry ID to delete |
#### Output [#output-28]
| Parameter | Type | Description |
| --------- | ------- | ----------------------------- |
| `deleted` | boolean | Whether the entry was deleted |
### Attio List Members [#attio-list-members]
List all workspace members in Attio
#### Input [#input-29]
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
#### Output [#output-29]
| Parameter | Type | Description |
| ---------------- | ------ | --------------------------------------- |
| `members` | array | Array of workspace members |
| ↳ `memberId` | string | The workspace member ID |
| ↳ `firstName` | string | First name |
| ↳ `lastName` | string | Last name |
| ↳ `avatarUrl` | string | Avatar URL |
| ↳ `emailAddress` | string | Email address |
| ↳ `accessLevel` | string | Access level (admin, member, suspended) |
| ↳ `createdAt` | string | When the member was added |
| `count` | number | Number of members returned |
### Attio Get Member [#attio-get-member]
Get a single workspace member by ID
#### Input [#input-30]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------- |
| `memberId` | string | Yes | The workspace member ID |
#### Output [#output-30]
| Parameter | Type | Description |
| -------------- | ------ | --------------------------------------- |
| `memberId` | string | The workspace member ID |
| `firstName` | string | First name |
| `lastName` | string | Last name |
| `avatarUrl` | string | Avatar URL |
| `emailAddress` | string | Email address |
| `accessLevel` | string | Access level (admin, member, suspended) |
| `createdAt` | string | When the member was added |
### Attio Create Comment [#attio-create-comment]
Create a comment on a list entry in Attio
#### Input [#input-31]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- |
| `content` | string | Yes | The comment content |
| `format` | string | No | Content format: plaintext or markdown (default plaintext) |
| `authorType` | string | Yes | Author type (e.g. workspace-member) |
| `authorId` | string | Yes | Author workspace member ID |
| `list` | string | No | The list ID or slug the entry belongs to (used with entryId; omit if threadId or recordId is set) |
| `entryId` | string | No | The list entry ID to comment on (used with list; omit if threadId or recordId is set) |
| `recordObject` | string | No | The object ID or slug the record belongs to (used with recordId; omit if threadId or entryId is set) |
| `recordId` | string | No | The record ID to comment on directly (used with recordObject; omit if threadId or entryId is set) |
| `threadId` | string | No | Thread ID to reply to (omit to start a new thread on a record or list entry) |
| `createdAt` | string | No | Backdate the comment (ISO 8601 format) |
#### Output [#output-31]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------------------------------------- |
| `commentId` | string | The comment ID |
| `threadId` | string | The thread ID |
| `contentPlaintext` | string | The comment content as plaintext |
| `author` | object | The comment author |
| ↳ `type` | string | The actor type (e.g. workspace-member, api-token, system) |
| ↳ `id` | string | The actor ID |
| `entry` | object | The list entry this comment is on |
| ↳ `listId` | string | The list ID |
| ↳ `entryId` | string | The entry ID |
| `record` | object | The record this comment is on |
| ↳ `objectId` | string | The object ID |
| ↳ `recordId` | string | The record ID |
| `resolvedAt` | string | When the thread was resolved |
| `resolvedBy` | object | Who resolved the thread |
| ↳ `type` | string | The actor type (e.g. workspace-member, api-token, system) |
| ↳ `id` | string | The actor ID |
| `createdAt` | string | When the comment was created |
### Attio Get Comment [#attio-get-comment]
Get a single comment by ID from Attio
#### Input [#input-32]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | -------------- |
| `commentId` | string | Yes | The comment ID |
#### Output [#output-32]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------------------------------------- |
| `commentId` | string | The comment ID |
| `threadId` | string | The thread ID |
| `contentPlaintext` | string | The comment content as plaintext |
| `author` | object | The comment author |
| ↳ `type` | string | The actor type (e.g. workspace-member, api-token, system) |
| ↳ `id` | string | The actor ID |
| `entry` | object | The list entry this comment is on |
| ↳ `listId` | string | The list ID |
| ↳ `entryId` | string | The entry ID |
| `record` | object | The record this comment is on |
| ↳ `objectId` | string | The object ID |
| ↳ `recordId` | string | The record ID |
| `resolvedAt` | string | When the thread was resolved |
| `resolvedBy` | object | Who resolved the thread |
| ↳ `type` | string | The actor type (e.g. workspace-member, api-token, system) |
| ↳ `id` | string | The actor ID |
| `createdAt` | string | When the comment was created |
### Attio Delete Comment [#attio-delete-comment]
Delete a comment in Attio (if head of thread, deletes entire thread)
#### Input [#input-33]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------ |
| `commentId` | string | Yes | The comment ID to delete |
#### Output [#output-33]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------- |
| `deleted` | boolean | Whether the comment was deleted |
### Attio List Threads [#attio-list-threads]
List comment threads in Attio, optionally filtered by record or list entry
#### Input [#input-34]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------- |
| `recordId` | string | No | Filter by record ID (requires object) |
| `object` | string | No | Object slug to filter by (requires recordId) |
| `entryId` | string | No | Filter by list entry ID (requires list) |
| `list` | string | No | List ID or slug to filter by (requires entryId) |
| `limit` | number | No | Maximum number of threads to return (max 50) |
| `offset` | number | No | Number of threads to skip for pagination |
#### Output [#output-34]
| Parameter | Type | Description |
| -------------------- | ------ | ---------------------------- |
| `threads` | array | Array of threads |
| ↳ `threadId` | string | The thread ID |
| ↳ `comments` | array | Comments in the thread |
| ↳ `commentId` | string | The comment ID |
| ↳ `contentPlaintext` | string | Comment content |
| ↳ `author` | object | Comment author |
| ↳ `type` | string | Actor type |
| ↳ `id` | string | Actor ID |
| ↳ `createdAt` | string | When the comment was created |
| ↳ `createdAt` | string | When the thread was created |
| `count` | number | Number of threads returned |
### Attio Get Thread [#attio-get-thread]
Get a single comment thread by ID from Attio
#### Input [#input-35]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------- |
| `threadId` | string | Yes | The thread ID |
#### Output [#output-35]
| Parameter | Type | Description |
| ----------- | ------ | --------------------------------------------------------- |
| `threadId` | string | The thread ID |
| `comments` | array | Comments in the thread |
| ↳ `type` | string | The actor type (e.g. workspace-member, api-token, system) |
| ↳ `id` | string | The actor ID |
| `createdAt` | string | When the thread was created |
### Attio List Webhooks [#attio-list-webhooks]
List all webhooks in the Attio workspace
#### Input [#input-36]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------------------- |
| `limit` | number | No | Maximum number of webhooks to return |
| `offset` | number | No | Number of webhooks to skip for pagination |
#### Output [#output-36]
| Parameter | Type | Description |
| ----------------- | ------ | ------------------------------------------- |
| `webhooks` | array | Array of webhooks |
| ↳ `webhookId` | string | The webhook ID |
| ↳ `targetUrl` | string | The webhook target URL |
| ↳ `subscriptions` | array | Event subscriptions |
| ↳ `eventType` | string | The event type (e.g. record.created) |
| ↳ `filter` | json | Optional event filter |
| ↳ `status` | string | Webhook status (active, degraded, inactive) |
| ↳ `createdAt` | string | When the webhook was created |
| `count` | number | Number of webhooks returned |
### Attio Get Webhook [#attio-get-webhook]
Get a single webhook by ID from Attio
#### Input [#input-37]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | -------------- |
| `webhookId` | string | Yes | The webhook ID |
#### Output [#output-37]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------------------- |
| `webhookId` | string | The webhook ID |
| `targetUrl` | string | The webhook target URL |
| `subscriptions` | array | Event subscriptions |
| ↳ `eventType` | string | The event type (e.g. record.created) |
| ↳ `filter` | json | Optional event filter |
| `status` | string | Webhook status (active, degraded, inactive) |
| `createdAt` | string | When the webhook was created |
### Attio Create Webhook [#attio-create-webhook]
Create a webhook in Attio to receive event notifications
#### Input [#input-38]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ |
| `targetUrl` | string | Yes | The HTTPS URL to receive webhook events |
| `subscriptions` | string | Yes | JSON array of subscriptions (e.g. \[\{"event\_type":"record.created","filter":\{"object\_id":"..."}}]) |
#### Output [#output-38]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------------------------------ |
| `webhookId` | string | The webhook ID |
| `targetUrl` | string | The webhook target URL |
| `subscriptions` | array | Event subscriptions |
| ↳ `eventType` | string | The event type (e.g. record.created) |
| ↳ `filter` | json | Optional event filter |
| `status` | string | Webhook status (active, degraded, inactive) |
| `createdAt` | string | When the webhook was created |
| `secret` | string | The webhook signing secret (only returned on creation) |
### Attio Update Webhook [#attio-update-webhook]
Update a webhook in Attio (target URL and/or subscriptions)
#### Input [#input-39]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | -------------------------------------------------------------------- |
| `webhookId` | string | Yes | The webhook ID to update |
| `targetUrl` | string | No | HTTPS target URL for webhook delivery |
| `subscriptions` | string | No | JSON array of subscriptions, e.g. \[\{"event\_type":"note.created"}] |
#### Output [#output-39]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------------------- |
| `webhookId` | string | The webhook ID |
| `targetUrl` | string | The webhook target URL |
| `subscriptions` | array | Event subscriptions |
| ↳ `eventType` | string | The event type (e.g. record.created) |
| ↳ `filter` | json | Optional event filter |
| `status` | string | Webhook status (active, degraded, inactive) |
| `createdAt` | string | When the webhook was created |
### Attio Delete Webhook [#attio-delete-webhook]
Delete a webhook from Attio
#### Input [#input-40]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------ |
| `webhookId` | string | Yes | The webhook ID to delete |
#### Output [#output-40]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------- |
| `deleted` | boolean | Whether the webhook was deleted |
### Attio List Attributes [#attio-list-attributes]
List the attributes (schema fields) defined on an Attio object or list
#### Input [#input-41]
| Parameter | Type | Required | Description |
| -------------- | ------- | -------- | ---------------------------------------------------------------------- |
| `target` | string | Yes | Whether the attributes belong to an object or a list: objects or lists |
| `identifier` | string | Yes | The object or list ID or slug (e.g. people, companies) |
| `limit` | number | No | Maximum number of attributes to return |
| `offset` | number | No | Number of attributes to skip for pagination |
| `showArchived` | boolean | No | Whether to include archived attributes (default false) |
#### Output [#output-41]
| Parameter | Type | Description |
| ------------------------- | ------- | ---------------------------------------------------------------------- |
| `attributes` | array | Array of attributes |
| ↳ `attributeId` | string | The attribute ID |
| ↳ `title` | string | The attribute display title |
| ↳ `apiSlug` | string | The attribute API slug |
| ↳ `description` | string | The attribute description |
| ↳ `type` | string | The attribute value type (e.g. text, number, select, record-reference) |
| ↳ `isSystemAttribute` | boolean | Whether this is a built-in system attribute |
| ↳ `isWritable` | boolean | Whether the attribute can be written to |
| ↳ `isRequired` | boolean | Whether new records must provide a value |
| ↳ `isUnique` | boolean | Whether the attribute enforces uniqueness |
| ↳ `isMultiselect` | boolean | Whether the attribute supports multiple values |
| ↳ `isDefaultValueEnabled` | boolean | Whether this attribute has a default value enabled |
| ↳ `isArchived` | boolean | Whether the attribute is archived |
| ↳ `defaultValue` | json | The default value for this attribute, if enabled |
| ↳ `relationship` | json | The related attribute, if this attribute is part of a relationship |
| ↳ `config` | json | Type-dependent attribute configuration |
| ↳ `createdAt` | string | When the attribute was created |
| `count` | number | Number of attributes returned |
### Attio Get Attribute [#attio-get-attribute]
Get a single attribute (schema field) on an Attio object or list
#### Input [#input-42]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ---------------------------------------------------------------------- |
| `target` | string | Yes | Whether the attribute belongs to an object or a list: objects or lists |
| `identifier` | string | Yes | The object or list ID or slug (e.g. people, companies) |
| `attribute` | string | Yes | The attribute ID or slug |
#### Output [#output-42]
| Parameter | Type | Description |
| ----------------------- | ------- | ---------------------------------------------------------------------- |
| `attributeId` | string | The attribute ID |
| `title` | string | The attribute display title |
| `apiSlug` | string | The attribute API slug |
| `description` | string | The attribute description |
| `type` | string | The attribute value type (e.g. text, number, select, record-reference) |
| `isSystemAttribute` | boolean | Whether this is a built-in system attribute |
| `isWritable` | boolean | Whether the attribute can be written to |
| `isRequired` | boolean | Whether new records must provide a value |
| `isUnique` | boolean | Whether the attribute enforces uniqueness |
| `isMultiselect` | boolean | Whether the attribute supports multiple values |
| `isDefaultValueEnabled` | boolean | Whether this attribute has a default value enabled |
| `isArchived` | boolean | Whether the attribute is archived |
| `defaultValue` | json | The default value for this attribute, if enabled |
| `relationship` | json | The related attribute, if this attribute is part of a relationship |
| `config` | json | Type-dependent attribute configuration |
| `createdAt` | string | When the attribute was created |
### Attio Create Attribute [#attio-create-attribute]
Create a new attribute (schema field) on an Attio object or list
#### Input [#input-43]
| Parameter | Type | Required | Description |
| --------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `target` | string | Yes | Whether to create the attribute on an object or a list: objects or lists |
| `identifier` | string | Yes | The object or list ID or slug (e.g. people, companies) |
| `title` | string | Yes | The attribute display title |
| `apiSlug` | string | Yes | The attribute API slug (unique, snake\_case) |
| `type` | string | Yes | The attribute value type (e.g. text, number, checkbox, currency, date, timestamp, rating, status, select, record-reference, actor-reference, location, domain, email-address, phone-number) |
| `description` | string | No | A description of the attribute |
| `isRequired` | boolean | No | Whether new records must provide a value (default false) |
| `isUnique` | boolean | No | Whether the attribute enforces uniqueness on new data (default false) |
| `isMultiselect` | boolean | No | Whether the attribute supports multiple values (default false) |
| `config` | string | No | JSON object of type-dependent configuration (e.g. currency or record-reference settings) |
#### Output [#output-43]
| Parameter | Type | Description |
| ----------------------- | ------- | ---------------------------------------------------------------------- |
| `attributeId` | string | The attribute ID |
| `title` | string | The attribute display title |
| `apiSlug` | string | The attribute API slug |
| `description` | string | The attribute description |
| `type` | string | The attribute value type (e.g. text, number, select, record-reference) |
| `isSystemAttribute` | boolean | Whether this is a built-in system attribute |
| `isWritable` | boolean | Whether the attribute can be written to |
| `isRequired` | boolean | Whether new records must provide a value |
| `isUnique` | boolean | Whether the attribute enforces uniqueness |
| `isMultiselect` | boolean | Whether the attribute supports multiple values |
| `isDefaultValueEnabled` | boolean | Whether this attribute has a default value enabled |
| `isArchived` | boolean | Whether the attribute is archived |
| `defaultValue` | json | The default value for this attribute, if enabled |
| `relationship` | json | The related attribute, if this attribute is part of a relationship |
| `config` | json | Type-dependent attribute configuration |
| `createdAt` | string | When the attribute was created |
### Attio Update Attribute [#attio-update-attribute]
Update an attribute (schema field) on an Attio object or list
#### Input [#input-44]
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | ---------------------------------------------------------------------- |
| `target` | string | Yes | Whether the attribute belongs to an object or a list: objects or lists |
| `identifier` | string | Yes | The object or list ID or slug (e.g. people, companies) |
| `attribute` | string | Yes | The attribute ID or slug to update |
| `title` | string | No | New attribute display title |
| `apiSlug` | string | No | New attribute API slug |
| `description` | string | No | New attribute description |
| `isRequired` | boolean | No | Whether new records must provide a value |
| `isUnique` | boolean | No | Whether the attribute enforces uniqueness on new data |
| `isArchived` | boolean | No | Archive or unarchive the attribute |
| `config` | string | No | JSON object of type-dependent configuration |
#### Output [#output-44]
| Parameter | Type | Description |
| ----------------------- | ------- | ---------------------------------------------------------------------- |
| `attributeId` | string | The attribute ID |
| `title` | string | The attribute display title |
| `apiSlug` | string | The attribute API slug |
| `description` | string | The attribute description |
| `type` | string | The attribute value type (e.g. text, number, select, record-reference) |
| `isSystemAttribute` | boolean | Whether this is a built-in system attribute |
| `isWritable` | boolean | Whether the attribute can be written to |
| `isRequired` | boolean | Whether new records must provide a value |
| `isUnique` | boolean | Whether the attribute enforces uniqueness |
| `isMultiselect` | boolean | Whether the attribute supports multiple values |
| `isDefaultValueEnabled` | boolean | Whether this attribute has a default value enabled |
| `isArchived` | boolean | Whether the attribute is archived |
| `defaultValue` | json | The default value for this attribute, if enabled |
| `relationship` | json | The related attribute, if this attribute is part of a relationship |
| `config` | json | Type-dependent attribute configuration |
| `createdAt` | string | When the attribute was created |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
### Attio Comment Created [#attio-comment-created]
Trigger workflow when a new comment is created in Attio
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------- |
| `triggerCredentials` | string | Yes | Attio Account |
#### Output [#output-45]
| Parameter | Type | Description |
| ------------- | ------ | ----------------------------------------------------- |
| `eventType` | string | The type of event (e.g. record.created, note.created) |
| `workspaceId` | string | The workspace ID |
| `threadId` | string | The thread ID |
| `commentId` | string | The comment ID |
| `objectId` | string | The object type ID |
| `recordId` | string | The record ID |
| `listId` | string | The list ID (if comment is on a list entry) |
| `entryId` | string | The list entry ID (if comment is on a list entry) |
***
### Attio Comment Deleted [#attio-comment-deleted]
Trigger workflow when a comment is deleted in Attio
#### Configuration [#configuration-1]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------- |
| `triggerCredentials` | string | Yes | Attio Account |
#### Output [#output-46]
| Parameter | Type | Description |
| ------------- | ------ | ----------------------------------------------------- |
| `eventType` | string | The type of event (e.g. record.created, note.created) |
| `workspaceId` | string | The workspace ID |
| `threadId` | string | The thread ID |
| `commentId` | string | The comment ID |
| `objectId` | string | The object type ID |
| `recordId` | string | The record ID |
| `listId` | string | The list ID (if comment is on a list entry) |
| `entryId` | string | The list entry ID (if comment is on a list entry) |
***
### Attio Comment Resolved [#attio-comment-resolved]
Trigger workflow when a comment thread is resolved in Attio
#### Configuration [#configuration-2]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------- |
| `triggerCredentials` | string | Yes | Attio Account |
#### Output [#output-47]
| Parameter | Type | Description |
| ------------- | ------ | ----------------------------------------------------- |
| `eventType` | string | The type of event (e.g. record.created, note.created) |
| `workspaceId` | string | The workspace ID |
| `threadId` | string | The thread ID |
| `commentId` | string | The comment ID |
| `objectId` | string | The object type ID |
| `recordId` | string | The record ID |
| `listId` | string | The list ID (if comment is on a list entry) |
| `entryId` | string | The list entry ID (if comment is on a list entry) |
***
### Attio Comment Unresolved [#attio-comment-unresolved]
Trigger workflow when a comment thread is unresolved in Attio
#### Configuration [#configuration-3]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------- |
| `triggerCredentials` | string | Yes | Attio Account |
#### Output [#output-48]
| Parameter | Type | Description |
| ------------- | ------ | ----------------------------------------------------- |
| `eventType` | string | The type of event (e.g. record.created, note.created) |
| `workspaceId` | string | The workspace ID |
| `threadId` | string | The thread ID |
| `commentId` | string | The comment ID |
| `objectId` | string | The object type ID |
| `recordId` | string | The record ID |
| `listId` | string | The list ID (if comment is on a list entry) |
| `entryId` | string | The list entry ID (if comment is on a list entry) |
***
### Attio List Created [#attio-list-created]
Trigger workflow when a list is created in Attio
#### Configuration [#configuration-4]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------- |
| `triggerCredentials` | string | Yes | Attio Account |
#### Output [#output-49]
| Parameter | Type | Description |
| ------------- | ------ | ----------------------------------------------------- |
| `eventType` | string | The type of event (e.g. record.created, note.created) |
| `workspaceId` | string | The workspace ID |
| `listId` | string | The list ID |
***
### Attio List Deleted [#attio-list-deleted]
Trigger workflow when a list is deleted in Attio
#### Configuration [#configuration-5]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------- |
| `triggerCredentials` | string | Yes | Attio Account |
#### Output [#output-50]
| Parameter | Type | Description |
| ------------- | ------ | ----------------------------------------------------- |
| `eventType` | string | The type of event (e.g. record.created, note.created) |
| `workspaceId` | string | The workspace ID |
| `listId` | string | The list ID |
***
### Attio List Entry Created [#attio-list-entry-created]
Trigger workflow when a new list entry is created in Attio
#### Configuration [#configuration-6]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------- |
| `triggerCredentials` | string | Yes | Attio Account |
#### Output [#output-51]
| Parameter | Type | Description |
| ------------- | ------ | ----------------------------------------------------- |
| `eventType` | string | The type of event (e.g. record.created, note.created) |
| `workspaceId` | string | The workspace ID |
| `listId` | string | The list ID |
| `entryId` | string | The list entry ID |
***
### Attio List Entry Deleted [#attio-list-entry-deleted]
Trigger workflow when a list entry is deleted in Attio
#### Configuration [#configuration-7]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------- |
| `triggerCredentials` | string | Yes | Attio Account |
#### Output [#output-52]
| Parameter | Type | Description |
| ------------- | ------ | ----------------------------------------------------- |
| `eventType` | string | The type of event (e.g. record.created, note.created) |
| `workspaceId` | string | The workspace ID |
| `listId` | string | The list ID |
| `entryId` | string | The list entry ID |
***
### Attio List Entry Updated [#attio-list-entry-updated]
Trigger workflow when a list entry is updated in Attio
#### Configuration [#configuration-8]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------- |
| `triggerCredentials` | string | Yes | Attio Account |
#### Output [#output-53]
| Parameter | Type | Description |
| ------------- | ------ | ---------------------------------------------------------- |
| `eventType` | string | The type of event (e.g. record.created, note.created) |
| `workspaceId` | string | The workspace ID |
| `listId` | string | The list ID |
| `entryId` | string | The list entry ID |
| `attributeId` | string | The ID of the attribute that was updated on the list entry |
***
### Attio List Updated [#attio-list-updated]
Trigger workflow when a list is updated in Attio
#### Configuration [#configuration-9]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------- |
| `triggerCredentials` | string | Yes | Attio Account |
#### Output [#output-54]
| Parameter | Type | Description |
| ------------- | ------ | ----------------------------------------------------- |
| `eventType` | string | The type of event (e.g. record.created, note.created) |
| `workspaceId` | string | The workspace ID |
| `listId` | string | The list ID |
***
### Attio Note Created [#attio-note-created]
Trigger workflow when a new note is created in Attio
#### Configuration [#configuration-10]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------- |
| `triggerCredentials` | string | Yes | Attio Account |
#### Output [#output-55]
| Parameter | Type | Description |
| ---------------- | ------ | ----------------------------------------------------- |
| `eventType` | string | The type of event (e.g. record.created, note.created) |
| `workspaceId` | string | The workspace ID |
| `noteId` | string | The note ID |
| `parentObjectId` | string | The parent object type ID |
| `parentRecordId` | string | The parent record ID |
***
### Attio Note Deleted [#attio-note-deleted]
Trigger workflow when a note is deleted in Attio
#### Configuration [#configuration-11]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------- |
| `triggerCredentials` | string | Yes | Attio Account |
#### Output [#output-56]
| Parameter | Type | Description |
| ---------------- | ------ | ----------------------------------------------------- |
| `eventType` | string | The type of event (e.g. record.created, note.created) |
| `workspaceId` | string | The workspace ID |
| `noteId` | string | The note ID |
| `parentObjectId` | string | The parent object type ID |
| `parentRecordId` | string | The parent record ID |
***
### Attio Note Updated [#attio-note-updated]
Trigger workflow when a note is updated in Attio
#### Configuration [#configuration-12]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------- |
| `triggerCredentials` | string | Yes | Attio Account |
#### Output [#output-57]
| Parameter | Type | Description |
| ---------------- | ------ | ----------------------------------------------------- |
| `eventType` | string | The type of event (e.g. record.created, note.created) |
| `workspaceId` | string | The workspace ID |
| `noteId` | string | The note ID |
| `parentObjectId` | string | The parent object type ID |
| `parentRecordId` | string | The parent record ID |
***
### Attio Record Created [#attio-record-created]
Trigger workflow when a new record is created in Attio
#### Configuration [#configuration-13]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------- |
| `triggerCredentials` | string | Yes | Attio Account |
#### Output [#output-58]
| Parameter | Type | Description |
| ------------- | ------ | ----------------------------------------------------- |
| `eventType` | string | The type of event (e.g. record.created, note.created) |
| `workspaceId` | string | The workspace ID |
| `objectId` | string | The object type ID (e.g. people, companies) |
| `recordId` | string | The record ID |
***
### Attio Record Deleted [#attio-record-deleted]
Trigger workflow when a record is deleted in Attio
#### Configuration [#configuration-14]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------- |
| `triggerCredentials` | string | Yes | Attio Account |
#### Output [#output-59]
| Parameter | Type | Description |
| ------------- | ------ | ----------------------------------------------------- |
| `eventType` | string | The type of event (e.g. record.created, note.created) |
| `workspaceId` | string | The workspace ID |
| `objectId` | string | The object type ID (e.g. people, companies) |
| `recordId` | string | The record ID |
***
### Attio Record Merged [#attio-record-merged]
Trigger workflow when two records are merged in Attio
#### Configuration [#configuration-15]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------- |
| `triggerCredentials` | string | Yes | Attio Account |
#### Output [#output-60]
| Parameter | Type | Description |
| ------------------- | ------ | ----------------------------------------------------- |
| `eventType` | string | The type of event (e.g. record.created, note.created) |
| `workspaceId` | string | The workspace ID |
| `objectId` | string | The object type ID of the surviving record |
| `recordId` | string | The surviving record ID after merge |
| `duplicateObjectId` | string | The object type ID of the merged-away record |
| `duplicateRecordId` | string | The record ID that was merged away |
***
### Attio Record Updated [#attio-record-updated]
Trigger workflow when a record is updated in Attio
#### Configuration [#configuration-16]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------- |
| `triggerCredentials` | string | Yes | Attio Account |
#### Output [#output-61]
| Parameter | Type | Description |
| ------------- | ------ | ------------------------------------------------------ |
| `eventType` | string | The type of event (e.g. record.created, note.created) |
| `workspaceId` | string | The workspace ID |
| `objectId` | string | The object type ID (e.g. people, companies) |
| `recordId` | string | The record ID |
| `attributeId` | string | The ID of the attribute that was updated on the record |
***
### Attio Task Created [#attio-task-created]
Trigger workflow when a new task is created in Attio
#### Configuration [#configuration-17]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------- |
| `triggerCredentials` | string | Yes | Attio Account |
#### Output [#output-62]
| Parameter | Type | Description |
| ------------- | ------ | ----------------------------------------------------- |
| `eventType` | string | The type of event (e.g. record.created, note.created) |
| `workspaceId` | string | The workspace ID |
| `taskId` | string | The task ID |
***
### Attio Task Deleted [#attio-task-deleted]
Trigger workflow when a task is deleted in Attio
#### Configuration [#configuration-18]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------- |
| `triggerCredentials` | string | Yes | Attio Account |
#### Output [#output-63]
| Parameter | Type | Description |
| ------------- | ------ | ----------------------------------------------------- |
| `eventType` | string | The type of event (e.g. record.created, note.created) |
| `workspaceId` | string | The workspace ID |
| `taskId` | string | The task ID |
***
### Attio Task Updated [#attio-task-updated]
Trigger workflow when a task is updated in Attio
#### Configuration [#configuration-19]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------- |
| `triggerCredentials` | string | Yes | Attio Account |
#### Output [#output-64]
| Parameter | Type | Description |
| ------------- | ------ | ----------------------------------------------------- |
| `eventType` | string | The type of event (e.g. record.created, note.created) |
| `workspaceId` | string | The workspace ID |
| `taskId` | string | The task ID |
***
### Attio Webhook (All Events) [#attio-webhook-all-events]
Trigger workflow on any Attio webhook event
#### Configuration [#configuration-20]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------- |
| `triggerCredentials` | string | Yes | Attio Account |
#### Output [#output-65]
| Parameter | Type | Description |
| ---------------- | ------ | ----------------------------------------------------- |
| `eventType` | string | The type of event (e.g. record.created, note.created) |
| `id` | json | The event ID object containing resource identifiers |
| `parentObjectId` | string | The parent object type ID (if applicable) |
| `parentRecordId` | string | The parent record ID (if applicable) |
***
### Attio Workspace Member Created [#attio-workspace-member-created]
Trigger workflow when a new member is added to the Attio workspace
#### Configuration [#configuration-21]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------- |
| `triggerCredentials` | string | Yes | Attio Account |
#### Output [#output-66]
| Parameter | Type | Description |
| ------------------- | ------ | ----------------------------------------------------- |
| `eventType` | string | The type of event (e.g. record.created, note.created) |
| `workspaceId` | string | The workspace ID |
| `workspaceMemberId` | string | The workspace member ID |
---
# Azure DevOps (/integrations/azure_devops)
{/* MANUAL-CONTENT-START:intro */}
[Azure DevOps](https://azure.microsoft.com/en-us/products/devops) is Microsoft's end-to-end DevOps platform for planning, building, testing, and shipping software. It powers engineering at tens of thousands of enterprises across automotive, financial services, government, and any organization built on the Microsoft stack.
With the Azure DevOps integration in Sim, you can:
* **Inspect pipelines and runs**: List pipelines, fetch metadata, and walk through run history with status and result
* **Triage build failures**: Pull build timelines to see which stage, job, or task failed, then fetch the exact log for the failing step
* **Audit changes between builds**: Surface the work items that landed between any two builds — useful for release notes and regression hunts
* **Query work items with WIQL**: Run full WIQL queries and get hydrated work item fields back in a single call, not just IDs
* **Manage work item lifecycle**: Create, update, and read Issues, Tasks, and Epics with structured fields — title, description, priority, assignee, area path, iteration, tags, effort, and dates
* **Collaborate via comments**: Add internal or public comments to work items and read full comment history
* **React in real time**: Trigger workflows when builds fail or new work items are created via Azure DevOps service hooks
These capabilities let your Sim agents close the loop on the DevOps lifecycle — automatically triaging broken builds, drafting release notes between deployments, syncing work items across systems, and keeping engineering operations running while your team focuses on shipping.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Azure DevOps into your workflow. List and inspect pipelines and builds, query and manage work items, and add or read comments.
## Actions [#actions]
### Azure DevOps List Pipelines [#azure-devops-list-pipelines]
List all pipelines in an Azure DevOps project. Returns pipeline ID, name, folder, revision, and URL.
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------------- | ------ | -------- | ----------------------------------------- |
| `organization` | string | Yes | Azure DevOps organization name |
| `project` | string | Yes | Azure DevOps project name |
| `orderBy` | string | No | Field to sort results by (e.g. "name") |
| `top` | number | No | Maximum number of pipelines to return |
| `continuationToken` | string | No | Continuation token for paginating results |
#### Output [#output]
| Parameter | Type | Description |
| ------------- | ------ | ----------------------------------- |
| `content` | string | Human-readable summary of pipelines |
| `metadata` | object | Pipelines metadata |
| ↳ `count` | number | Total number of pipelines returned |
| ↳ `pipelines` | array | Array of pipeline objects |
| ↳ `id` | number | Pipeline ID |
| ↳ `name` | string | Pipeline name |
| ↳ `folder` | string | Folder path (e.g. "\\\\") |
| ↳ `revision` | number | Pipeline revision number |
| ↳ `url` | string | Pipeline API URL |
### Azure DevOps Get Pipeline [#azure-devops-get-pipeline]
Get details for a specific pipeline in an Azure DevOps project, including configuration and repository info.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------------------------------ |
| `organization` | string | Yes | Azure DevOps organization name |
| `project` | string | Yes | Azure DevOps project name |
| `pipelineId` | number | Yes | ID of the pipeline to retrieve |
| `pipelineVersion` | number | No | Specific revision of the pipeline to retrieve (defaults to latest) |
#### Output [#output-1]
| Parameter | Type | Description |
| ----------------- | ------ | -------------------------------------- |
| `content` | string | Human-readable summary of the pipeline |
| `metadata` | object | Pipeline detail metadata |
| ↳ `pipeline` | object | Full pipeline detail object |
| ↳ `id` | number | Pipeline ID |
| ↳ `name` | string | Pipeline name |
| ↳ `folder` | string | Folder path |
| ↳ `revision` | number | Pipeline revision number |
| ↳ `url` | string | Pipeline API URL |
| ↳ `configuration` | object | Pipeline configuration |
| ↳ `type` | string | Configuration type (e.g. "yaml") |
| ↳ `path` | string | YAML file path in the repository |
| ↳ `repository` | object | Source repository info |
| ↳ `id` | string | Repository ID |
| ↳ `type` | string | Repository type (e.g. "azureReposGit") |
| ↳ `links` | object | Hypermedia links |
| ↳ `self` | string | API self-link |
| ↳ `web` | string | Browser URL for the pipeline |
### Azure DevOps List Pipeline Runs [#azure-devops-list-pipeline-runs]
List runs for a specific pipeline in an Azure DevOps project. Returns run ID, name, state, result, and timestamps.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------- |
| `organization` | string | Yes | Azure DevOps organization name |
| `project` | string | Yes | Azure DevOps project name |
| `pipelineId` | number | Yes | ID of the pipeline whose runs to list |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------------- | ------ | ----------------------------------------------------------------- |
| `content` | string | Human-readable summary of pipeline runs |
| `metadata` | object | Pipeline runs metadata |
| ↳ `count` | number | Total number of runs returned |
| ↳ `runs` | array | Array of pipeline run objects |
| ↳ `id` | number | Run ID |
| ↳ `name` | string | Run name (e.g. "20210601.1") |
| ↳ `state` | string | Run state (e.g. "completed", "inProgress") |
| ↳ `result` | string | Run result (e.g. "succeeded", "failed") — absent if still running |
| ↳ `createdDate` | string | ISO 8601 creation timestamp |
| ↳ `finishedDate` | string | ISO 8601 finish timestamp — absent if still running |
| ↳ `url` | string | Run API URL |
| ↳ `webUrl` | string | Browser URL for the run |
### Azure DevOps Get Pipeline Run [#azure-devops-get-pipeline-run]
Get details for a specific pipeline run in an Azure DevOps project. Returns run state, result, timestamps, and the pipeline reference.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------ |
| `organization` | string | Yes | Azure DevOps organization name |
| `project` | string | Yes | Azure DevOps project name |
| `pipelineId` | number | Yes | ID of the pipeline |
| `runId` | number | Yes | ID of the run to retrieve |
#### Output [#output-3]
| Parameter | Type | Description |
| ---------------- | ------ | ----------------------------------------------------------------- |
| `content` | string | Human-readable summary of the pipeline run |
| `metadata` | object | Pipeline run metadata |
| ↳ `run` | object | Full pipeline run detail object |
| ↳ `id` | number | Run ID |
| ↳ `name` | string | Run name (e.g. "20210601.1") |
| ↳ `state` | string | Run state (e.g. "completed", "inProgress") |
| ↳ `result` | string | Run result (e.g. "succeeded", "failed") — absent if still running |
| ↳ `createdDate` | string | ISO 8601 creation timestamp |
| ↳ `finishedDate` | string | ISO 8601 finish timestamp — absent if still running |
| ↳ `url` | string | Run API URL |
| ↳ `webUrl` | string | Browser URL for the run |
| ↳ `pipeline` | object | Pipeline reference |
| ↳ `id` | number | Pipeline ID |
| ↳ `name` | string | Pipeline name |
| ↳ `folder` | string | Pipeline folder |
| ↳ `revision` | number | Pipeline revision number |
| ↳ `url` | string | Pipeline API URL |
### Azure DevOps List Builds [#azure-devops-list-builds]
List builds in an Azure DevOps project. Optionally filter by pipeline definition, status, result, or branch.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | -------------------------------------------------------------------------------------- |
| `organization` | string | Yes | Azure DevOps organization name |
| `project` | string | Yes | Azure DevOps project name |
| `definitionIds` | string | No | Comma-separated pipeline definition IDs to filter by (e.g. "1,2,3") |
| `top` | number | No | Maximum number of builds to return |
| `statusFilter` | string | No | Filter by build status: inProgress, completed, cancelling, postponed, notStarted, none |
| `resultFilter` | string | No | Filter by build result: succeeded, partiallySucceeded, failed, canceled |
| `branchName` | string | No | Filter by source branch name (e.g. "refs/heads/main") |
#### Output [#output-4]
| Parameter | Type | Description |
| ----------------- | ------ | ------------------------------------------------------------------- |
| `content` | string | Human-readable summary of builds |
| `metadata` | object | Builds metadata |
| ↳ `count` | number | Total number of builds returned |
| ↳ `builds` | array | Array of build objects |
| ↳ `id` | number | Build ID |
| ↳ `buildNumber` | string | Build number (e.g. "20210601.1") |
| ↳ `status` | string | Build status (e.g. "completed", "inProgress") |
| ↳ `result` | string | Build result (e.g. "succeeded", "failed") — absent if still running |
| ↳ `queueTime` | string | ISO 8601 queue timestamp |
| ↳ `startTime` | string | ISO 8601 start timestamp |
| ↳ `finishTime` | string | ISO 8601 finish timestamp — absent if still running |
| ↳ `sourceBranch` | string | Source branch (e.g. "refs/heads/main") |
| ↳ `sourceVersion` | string | Source commit SHA |
| ↳ `definition` | object | Pipeline definition reference |
| ↳ `id` | number | Definition ID |
| ↳ `name` | string | Definition name |
| ↳ `webUrl` | string | Browser URL for the build |
### Azure DevOps List Build Logs [#azure-devops-list-build-logs]
List all log entries for a specific build in Azure DevOps. Returns log IDs, types, and line counts — use the log ID with the Get Build Log tool to fetch actual log text.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------- |
| `organization` | string | Yes | Azure DevOps organization name |
| `project` | string | Yes | Azure DevOps project name |
| `buildId` | number | Yes | The build ID whose logs to list |
#### Output [#output-5]
| Parameter | Type | Description |
| ----------------- | ------ | ------------------------------------------------------ |
| `content` | string | Human-readable summary of build logs |
| `metadata` | object | Build logs metadata |
| ↳ `count` | number | Total number of log entries returned |
| ↳ `logs` | array | Array of log entry objects |
| ↳ `id` | number | Log entry ID — use with Get Build Log to fetch content |
| ↳ `type` | string | Log type (e.g. "Container", "Task", "Section") |
| ↳ `url` | string | API URL for the log entry |
| ↳ `lineCount` | number | Number of lines in the log |
| ↳ `createdOn` | string | ISO 8601 creation timestamp |
| ↳ `lastChangedOn` | string | ISO 8601 last-changed timestamp |
### Azure DevOps Get Build Log [#azure-devops-get-build-log]
Fetch the text content of a specific build log in Azure DevOps. Use List Build Logs first to get the log ID. Optionally retrieve only a line range with startLine/endLine.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------ |
| `organization` | string | Yes | Azure DevOps organization name |
| `project` | string | Yes | Azure DevOps project name |
| `buildId` | number | Yes | The build ID containing the log |
| `logId` | number | Yes | The log entry ID to fetch (from List Build Logs) |
| `startLine` | number | No | First line to return (1-based, inclusive) |
| `endLine` | number | No | Last line to return (1-based, inclusive) |
#### Output [#output-6]
| Parameter | Type | Description |
| ------------- | ------ | ---------------------------------------- |
| `content` | string | Raw log text |
| `metadata` | object | Log metadata |
| ↳ `lineCount` | number | Number of lines in the returned log text |
### Azure DevOps Get Build Timeline [#azure-devops-get-build-timeline]
Get the execution timeline for an Azure DevOps build — every stage, job, and task with its result and log ID. Use this to identify which steps failed before fetching their logs with Get Build Log.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------ |
| `organization` | string | Yes | Azure DevOps organization name |
| `project` | string | Yes | Azure DevOps project name |
| `buildId` | number | Yes | ID of the build whose timeline to retrieve |
#### Output [#output-7]
| Parameter | Type | Description |
| ----------------- | ------ | -------------------------------------------------------------------------------------------------------------- |
| `content` | string | Summary of the build timeline, highlighting failed steps |
| `metadata` | object | Build timeline metadata |
| ↳ `totalCount` | number | Total number of timeline records |
| ↳ `failedCount` | number | Number of failed records |
| ↳ `records` | array | All timeline records (stages, jobs, tasks) |
| ↳ `id` | string | Record GUID |
| ↳ `name` | string | Step name (e.g. "Run tests") |
| ↳ `type` | string | Stage \| Phase \| Job \| Task |
| ↳ `result` | string | succeeded \| failed \| skipped \| canceled \| null |
| ↳ `logId` | number | Log ID to pass to Get Build Log, or null |
| ↳ `errorCount` | number | Number of errors |
| ↳ `warningCount` | number | Number of warnings |
| ↳ `startTime` | string | ISO 8601 start timestamp |
| ↳ `finishTime` | string | ISO 8601 finish timestamp |
| ↳ `failedRecords` | array | Subset of records where result is failed, partiallySucceeded, or succeededWithIssues — use logId to fetch logs |
| ↳ `id` | string | Record GUID |
| ↳ `name` | string | Step name |
| ↳ `type` | string | Stage \| Phase \| Job \| Task |
| ↳ `result` | string | failed |
| ↳ `logId` | number | Log ID to pass to Get Build Log |
| ↳ `errorCount` | number | Number of errors |
| ↳ `warningCount` | number | Number of warnings |
| ↳ `startTime` | string | ISO 8601 start timestamp |
| ↳ `finishTime` | string | ISO 8601 finish timestamp |
### Azure DevOps Get Work Items Between Builds [#azure-devops-get-work-items-between-builds]
Get work item references associated with commits between two builds in Azure DevOps. Returns work item IDs and URLs — use Get Work Items Batch for full field details.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ----------------------------------- |
| `organization` | string | Yes | Azure DevOps organization name |
| `project` | string | Yes | Azure DevOps project name |
| `fromBuildId` | number | Yes | The older build ID (start of range) |
| `toBuildId` | number | Yes | The newer build ID (end of range) |
#### Output [#output-8]
| Parameter | Type | Description |
| ------------- | ------ | --------------------------------------------------- |
| `content` | string | Human-readable summary of work items between builds |
| `metadata` | object | Work items metadata |
| ↳ `count` | number | Total number of work item references returned |
| ↳ `workItems` | array | Array of work item references |
| ↳ `id` | string | Work item ID |
| ↳ `url` | string | API URL for the work item |
### Azure DevOps Query Work Items [#azure-devops-query-work-items]
Execute a WIQL query to search for work items in Azure DevOps and return full field details. Use TOP N in your query to limit results (Azure enforces a 200-item maximum per batch fetch).
#### Input [#input-9]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `organization` | string | Yes | Azure DevOps organization name |
| `project` | string | Yes | Azure DevOps project name |
| `wiqlQuery` | string | Yes | WIQL query string (e.g. "SELECT \[System.Id] FROM workitems WHERE \[System.State] = 'Doing' ORDER BY \[System.Id] ASC"). Use TOP N to limit results. |
#### Output [#output-9]
| Parameter | Type | Description |
| ---------------- | ------ | --------------------------------------------------------------------- |
| `content` | string | Human-readable summary of matching work items |
| `metadata` | object | Work items metadata |
| ↳ `count` | number | Number of work items returned (after hydration) |
| ↳ `totalMatched` | number | Total number of work items matched by the WIQL query before hydration |
| ↳ `workItems` | array | Array of work item details |
| ↳ `id` | number | Work item ID |
| ↳ `title` | string | Work item title |
| ↳ `state` | string | Current state for Basic process (e.g. To Do, Doing, Done) |
| ↳ `workItemType` | string | Work item type returned by Azure DevOps (e.g. Issue, Task, Epic) |
| ↳ `assignedTo` | string | Display name of assigned user, or null if unassigned |
| ↳ `areaPath` | string | Area path of the work item |
| ↳ `url` | string | API URL for the work item |
### Azure DevOps Get Work Item [#azure-devops-get-work-item]
Fetch full details of a single work item by ID from Azure DevOps, including title, state, type, assignee, and area path.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------ |
| `organization` | string | Yes | Azure DevOps organization name |
| `project` | string | Yes | Azure DevOps project name |
| `workItemId` | number | Yes | The work item ID to fetch |
#### Output [#output-10]
| Parameter | Type | Description |
| ---------------- | ------ | ---------------------------------------------------------------- |
| `content` | string | Human-readable summary of the work item |
| `metadata` | object | Work item metadata |
| ↳ `workItem` | object | Full work item details |
| ↳ `id` | number | Work item ID |
| ↳ `title` | string | Work item title |
| ↳ `state` | string | Current state for Basic process (e.g. To Do, Doing, Done) |
| ↳ `workItemType` | string | Work item type returned by Azure DevOps (e.g. Issue, Task, Epic) |
| ↳ `assignedTo` | string | Display name of assigned user, or null if unassigned |
| ↳ `areaPath` | string | Area path of the work item |
| ↳ `url` | string | API URL for the work item |
### Azure DevOps Get Work Items Batch [#azure-devops-get-work-items-batch]
Fetch full details for multiple work items by ID from Azure DevOps. Pass comma-separated IDs (e.g. "123,456,789"). Requests with more than 200 IDs are automatically split into chunks.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------- |
| `organization` | string | Yes | Azure DevOps organization name |
| `project` | string | Yes | Azure DevOps project name |
| `ids` | string | Yes | Comma-separated work item IDs to fetch (e.g. "123,456,789"). Lists longer than 200 IDs are chunked automatically. |
#### Output [#output-11]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------------------------------------------- |
| `content` | string | Human-readable summary of the fetched work items |
| `metadata` | object | Work items metadata |
| ↳ `count` | number | Number of work items returned |
| ↳ `totalRequested` | number | Total number of IDs requested (across all chunks) |
| ↳ `workItems` | array | Array of work item details |
| ↳ `id` | number | Work item ID |
| ↳ `title` | string | Work item title |
| ↳ `state` | string | Current state for Basic process (e.g. To Do, Doing, Done) |
| ↳ `workItemType` | string | Work item type returned by Azure DevOps (e.g. Issue, Task, Epic) |
| ↳ `assignedTo` | string | Display name of assigned user, or null if unassigned |
| ↳ `areaPath` | string | Area path of the work item |
| ↳ `url` | string | API URL for the work item |
### Azure DevOps Create Work Item [#azure-devops-create-work-item]
Create a new Basic-process work item (Issue, Task, or Epic) in Azure DevOps. Returns the created work item with its assigned ID.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `organization` | string | Yes | Azure DevOps organization name |
| `project` | string | Yes | Azure DevOps project name |
| `workItemType` | string | Yes | Basic-process work item type to create ("Issue", "Task", or "Epic"). Use Issue for bug or defect tracking. |
| `title` | string | Yes | Title of the new work item |
| `description` | string | No | HTML description of the work item (optional) |
| `assignedTo` | string | No | Email or display name of the user to assign the work item to (optional) |
| `priority` | number | No | Priority of the work item (1 = Critical, 2 = High, 3 = Medium, 4 = Low) |
| `effort` | number | No | Effort (Microsoft.VSTS.Scheduling.Effort). Basic process: Issue only. |
| `startDate` | string | No | Start date (Microsoft.VSTS.Scheduling.StartDate), ISO 8601. Basic process: Epic only. |
| `targetDate` | string | No | Target date (Microsoft.VSTS.Scheduling.TargetDate), ISO 8601. Basic process: Epic only. |
| `activity` | string | No | Activity (Microsoft.VSTS.Common.Activity). One of Deployment, Design, Development, Documentation, Requirements, Testing. Basic process: Task only. |
| `remainingWork` | number | No | Remaining work hours (Microsoft.VSTS.Scheduling.RemainingWork). Basic process: Task only. |
| `completedWork` | number | No | Completed work hours (Microsoft.VSTS.Scheduling.CompletedWork). Basic process: Task only. |
| `areaPath` | string | No | Area path for the work item, e.g. "MyProject\\\Team" (optional) |
| `iterationPath` | string | No | Iteration path for the work item, e.g. "MyProject\\\Sprint 1" (optional) |
| `tags` | string | No | Semicolon-separated tags, e.g. "issue; p1; auth" (optional) |
#### Output [#output-12]
| Parameter | Type | Description |
| ---------------- | ------ | ---------------------------------------------------------------- |
| `content` | string | Human-readable summary of the created work item |
| `metadata` | object | Created work item metadata |
| ↳ `workItem` | object | Full details of the created work item |
| ↳ `id` | number | Assigned work item ID |
| ↳ `title` | string | Work item title |
| ↳ `state` | string | Initial state for Basic process (e.g. To Do, Doing, Done) |
| ↳ `workItemType` | string | Work item type returned by Azure DevOps (e.g. Issue, Task, Epic) |
| ↳ `assignedTo` | string | Display name of assigned user, or null if unassigned |
| ↳ `areaPath` | string | Area path of the work item |
| ↳ `url` | string | API URL for the created work item |
### Azure DevOps Update Work Item [#azure-devops-update-work-item]
Update one or more fields on an existing work item in Azure DevOps. Provide only the fields you want to change.
#### Input [#input-13]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `organization` | string | Yes | Azure DevOps organization name |
| `project` | string | Yes | Azure DevOps project name |
| `workItemId` | number | Yes | ID of the work item to update |
| `title` | string | No | New title for the work item (optional) |
| `description` | string | No | New HTML description for the work item (optional) |
| `assignedTo` | string | No | Email or display name to reassign the work item to (optional) |
| `areaPath` | string | No | New area path for the work item (optional) |
| `priority` | number | No | Priority of the work item (1 = Critical, 2 = High, 3 = Medium, 4 = Low) (optional) |
| `state` | string | No | New state for Basic-process work items: "To Do", "Doing", or "Done" (optional) |
| `effort` | number | No | Effort (Microsoft.VSTS.Scheduling.Effort). Basic process: Issue only. |
| `startDate` | string | No | Start date (Microsoft.VSTS.Scheduling.StartDate), ISO 8601. Basic process: Epic only. |
| `targetDate` | string | No | Target date (Microsoft.VSTS.Scheduling.TargetDate), ISO 8601. Basic process: Epic only. |
| `activity` | string | No | Activity (Microsoft.VSTS.Common.Activity). One of Deployment, Design, Development, Documentation, Requirements, Testing. Basic process: Task only. |
| `remainingWork` | number | No | Remaining work hours (Microsoft.VSTS.Scheduling.RemainingWork). Basic process: Task only. |
| `completedWork` | number | No | Completed work hours (Microsoft.VSTS.Scheduling.CompletedWork). Basic process: Task only. |
| `tags` | string | No | Semicolon-separated tags to set on the work item (optional) |
#### Output [#output-13]
| Parameter | Type | Description |
| ---------------- | ------ | ---------------------------------------------------------------- |
| `content` | string | Human-readable summary of the updated work item |
| `metadata` | object | Updated work item metadata |
| ↳ `workItem` | object | Full details of the updated work item |
| ↳ `id` | number | Work item ID |
| ↳ `title` | string | Work item title |
| ↳ `state` | string | Current state after update |
| ↳ `workItemType` | string | Work item type returned by Azure DevOps (e.g. Issue, Task, Epic) |
| ↳ `assignedTo` | string | Display name of assigned user, or null if unassigned |
| ↳ `areaPath` | string | Area path of the work item |
| ↳ `url` | string | API URL for the work item |
### Azure DevOps Add Comment [#azure-devops-add-comment]
Add a comment to a work item in Azure DevOps.
#### Input [#input-14]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------- |
| `organization` | string | Yes | Azure DevOps organization name |
| `project` | string | Yes | Azure DevOps project name |
| `workItemId` | number | Yes | ID of the work item to comment on |
| `text` | string | Yes | Comment text (HTML supported, e.g. "\My comment\
") |
#### Output [#output-14]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------------------------------ |
| `content` | string | Human-readable confirmation of the added comment |
| `metadata` | object | Added comment metadata |
| ↳ `comment` | object | Full details of the created comment |
| ↳ `workItemId` | number | Work item the comment belongs to |
| ↳ `commentId` | number | Comment ID |
| ↳ `version` | number | Comment version |
| ↳ `text` | string | Comment text |
| ↳ `renderedText` | string | Rendered HTML comment text when available |
| ↳ `createdBy` | string | Display name of the comment author, or null |
| ↳ `createdDate` | string | ISO timestamp when comment was created |
| ↳ `modifiedBy` | string | Display name of the last modifier, or null |
| ↳ `modifiedDate` | string | ISO timestamp when comment was modified |
| ↳ `isDeleted` | boolean | Whether the comment is deleted |
| ↳ `url` | string | API URL for the comment |
### Azure DevOps Get Comments [#azure-devops-get-comments]
List comments for an Azure DevOps work item.
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------- |
| `organization` | string | Yes | Azure DevOps organization name |
| `project` | string | Yes | Azure DevOps project name |
| `workItemId` | number | Yes | ID of the work item whose comments should be listed |
| `top` | number | No | Maximum number of comments to return |
| `continuationToken` | string | No | Continuation token for paginating comments |
| `includeDeleted` | boolean | No | Whether deleted comments should be returned |
| `expand` | string | No | Additional comment data to include: none, reactions, renderedText, renderedTextOnly, all |
| `order` | string | No | Sort order for comments: asc or desc |
#### Output [#output-15]
| Parameter | Type | Description |
| --------------------- | ------- | -------------------------------------------- |
| `content` | string | Human-readable summary of work item comments |
| `metadata` | object | Comments metadata |
| ↳ `count` | number | Number of comments returned in this page |
| ↳ `totalCount` | number | Total number of comments on the work item |
| ↳ `continuationToken` | string | Continuation token for the next page |
| ↳ `nextPage` | string | API URL for the next page |
| ↳ `url` | string | API URL for this comments list |
| ↳ `comments` | array | Array of work item comments |
| ↳ `workItemId` | number | Work item ID |
| ↳ `commentId` | number | Comment ID |
| ↳ `version` | number | Comment version |
| ↳ `text` | string | Comment text |
| ↳ `renderedText` | string | Rendered HTML comment text when available |
| ↳ `createdBy` | string | Display name of the comment author |
| ↳ `createdDate` | string | ISO 8601 creation timestamp |
| ↳ `modifiedBy` | string | Display name of the last modifier |
| ↳ `modifiedDate` | string | ISO 8601 modified timestamp |
| ↳ `isDeleted` | boolean | Whether the comment is deleted |
| ↳ `url` | string | API URL for the comment |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
### Azure DevOps Build Failed [#azure-devops-build-failed]
Trigger workflow when an Azure DevOps build fails, is canceled, or partially succeeds
#### Output [#output-16]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------------------------------------------------------- |
| `buildId` | number | Build ID |
| `buildNumber` | string | Build number string (e.g. 20240101.1) |
| `result` | string | Build result: failed \| canceled \| partiallySucceeded |
| `pipelineId` | number | Pipeline definition ID |
| `pipelineName` | string | Pipeline definition name |
| `projectName` | string | Azure DevOps project name |
| `branch` | string | Source branch name (refs/heads/ prefix stripped) |
| `commitSha` | string | Source commit SHA |
| `triggeredBy` | string | Display name of the person who triggered the build |
| `triggeredByEmail` | string | Email/unique name of the person who triggered the build, or null if not set |
| `startTime` | string | Build start time (ISO 8601) |
| `finishTime` | string | Build finish time (ISO 8601) |
| `buildUrl` | string | API URL for the build resource |
***
### Azure DevOps Webhook (All Service Hook Events) [#azure-devops-webhook-all-service-hook-events]
Trigger on whichever service hook event types you configure in Azure DevOps. Sim does not filter deliveries for this trigger.
#### Output [#output-17]
| Parameter | Type | Description |
| -------------------- | ------ | --------------------------------------------------------------- |
| `eventType` | string | Service hook event type (e.g. build.complete, workitem.created) |
| `notificationId` | number | Notification ID |
| `subscriptionId` | string | Service hook subscription ID |
| `publisherId` | string | Publisher ID (e.g. tfs) |
| `createdDate` | string | Event creation time (ISO 8601) |
| `resource` | json | Event resource payload |
| `resourceContainers` | json | Resource container references (project, collection, etc.) |
| `message` | json | Short message object |
| `detailedMessage` | json | Detailed message object |
***
### Azure DevOps Work Item Created [#azure-devops-work-item-created]
Trigger workflow when a work item is created in Azure DevOps
#### Output [#output-18]
| Parameter | Type | Description |
| --------------- | ------ | ----------------------------------------------------------- |
| `workItemId` | number | Work item ID |
| `workItemType` | string | Work item type for Basic process (e.g. Issue, Task, Epic) |
| `title` | string | Work item title |
| `state` | string | Work item state for Basic process (e.g. To Do, Doing, Done) |
| `createdBy` | string | Display name of the creator, or null if not set |
| `assignedTo` | string | Assignee display name, or null if unassigned |
| `priority` | number | Priority (1–4), or 0 if not set |
| `areaPath` | string | Area path |
| `iterationPath` | string | Iteration path |
| `description` | string | Work item description (HTML), or null if not set |
| `projectName` | string | Azure DevOps project name |
| `workItemUrl` | string | API URL for the work item resource |
---
# Box Service Accounts (/integrations/box-service-account)
Box Platform apps with **Server Authentication (with Client Credentials Grant)** let your workflows authenticate to Box as the app's own **Service Account** instead of through a person's OAuth login. You create the app once, a Box admin authorizes it for the enterprise, and Sim mints short-lived access tokens from the app's credentials on demand — no user consent to expire, and access that's controlled entirely by which folders the Service Account is invited into.
This is the recommended way to use Box in production workflows: nothing depends on a user staying logged in, the app's scopes are explicit, and the Service Account's reach is auditable folder by folder.
## Prerequisites [#prerequisites]
Anyone with Developer Console access can create the app, but a Box **admin or co-admin** must authorize it in the Admin Console before it can mint tokens. Free developer accounts are authorized automatically.
## Setting Up the Platform App [#setting-up-the-platform-app]
### 1. Create the App [#1-create-the-app]
Go to the [Box Developer Console](https://app.box.com/developers/console), open **My Apps**, click **Create Platform App**, and choose **Server Authentication (with Client Credentials Grant)**
{/* TODO(screenshot): Box Developer Console Create Platform App dialog with Server Authentication (with Client Credentials Grant) selected */}
On the **Configuration** tab, set the **App Access Level**. **App Access Only** (the default) is sufficient — choose **App + Enterprise Access** only if the Service Account should also reach existing managed users' content via admin APIs
Under **Application Scopes**, check **Read all files and folders stored in Box** and **Write all files and folders stored in Box**. If you'll use Sim's Box Sign operations, also check **Manage signature requests**
{/* TODO(screenshot): Application Scopes section with read, write, and signature scopes checked */}
Copy the **Client ID** and **Client secret** from **Configuration** → **OAuth 2.0 Credentials** (revealing the secret may prompt for two-factor verification)
{/* TODO(screenshot): OAuth 2.0 Credentials panel showing the Client ID and the client secret reveal */}
Copy the **Enterprise ID** — a numeric value. In the Developer Console, click your account icon in the top right and choose **Copy Enterprise ID**; a Box admin can also find it in **Admin Console** → **Account & Billing** → **Account Information**
### 2. Authorize the App in the Admin Console [#2-authorize-the-app-in-the-admin-console]
Token requests fail with `unauthorized_client` ("This app is not authorized by the enterprise admin") until a Box admin authorizes the app:
A Box admin or co-admin opens **Admin Console** → **Apps** → **Platform Apps Manager** (in some tenants this appears as **Platform** → **Platform Apps**)
Click **Add App** and enter the app's **Client ID**
{/* TODO(screenshot): Platform Apps Manager Add App dialog with the Client ID entered */}
Alternatively, the developer can click **Review and Submit** on the app's **Authorization** tab in the Developer Console to send the request to the admin.
**Authorization is a snapshot.** If you later change the app's scopes or access level — for example, adding the signature scope — the admin must **re-authorize** the app in the same Platform Apps Manager section before the change takes effect. Until then, token minting keeps succeeding but the new scopes don't apply, which surfaces as persistent `403` errors on tools despite correct-looking configuration.
### 3. Give the Service Account Access to Folders [#3-give-the-service-account-access-to-folders]
The Service Account is a brand-new Box user — its email looks like `AutomationUser_AppServiceID_RandomString@boxdevedition.com` and is shown on the app's **General Settings** tab. Its folder tree starts **empty**: a fully valid credential sees zero items and gets `404`s on real files and folders until you grant it access.
In Box, invite the Service Account's `@boxdevedition.com` email as a **collaborator** on each folder your workflows should work with — use the **Editor** role for read/write access
{/* TODO(screenshot): Box folder collaboration dialog inviting the AutomationUser email as Editor */}
Verify by running Sim's Box **List Folder Items** on folder ID `0` — the collaborated folders should appear
Community reports indicate the Service Account can't be collaborated into a user's root folder itself — invite it into individual folders instead.
## Adding the Service Account to Sim [#adding-the-service-account-to-sim]
Open **Integrations** from your workspace sidebar
Search for "Box" and open it, then click **Add to Sim** and choose **Add service account**
{/* TODO(screenshot): Box integration page with the Add service account connect option */}
In the **Add Box service account** dialog, paste the **Client ID**, **Client secret**, and **Enterprise ID** (numeric), and optionally set a display name and description
{/* TODO(screenshot): Add Box service account dialog with all three fields filled in */}
Click **Add service account**. Sim verifies the credentials by minting a real access token from Box — if it fails, the error tells you whether Box rejected the credentials or couldn't be reached. A rejection usually means bad credentials, an app the admin hasn't authorized yet, or values that don't all belong to the same app and enterprise.
## Using the Service Account in Workflows [#using-the-service-account-in-workflows]
Add a Box block to your workflow. In the credential dropdown, your Box service account appears alongside any OAuth credentials. Select it and configure the block as you normally would.
{/* TODO(screenshot): Box block in a workflow with the Box service account selected as the credential */}
The block calls `api.box.com` with a freshly minted access token — the same requests as the OAuth flow, so every Box operation works, subject to the app's scopes and the folders the Service Account can see.
Sim's Box block includes Box Sign operations. These need the **Manage signature requests** scope on the app *and* Box Sign enabled on your enterprise's plan — without either, signature operations fail while file and folder operations keep working.
## Token Behavior [#token-behavior]
Access tokens minted from the app are short-lived (typically one hour) and there is no refresh token — Sim simply mints a new token when one is needed. The stored Client ID, secret, and Enterprise ID stay valid until you rotate the secret in the Developer Console or the admin removes the app's authorization. If you rotate the secret, update the credential in Sim right away — reconnecting asks you to re-enter all three values.
---
# Box (/integrations/box)
{/* MANUAL-CONTENT-START:intro */}
[Box](https://www.box.com/) is a leading cloud content management and file sharing platform trusted by enterprises worldwide to securely store, manage, and collaborate on files. Box provides robust APIs for automating file operations and integrating with business workflows, including [Box Sign](https://www.box.com/esignature) for native e-signatures.
With the Box integration in Sim, you can:
* **Upload files**: Upload documents, images, and other files to any Box folder
* **Download files**: Retrieve file content from Box for processing in your workflows
* **Get file info**: Access detailed metadata including size, owner, timestamps, tags, and shared links
* **List folder contents**: Browse files and folders with sorting and pagination support
* **Create folders**: Organize your Box storage by creating new folders programmatically
* **Delete files and folders**: Remove content with optional recursive deletion for folders
* **Copy files**: Duplicate files across folders with optional renaming
* **Search**: Find files and folders by name, content, extension, or location
* **Update file metadata**: Rename, move, add descriptions, or tag files
* **Create sign requests**: Send documents for e-signature with one or more signers
* **Track signing status**: Monitor the progress of sign requests
* **List sign requests**: View all sign requests with marker-based pagination
* **Cancel sign requests**: Cancel pending sign requests that are no longer needed
* **Resend sign reminders**: Send reminder notifications to signers who haven't completed signing
These capabilities allow your Sim agents to automate Box operations directly within your workflows — from organizing documents and distributing content to processing uploaded files, managing e-signature workflows for offer letters and contracts, and maintaining structured cloud storage as part of your business processes.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Box into your workflow to manage files, folders, and e-signatures. Upload and download files, search content, create folders, send documents for e-signature, track signing status, and more.
## Actions [#actions]
### Box Upload File [#box-upload-file]
Upload a file to a Box folder
#### Input [#input]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------- |
| `parentFolderId` | string | Yes | The ID of the folder to upload the file to (use "0" for root) |
| `file` | file | No | The file to upload (UserFile object) |
| `fileContent` | string | No | Legacy: base64 encoded file content |
| `fileName` | string | No | Optional filename override |
#### Output [#output]
| Parameter | Type | Description |
| ------------ | ------ | ------------------------- |
| `id` | string | File ID |
| `name` | string | File name |
| `size` | number | File size in bytes |
| `sha1` | string | SHA1 hash of file content |
| `createdAt` | string | Creation timestamp |
| `modifiedAt` | string | Last modified timestamp |
| `parentId` | string | Parent folder ID |
| `parentName` | string | Parent folder name |
### Box Download File [#box-download-file]
Download a file from Box
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------ |
| `fileId` | string | Yes | The ID of the file to download |
#### Output [#output-1]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------------------- |
| `file` | file | Downloaded file stored in execution files |
| `content` | string | Base64 encoded file content |
### Box Get File Info [#box-get-file-info]
Get detailed information about a file in Box
#### Input [#input-2]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------- |
| `fileId` | string | Yes | The ID of the file to get information about |
#### Output [#output-2]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------- |
| `id` | string | File ID |
| `name` | string | File name |
| `description` | string | File description |
| `size` | number | File size in bytes |
| `sha1` | string | SHA1 hash of file content |
| `createdAt` | string | Creation timestamp |
| `modifiedAt` | string | Last modified timestamp |
| `createdBy` | object | User who created the file |
| `modifiedBy` | object | User who last modified the file |
| `ownedBy` | object | User who owns the file |
| `parentId` | string | Parent folder ID |
| `parentName` | string | Parent folder name |
| `sharedLink` | json | Shared link details |
| `tags` | array | File tags |
| `commentCount` | number | Number of comments |
### Box List Folder Items [#box-list-folder-items]
List files and folders in a Box folder
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------- |
| `folderId` | string | Yes | The ID of the folder to list items from (use "0" for root) |
| `limit` | number | No | Maximum number of items to return per page |
| `offset` | number | No | The offset for pagination |
| `sort` | string | No | Sort field: id, name, date, or size |
| `direction` | string | No | Sort direction: ASC or DESC |
#### Output [#output-3]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------- |
| `entries` | array | List of items in the folder |
| ↳ `type` | string | Item type (file, folder, web\_link) |
| ↳ `id` | string | Item ID |
| ↳ `name` | string | Item name |
| ↳ `size` | number | Item size in bytes |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `modifiedAt` | string | Last modified timestamp |
| `totalCount` | number | Total number of items in the folder |
| `offset` | number | Current pagination offset |
| `limit` | number | Current pagination limit |
### Box Create Folder [#box-create-folder]
Create a new folder in Box
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ---------------------------------------------- |
| `name` | string | Yes | Name for the new folder |
| `parentFolderId` | string | Yes | The ID of the parent folder (use "0" for root) |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------ | ------ | ----------------------- |
| `id` | string | Folder ID |
| `name` | string | Folder name |
| `createdAt` | string | Creation timestamp |
| `modifiedAt` | string | Last modified timestamp |
| `parentId` | string | Parent folder ID |
| `parentName` | string | Parent folder name |
### Box Delete File [#box-delete-file]
Delete a file from Box
#### Input [#input-5]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------- |
| `fileId` | string | Yes | The ID of the file to delete |
#### Output [#output-5]
| Parameter | Type | Description |
| --------- | ------- | ----------------------------------------- |
| `deleted` | boolean | Whether the file was successfully deleted |
| `message` | string | Success confirmation message |
### Box Delete Folder [#box-delete-folder]
Delete a folder from Box
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ----------- | ------- | -------- | ---------------------------------------------- |
| `folderId` | string | Yes | The ID of the folder to delete |
| `recursive` | boolean | No | Delete folder and all its contents recursively |
#### Output [#output-6]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------------- |
| `deleted` | boolean | Whether the folder was successfully deleted |
| `message` | string | Success confirmation message |
### Box Copy File [#box-copy-file]
Copy a file to another folder in Box
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------- |
| `fileId` | string | Yes | The ID of the file to copy |
| `parentFolderId` | string | Yes | The ID of the destination folder |
| `name` | string | No | Optional new name for the copied file |
#### Output [#output-7]
| Parameter | Type | Description |
| ------------ | ------ | ------------------------- |
| `id` | string | File ID |
| `name` | string | File name |
| `size` | number | File size in bytes |
| `sha1` | string | SHA1 hash of file content |
| `createdAt` | string | Creation timestamp |
| `modifiedAt` | string | Last modified timestamp |
| `parentId` | string | Parent folder ID |
| `parentName` | string | Parent folder name |
### Box Search [#box-search]
Search for files and folders in Box
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | --------------------------------------------------------------- |
| `query` | string | Yes | The search query string |
| `limit` | number | No | Maximum number of results to return |
| `offset` | number | No | The offset for pagination |
| `ancestorFolderId` | string | No | Restrict search to a specific folder and its subfolders |
| `fileExtensions` | string | No | Comma-separated file extensions to filter by (e.g., pdf,docx) |
| `type` | string | No | Restrict to a specific content type: file, folder, or web\_link |
#### Output [#output-8]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------- |
| `results` | array | Search results |
| ↳ `type` | string | Item type (file, folder, web\_link) |
| ↳ `id` | string | Item ID |
| ↳ `name` | string | Item name |
| ↳ `size` | number | Item size in bytes |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `modifiedAt` | string | Last modified timestamp |
| ↳ `parentId` | string | Parent folder ID |
| ↳ `parentName` | string | Parent folder name |
| `totalCount` | number | Total number of matching results |
### Box Update File [#box-update-file]
Update file info in Box (rename, move, change description, add tags)
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------- |
| `fileId` | string | Yes | The ID of the file to update |
| `name` | string | No | New name for the file |
| `description` | string | No | New description for the file (max 256 characters) |
| `parentFolderId` | string | No | Move the file to a different folder by specifying the folder ID |
| `tags` | string | No | Comma-separated tags to set on the file |
#### Output [#output-9]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------- |
| `id` | string | File ID |
| `name` | string | File name |
| `description` | string | File description |
| `size` | number | File size in bytes |
| `sha1` | string | SHA1 hash of file content |
| `createdAt` | string | Creation timestamp |
| `modifiedAt` | string | Last modified timestamp |
| `createdBy` | object | User who created the file |
| `modifiedBy` | object | User who last modified the file |
| `ownedBy` | object | User who owns the file |
| `parentId` | string | Parent folder ID |
| `parentName` | string | Parent folder name |
| `sharedLink` | json | Shared link details |
| `tags` | array | File tags |
| `commentCount` | number | Number of comments |
### Box Sign Create Request [#box-sign-create-request]
Create a new Box Sign request to send documents for e-signature
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ----------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------ |
| `sourceFileIds` | string | Yes | Comma-separated Box file IDs to send for signing |
| `signerEmail` | string | Yes | Primary signer email address |
| `signerRole` | string | No | Primary signer role: signer, approver, or final\_copy\_reader (default: signer) |
| `additionalSigners` | string | No | JSON array of additional signers, e.g. \[\{"email":"[user@example.com](mailto:user@example.com)","role":"signer"}] |
| `parentFolderId` | string | No | Box folder ID where signed documents will be stored (default: user root) |
| `emailSubject` | string | No | Custom subject line for the signing email |
| `emailMessage` | string | No | Custom message in the signing email body |
| `name` | string | No | Name for the sign request |
| `daysValid` | number | No | Number of days before the request expires (0-730) |
| `areRemindersEnabled` | boolean | No | Whether to send automatic signing reminders |
| `areTextSignaturesEnabled` | boolean | No | Whether to allow typed (text) signatures |
| `signatureColor` | string | No | Signature color: blue, black, or red |
| `redirectUrl` | string | No | URL to redirect signers to after signing |
| `declinedRedirectUrl` | string | No | URL to redirect signers to after declining |
| `isDocumentPreparationNeeded` | boolean | No | Whether document preparation is needed before sending |
| `externalId` | string | No | External system reference ID |
#### Output [#output-10]
| Parameter | Type | Description |
| -------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id` | string | Sign request ID |
| `status` | string | Request status (converting, created, sent, viewed, signed, cancelled, declined, expired, error\_converting, error\_sending, finalizing, error\_finalizing) |
| `name` | string | Sign request name |
| `shortId` | string | Human-readable short ID |
| `signers` | array | List of signers |
| `sourceFiles` | array | Source files for signing |
| `emailSubject` | string | Custom email subject line |
| `emailMessage` | string | Custom email message body |
| `daysValid` | number | Number of days the request is valid |
| `createdAt` | string | Creation timestamp |
| `autoExpireAt` | string | Auto-expiration timestamp |
| `prepareUrl` | string | URL for document preparation (if preparation is needed) |
| `senderEmail` | string | Email of the sender |
### Box Sign Get Request [#box-sign-get-request]
Get the details and status of a Box Sign request
#### Input [#input-11]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | -------------------------------------- |
| `signRequestId` | string | Yes | The ID of the sign request to retrieve |
#### Output [#output-11]
| Parameter | Type | Description |
| -------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id` | string | Sign request ID |
| `status` | string | Request status (converting, created, sent, viewed, signed, cancelled, declined, expired, error\_converting, error\_sending, finalizing, error\_finalizing) |
| `name` | string | Sign request name |
| `shortId` | string | Human-readable short ID |
| `signers` | array | List of signers |
| `sourceFiles` | array | Source files for signing |
| `emailSubject` | string | Custom email subject line |
| `emailMessage` | string | Custom email message body |
| `daysValid` | number | Number of days the request is valid |
| `createdAt` | string | Creation timestamp |
| `autoExpireAt` | string | Auto-expiration timestamp |
| `prepareUrl` | string | URL for document preparation (if preparation is needed) |
| `senderEmail` | string | Email of the sender |
### Box Sign List Requests [#box-sign-list-requests]
List all Box Sign requests
#### Input [#input-12]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------- |
| `limit` | number | No | Maximum number of sign requests to return (max 1000) |
| `marker` | string | No | Pagination marker from a previous response |
#### Output [#output-12]
| Parameter | Type | Description |
| ---------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `signRequests` | array | List of sign requests |
| ↳ `id` | string | Sign request ID |
| ↳ `status` | string | Request status (converting, created, sent, viewed, signed, cancelled, declined, expired, error\_converting, error\_sending, finalizing, error\_finalizing) |
| ↳ `name` | string | Sign request name |
| ↳ `shortId` | string | Human-readable short ID |
| ↳ `signers` | array | List of signers |
| ↳ `sourceFiles` | array | Source files for signing |
| ↳ `emailSubject` | string | Custom email subject line |
| ↳ `emailMessage` | string | Custom email message body |
| ↳ `daysValid` | number | Number of days the request is valid |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `autoExpireAt` | string | Auto-expiration timestamp |
| ↳ `prepareUrl` | string | URL for document preparation (if preparation is needed) |
| ↳ `senderEmail` | string | Email of the sender |
| `count` | number | Number of sign requests returned in this page |
| `nextMarker` | string | Marker for next page of results |
### Box Sign Cancel Request [#box-sign-cancel-request]
Cancel a pending Box Sign request
#### Input [#input-13]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------ |
| `signRequestId` | string | Yes | The ID of the sign request to cancel |
#### Output [#output-13]
| Parameter | Type | Description |
| -------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id` | string | Sign request ID |
| `status` | string | Request status (converting, created, sent, viewed, signed, cancelled, declined, expired, error\_converting, error\_sending, finalizing, error\_finalizing) |
| `name` | string | Sign request name |
| `shortId` | string | Human-readable short ID |
| `signers` | array | List of signers |
| `sourceFiles` | array | Source files for signing |
| `emailSubject` | string | Custom email subject line |
| `emailMessage` | string | Custom email message body |
| `daysValid` | number | Number of days the request is valid |
| `createdAt` | string | Creation timestamp |
| `autoExpireAt` | string | Auto-expiration timestamp |
| `prepareUrl` | string | URL for document preparation (if preparation is needed) |
| `senderEmail` | string | Email of the sender |
### Box Sign Resend Request [#box-sign-resend-request]
Resend a Box Sign request to signers who have not yet signed
#### Input [#input-14]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------ |
| `signRequestId` | string | Yes | The ID of the sign request to resend |
#### Output [#output-14]
| Parameter | Type | Description |
| --------- | ------ | ---------------------------- |
| `message` | string | Success confirmation message |
---
# Brandfetch (/integrations/brandfetch)
{/* MANUAL-CONTENT-START:intro */}
[Brandfetch](https://brandfetch.com/) is a brand data API that provides logos, colors, fonts, and firmographic information for companies, looked up by domain, stock ticker, ISIN, or crypto symbol.
With Brandfetch, you can:
* **Retrieve brand assets**: Pull logos, icons, and symbols in multiple formats and themes for a given brand
* **Get brand style data**: Access brand colors and fonts, including type, theme, and origin
* **Look up company info**: Retrieve firmographic data such as employees, location, and industries, along with a data quality score
* **Search for brands**: Find brands by name and get back their domains and icons
In Sim, the Brandfetch integration allows your agents to look up a brand's logos, colors, fonts, links, and company data by domain, ticker, ISIN, or crypto symbol, or search for a brand by name to find its domain and icon. This lets agents automate tasks like enriching company records with brand assets, verifying brand identity details, or sourcing logos and color palettes for design and reporting workflows.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Brandfetch into your workflow. Retrieve brand logos, colors, fonts, and company data by domain, ticker, or name search.
## Actions [#actions]
### Brandfetch Get Brand [#brandfetch-get-brand]
Retrieve brand assets including logos, colors, fonts, and company info by domain, ticker, ISIN, or crypto symbol
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brandfetch API key |
| `identifier` | string | Yes | Brand identifier: domain (nike.com), stock ticker (NKE), ISIN (US6541061031), or crypto symbol (BTC) |
#### Output [#output]
| Parameter | Type | Description |
| ----------------- | ------- | ----------------------------------------------------------------------- |
| `id` | string | Unique brand identifier |
| `name` | string | Brand name |
| `domain` | string | Brand domain |
| `claimed` | boolean | Whether the brand profile is claimed |
| `description` | string | Short brand description |
| `longDescription` | string | Detailed brand description |
| `links` | array | Social media and website links |
| ↳ `name` | string | Link name (e.g., twitter, linkedin) |
| ↳ `url` | string | Link URL |
| `logos` | array | Brand logos with formats and themes |
| ↳ `type` | string | Logo type (logo, icon, symbol, other) |
| ↳ `theme` | string | Logo theme (light, dark) |
| ↳ `formats` | array | Available formats with src URL, format, width, and height |
| `colors` | array | Brand colors with hex values and types |
| ↳ `hex` | string | Hex color code |
| ↳ `type` | string | Color type (accent, dark, light, brand) |
| ↳ `brightness` | number | Brightness value |
| `fonts` | array | Brand fonts with names and types |
| ↳ `name` | string | Font name |
| ↳ `type` | string | Font type (title, body) |
| ↳ `origin` | string | Font origin (google, custom, system) |
| `company` | json | Company firmographic data including employees, location, and industries |
| `qualityScore` | number | Data quality score from 0 to 1 |
| `isNsfw` | boolean | Whether the brand contains adult content |
### Brandfetch Search [#brandfetch-search]
Search for brands by name and find their domains and logos
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------------- |
| `apiKey` | string | Yes | Brandfetch API key |
| `name` | string | Yes | Company or brand name to search for |
#### Output [#output-1]
| Parameter | Type | Description |
| ----------- | ------- | ------------------------------------ |
| `results` | array | List of matching brands |
| ↳ `brandId` | string | Unique brand identifier |
| ↳ `name` | string | Brand name |
| ↳ `domain` | string | Brand domain |
| ↳ `claimed` | boolean | Whether the brand profile is claimed |
| ↳ `icon` | string | Brand icon URL |
---
# Brex (/integrations/brex)
{/* MANUAL-CONTENT-START:intro */}
[Brex](https://www.brex.com/) is the AI-powered spend platform that gives companies corporate cards, expense management, banking, and bill pay in one place. Finance teams use Brex to control spend with budgets and spend limits, automate expense review, and keep every transaction reconciled with receipts and memos.
With the Brex integration in Sim, your agents can work directly with your company's spend data:
* **Expenses**: List and filter expenses by status, owner, or purchase date, fetch full expense details (merchant, amounts, receipts), and update expense memos.
* **Receipts**: Upload a receipt file straight onto a specific card expense, or let Brex automatically match an uploaded receipt to the right expense.
* **Transactions and accounts**: Pull settled card transactions, cash account transactions, account balances, and finalized statements for reporting and reconciliation.
* **Budgets and spend limits**: Read budgets and spend limits — including current period balances — to power utilization reports and proactive alerts.
* **Team**: Look up users, departments, locations, titles, and cards to enrich spend data with organizational context.
* **Payments**: Track vendors and money transfers to monitor payment status end to end.
Authentication uses a Brex user token, which you can generate from **Developer → Settings** in your Brex dashboard. The integration is intentionally read-focused: it never moves money, issues cards, or exposes card numbers.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrates Brex into the workflow. List and update expenses, upload and match receipts, view card and cash transactions, accounts, budgets, spend limits, vendors, transfers, and team data.
## Actions [#actions]
### Brex List Expenses [#brex-list-expenses]
List expenses in the Brex account with optional filters for user, status, payment status, and purchase date range
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `userIds` | string | No | Comma-separated user IDs to filter expenses by owner |
| `statuses` | string | No | Comma-separated expense statuses to filter by: DRAFT, SUBMITTED, APPROVED, OUT\_OF\_POLICY, VOID, CANCELED, SPLIT, SETTLED |
| `paymentStatuses` | string | No | Comma-separated payment statuses to filter by: NOT\_STARTED, PROCESSING, CANCELED, DECLINED, CLEARED, REFUNDING, REFUNDED, CASH\_ADVANCE, CREDITED, AWAITING\_PAYMENT, SCHEDULED |
| `purchasedAtStart` | string | No | Only include expenses purchased at or after this ISO 8601 timestamp |
| `purchasedAtEnd` | string | No | Only include expenses purchased at or before this ISO 8601 timestamp |
| `cursor` | string | No | Pagination cursor from a previous response |
| `limit` | string | No | Number of expenses to return (max 100) |
#### Output [#output]
| Parameter | Type | Description |
| -------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `items` | array | Expenses matching the filters |
| ↳ `id` | string | Unique expense ID |
| ↳ `memo` | string | Memo on the expense |
| ↳ `status` | string | Expense status (DRAFT, SUBMITTED, APPROVED, OUT\_OF\_POLICY, VOID, CANCELED, SPLIT, SETTLED) |
| ↳ `payment_status` | string | Payment status (NOT\_STARTED, PROCESSING, CANCELED, DECLINED, CLEARED, REFUNDING, REFUNDED, CASH\_ADVANCE, CREDITED, AWAITING\_PAYMENT, SCHEDULED) |
| ↳ `expense_type` | string | Expense type (CARD, BILLPAY, REIMBURSEMENT, CLAWBACK, UNSET) |
| ↳ `category` | string | Expense category (e.g., RESTAURANTS, RECURRING\_SOFTWARE\_AND\_SAAS, AIRLINE\_EXPENSES) |
| ↳ `merchant` | json | Merchant details |
| ↳ `raw_descriptor` | string | Raw merchant descriptor |
| ↳ `mcc` | string | Merchant category code |
| ↳ `country` | string | Merchant country |
| ↳ `user` | json | User who made the expense |
| ↳ `id` | string | User ID |
| ↳ `first_name` | string | First name |
| ↳ `last_name` | string | Last name |
| ↳ `budget` | json | Budget the expense belongs to |
| ↳ `id` | string | Budget ID |
| ↳ `name` | string | Budget name |
| ↳ `department` | json | Department of the expense owner |
| ↳ `id` | string | Department ID |
| ↳ `name` | string | Department name |
| ↳ `location` | json | Location of the expense owner |
| ↳ `id` | string | Location ID |
| ↳ `name` | string | Location name |
| ↳ `original_amount` | json | Original transaction amount |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| ↳ `billing_amount` | json | Amount billed to the account |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| ↳ `purchased_amount` | json | Amount at the time of purchase |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| ↳ `receipts` | array | Receipts attached to the expense |
| ↳ `id` | string | Receipt ID |
| ↳ `download_uris` | array | Pre-signed receipt download URLs |
| ↳ `purchased_at` | string | Purchase timestamp (ISO 8601) |
| ↳ `updated_at` | string | Last update timestamp (ISO 8601) |
| ↳ `dashboard_url` | string | Link to the expense in the Brex dashboard |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Brex Get Expense [#brex-get-expense]
Get a single Brex expense by its ID, including merchant, user, and receipt details
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `expenseId` | string | Yes | ID of the expense to fetch |
#### Output [#output-1]
| Parameter | Type | Description |
| --------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id` | string | Unique expense ID |
| `memo` | string | Memo on the expense |
| `status` | string | Expense status (DRAFT, SUBMITTED, APPROVED, OUT\_OF\_POLICY, VOID, CANCELED, SPLIT, SETTLED) |
| `paymentStatus` | string | Payment status (NOT\_STARTED, PROCESSING, CANCELED, DECLINED, CLEARED, REFUNDING, REFUNDED, CASH\_ADVANCE, CREDITED, AWAITING\_PAYMENT, SCHEDULED) |
| `expenseType` | string | Expense type (CARD, BILLPAY, REIMBURSEMENT, CLAWBACK, UNSET) |
| `category` | string | Expense category (e.g., RESTAURANTS, RECURRING\_SOFTWARE\_AND\_SAAS, AIRLINE\_EXPENSES) |
| `merchantId` | string | Merchant ID |
| `merchant` | json | Merchant details (raw descriptor, MCC, country) |
| ↳ `raw_descriptor` | string | Raw merchant descriptor |
| ↳ `mcc` | string | Merchant category code |
| ↳ `country` | string | Merchant country |
| `budgetId` | string | Budget ID |
| `budget` | json | Budget the expense belongs to |
| ↳ `id` | string | Budget ID |
| ↳ `name` | string | Budget name |
| `departmentId` | string | Department ID |
| `department` | json | Department of the expense owner |
| ↳ `id` | string | Department ID |
| ↳ `name` | string | Department name |
| `locationId` | string | Location ID |
| `location` | json | Location of the expense owner |
| ↳ `id` | string | Location ID |
| ↳ `name` | string | Location name |
| `userId` | string | ID of the user who made the expense |
| `user` | json | User who made the expense |
| ↳ `id` | string | User ID |
| ↳ `first_name` | string | First name |
| ↳ `last_name` | string | Last name |
| `originalAmount` | json | Original transaction amount |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| `billingAmount` | json | Amount billed to the account |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| `purchasedAmount` | json | Amount at the time of purchase |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| `usdEquivalentAmount` | json | USD equivalent amount |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| `purchasedAt` | string | Purchase timestamp (ISO 8601) |
| `updatedAt` | string | Last update timestamp (ISO 8601) |
| `paymentPostedAt` | string | Timestamp the payment was posted (ISO 8601) |
| `receipts` | array | Receipts attached to the expense |
| ↳ `id` | string | Receipt ID |
| ↳ `download_uris` | array | Pre-signed receipt download URLs |
| `dashboardUrl` | string | Link to the expense in the Brex dashboard |
### Brex Update Expense [#brex-update-expense]
Update the memo of a Brex card expense
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `expenseId` | string | Yes | ID of the card expense to update |
| `memo` | string | Yes | New memo for the expense |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id` | string | Unique expense ID |
| `memo` | string | Updated memo on the expense |
| `status` | string | Expense status (DRAFT, SUBMITTED, APPROVED, OUT\_OF\_POLICY, VOID, CANCELED, SPLIT, SETTLED) |
| `paymentStatus` | string | Payment status (NOT\_STARTED, PROCESSING, CANCELED, DECLINED, CLEARED, REFUNDING, REFUNDED, CASH\_ADVANCE, CREDITED, AWAITING\_PAYMENT, SCHEDULED) |
| `category` | string | Expense category (e.g., RESTAURANTS, RECURRING\_SOFTWARE\_AND\_SAAS, AIRLINE\_EXPENSES) |
| `merchantId` | string | Merchant ID |
| `budgetId` | string | Budget ID |
| `originalAmount` | json | Original transaction amount |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| `billingAmount` | json | Amount billed to the account |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| `purchasedAt` | string | Purchase timestamp (ISO 8601) |
| `updatedAt` | string | Last update timestamp (ISO 8601) |
### Brex Upload Receipt [#brex-upload-receipt]
Upload a receipt file and attach it to a specific Brex card expense
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | -------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `expenseId` | string | Yes | ID of the card expense to attach the receipt to |
| `file` | file | Yes | Receipt file to upload (max 50 MB) |
| `receiptName` | string | No | Receipt file name including extension (defaults to the uploaded file name) |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------- | ------ | --------------------------------------------- |
| `receiptId` | string | Unique identifier of the receipt upload |
| `receiptName` | string | Name the receipt was uploaded with |
| `expenseId` | string | ID of the expense the receipt was attached to |
### Brex Match Receipt [#brex-match-receipt]
Upload a receipt file and let Brex automatically match it with existing expenses
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | -------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `file` | file | Yes | Receipt file to upload (max 50 MB) |
| `receiptName` | string | No | Receipt file name including extension (defaults to the uploaded file name) |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------- | ------ | ----------------------------------------------------------------------- |
| `receiptId` | string | Unique identifier of the receipt match request |
| `receiptName` | string | Name the receipt was uploaded with |
| `expenseId` | string | Always null for receipt match (Brex matches the receipt asynchronously) |
### Brex List Card Transactions [#brex-list-card-transactions]
List settled card transactions for all Brex card accounts
#### Input [#input-5]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `userIds` | string | No | Comma-separated user IDs to filter transactions by cardholder |
| `postedAtStart` | string | No | Only include transactions posted at or after this ISO 8601 timestamp |
| `cursor` | string | No | Pagination cursor from a previous response |
| `limit` | string | No | Number of transactions to return (default 100, max 1000) |
#### Output [#output-5]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------------------------------------------------------------- |
| `items` | array | Settled card transactions |
| ↳ `id` | string | Unique transaction ID |
| ↳ `card_id` | string | ID of the card used |
| ↳ `description` | string | Transaction description |
| ↳ `amount` | json | Transaction amount |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| ↳ `initiated_at_date` | string | Date the transaction was initiated |
| ↳ `posted_at_date` | string | Date the transaction was posted |
| ↳ `type` | string | Transaction type (PURCHASE, REFUND, CHARGEBACK, REWARDS\_CREDIT, COLLECTION, BNPL\_FEE) |
| ↳ `merchant` | json | Merchant details |
| ↳ `raw_descriptor` | string | Raw merchant descriptor |
| ↳ `mcc` | string | Merchant category code |
| ↳ `country` | string | Merchant country |
| ↳ `expense_id` | string | Associated expense ID |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Brex List Cash Transactions [#brex-list-cash-transactions]
List transactions for a Brex cash account
#### Input [#input-6]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `accountId` | string | Yes | ID of the cash account to list transactions for |
| `postedAtStart` | string | No | Only include transactions posted at or after this ISO 8601 timestamp |
| `cursor` | string | No | Pagination cursor from a previous response |
| `limit` | string | No | Number of transactions to return (default 100, max 1000) |
#### Output [#output-6]
| Parameter | Type | Description |
| --------------------- | ------ | ----------------------------------------------------------------- |
| `items` | array | Cash account transactions |
| ↳ `id` | string | Unique transaction ID |
| ↳ `description` | string | Transaction description |
| ↳ `amount` | json | Transaction amount |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| ↳ `initiated_at_date` | string | Date the transaction was initiated |
| ↳ `posted_at_date` | string | Date the transaction was posted |
| ↳ `type` | string | Transaction type |
| ↳ `transfer_id` | string | Associated transfer ID |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Brex List Card Accounts [#brex-list-card-accounts]
List all Brex card accounts with balances and limits
#### Input [#input-7]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
#### Output [#output-7]
| Parameter | Type | Description |
| ---------------------------- | ------ | ----------------------------------------------------------------- |
| `accounts` | array | Card accounts |
| ↳ `id` | string | Unique account ID |
| ↳ `status` | string | Account status |
| ↳ `current_balance` | json | Current balance |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| ↳ `available_balance` | json | Available balance |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| ↳ `account_limit` | json | Account limit |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| ↳ `current_statement_period` | json | Current statement period (start\_date, end\_date) |
### Brex List Cash Accounts [#brex-list-cash-accounts]
List all Brex cash accounts with balances and account details
#### Input [#input-8]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `cursor` | string | No | Pagination cursor from a previous response |
| `limit` | string | No | Number of accounts to return (default 100, max 1000) |
#### Output [#output-8]
| Parameter | Type | Description |
| --------------------- | ------- | ----------------------------------------------------------------- |
| `items` | array | Cash accounts |
| ↳ `id` | string | Unique account ID |
| ↳ `name` | string | Account name |
| ↳ `status` | string | Account status |
| ↳ `current_balance` | json | Current balance |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| ↳ `available_balance` | json | Available balance |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| ↳ `account_number` | string | Bank account number |
| ↳ `routing_number` | string | Bank routing number |
| ↳ `primary` | boolean | Whether this is the primary cash account |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Brex Get Cash Account [#brex-get-cash-account]
Get a Brex cash account by ID, or the primary cash account when no ID is provided
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `accountId` | string | No | ID of the cash account (defaults to the primary cash account) |
#### Output [#output-9]
| Parameter | Type | Description |
| ------------------ | ------- | ----------------------------------------------------------------- |
| `id` | string | Unique account ID |
| `name` | string | Account name |
| `status` | string | Account status |
| `currentBalance` | json | Current balance |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| `availableBalance` | json | Available balance |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| `accountNumber` | string | Bank account number |
| `routingNumber` | string | Bank routing number |
| `primary` | boolean | Whether this is the primary cash account |
### Brex List Card Statements [#brex-list-card-statements]
List finalized statements for the primary Brex card account
#### Input [#input-10]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `cursor` | string | No | Pagination cursor from a previous response |
| `limit` | string | No | Number of statements to return (default 100, max 1000) |
#### Output [#output-10]
| Parameter | Type | Description |
| ----------------- | ------ | ----------------------------------------------------------------- |
| `items` | array | Finalized card account statements |
| ↳ `id` | string | Unique statement ID |
| ↳ `start_balance` | json | Balance at the start of the period |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| ↳ `end_balance` | json | Balance at the end of the period |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| ↳ `period` | json | Statement period (start\_date, end\_date) |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Brex List Cash Statements [#brex-list-cash-statements]
List finalized statements for a Brex cash account
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `accountId` | string | Yes | ID of the cash account to list statements for |
| `cursor` | string | No | Pagination cursor from a previous response |
| `limit` | string | No | Number of statements to return (default 100, max 1000) |
#### Output [#output-11]
| Parameter | Type | Description |
| ----------------- | ------ | ----------------------------------------------------------------- |
| `items` | array | Finalized cash account statements |
| ↳ `id` | string | Unique statement ID |
| ↳ `start_balance` | json | Balance at the start of the period |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| ↳ `end_balance` | json | Balance at the end of the period |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| ↳ `period` | json | Statement period (start\_date, end\_date) |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Brex List Users [#brex-list-users]
List users in the Brex account, optionally filtered by email
#### Input [#input-12]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `email` | string | No | Filter users by exact email address |
| `cursor` | string | No | Pagination cursor from a previous response |
| `limit` | string | No | Number of users to return (default 100, max 1000) |
#### Output [#output-12]
| Parameter | Type | Description |
| ----------------- | ------ | ------------------------------------------------------------------------------------------------- |
| `items` | array | Users in the Brex account |
| ↳ `id` | string | Unique user ID |
| ↳ `first_name` | string | First name |
| ↳ `last_name` | string | Last name |
| ↳ `email` | string | Email address |
| ↳ `status` | string | User status (INVITED, ACTIVE, CLOSED, DISABLED, DELETED, PENDING\_ACTIVATION, INACTIVE, ARCHIVED) |
| ↳ `manager_id` | string | ID of the manager |
| ↳ `department_id` | string | Department ID |
| ↳ `location_id` | string | Location ID |
| ↳ `title_id` | string | Title ID |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Brex Get User [#brex-get-user]
Get a Brex user by their ID
#### Input [#input-13]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `userId` | string | Yes | ID of the user to fetch |
#### Output [#output-13]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------------------------------------------------------------------- |
| `id` | string | Unique user ID |
| `firstName` | string | First name |
| `lastName` | string | Last name |
| `email` | string | Email address |
| `status` | string | User status (INVITED, ACTIVE, CLOSED, DISABLED, DELETED, PENDING\_ACTIVATION, INACTIVE, ARCHIVED) |
| `managerId` | string | ID of the manager |
| `departmentId` | string | Department ID |
| `locationId` | string | Location ID |
| `titleId` | string | Title ID |
### Brex Get Current User [#brex-get-current-user]
Get the Brex user associated with the API token
#### Input [#input-14]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
#### Output [#output-14]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------------------------------------------------------------------- |
| `id` | string | Unique user ID |
| `firstName` | string | First name |
| `lastName` | string | Last name |
| `email` | string | Email address |
| `status` | string | User status (INVITED, ACTIVE, CLOSED, DISABLED, DELETED, PENDING\_ACTIVATION, INACTIVE, ARCHIVED) |
| `managerId` | string | ID of the manager |
| `departmentId` | string | Department ID |
| `locationId` | string | Location ID |
| `titleId` | string | Title ID |
### Brex List Departments [#brex-list-departments]
List departments in the Brex account, optionally filtered by name
#### Input [#input-15]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `name` | string | No | Filter departments by name |
| `cursor` | string | No | Pagination cursor from a previous response |
| `limit` | string | No | Number of departments to return (default 100, max 1000) |
#### Output [#output-15]
| Parameter | Type | Description |
| --------------- | ------ | -------------------------------------------- |
| `items` | array | Departments in the Brex account |
| ↳ `id` | string | Unique department ID |
| ↳ `name` | string | Department name |
| ↳ `description` | string | Department description |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Brex List Locations [#brex-list-locations]
List locations in the Brex account, optionally filtered by name
#### Input [#input-16]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `name` | string | No | Filter locations by name |
| `cursor` | string | No | Pagination cursor from a previous response |
| `limit` | string | No | Number of locations to return (default 100, max 1000) |
#### Output [#output-16]
| Parameter | Type | Description |
| --------------- | ------ | -------------------------------------------- |
| `items` | array | Locations in the Brex account |
| ↳ `id` | string | Unique location ID |
| ↳ `name` | string | Location name |
| ↳ `description` | string | Location description |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Brex List Titles [#brex-list-titles]
List job titles in the Brex account, optionally filtered by name
#### Input [#input-17]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `name` | string | No | Filter titles by name |
| `cursor` | string | No | Pagination cursor from a previous response |
| `limit` | string | No | Number of titles to return (default 100, max 1000) |
#### Output [#output-17]
| Parameter | Type | Description |
| ------------ | ------ | -------------------------------------------- |
| `items` | array | Job titles in the Brex account |
| ↳ `id` | string | Unique title ID |
| ↳ `name` | string | Title name |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Brex List Cards [#brex-list-cards]
List cards in the Brex account, optionally filtered by card owner
#### Input [#input-18]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `userId` | string | No | Filter cards by the ID of the card owner |
| `cursor` | string | No | Pagination cursor from a previous response |
| `limit` | string | No | Number of cards to return (default 100, max 1000) |
#### Output [#output-18]
| Parameter | Type | Description |
| ------------------- | ------ | -------------------------------------------- |
| `items` | array | Cards in the Brex account |
| ↳ `id` | string | Unique card ID |
| ↳ `owner` | json | Card owner (type, user\_id) |
| ↳ `status` | string | Card status |
| ↳ `last_four` | string | Last four digits of the card number |
| ↳ `card_name` | string | Card name |
| ↳ `card_type` | string | Card type (VIRTUAL or PHYSICAL) |
| ↳ `limit_type` | string | Limit type (CARD or USER) |
| ↳ `spend_controls` | json | Spend controls on the card |
| ↳ `billing_address` | json | Billing address of the card |
| ↳ `expiration_date` | json | Card expiration date (month, year) |
| ↳ `budget_id` | string | Associated budget ID |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Brex Get Company [#brex-get-company]
Get the Brex company associated with the API token
#### Input [#input-19]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
#### Output [#output-19]
| Parameter | Type | Description |
| ---------------- | ------ | -------------------------------------------------------------------------- |
| `id` | string | Unique company ID |
| `legalName` | string | Legal name of the company |
| `mailingAddress` | json | Company mailing address (line1, line2, city, state, country, postal\_code) |
| `accountType` | string | Brex account type (BREX\_CLASSIC or BREX\_EMPOWER) |
### Brex List Budgets [#brex-list-budgets]
List budgets in the Brex account
#### Input [#input-20]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `cursor` | string | No | Pagination cursor from a previous response |
| `limit` | string | No | Number of budgets to return (default 100, max 1000) |
#### Output [#output-20]
| Parameter | Type | Description |
| -------------------------- | ------ | ------------------------------------------------------------------------ |
| `items` | array | Budgets in the Brex account |
| ↳ `budget_id` | string | Unique budget ID |
| ↳ `account_id` | string | Account ID the budget belongs to |
| ↳ `name` | string | Budget name |
| ↳ `description` | string | Budget description |
| ↳ `parent_budget_id` | string | Parent budget ID |
| ↳ `owner_user_ids` | array | User IDs of the budget owners |
| ↳ `period_recurrence_type` | string | Budget period recurrence (WEEKLY, MONTHLY, QUARTERLY, YEARLY, ONE\_TIME) |
| ↳ `start_date` | string | Budget start date |
| ↳ `end_date` | string | Budget end date |
| ↳ `amount` | json | Budget amount |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| ↳ `spend_budget_status` | string | Budget status |
| ↳ `limit_type` | string | Budget limit type |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Brex Get Budget [#brex-get-budget]
Get a Brex budget by its ID
#### Input [#input-21]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `budgetId` | string | Yes | ID of the budget to fetch |
#### Output [#output-21]
| Parameter | Type | Description |
| ---------------------- | ------ | ------------------------------------------------------------------------ |
| `budgetId` | string | Unique budget ID |
| `accountId` | string | Account ID the budget belongs to |
| `name` | string | Budget name |
| `description` | string | Budget description |
| `parentBudgetId` | string | Parent budget ID |
| `ownerUserIds` | array | User IDs of the budget owners |
| `periodRecurrenceType` | string | Budget period recurrence (WEEKLY, MONTHLY, QUARTERLY, YEARLY, ONE\_TIME) |
| `startDate` | string | Budget start date |
| `endDate` | string | Budget end date |
| `amount` | json | Budget amount |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| `spendBudgetStatus` | string | Budget status (ACTIVE, ARCHIVED, DELETED) |
| `limitType` | string | Budget limit type (HARD or SOFT) |
### Brex Create Budget [#brex-create-budget]
Create a new budget in the Brex account
#### Input [#input-22]
| Parameter | Type | Required | Description |
| ---------------------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `name` | string | Yes | Name for the budget |
| `description` | string | Yes | Description of what the budget is used for |
| `parentBudgetId` | string | Yes | ID of the parent budget |
| `periodRecurrenceType` | string | Yes | Period type of the budget (WEEKLY, MONTHLY, QUARTERLY, YEARLY, ONE\_TIME) |
| `amount` | number | Yes | Budget amount, in the smallest unit of the currency (e.g., cents for USD) |
| `currency` | string | No | ISO 4217 currency code (defaults to USD) |
| `ownerUserIds` | string | No | Comma-separated user IDs of the budget owners |
| `startDate` | string | No | Date the budget should start counting (YYYY-MM-DD) |
| `endDate` | string | No | Date the budget should stop counting (YYYY-MM-DD) |
#### Output [#output-22]
| Parameter | Type | Description |
| ---------------------- | ------ | ------------------------------------------------------------------------ |
| `budgetId` | string | Unique budget ID |
| `accountId` | string | Account ID the budget belongs to |
| `name` | string | Budget name |
| `description` | string | Budget description |
| `parentBudgetId` | string | Parent budget ID |
| `ownerUserIds` | array | User IDs of the budget owners |
| `periodRecurrenceType` | string | Budget period recurrence (WEEKLY, MONTHLY, QUARTERLY, YEARLY, ONE\_TIME) |
| `startDate` | string | Budget start date |
| `endDate` | string | Budget end date |
| `amount` | json | Budget amount |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| `spendBudgetStatus` | string | Status of the created budget |
| `limitType` | string | Budget limit type |
### Brex Archive Budget [#brex-archive-budget]
Archive a Brex budget, making any spend limits beneath it unusable for future expenses and removing it from the UI
#### Input [#input-23]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `budgetId` | string | Yes | ID of the budget to archive |
#### Output [#output-23]
| Parameter | Type | Description |
| ------------------- | ------ | ------------------------------------ |
| `budgetId` | string | ID of the archived budget |
| `spendBudgetStatus` | string | Status of the budget after archiving |
### Brex List Spend Limits [#brex-list-spend-limits]
List spend limits in the Brex account, optionally filtered by member user
#### Input [#input-24]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `memberUserIds` | string | No | Comma-separated user IDs to filter spend limits by member |
| `cursor` | string | No | Pagination cursor from a previous response |
| `limit` | string | No | Number of spend limits to return (default 100, max 1000) |
#### Output [#output-24]
| Parameter | Type | Description |
| -------------------------- | ------ | ----------------------------------------------------------------------------- |
| `items` | array | Spend limits in the Brex account |
| ↳ `id` | string | Unique spend limit ID |
| ↳ `account_id` | string | Account ID the spend limit belongs to |
| ↳ `name` | string | Spend limit name |
| ↳ `description` | string | Spend limit description |
| ↳ `parent_budget_id` | string | Parent budget ID |
| ↳ `status` | string | Spend limit status |
| ↳ `period_recurrence_type` | string | Period recurrence (PER\_WEEK, PER\_MONTH, PER\_QUARTER, PER\_YEAR, ONE\_TIME) |
| ↳ `spend_type` | string | Spend type of the limit |
| ↳ `start_date` | string | Spend limit start date |
| ↳ `end_date` | string | Spend limit end date |
| ↳ `owner_user_ids` | array | User IDs of the spend limit owners |
| ↳ `member_user_ids` | array | User IDs of the spend limit members |
| ↳ `current_period_balance` | json | Spend and rollover amounts for the current period |
| ↳ `start_date` | string | Start date of the current period |
| ↳ `end_date` | string | End date of the current period |
| ↳ `start_time` | string | Start time of the current period (ISO 8601) |
| ↳ `end_time` | string | End time of the current period (ISO 8601) |
| ↳ `amount_spent` | json | Amount spent in the current period |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| ↳ `rollover_amount` | json | Amount rolled over from previous periods |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| ↳ `authorization_settings` | json | Authorization settings (base limit, authorization type, rollover refresh) |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Brex Get Spend Limit [#brex-get-spend-limit]
Get a Brex spend limit by its ID
#### Input [#input-25]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `spendLimitId` | string | Yes | ID of the spend limit to fetch |
#### Output [#output-25]
| Parameter | Type | Description |
| ----------------------- | ------ | ----------------------------------------------------------------------------- |
| `id` | string | Unique spend limit ID |
| `accountId` | string | Account ID the spend limit belongs to |
| `name` | string | Spend limit name |
| `description` | string | Spend limit description |
| `parentBudgetId` | string | Parent budget ID |
| `status` | string | Spend limit status (ACTIVE, EXPIRED, ARCHIVED) |
| `periodRecurrenceType` | string | Period recurrence (PER\_WEEK, PER\_MONTH, PER\_QUARTER, PER\_YEAR, ONE\_TIME) |
| `spendType` | string | Spend type of the limit |
| `startDate` | string | Spend limit start date |
| `endDate` | string | Spend limit end date |
| `ownerUserIds` | array | User IDs of the spend limit owners |
| `memberUserIds` | array | User IDs of the spend limit members |
| `currentPeriodBalance` | json | Spend and rollover amounts for the current period |
| ↳ `start_date` | string | Start date of the current period |
| ↳ `end_date` | string | End date of the current period |
| ↳ `start_time` | string | Start time of the current period (ISO 8601) |
| ↳ `end_time` | string | End time of the current period (ISO 8601) |
| ↳ `amount_spent` | json | Amount spent in the current period |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| ↳ `rollover_amount` | json | Amount rolled over from previous periods |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| `authorizationSettings` | json | Authorization settings (base limit, authorization type, rollover refresh) |
### Brex Create Spend Limit [#brex-create-spend-limit]
Create a new spend limit (hard-authorization card program) in the Brex account
#### Input [#input-26]
| Parameter | Type | Required | Description |
| ----------------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `name` | string | Yes | Name for the spend limit |
| `periodRecurrenceType` | string | Yes | Period type of the spend limit (PER\_WEEK, PER\_MONTH, PER\_QUARTER, PER\_YEAR, ONE\_TIME) |
| `spendType` | string | Yes | Whether the spend limit can only be spent from cards it provisions (BUDGET\_PROVISIONED\_CARDS\_ONLY, NON\_BUDGET\_PROVISIONED\_CARDS\_ALLOWED) |
| `expenseVisibility` | string | Yes | Whether expenses on this spend limit are viewable by all members (SHARED, PRIVATE) |
| `authorizationVisibility` | string | Yes | Whether the limit amount is visible to all members, or just controllers/bookkeepers/owners (PUBLIC, PRIVATE) |
| `limitIncreaseSetting` | string | Yes | Whether members can request limit increases (ENABLED, DISABLED) |
| `autoTransferCardsSetting` | string | Yes | How auto transfer works for virtual cards on this spend limit (DISABLED, ENABLED) |
| `autoCreateLimitCardsSetting` | string | Yes | How auto limit card creation works for members (DISABLED, ALL\_MEMBERS) |
| `expensePolicyId` | string | Yes | ID of the expense policy corresponding to this spend limit |
| `baseLimitAmount` | number | Yes | Base spend limit amount, without increases/rollovers, in the smallest unit of the currency (e.g., cents for USD) |
| `currency` | string | No | ISO 4217 currency code for the base limit (defaults to USD) |
| `authorizationType` | string | Yes | Whether authorizations decline based on available balance (HARD, SOFT) |
| `rolloverRefreshRate` | string | Yes | Recurrence at which rolled-over unused funds stop rolling over (OFF, NEVER, PER\_MONTH, PER\_QUARTER, PER\_YEAR) |
| `limitBufferPercentage` | number | No | Flexible buffer on the limit as a 0-100 percentage |
| `description` | string | No | Description of what the spend limit is used for |
| `parentBudgetId` | string | No | ID of the parent budget |
| `startDate` | string | No | Date the spend limit should start counting (YYYY-MM-DD) |
| `endDate` | string | No | Date the spend limit should expire (YYYY-MM-DD) |
| `transactionLimitAmount` | number | No | Per-transaction limit this spend limit enforces, in the smallest unit of the currency |
| `ownerUserIds` | string | No | Comma-separated user IDs of the spend limit owners |
| `memberUserIds` | string | No | Comma-separated user IDs of the spend limit members |
#### Output [#output-26]
| Parameter | Type | Description |
| ----------------------- | ------ | ----------------------------------------------------------------------------- |
| `id` | string | Unique spend limit ID |
| `accountId` | string | Account ID the spend limit belongs to |
| `name` | string | Spend limit name |
| `description` | string | Spend limit description |
| `parentBudgetId` | string | Parent budget ID |
| `status` | string | Spend limit status |
| `periodRecurrenceType` | string | Period recurrence (PER\_WEEK, PER\_MONTH, PER\_QUARTER, PER\_YEAR, ONE\_TIME) |
| `spendType` | string | Spend type of the limit |
| `startDate` | string | Spend limit start date |
| `endDate` | string | Spend limit end date |
| `ownerUserIds` | array | User IDs of the spend limit owners |
| `memberUserIds` | array | User IDs of the spend limit members |
| `currentPeriodBalance` | json | Spend and rollover amounts for the current period |
| ↳ `start_date` | string | Start date of the current period |
| ↳ `end_date` | string | End date of the current period |
| ↳ `start_time` | string | Start time of the current period (ISO 8601) |
| ↳ `end_time` | string | End time of the current period (ISO 8601) |
| ↳ `amount_spent` | json | Amount spent in the current period |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| ↳ `rollover_amount` | json | Amount rolled over from previous periods |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| `authorizationSettings` | json | Authorization settings (base limit, authorization type, rollover refresh) |
### Brex List Vendors [#brex-list-vendors]
List vendors in the Brex account, optionally filtered by name
#### Input [#input-27]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `name` | string | No | Filter vendors by name |
| `cursor` | string | No | Pagination cursor from a previous response |
| `limit` | string | No | Number of vendors to return (default 100, max 1000) |
#### Output [#output-27]
| Parameter | Type | Description |
| -------------------- | ------ | -------------------------------------------- |
| `items` | array | Vendors in the Brex account |
| ↳ `id` | string | Unique vendor ID |
| ↳ `company_name` | string | Vendor company name |
| ↳ `email` | string | Vendor email address |
| ↳ `phone` | string | Vendor phone number |
| ↳ `payment_accounts` | array | Payment accounts associated with the vendor |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Brex Get Vendor [#brex-get-vendor]
Get a Brex vendor by its ID
#### Input [#input-28]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `vendorId` | string | Yes | ID of the vendor to fetch |
#### Output [#output-28]
| Parameter | Type | Description |
| ----------------- | ------ | ------------------------------------------- |
| `id` | string | Unique vendor ID |
| `companyName` | string | Vendor company name |
| `email` | string | Vendor email address |
| `phone` | string | Vendor phone number |
| `paymentAccounts` | array | Payment accounts associated with the vendor |
### Brex Create Vendor [#brex-create-vendor]
Create a new vendor in the Brex account
#### Input [#input-29]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `companyName` | string | Yes | Name for the vendor (must be unique) |
| `email` | string | No | Email address for the vendor |
| `phone` | string | No | Phone number for the vendor |
#### Output [#output-29]
| Parameter | Type | Description |
| ----------------- | ------ | ------------------------------------------- |
| `id` | string | Unique vendor ID |
| `companyName` | string | Vendor company name |
| `email` | string | Vendor email address |
| `phone` | string | Vendor phone number |
| `paymentAccounts` | array | Payment accounts associated with the vendor |
### Brex Update Vendor [#brex-update-vendor]
Update an existing vendor in the Brex account
#### Input [#input-30]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `vendorId` | string | Yes | ID of the vendor to update |
| `companyName` | string | No | New name for the vendor |
| `email` | string | No | New email address for the vendor |
| `phone` | string | No | New phone number for the vendor |
#### Output [#output-30]
| Parameter | Type | Description |
| ----------------- | ------ | ------------------------------------------- |
| `id` | string | Unique vendor ID |
| `companyName` | string | Vendor company name |
| `email` | string | Vendor email address |
| `phone` | string | Vendor phone number |
| `paymentAccounts` | array | Payment accounts associated with the vendor |
### Brex List Transfers [#brex-list-transfers]
List money transfers in the Brex account
#### Input [#input-31]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `cursor` | string | No | Pagination cursor from a previous response |
| `limit` | string | No | Number of transfers to return (default 100, max 1000) |
#### Output [#output-31]
| Parameter | Type | Description |
| --------------------------- | ------- | ------------------------------------------------------------------------------------------- |
| `items` | array | Transfers in the Brex account |
| ↳ `id` | string | Unique transfer ID |
| ↳ `counterparty` | json | Transfer counterparty details |
| ↳ `description` | string | Transfer description |
| ↳ `payment_type` | string | Payment type (ACH, DOMESTIC\_WIRE, CHEQUE, INTERNATIONAL\_WIRE, BOOK\_TRANSFER, STABLECOIN) |
| ↳ `amount` | json | Transfer amount |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| ↳ `process_date` | string | Date the transfer processes |
| ↳ `originating_account` | json | Account the transfer originates from |
| ↳ `status` | string | Transfer status (PROCESSING, SCHEDULED, PENDING\_APPROVAL, FAILED, PROCESSED) |
| ↳ `cancellation_reason` | string | Reason the transfer was canceled |
| ↳ `estimated_delivery_date` | string | Estimated delivery date |
| ↳ `creator_user_id` | string | ID of the user who created the transfer |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `display_name` | string | Transfer display name |
| ↳ `external_memo` | string | External memo |
| ↳ `is_ppro_enabled` | boolean | Whether Principal Protection (PPRO) is enabled |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Brex Get Transfer [#brex-get-transfer]
Get a Brex money transfer by its ID
#### Input [#input-32]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `transferId` | string | Yes | ID of the transfer to fetch |
#### Output [#output-32]
| Parameter | Type | Description |
| ----------------------- | ------- | ------------------------------------------------------------------------------------------- |
| `id` | string | Unique transfer ID |
| `counterparty` | json | Transfer counterparty details |
| `description` | string | Transfer description |
| `paymentType` | string | Payment type (ACH, DOMESTIC\_WIRE, CHEQUE, INTERNATIONAL\_WIRE, BOOK\_TRANSFER, STABLECOIN) |
| `amount` | json | Transfer amount |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| `processDate` | string | Date the transfer processes |
| `originatingAccount` | json | Account the transfer originates from |
| `status` | string | Transfer status (PROCESSING, SCHEDULED, PENDING\_APPROVAL, FAILED, PROCESSED) |
| `cancellationReason` | string | Reason the transfer was canceled |
| `estimatedDeliveryDate` | string | Estimated delivery date |
| `creatorUserId` | string | ID of the user who created the transfer |
| `createdAt` | string | Creation timestamp |
| `displayName` | string | Transfer display name |
| `externalMemo` | string | External memo |
| `isPproEnabled` | boolean | Whether Principal Protection (PPRO) is enabled |
### Brex Create Transfer [#brex-create-transfer]
Create a money transfer from a Brex cash account to a vendor
#### Input [#input-33]
| Parameter | Type | Required | Description |
| --------------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) |
| `cashAccountId` | string | Yes | ID of the Brex cash account to send the transfer from (found via the /accounts endpoint) |
| `vendorPaymentInstrumentId` | string | Yes | ID of the vendor's payment instrument to send the transfer to (from the vendor's payment\_accounts) |
| `amount` | number | Yes | Amount to transfer, in the smallest unit of the currency (e.g., cents for USD) |
| `currency` | string | No | ISO 4217 currency code (defaults to USD) |
| `description` | string | Yes | Description of the transfer for internal use (not exposed externally) |
| `externalMemo` | string | Yes | External memo shown to the recipient (max 90 characters for ACH/Wire, 40 for Cheque) |
| `approvalType` | string | No | Set to MANUAL to require cash admin approval before the transfer is sent |
| `isPproEnabled` | boolean | No | Enable Principal Protection (PPRO) to have Brex cover intermediary/receiving bank fees (international wires only) |
#### Output [#output-33]
| Parameter | Type | Description |
| ----------------------- | ------- | ------------------------------------------------------------------------------------------- |
| `id` | string | Unique transfer ID |
| `counterparty` | json | Transfer counterparty details |
| `description` | string | Description of the transfer |
| `paymentType` | string | Payment type (ACH, DOMESTIC\_WIRE, CHEQUE, INTERNATIONAL\_WIRE, BOOK\_TRANSFER, STABLECOIN) |
| `amount` | json | Transfer amount |
| ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) |
| ↳ `currency` | string | ISO 4217 currency code (e.g., USD) |
| `processDate` | string | Transaction processing date |
| `originatingAccount` | json | Originating account details for the transfer |
| `status` | string | Transfer status (PROCESSING, SCHEDULED, PENDING\_APPROVAL, FAILED, PROCESSED) |
| `cancellationReason` | string | Reason the transfer was canceled |
| `estimatedDeliveryDate` | string | Estimated delivery date for the transfer |
| `creatorUserId` | string | ID of the user who created the transfer |
| `createdAt` | string | Creation timestamp of the transfer |
| `displayName` | string | Human-readable name of the transfer |
| `externalMemo` | string | External memo of the transfer |
| `isPproEnabled` | boolean | Whether Principal Protection (PPRO) is enabled for the transfer |
---
# Bright Data (/integrations/brightdata)
{/* MANUAL-CONTENT-START:intro */}
[Bright Data](https://brightdata.com/) is a web data platform that provides tools for scraping, searching, and extracting structured data from websites at scale, bypassing anti-bot protections, CAPTCHAs, and IP blocks along the way.
With Bright Data, you can:
* **Scrape any URL**: Fetch page content through Web Unlocker, with automatic anti-bot bypassing and optional Markdown conversion
* **Search the web**: Query Google, Bing, DuckDuckGo, or Yandex through the SERP API and get structured results
* **Discover content by intent**: Run AI-powered searches that rank results by relevance to a stated goal, with optional cleaned page content for RAG
* **Run pre-built scrapers**: Trigger one of 660+ dataset scrapers for platforms like Amazon, LinkedIn, and Instagram, either synchronously for quick jobs or asynchronously via snapshots for larger ones
In Sim, the Bright Data integration allows your agents to scrape web pages, run search-engine queries, discover and rank content by intent, and trigger structured data extraction jobs against sites like Amazon and LinkedIn. Agents can check the status of async scraping jobs, download completed snapshot results, and cancel jobs still in progress—making it possible to build workflows that gather, monitor, and retrieve web data end to end.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Bright Data into the workflow. Scrape any URL with Web Unlocker, search Google and other engines with SERP API, discover web content ranked by intent, or trigger pre-built scrapers for structured data extraction.
## Actions [#actions]
### Bright Data Scrape URL [#bright-data-scrape-url]
Fetch content from any URL using Bright Data Web Unlocker. Bypasses anti-bot protections, CAPTCHAs, and IP blocks automatically.
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Bright Data API token |
| `zone` | string | Yes | Web Unlocker zone name from your Bright Data dashboard (e.g., "web\_unlocker1") |
| `url` | string | Yes | The URL to scrape (e.g., "[https://example.com/page"\\](https://example.com/page"\\)) |
| `format` | string | No | Response format: "raw" for HTML or "json" for parsed content. Defaults to "raw" |
| `country` | string | No | Two-letter country code for geo-targeting (e.g., "us", "gb") |
| `dataFormat` | string | No | Convert the response to "markdown" instead of raw HTML, useful for feeding page content to an LLM. Omit for the default HTML/JSON response |
#### Output [#output]
| Parameter | Type | Description |
| ------------ | ------ | ----------------------------------------------------------- |
| `content` | string | The scraped page content (HTML or JSON depending on format) |
| `url` | string | The URL that was scraped |
| `statusCode` | number | HTTP status code of the response |
### Bright Data SERP Search [#bright-data-serp-search]
Search Google, Bing, DuckDuckGo, or Yandex and get structured search results using Bright Data SERP API.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Bright Data API token |
| `zone` | string | Yes | SERP API zone name from your Bright Data dashboard (e.g., "serp\_api1") |
| `query` | string | Yes | The search query (e.g., "best project management tools") |
| `searchEngine` | string | No | Search engine to use: "google", "bing", "duckduckgo", or "yandex". Defaults to "google" |
| `country` | string | No | Two-letter country code for localized results (e.g., "us", "gb") |
| `language` | string | No | Two-letter language code (e.g., "en", "es") |
| `numResults` | number | No | Number of results to return (e.g., 10, 20). Defaults to 10 |
#### Output [#output-1]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------------ |
| `results` | array | Array of search results |
| ↳ `title` | string | Title of the search result |
| ↳ `url` | string | URL of the search result |
| ↳ `description` | string | Snippet or description of the result |
| ↳ `rank` | number | Position in search results |
| `query` | string | The search query that was executed |
| `searchEngine` | string | The search engine that was used |
### Bright Data Discover [#bright-data-discover]
AI-powered web discovery that finds and ranks results by intent. Returns up to 20 results with optional cleaned page content for RAG and verification.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Bright Data API token |
| `query` | string | Yes | The search query (e.g., "competitor pricing changes enterprise plan") |
| `numResults` | number | No | Number of results to return (1-20). Defaults to 10 |
| `mode` | string | No | Search depth and ranking mode: "standard" (balanced), "deep" (exhaustive, broader search), "fast" (optimized for speed), or "zeroRanking" (raw volume without AI filtering). Defaults to "standard" |
| `intent` | string | No | Describes what the agent is trying to accomplish, used to rank results by relevance (e.g., "find official pricing pages and change notes") |
| `includeContent` | boolean | No | Whether to include cleaned page content in results |
| `format` | string | No | Response format: "json" or "md". Defaults to "json" |
| `language` | string | No | Search language code (e.g., "en", "es", "fr"). Defaults to "en" |
| `country` | string | No | Two-letter ISO country code for localized results (e.g., "us", "gb") |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------------ | ------ | -------------------------------------------------------------------------- |
| `results` | array | Array of discovered web results ranked by intent relevance |
| ↳ `url` | string | URL of the discovered page |
| ↳ `title` | string | Page title |
| ↳ `description` | string | Page description or snippet |
| ↳ `relevanceScore` | number | AI-calculated relevance score for intent-based ranking |
| ↳ `content` | string | Cleaned page content in the requested format (when includeContent is true) |
| `query` | string | The search query that was executed |
| `totalResults` | number | Total number of results returned |
### Bright Data Sync Scrape [#bright-data-sync-scrape]
Scrape URLs synchronously using a Bright Data pre-built scraper and get structured results directly. Supports up to 20 URLs with a 1-minute timeout.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| --------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Bright Data API token |
| `datasetId` | string | Yes | Dataset scraper ID from your Bright Data dashboard (e.g., "gd\_l1viktl72bvl7bjuj0") |
| `urls` | string | Yes | JSON array of URL objects to scrape, up to 20 (e.g., \[\{"url": "[https://example.com/product"\\}\\\]\\](https://example.com/product"\\}\\]\\)) |
| `format` | string | No | Output format: "json", "ndjson", or "csv". Defaults to "json" |
| `includeErrors` | boolean | No | Whether to include error reports in results |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------ | ------- | -------------------------------------------------------------------------------------------------- |
| `data` | array | Array of scraped result objects with fields specific to the dataset scraper used |
| `snapshotId` | string | Snapshot ID returned if the request exceeded the 1-minute timeout and switched to async processing |
| `isAsync` | boolean | Whether the request fell back to async mode (true means use snapshot ID to retrieve results) |
### Bright Data Scrape Dataset [#bright-data-scrape-dataset]
Trigger a Bright Data pre-built scraper to extract structured data from URLs. Supports 660+ scrapers for platforms like Amazon, LinkedIn, Instagram, and more.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Bright Data API token |
| `datasetId` | string | Yes | Dataset scraper ID from your Bright Data dashboard (e.g., "gd\_l1viktl72bvl7bjuj0") |
| `urls` | string | Yes | JSON array of URL objects to scrape (e.g., \[\{"url": "[https://example.com/product"\\}\\\]\\](https://example.com/product"\\}\\]\\)) |
| `format` | string | No | Output format: "json" or "csv". Defaults to "json" |
| `includeErrors` | boolean | No | Whether to include a per-input error report in the results |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------ | ------ | --------------------------------------------------------- |
| `snapshotId` | string | The snapshot ID to retrieve results later |
| `status` | string | Status of the scraping job (e.g., "triggered", "running") |
### Bright Data Snapshot Status [#bright-data-snapshot-status]
Check the progress of an async Bright Data scraping job. Returns status: starting, running, ready, or failed.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ----------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Bright Data API token |
| `snapshotId` | string | Yes | The snapshot ID returned when the collection was triggered (e.g., "s\_m4x7enmven8djfqak") |
#### Output [#output-5]
| Parameter | Type | Description |
| ------------ | ------ | --------------------------------------------------------------------------- |
| `snapshotId` | string | The snapshot ID that was queried |
| `datasetId` | string | The dataset ID associated with this snapshot |
| `status` | string | Current status of the snapshot: "starting", "running", "ready", or "failed" |
### Bright Data Download Snapshot [#bright-data-download-snapshot]
Download the results of a completed Bright Data scraping job using its snapshot ID. The snapshot must have ready status.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | ----------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Bright Data API token |
| `snapshotId` | string | Yes | The snapshot ID returned when the collection was triggered (e.g., "s\_m4x7enmven8djfqak") |
| `format` | string | No | Output format: "json", "ndjson", "jsonl", or "csv". Defaults to "json" |
| `compress` | boolean | No | Whether to compress the results |
#### Output [#output-6]
| Parameter | Type | Description |
| ------------ | ------ | --------------------------------------- |
| `data` | array | Array of scraped result records |
| `format` | string | The content type of the downloaded data |
| `snapshotId` | string | The snapshot ID that was downloaded |
### Bright Data Cancel Snapshot [#bright-data-cancel-snapshot]
Cancel an active Bright Data scraping job using its snapshot ID. Terminates data collection in progress.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | -------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Bright Data API token |
| `snapshotId` | string | Yes | The snapshot ID of the collection to cancel (e.g., "s\_m4x7enmven8djfqak") |
#### Output [#output-7]
| Parameter | Type | Description |
| ------------ | ------- | --------------------------------------- |
| `snapshotId` | string | The snapshot ID that was cancelled |
| `cancelled` | boolean | Whether the cancellation was successful |
---
# Browser Use (/integrations/browser_use)
{/* MANUAL-CONTENT-START:intro */}
[BrowserUse](https://browser-use.com/) is a powerful browser automation platform that enables you to create and run browser tasks programmatically. It provides a way to automate web interactions through natural language instructions, allowing you to navigate websites, fill forms, extract data, and perform complex sequences of actions without writing code.
With BrowserUse, you can:
* **Automate web interactions**: Navigate to websites, click buttons, fill forms, and perform other browser actions
* **Extract data**: Scrape content from websites, including text, images, and structured data
* **Execute complex workflows**: Chain multiple actions together to complete sophisticated web tasks
* **Monitor task execution**: Watch browser tasks run in real-time with visual feedback
* **Process results programmatically**: Receive structured output from web automation tasks
In Sim, the BrowserUse integration allows your agents to interact with the web as if they were human users. This enables scenarios like research, data collection, form submission, and web testing - all through simple natural language instructions. Your agents can gather information from websites, interact with web applications, and perform actions that would typically require manual browsing, expanding their capabilities to include the entire web as a resource.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Browser Use into the workflow. Can navigate the web and perform actions as if a real user was interacting with the browser.
## Actions [#actions]
### Browser Use [#browser-use]
Runs a browser automation task using BrowserUse
#### Input [#input]
| Parameter | Type | Required | Description |
| ----------------------- | ------- | -------- | ------------------------------------------------------------------- |
| `task` | string | Yes | What should the browser agent do |
| `startUrl` | string | No | Initial page URL to start the agent on (reduces navigation steps) |
| `variables` | json | No | Optional secrets injected into the task (format: \{key: value}) |
| `allowedDomains` | string | No | Comma-separated list of domains the agent is allowed to visit |
| `maxSteps` | number | No | Maximum number of steps the agent may take (default 100, max 10000) |
| `flashMode` | boolean | No | Enable flash mode (faster, less careful navigation) |
| `thinking` | boolean | No | Enable extended reasoning mode |
| `vision` | string | No | Vision capability: "true", "false", or "auto" |
| `systemPromptExtension` | string | No | Optional text appended to the agent system prompt (max 2000 chars) |
| `structuredOutput` | string | No | Stringified JSON schema for the structured output |
| `highlightElements` | boolean | No | Highlight interactive elements on the page (default true) |
| `metadata` | json | No | Custom key-value metadata (up to 10 pairs) for tracking |
| `model` | string | No | LLM model identifier (e.g. browser-use-2.0) |
| `apiKey` | string | Yes | API key for BrowserUse API |
| `profile_id` | string | No | Browser profile ID for persistent sessions (cookies, login state) |
#### Output [#output]
| Parameter | Type | Description |
| -------------------------- | ------- | --------------------------------------------------------------------------- |
| `id` | string | Task execution identifier |
| `success` | boolean | Task completion status |
| `output` | json | Final task output (string or structured) |
| `steps` | array | Steps the agent executed (number, memory, nextGoal, url, actions, duration) |
| ↳ `number` | number | Sequential step number |
| ↳ `memory` | string | Agent memory at this step |
| ↳ `evaluationPreviousGoal` | string | Evaluation of previous goal completion |
| ↳ `nextGoal` | string | Goal for the next step |
| ↳ `url` | string | Current URL of the browser |
| ↳ `screenshotUrl` | string | Optional screenshot URL |
| ↳ `actions` | array | Stringified JSON actions performed |
| ↳ `duration` | number | Step duration in seconds |
| `liveUrl` | string | Embeddable live browser session URL (active during execution) |
| `shareUrl` | string | Public shareable URL for the recorded session (post-run) |
| `sessionId` | string | Browser Use session identifier |
---
# Buffer (/integrations/buffer)
## Usage Instructions [#usage-instructions]
Integrate Buffer into your workflow. Create, schedule, edit, and delete posts across connected social channels (Instagram, LinkedIn, X, Facebook, TikTok, and more), attach images or videos, browse channels, and capture content ideas using the Buffer API.
## Actions [#actions]
### Buffer Create Post [#buffer-create-post]
Create a post in Buffer for a channel — add it to the queue, share it immediately, schedule it for a specific time, or save it as a draft, optionally with an image or video attachment
#### Input [#input]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Buffer API key |
| `channelId` | string | Yes | Channel to create the post for (find it with the Get Channels operation) |
| `text` | string | No | Text content of the post (required unless media is attached) |
| `mode` | string | Yes | How to share the post: addToQueue, shareNext, shareNow, or customScheduled (requires dueAt) |
| `schedulingType` | string | No | How the post publishes: automatic (Buffer publishes it, default) or notification (you get a mobile reminder) |
| `dueAt` | string | No | Publish time as an ISO 8601 timestamp (required when mode is customScheduled) |
| `saveToDraft` | boolean | No | Save the post as a draft instead of scheduling it |
| `media` | file | No | Image or video to attach — an uploaded file, a file reference from a previous block, or a publicly accessible URL. Buffer downloads the media at publish time; uploaded files are shared via a link valid for 7 days, so use a public URL for posts scheduled further out |
| `mediaType` | string | No | Force the attachment type when it cannot be detected from the file or URL: image or video (default auto) |
| `mediaAltText` | string | No | Alt text for an attached image |
#### Output [#output]
| Parameter | Type | Description |
| --------------------- | ------- | --------------------------------------------------------------------- |
| `post` | object | The created post |
| ↳ `id` | string | Post ID |
| ↳ `text` | string | Post text content |
| ↳ `status` | string | Post status (draft, needs\_approval, scheduled, sending, sent, error) |
| ↳ `via` | string | How the post was created (buffer, network, api) |
| ↳ `channelId` | string | Channel the post belongs to |
| ↳ `channelService` | string | Social network of the channel |
| ↳ `schedulingType` | string | How the post publishes (automatic or notification) |
| ↳ `shareMode` | string | Share mode used for the post |
| ↳ `isCustomScheduled` | boolean | Whether the post has a custom schedule |
| ↳ `sharedNow` | boolean | Whether the post was shared immediately |
| ↳ `createdAt` | string | Creation timestamp (ISO 8601) |
| ↳ `updatedAt` | string | Last update timestamp (ISO 8601) |
| ↳ `dueAt` | string | Scheduled publish time (ISO 8601) |
| ↳ `sentAt` | string | Publish timestamp (ISO 8601) |
| ↳ `externalLink` | string | Link to the published post on the social network |
| ↳ `error` | object | Publishing error details when the post failed |
| ↳ `message` | string | Error message |
| ↳ `supportUrl` | string | Support article URL |
| ↳ `rawError` | string | Raw error from the network |
| ↳ `assets` | array | Media attached to the post |
| ↳ `id` | string | Asset ID |
| ↳ `type` | string | Asset type |
| ↳ `mimeType` | string | MIME type of the asset |
| ↳ `source` | string | Source URL of the asset |
| ↳ `thumbnail` | string | Thumbnail URL of the asset |
### Buffer Edit Post [#buffer-edit-post]
Edit an existing Buffer post — update its text, schedule, or media. Attaching new media replaces the existing attachments
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Buffer API key |
| `postId` | string | Yes | ID of the post to edit |
| `text` | string | No | New text content of the post |
| `mode` | string | Yes | How to share the post: addToQueue, shareNext, shareNow, or customScheduled (requires dueAt) |
| `schedulingType` | string | No | How the post publishes: automatic (Buffer publishes it, default) or notification (you get a mobile reminder) |
| `dueAt` | string | No | Publish time as an ISO 8601 timestamp (required when mode is customScheduled) |
| `saveToDraft` | boolean | No | Save the post as a draft instead of scheduling it |
| `media` | file | No | Image or video to attach — an uploaded file, a file reference from a previous block, or a publicly accessible URL. Buffer downloads the media at publish time; uploaded files are shared via a link valid for 7 days, so use a public URL for posts scheduled further out. Replaces existing attachments |
| `mediaType` | string | No | Force the attachment type when it cannot be detected from the file or URL: image or video (default auto) |
| `mediaAltText` | string | No | Alt text for an attached image |
#### Output [#output-1]
| Parameter | Type | Description |
| --------------------- | ------- | --------------------------------------------------------------------- |
| `post` | object | The updated post |
| ↳ `id` | string | Post ID |
| ↳ `text` | string | Post text content |
| ↳ `status` | string | Post status (draft, needs\_approval, scheduled, sending, sent, error) |
| ↳ `via` | string | How the post was created (buffer, network, api) |
| ↳ `channelId` | string | Channel the post belongs to |
| ↳ `channelService` | string | Social network of the channel |
| ↳ `schedulingType` | string | How the post publishes (automatic or notification) |
| ↳ `shareMode` | string | Share mode used for the post |
| ↳ `isCustomScheduled` | boolean | Whether the post has a custom schedule |
| ↳ `sharedNow` | boolean | Whether the post was shared immediately |
| ↳ `createdAt` | string | Creation timestamp (ISO 8601) |
| ↳ `updatedAt` | string | Last update timestamp (ISO 8601) |
| ↳ `dueAt` | string | Scheduled publish time (ISO 8601) |
| ↳ `sentAt` | string | Publish timestamp (ISO 8601) |
| ↳ `externalLink` | string | Link to the published post on the social network |
| ↳ `error` | object | Publishing error details when the post failed |
| ↳ `message` | string | Error message |
| ↳ `supportUrl` | string | Support article URL |
| ↳ `rawError` | string | Raw error from the network |
| ↳ `assets` | array | Media attached to the post |
| ↳ `id` | string | Asset ID |
| ↳ `type` | string | Asset type |
| ↳ `mimeType` | string | MIME type of the asset |
| ↳ `source` | string | Source URL of the asset |
| ↳ `thumbnail` | string | Thumbnail URL of the asset |
### Buffer Get Posts [#buffer-get-posts]
List posts in a Buffer organization, optionally filtered by channel and status (draft, needs\_approval, scheduled, sending, sent, error)
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Buffer API key |
| `organizationId` | string | Yes | Buffer organization ID (find it with the Get Account operation) |
| `channelIds` | string | No | Comma-separated channel IDs to filter by |
| `status` | string | No | Comma-separated statuses to filter by: draft, needs\_approval, scheduled, sending, sent, error |
| `limit` | number | No | Maximum number of posts to return (default 20) |
| `after` | string | No | Pagination cursor from a previous page (pageInfo.endCursor) |
| `sortBy` | string | No | Field to sort by: dueAt or createdAt (default dueAt) |
| `sortDirection` | string | No | Sort direction: asc or desc (default asc) |
#### Output [#output-2]
| Parameter | Type | Description |
| --------------------- | ------- | --------------------------------------------------------------------- |
| `posts` | array | Posts matching the filters |
| ↳ `id` | string | Post ID |
| ↳ `text` | string | Post text content |
| ↳ `status` | string | Post status (draft, needs\_approval, scheduled, sending, sent, error) |
| ↳ `via` | string | How the post was created (buffer, network, api) |
| ↳ `channelId` | string | Channel the post belongs to |
| ↳ `channelService` | string | Social network of the channel |
| ↳ `schedulingType` | string | How the post publishes (automatic or notification) |
| ↳ `shareMode` | string | Share mode used for the post |
| ↳ `isCustomScheduled` | boolean | Whether the post has a custom schedule |
| ↳ `sharedNow` | boolean | Whether the post was shared immediately |
| ↳ `createdAt` | string | Creation timestamp (ISO 8601) |
| ↳ `updatedAt` | string | Last update timestamp (ISO 8601) |
| ↳ `dueAt` | string | Scheduled publish time (ISO 8601) |
| ↳ `sentAt` | string | Publish timestamp (ISO 8601) |
| ↳ `externalLink` | string | Link to the published post on the social network |
| ↳ `error` | object | Publishing error details when the post failed |
| ↳ `message` | string | Error message |
| ↳ `supportUrl` | string | Support article URL |
| ↳ `rawError` | string | Raw error from the network |
| ↳ `assets` | array | Media attached to the post |
| ↳ `id` | string | Asset ID |
| ↳ `type` | string | Asset type |
| ↳ `mimeType` | string | MIME type of the asset |
| ↳ `source` | string | Source URL of the asset |
| ↳ `thumbnail` | string | Thumbnail URL of the asset |
| `pageInfo` | object | Pagination info for fetching the next page |
| ↳ `hasNextPage` | boolean | Whether more results are available |
| ↳ `endCursor` | string | Cursor to pass as "after" for the next page |
### Buffer Get Post [#buffer-get-post]
Get a single Buffer post by ID, including its status, schedule, and media
#### Input [#input-3]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------- |
| `apiKey` | string | Yes | Buffer API key |
| `postId` | string | Yes | ID of the post to fetch |
#### Output [#output-3]
| Parameter | Type | Description |
| --------------------- | ------- | --------------------------------------------------------------------- |
| `post` | object | The requested post |
| ↳ `id` | string | Post ID |
| ↳ `text` | string | Post text content |
| ↳ `status` | string | Post status (draft, needs\_approval, scheduled, sending, sent, error) |
| ↳ `via` | string | How the post was created (buffer, network, api) |
| ↳ `channelId` | string | Channel the post belongs to |
| ↳ `channelService` | string | Social network of the channel |
| ↳ `schedulingType` | string | How the post publishes (automatic or notification) |
| ↳ `shareMode` | string | Share mode used for the post |
| ↳ `isCustomScheduled` | boolean | Whether the post has a custom schedule |
| ↳ `sharedNow` | boolean | Whether the post was shared immediately |
| ↳ `createdAt` | string | Creation timestamp (ISO 8601) |
| ↳ `updatedAt` | string | Last update timestamp (ISO 8601) |
| ↳ `dueAt` | string | Scheduled publish time (ISO 8601) |
| ↳ `sentAt` | string | Publish timestamp (ISO 8601) |
| ↳ `externalLink` | string | Link to the published post on the social network |
| ↳ `error` | object | Publishing error details when the post failed |
| ↳ `message` | string | Error message |
| ↳ `supportUrl` | string | Support article URL |
| ↳ `rawError` | string | Raw error from the network |
| ↳ `assets` | array | Media attached to the post |
| ↳ `id` | string | Asset ID |
| ↳ `type` | string | Asset type |
| ↳ `mimeType` | string | MIME type of the asset |
| ↳ `source` | string | Source URL of the asset |
| ↳ `thumbnail` | string | Thumbnail URL of the asset |
### Buffer Delete Post [#buffer-delete-post]
Delete a Buffer post by ID
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------ |
| `apiKey` | string | Yes | Buffer API key |
| `postId` | string | Yes | ID of the post to delete |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ------- | ---------------------------- |
| `deleted` | boolean | Whether the post was deleted |
| `id` | string | ID of the deleted post |
### Buffer Get Channels [#buffer-get-channels]
List the social media channels connected to a Buffer organization, including their channel IDs (needed to create posts)
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------- |
| `apiKey` | string | Yes | Buffer API key |
| `organizationId` | string | Yes | Buffer organization ID (find it with the Get Account operation) |
#### Output [#output-5]
| Parameter | Type | Description |
| ------------------ | ------- | -------------------------------------------------- |
| `channels` | array | Channels connected to the organization |
| ↳ `id` | string | Channel ID |
| ↳ `name` | string | Channel name |
| ↳ `displayName` | string | Channel display name |
| ↳ `service` | string | Social network (instagram, linkedin, twitter, ...) |
| ↳ `serviceId` | string | ID of the account on the social network |
| ↳ `avatar` | string | Channel avatar URL |
| ↳ `timezone` | string | Channel timezone |
| ↳ `type` | string | Channel type (page, profile, business, ...) |
| ↳ `isQueuePaused` | boolean | Whether the posting queue is paused |
| ↳ `isDisconnected` | boolean | Whether the channel needs reconnection |
| ↳ `organizationId` | string | Organization the channel belongs to |
### Buffer Create Idea [#buffer-create-idea]
Save a content idea to a Buffer organization for later drafting and scheduling
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------- |
| `apiKey` | string | Yes | Buffer API key |
| `organizationId` | string | Yes | Buffer organization ID (find it with the Get Account operation) |
| `text` | string | Yes | Text content of the idea |
| `title` | string | No | Optional title for the idea |
| `groupId` | string | No | Optional idea group (board column) to place the idea in |
#### Output [#output-6]
| Parameter | Type | Description |
| ------------------ | ------ | -------------------------------- |
| `idea` | object | The created idea |
| ↳ `id` | string | Idea ID |
| ↳ `organizationId` | string | Organization the idea belongs to |
| ↳ `groupId` | string | Idea group ID |
| ↳ `title` | string | Idea title |
| ↳ `text` | string | Idea text content |
### Buffer Get Ideas [#buffer-get-ideas]
List content ideas saved in a Buffer organization
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------- |
| `apiKey` | string | Yes | Buffer API key |
| `organizationId` | string | Yes | Buffer organization ID (find it with the Get Account operation) |
| `limit` | number | No | Maximum number of ideas to return (default 20) |
| `after` | string | No | Pagination cursor from a previous page (pageInfo.endCursor) |
#### Output [#output-7]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------- |
| `ideas` | array | Content ideas in the organization |
| ↳ `id` | string | Idea ID |
| ↳ `organizationId` | string | Organization the idea belongs to |
| ↳ `groupId` | string | Idea group ID |
| ↳ `title` | string | Idea title |
| ↳ `text` | string | Idea text content |
| `pageInfo` | object | Pagination info for fetching the next page |
| ↳ `hasNextPage` | boolean | Whether more results are available |
| ↳ `endCursor` | string | Cursor to pass as "after" for the next page |
### Buffer Get Idea Groups [#buffer-get-idea-groups]
List idea groups (board columns) in a Buffer organization, including the group IDs used when creating ideas
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------- |
| `apiKey` | string | Yes | Buffer API key |
| `organizationId` | string | Yes | Buffer organization ID (find it with the Get Account operation) |
#### Output [#output-8]
| Parameter | Type | Description |
| ------------ | ------- | ----------------------------------------------- |
| `ideaGroups` | array | Idea groups (board columns) in the organization |
| ↳ `id` | string | Idea group ID |
| ↳ `name` | string | Idea group name |
| ↳ `isLocked` | boolean | Whether the group is locked |
### Buffer Get Account [#buffer-get-account]
Get the authenticated Buffer account, including its organizations and their IDs (needed for channel and post operations)
#### Input [#input-9]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------- |
| `apiKey` | string | Yes | Buffer API key |
#### Output [#output-9]
| Parameter | Type | Description |
| ----------------- | ------ | ------------------------------------ |
| `account` | object | The authenticated Buffer account |
| ↳ `id` | string | Account ID |
| ↳ `email` | string | Account email |
| ↳ `name` | string | Account holder name |
| ↳ `timezone` | string | Account timezone |
| ↳ `organizations` | array | Organizations the account belongs to |
| ↳ `id` | string | Organization ID |
| ↳ `name` | string | Organization name |
| ↳ `channelCount` | number | Number of connected channels |
| ↳ `ownerEmail` | string | Email of the organization owner |
---
# Cal.com API Keys (/integrations/calcom-service-account)
Cal.com service account credentials let your workflows authenticate to Cal.com with a pasted API key instead of a personal OAuth connection. The key carries the full permissions of the Cal.com user who created it, and it stays valid until it expires or is revoked — no OAuth consent to renew.
## Prerequisites [#prerequisites]
You need a Cal.com account (cal.com cloud). Any user can create API keys from their own settings — no admin role required.
Cal.com API keys are tied to the user who creates them. For production workflows, create the key from a dedicated service login (e.g. `sim-bot@yourcompany.com`) rather than a personal account — the credential then survives any individual employee leaving, and bookings and event types the workflows manage belong to the bot user.
## Creating the API Key [#creating-the-api-key]
Log in to Cal.com and go to **Settings** → **Developer** → **API keys** (direct link: [app.cal.com/settings/developer/api-keys](https://app.cal.com/settings/developer/api-keys))
{/* TODO(screenshot): Cal.com settings Developer section with the API keys page open */}
Click **+ Add**, give the key a name (e.g. `sim-workflows`), and set its expiry. Choose a non-expiring key if the option is available — otherwise pick the longest expiry offered and note the date so you can rotate before it lapses
{/* TODO(screenshot): Cal.com create API key dialog with name and expiry fields */}
Copy the key when it's shown. Cal.com only displays it once — if you close the dialog, you'll have to create a new key.
Live-mode keys start with `cal_live_`; test-mode keys start with `cal_`. Either form is accepted.
The API key carries the full privileges of the user who created it — there is no scope selection. Treat it like a password: do not commit it to source control or share it publicly. Sim encrypts the key at rest.
## Adding the Service Account to Sim [#adding-the-service-account-to-sim]
Open **Integrations** from your workspace sidebar
Search for "Cal.com" and open it, then click **Add to Sim** and choose **Add API key**
{/* TODO(screenshot): Cal.com integration page with the service-account connect option */}
Paste the API key, and optionally set a display name and description
{/* TODO(screenshot): Add Cal.com API key dialog with the API key filled in */}
Click **Add API key**. Sim verifies the key by calling Cal.com's `/v2/me` endpoint — if it fails, you'll see a specific error explaining what went wrong.
The key is encrypted before being stored.
## Using the Service Account in Workflows [#using-the-service-account-in-workflows]
Add a Cal.com block to your workflow. In the credential dropdown, your Cal.com service account appears alongside any OAuth credentials. Select it and configure the block as you normally would.
{/* TODO(screenshot): Cal.com block in a workflow with the Cal.com service account selected as the credential */}
The block calls Cal.com's API (`api.cal.com/v2`) with the key. The credential acts as the Cal.com user who created the key — bookings, event types, and schedules the workflows touch are the ones that user can see and manage.
---
# Cal.com (/integrations/calcom)
{/* MANUAL-CONTENT-START:intro */}
[Cal.com](https://cal.com/) is a flexible and open-source scheduling platform that makes it easy to manage appointments, bookings, event types, and team availabilities.
With Cal.com, you can:
* **Automate scheduling**: Allow users to view your available time slots and book meetings automatically, without back-and-forth emails.
* **Manage events**: Create and customize event types, durations, and rules for one-on-one or group meetings.
* **Integrate calendars**: Seamlessly connect with Google, Outlook, Apple, or other calendar providers to avoid double bookings.
* **Handle attendees and guests**: Collect attendee information, manage guests, and send invitations or reminders.
* **Control availability**: Define custom working hours, buffer times, and cancellation/rebooking rules.
* **Power workflows**: Trigger custom actions via webhooks when a booking is created, cancelled, or rescheduled.
In Sim, the Cal.com integration enables your agents to book meetings, check availabilities, manage event types, and automate scheduling tasks programmatically. This helps agents coordinate meetings, send bookings on behalf of users, check schedules, or respond to booking events—all without manual intervention. By connecting Sim with Cal.com, you unlock highly automated and intelligent scheduling workflows that can integrate seamlessly with your broader automation needs.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Cal.com into your workflow. Create and manage bookings, event types, schedules, and check availability slots. Supports creating, listing, rescheduling, and canceling bookings, as well as managing event types and schedules. Can also trigger workflows based on Cal.com webhook events (booking created, cancelled, rescheduled). Connect your Cal.com account via OAuth.
## Actions [#actions]
### Cal.com Create Booking [#calcom-create-booking]
Create a new booking on Cal.com
#### Input [#input]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `eventTypeId` | number | Yes | The ID of the event type to book |
| `start` | string | Yes | Start time in UTC ISO 8601 format (e.g., 2024-01-15T09:00:00Z) |
| `attendee` | object | Yes | Attendee information object with name, email, timeZone, and optional phoneNumber (constructed from individual attendee fields) |
| `guests` | array | No | Array of guest email addresses |
| `lengthInMinutes` | number | No | Duration of the booking in minutes (overrides event type default) |
| `metadata` | object | No | Custom metadata to attach to the booking |
#### Output [#output]
| Parameter | Type | Description |
| -------------------------- | ------- | ------------------------------------------------------------------------------- |
| `status` | string | Response status |
| `data` | object | Created booking details |
| ↳ `eventType` | object | Event type details |
| ↳ `id` | number | Event type ID |
| ↳ `slug` | string | Event type slug |
| ↳ `attendees` | array | List of attendees |
| ↳ `name` | string | Attendee name |
| ↳ `email` | string | Attendee actual email address |
| ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) |
| ↳ `timeZone` | string | Attendee timezone (IANA format) |
| ↳ `phoneNumber` | string | Attendee phone number |
| ↳ `language` | string | Attendee language preference (ISO code) |
| ↳ `absent` | boolean | Whether attendee was absent |
| ↳ `hosts` | array | List of hosts |
| ↳ `id` | number | Host user ID |
| ↳ `name` | string | Host display name |
| ↳ `email` | string | Host actual email address |
| ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) |
| ↳ `username` | string | Host Cal.com username |
| ↳ `timeZone` | string | Host timezone (IANA format) |
| ↳ `id` | number | Numeric booking ID |
| ↳ `uid` | string | Unique identifier for the booking |
| ↳ `title` | string | Title of the booking |
| ↳ `status` | string | Booking status (e.g., accepted, pending, cancelled) |
| ↳ `start` | string | Start time in ISO 8601 format |
| ↳ `end` | string | End time in ISO 8601 format |
| ↳ `duration` | number | Duration in minutes |
| ↳ `eventTypeId` | number | Event type ID |
| ↳ `meetingUrl` | string | URL to join the meeting |
| ↳ `location` | string | Location of the booking |
| ↳ `absentHost` | boolean | Whether the host was absent |
| ↳ `guests` | array | Guest email addresses |
| ↳ `bookingFieldsResponses` | json | Custom booking field responses (dynamic keys based on event type configuration) |
| ↳ `metadata` | json | Custom metadata attached to the booking (dynamic key-value pairs) |
| ↳ `icsUid` | string | ICS calendar UID |
| ↳ `createdAt` | string | When the booking was created |
### Cal.com Get Booking [#calcom-get-booking]
Get details of a specific booking by its UID
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | -------------------------------------- |
| `bookingUid` | string | Yes | Unique identifier (UID) of the booking |
#### Output [#output-1]
| Parameter | Type | Description |
| -------------------------- | ------- | ------------------------------------------------------------------------------- |
| `status` | string | Response status |
| `data` | object | Booking details |
| ↳ `eventType` | object | Event type details |
| ↳ `id` | number | Event type ID |
| ↳ `slug` | string | Event type slug |
| ↳ `attendees` | array | List of attendees |
| ↳ `name` | string | Attendee name |
| ↳ `email` | string | Attendee actual email address |
| ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) |
| ↳ `timeZone` | string | Attendee timezone (IANA format) |
| ↳ `phoneNumber` | string | Attendee phone number |
| ↳ `language` | string | Attendee language preference (ISO code) |
| ↳ `absent` | boolean | Whether attendee was absent |
| ↳ `hosts` | array | List of hosts |
| ↳ `id` | number | Host user ID |
| ↳ `name` | string | Host display name |
| ↳ `email` | string | Host actual email address |
| ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) |
| ↳ `username` | string | Host Cal.com username |
| ↳ `timeZone` | string | Host timezone (IANA format) |
| ↳ `id` | number | Numeric booking ID |
| ↳ `uid` | string | Unique identifier for the booking |
| ↳ `title` | string | Title of the booking |
| ↳ `description` | string | Description of the booking |
| ↳ `status` | string | Booking status (e.g., accepted, pending, cancelled) |
| ↳ `start` | string | Start time in ISO 8601 format |
| ↳ `end` | string | End time in ISO 8601 format |
| ↳ `duration` | number | Duration in minutes |
| ↳ `eventTypeId` | number | Event type ID |
| ↳ `meetingUrl` | string | URL to join the meeting |
| ↳ `location` | string | Location of the booking |
| ↳ `absentHost` | boolean | Whether the host was absent |
| ↳ `guests` | array | Guest email addresses |
| ↳ `bookingFieldsResponses` | json | Custom booking field responses (dynamic keys based on event type configuration) |
| ↳ `metadata` | json | Custom metadata attached to the booking (dynamic key-value pairs) |
| ↳ `rating` | number | Booking rating |
| ↳ `icsUid` | string | ICS calendar UID |
| ↳ `cancellationReason` | string | Reason for cancellation if cancelled |
| ↳ `reschedulingReason` | string | Reason for rescheduling if rescheduled |
| ↳ `rescheduledFromUid` | string | Original booking UID if this booking was rescheduled |
| ↳ `rescheduledToUid` | string | New booking UID after reschedule |
| ↳ `cancelledByEmail` | string | Email of person who cancelled the booking |
| ↳ `rescheduledByEmail` | string | Email of person who rescheduled the booking |
| ↳ `createdAt` | string | When the booking was created |
| ↳ `updatedAt` | string | When the booking was last updated |
### Cal.com List Bookings [#calcom-list-bookings]
List all bookings with optional status filter
#### Input [#input-2]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `status` | string | No | Filter bookings by status: upcoming, recurring, past, cancelled, or unconfirmed |
| `take` | number | No | Number of bookings to return (pagination limit) |
| `skip` | number | No | Number of bookings to skip (pagination offset) |
#### Output [#output-2]
| Parameter | Type | Description |
| -------------------------- | ------- | ------------------------------------------------------------------------------- |
| `status` | string | Response status |
| `data` | array | Array of bookings |
| ↳ `eventType` | object | Event type details |
| ↳ `id` | number | Event type ID |
| ↳ `slug` | string | Event type slug |
| ↳ `attendees` | array | List of attendees |
| ↳ `name` | string | Attendee name |
| ↳ `email` | string | Attendee actual email address |
| ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) |
| ↳ `timeZone` | string | Attendee timezone (IANA format) |
| ↳ `phoneNumber` | string | Attendee phone number |
| ↳ `language` | string | Attendee language preference (ISO code) |
| ↳ `absent` | boolean | Whether attendee was absent |
| ↳ `hosts` | array | List of hosts |
| ↳ `id` | number | Host user ID |
| ↳ `name` | string | Host display name |
| ↳ `email` | string | Host actual email address |
| ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) |
| ↳ `username` | string | Host Cal.com username |
| ↳ `timeZone` | string | Host timezone (IANA format) |
| ↳ `id` | number | Numeric booking ID |
| ↳ `uid` | string | Unique identifier for the booking |
| ↳ `title` | string | Title of the booking |
| ↳ `description` | string | Description of the booking |
| ↳ `status` | string | Booking status (e.g., accepted, pending, cancelled) |
| ↳ `start` | string | Start time in ISO 8601 format |
| ↳ `end` | string | End time in ISO 8601 format |
| ↳ `duration` | number | Duration in minutes |
| ↳ `eventTypeId` | number | Event type ID |
| ↳ `meetingUrl` | string | URL to join the meeting |
| ↳ `location` | string | Location of the booking |
| ↳ `absentHost` | boolean | Whether the host was absent |
| ↳ `guests` | array | Guest email addresses |
| ↳ `bookingFieldsResponses` | json | Custom booking field responses (dynamic keys based on event type configuration) |
| ↳ `metadata` | json | Custom metadata attached to the booking (dynamic key-value pairs) |
| ↳ `rating` | number | Booking rating |
| ↳ `icsUid` | string | ICS calendar UID |
| ↳ `cancellationReason` | string | Reason for cancellation if cancelled |
| ↳ `cancelledByEmail` | string | Email of person who cancelled the booking |
| ↳ `reschedulingReason` | string | Reason for rescheduling if rescheduled |
| ↳ `rescheduledByEmail` | string | Email of person who rescheduled the booking |
| ↳ `rescheduledFromUid` | string | Original booking UID if this booking was rescheduled |
| ↳ `rescheduledToUid` | string | New booking UID after reschedule |
| ↳ `createdAt` | string | When the booking was created |
| ↳ `updatedAt` | string | When the booking was last updated |
| `pagination` | object | Pagination metadata |
| ↳ `totalItems` | number | Total number of items |
| ↳ `remainingItems` | number | Remaining items after current page |
| ↳ `returnedItems` | number | Number of items returned in this response |
| ↳ `itemsPerPage` | number | Items per page |
| ↳ `currentPage` | number | Current page number |
| ↳ `totalPages` | number | Total number of pages |
| ↳ `hasNextPage` | boolean | Whether there is a next page |
| ↳ `hasPreviousPage` | boolean | Whether there is a previous page |
### Cal.com Cancel Booking [#calcom-cancel-booking]
Cancel an existing booking
#### Input [#input-3]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------------------------------------------ |
| `bookingUid` | string | Yes | Unique identifier (UID) of the booking to cancel |
| `cancellationReason` | string | No | Reason for cancelling the booking |
#### Output [#output-3]
| Parameter | Type | Description |
| ---------------------- | ------- | ----------------------------------------------------------------- |
| `status` | string | Response status |
| `data` | object | Cancelled booking details |
| ↳ `eventType` | object | Event type details |
| ↳ `id` | number | Event type ID |
| ↳ `slug` | string | Event type slug |
| ↳ `attendees` | array | List of attendees |
| ↳ `name` | string | Attendee name |
| ↳ `email` | string | Attendee actual email address |
| ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) |
| ↳ `timeZone` | string | Attendee timezone (IANA format) |
| ↳ `phoneNumber` | string | Attendee phone number |
| ↳ `language` | string | Attendee language preference (ISO code) |
| ↳ `absent` | boolean | Whether attendee was absent |
| ↳ `hosts` | array | List of hosts |
| ↳ `id` | number | Host user ID |
| ↳ `name` | string | Host display name |
| ↳ `email` | string | Host actual email address |
| ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) |
| ↳ `username` | string | Host Cal.com username |
| ↳ `timeZone` | string | Host timezone (IANA format) |
| ↳ `id` | number | Numeric booking ID |
| ↳ `uid` | string | Unique identifier for the booking |
| ↳ `title` | string | Title of the booking |
| ↳ `cancellationReason` | string | Reason for cancellation if cancelled |
| ↳ `cancelledByEmail` | string | Email of person who cancelled the booking |
| ↳ `start` | string | Start time in ISO 8601 format |
| ↳ `end` | string | End time in ISO 8601 format |
| ↳ `duration` | number | Duration in minutes |
| ↳ `eventTypeId` | number | Event type ID |
| ↳ `location` | string | Location of the booking |
| ↳ `metadata` | json | Custom metadata attached to the booking (dynamic key-value pairs) |
| ↳ `createdAt` | string | When the booking was created |
| ↳ `status` | string | Booking status (should be cancelled) |
### Cal.com Reschedule Booking [#calcom-reschedule-booking]
Reschedule an existing booking to a new time
#### Input [#input-4]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------------------------------------------------------------ |
| `bookingUid` | string | Yes | Unique identifier (UID) of the booking to reschedule |
| `start` | string | Yes | New start time in UTC ISO 8601 format (e.g., 2024-01-15T09:00:00Z) |
| `reschedulingReason` | string | No | Reason for rescheduling the booking |
#### Output [#output-4]
| Parameter | Type | Description |
| ---------------------- | ------- | ----------------------------------------------------------------- |
| `status` | string | Response status |
| `data` | object | Rescheduled booking details |
| ↳ `eventType` | object | Event type details |
| ↳ `id` | number | Event type ID |
| ↳ `slug` | string | Event type slug |
| ↳ `attendees` | array | List of attendees |
| ↳ `name` | string | Attendee name |
| ↳ `email` | string | Attendee actual email address |
| ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) |
| ↳ `timeZone` | string | Attendee timezone (IANA format) |
| ↳ `phoneNumber` | string | Attendee phone number |
| ↳ `language` | string | Attendee language preference (ISO code) |
| ↳ `absent` | boolean | Whether attendee was absent |
| ↳ `hosts` | array | List of hosts |
| ↳ `id` | number | Host user ID |
| ↳ `name` | string | Host display name |
| ↳ `email` | string | Host actual email address |
| ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) |
| ↳ `username` | string | Host Cal.com username |
| ↳ `timeZone` | string | Host timezone (IANA format) |
| ↳ `id` | number | Numeric booking ID |
| ↳ `title` | string | Title of the booking |
| ↳ `status` | string | Booking status (e.g., accepted, pending, cancelled) |
| ↳ `reschedulingReason` | string | Reason for rescheduling if rescheduled |
| ↳ `rescheduledFromUid` | string | Original booking UID if this booking was rescheduled |
| ↳ `rescheduledByEmail` | string | Email of person who rescheduled the booking |
| ↳ `duration` | number | Duration in minutes |
| ↳ `eventTypeId` | number | Event type ID |
| ↳ `meetingUrl` | string | URL to join the meeting |
| ↳ `location` | string | Location of the booking |
| ↳ `guests` | array | Guest email addresses |
| ↳ `metadata` | json | Custom metadata attached to the booking (dynamic key-value pairs) |
| ↳ `icsUid` | string | ICS calendar UID |
| ↳ `createdAt` | string | When the booking was created |
| ↳ `uid` | string | Unique identifier for the new booking |
| ↳ `start` | string | New start time in ISO 8601 format |
| ↳ `end` | string | New end time in ISO 8601 format |
### Cal.com Confirm Booking [#calcom-confirm-booking]
Confirm a pending booking that requires confirmation
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------- |
| `bookingUid` | string | Yes | Unique identifier (UID) of the booking to confirm |
#### Output [#output-5]
| Parameter | Type | Description |
| ---------------- | ------- | ----------------------------------------------------------------- |
| `status` | string | Response status |
| `data` | object | Confirmed booking details |
| ↳ `eventType` | object | Event type details |
| ↳ `id` | number | Event type ID |
| ↳ `slug` | string | Event type slug |
| ↳ `attendees` | array | List of attendees |
| ↳ `name` | string | Attendee name |
| ↳ `email` | string | Attendee actual email address |
| ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) |
| ↳ `timeZone` | string | Attendee timezone (IANA format) |
| ↳ `phoneNumber` | string | Attendee phone number |
| ↳ `language` | string | Attendee language preference (ISO code) |
| ↳ `absent` | boolean | Whether attendee was absent |
| ↳ `hosts` | array | List of hosts |
| ↳ `id` | number | Host user ID |
| ↳ `name` | string | Host display name |
| ↳ `email` | string | Host actual email address |
| ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) |
| ↳ `username` | string | Host Cal.com username |
| ↳ `timeZone` | string | Host timezone (IANA format) |
| ↳ `id` | number | Numeric booking ID |
| ↳ `uid` | string | Unique identifier for the booking |
| ↳ `title` | string | Title of the booking |
| ↳ `start` | string | Start time in ISO 8601 format |
| ↳ `end` | string | End time in ISO 8601 format |
| ↳ `duration` | number | Duration in minutes |
| ↳ `eventTypeId` | number | Event type ID |
| ↳ `meetingUrl` | string | URL to join the meeting |
| ↳ `location` | string | Location of the booking |
| ↳ `guests` | array | Guest email addresses |
| ↳ `metadata` | json | Custom metadata attached to the booking (dynamic key-value pairs) |
| ↳ `icsUid` | string | ICS calendar UID |
| ↳ `createdAt` | string | When the booking was created |
| ↳ `status` | string | Booking status (should be accepted/confirmed) |
### Cal.com Decline Booking [#calcom-decline-booking]
Decline a pending booking request
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------- |
| `bookingUid` | string | Yes | Unique identifier (UID) of the booking to decline |
| `reason` | string | No | Reason for declining the booking |
#### Output [#output-6]
| Parameter | Type | Description |
| ---------------------- | ------- | ----------------------------------------------------------------- |
| `status` | string | Response status |
| `data` | object | Declined booking details |
| ↳ `eventType` | object | Event type details |
| ↳ `id` | number | Event type ID |
| ↳ `slug` | string | Event type slug |
| ↳ `attendees` | array | List of attendees |
| ↳ `name` | string | Attendee name |
| ↳ `email` | string | Attendee actual email address |
| ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) |
| ↳ `timeZone` | string | Attendee timezone (IANA format) |
| ↳ `phoneNumber` | string | Attendee phone number |
| ↳ `language` | string | Attendee language preference (ISO code) |
| ↳ `absent` | boolean | Whether attendee was absent |
| ↳ `hosts` | array | List of hosts |
| ↳ `id` | number | Host user ID |
| ↳ `name` | string | Host display name |
| ↳ `email` | string | Host actual email address |
| ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) |
| ↳ `username` | string | Host Cal.com username |
| ↳ `timeZone` | string | Host timezone (IANA format) |
| ↳ `id` | number | Numeric booking ID |
| ↳ `uid` | string | Unique identifier for the booking |
| ↳ `title` | string | Title of the booking |
| ↳ `cancellationReason` | string | Reason for cancellation if cancelled |
| ↳ `start` | string | Start time in ISO 8601 format |
| ↳ `end` | string | End time in ISO 8601 format |
| ↳ `duration` | number | Duration in minutes |
| ↳ `eventTypeId` | number | Event type ID |
| ↳ `location` | string | Location of the booking |
| ↳ `metadata` | json | Custom metadata attached to the booking (dynamic key-value pairs) |
| ↳ `createdAt` | string | When the booking was created |
| ↳ `status` | string | Booking status (should be cancelled/rejected) |
### Cal.com Create Event Type [#calcom-create-event-type]
Create a new event type in Cal.com
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ---------------------- | ------- | -------- | ------------------------------------------------------ |
| `title` | string | Yes | Title of the event type |
| `slug` | string | Yes | Unique slug for the event type URL |
| `lengthInMinutes` | number | Yes | Duration of the event in minutes |
| `description` | string | No | Description of the event type |
| `slotInterval` | number | No | Interval between available booking slots in minutes |
| `minimumBookingNotice` | number | No | Minimum notice required before booking in minutes |
| `beforeEventBuffer` | number | No | Buffer time before the event in minutes |
| `afterEventBuffer` | number | No | Buffer time after the event in minutes |
| `scheduleId` | number | No | ID of the schedule to use for availability |
| `disableGuests` | boolean | No | Whether to disable guests from being added to bookings |
#### Output [#output-7]
| Parameter | Type | Description |
| ------------------------ | ------- | --------------------------------- |
| `status` | string | Response status |
| `data` | object | Created event type details |
| ↳ `id` | number | Event type ID |
| ↳ `title` | string | Event type title |
| ↳ `slug` | string | Event type slug |
| ↳ `description` | string | Event type description |
| ↳ `lengthInMinutes` | number | Duration in minutes |
| ↳ `slotInterval` | number | Slot interval in minutes |
| ↳ `minimumBookingNotice` | number | Minimum booking notice in minutes |
| ↳ `beforeEventBuffer` | number | Buffer before event in minutes |
| ↳ `afterEventBuffer` | number | Buffer after event in minutes |
| ↳ `scheduleId` | number | Schedule ID |
| ↳ `disableGuests` | boolean | Whether guests are disabled |
| ↳ `createdAt` | string | ISO timestamp of creation |
| ↳ `updatedAt` | string | ISO timestamp of last update |
### Cal.com Get Event Type [#calcom-get-event-type]
Get detailed information about a specific event type
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------- |
| `eventTypeId` | number | Yes | Event type ID to retrieve |
#### Output [#output-8]
| Parameter | Type | Description |
| ------------------------ | ------- | --------------------------------- |
| `status` | string | Response status |
| `data` | object | Event type details |
| ↳ `id` | number | Event type ID |
| ↳ `title` | string | Event type title |
| ↳ `slug` | string | Event type slug |
| ↳ `description` | string | Event type description |
| ↳ `lengthInMinutes` | number | Duration in minutes |
| ↳ `slotInterval` | number | Slot interval in minutes |
| ↳ `minimumBookingNotice` | number | Minimum booking notice in minutes |
| ↳ `beforeEventBuffer` | number | Buffer before event in minutes |
| ↳ `afterEventBuffer` | number | Buffer after event in minutes |
| ↳ `scheduleId` | number | Schedule ID |
| ↳ `disableGuests` | boolean | Whether guests are disabled |
| ↳ `createdAt` | string | ISO timestamp of creation |
| ↳ `updatedAt` | string | ISO timestamp of last update |
### Cal.com List Event Types [#calcom-list-event-types]
Retrieve a list of all event types
#### Input [#input-9]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | -------------------------------------- |
| `sortCreatedAt` | string | No | Sort by creation date: "asc" or "desc" |
#### Output [#output-9]
| Parameter | Type | Description |
| ------------------------ | ------- | --------------------------------- |
| `status` | string | Response status |
| `data` | array | Array of event types |
| ↳ `id` | number | Event type ID |
| ↳ `title` | string | Event type title |
| ↳ `slug` | string | Event type slug |
| ↳ `description` | string | Event type description |
| ↳ `lengthInMinutes` | number | Duration in minutes |
| ↳ `slotInterval` | number | Slot interval in minutes |
| ↳ `minimumBookingNotice` | number | Minimum booking notice in minutes |
| ↳ `beforeEventBuffer` | number | Buffer before event in minutes |
| ↳ `afterEventBuffer` | number | Buffer after event in minutes |
| ↳ `scheduleId` | number | Schedule ID |
| ↳ `disableGuests` | boolean | Whether guests are disabled |
| ↳ `createdAt` | string | ISO timestamp of creation |
| ↳ `updatedAt` | string | ISO timestamp of last update |
### Cal.com Update Event Type [#calcom-update-event-type]
Update an existing event type in Cal.com
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ---------------------- | ------- | -------- | ------------------------------------------------------ |
| `eventTypeId` | number | Yes | Event type ID to update (e.g., 12345) |
| `title` | string | No | Title of the event type |
| `slug` | string | No | Unique slug for the event type URL |
| `lengthInMinutes` | number | No | Duration of the event in minutes |
| `description` | string | No | Description of the event type |
| `slotInterval` | number | No | Interval between available booking slots in minutes |
| `minimumBookingNotice` | number | No | Minimum notice required before booking in minutes |
| `beforeEventBuffer` | number | No | Buffer time before the event in minutes |
| `afterEventBuffer` | number | No | Buffer time after the event in minutes |
| `scheduleId` | number | No | ID of the schedule to use for availability |
| `disableGuests` | boolean | No | Whether to disable guests from being added to bookings |
#### Output [#output-10]
| Parameter | Type | Description |
| ------------------------ | ------- | --------------------------------- |
| `status` | string | Response status |
| `data` | object | Updated event type details |
| ↳ `id` | number | Event type ID |
| ↳ `title` | string | Event type title |
| ↳ `slug` | string | Event type slug |
| ↳ `description` | string | Event type description |
| ↳ `lengthInMinutes` | number | Duration in minutes |
| ↳ `slotInterval` | number | Slot interval in minutes |
| ↳ `minimumBookingNotice` | number | Minimum booking notice in minutes |
| ↳ `beforeEventBuffer` | number | Buffer before event in minutes |
| ↳ `afterEventBuffer` | number | Buffer after event in minutes |
| ↳ `scheduleId` | number | Schedule ID |
| ↳ `disableGuests` | boolean | Whether guests are disabled |
| ↳ `createdAt` | string | ISO timestamp of creation |
| ↳ `updatedAt` | string | ISO timestamp of last update |
### Cal.com Delete Event Type [#calcom-delete-event-type]
Delete an event type from Cal.com
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ----------------------- |
| `eventTypeId` | number | Yes | Event type ID to delete |
#### Output [#output-11]
| Parameter | Type | Description |
| ------------------- | ------ | -------------------------- |
| `status` | string | Response status |
| `data` | object | Deleted event type details |
| ↳ `id` | number | Event type ID |
| ↳ `lengthInMinutes` | number | Duration in minutes |
| ↳ `title` | string | Event type title |
| ↳ `slug` | string | Event type slug |
### Cal.com Create Schedule [#calcom-create-schedule]
Create a new availability schedule in Cal.com
#### Input [#input-12]
| Parameter | Type | Required | Description |
| -------------- | ------- | -------- | --------------------------------------------------- |
| `name` | string | Yes | Name of the schedule |
| `timeZone` | string | Yes | Timezone for the schedule (e.g., America/New\_York) |
| `isDefault` | boolean | Yes | Whether this schedule should be the default |
| `availability` | array | No | Availability intervals for the schedule |
#### Output [#output-12]
| Parameter | Type | Description |
| ---------------- | ------- | ---------------------------------------- |
| `status` | string | Response status |
| `data` | object | Created schedule data |
| ↳ `id` | number | Schedule ID |
| ↳ `ownerId` | number | Owner user ID |
| ↳ `name` | string | Schedule name |
| ↳ `timeZone` | string | Timezone (e.g., America/New\_York) |
| ↳ `isDefault` | boolean | Whether this is the default schedule |
| ↳ `availability` | array | Availability windows |
| ↳ `days` | array | Days of the week (Monday, Tuesday, etc.) |
| ↳ `startTime` | string | Start time in HH:MM format |
| ↳ `endTime` | string | End time in HH:MM format |
| ↳ `overrides` | array | Date-specific availability overrides |
| ↳ `date` | string | Date in YYYY-MM-DD format |
| ↳ `startTime` | string | Start time in HH:MM format |
| ↳ `endTime` | string | End time in HH:MM format |
### Cal.com Get Schedule [#calcom-get-schedule]
Get a specific schedule by ID from Cal.com
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------ |
| `scheduleId` | string | Yes | ID of the schedule to retrieve |
#### Output [#output-13]
| Parameter | Type | Description |
| ---------------- | ------- | ---------------------------------------- |
| `status` | string | Response status |
| `data` | object | Schedule data |
| ↳ `id` | number | Schedule ID |
| ↳ `ownerId` | number | Owner user ID |
| ↳ `name` | string | Schedule name |
| ↳ `timeZone` | string | Timezone (e.g., America/New\_York) |
| ↳ `isDefault` | boolean | Whether this is the default schedule |
| ↳ `availability` | array | Availability windows |
| ↳ `days` | array | Days of the week (Monday, Tuesday, etc.) |
| ↳ `startTime` | string | Start time in HH:MM format |
| ↳ `endTime` | string | End time in HH:MM format |
| ↳ `overrides` | array | Date-specific availability overrides |
| ↳ `date` | string | Date in YYYY-MM-DD format |
| ↳ `startTime` | string | Start time in HH:MM format |
| ↳ `endTime` | string | End time in HH:MM format |
### Cal.com List Schedules [#calcom-list-schedules]
List all availability schedules from Cal.com
#### Input [#input-14]
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
#### Output [#output-14]
| Parameter | Type | Description |
| ---------------- | ------- | ---------------------------------------- |
| `status` | string | Response status |
| `data` | array | Array of schedule objects |
| ↳ `id` | number | Schedule ID |
| ↳ `ownerId` | number | Owner user ID |
| ↳ `name` | string | Schedule name |
| ↳ `timeZone` | string | Timezone (e.g., America/New\_York) |
| ↳ `isDefault` | boolean | Whether this is the default schedule |
| ↳ `availability` | array | Availability windows |
| ↳ `days` | array | Days of the week (Monday, Tuesday, etc.) |
| ↳ `startTime` | string | Start time in HH:MM format |
| ↳ `endTime` | string | End time in HH:MM format |
| ↳ `overrides` | array | Date-specific availability overrides |
| ↳ `date` | string | Date in YYYY-MM-DD format |
| ↳ `startTime` | string | Start time in HH:MM format |
| ↳ `endTime` | string | End time in HH:MM format |
### Cal.com Update Schedule [#calcom-update-schedule]
Update an existing schedule in Cal.com
#### Input [#input-15]
| Parameter | Type | Required | Description |
| -------------- | ------- | -------- | ------------------------------------------------------- |
| `scheduleId` | string | Yes | ID of the schedule to update |
| `name` | string | No | New name for the schedule |
| `timeZone` | string | No | New timezone for the schedule (e.g., America/New\_York) |
| `isDefault` | boolean | No | Whether this schedule should be the default |
| `availability` | array | No | New availability intervals for the schedule |
#### Output [#output-15]
| Parameter | Type | Description |
| ---------------- | ------- | ---------------------------------------- |
| `status` | string | Response status |
| `data` | object | Updated schedule data |
| ↳ `id` | number | Schedule ID |
| ↳ `ownerId` | number | Owner user ID |
| ↳ `name` | string | Schedule name |
| ↳ `timeZone` | string | Timezone (e.g., America/New\_York) |
| ↳ `isDefault` | boolean | Whether this is the default schedule |
| ↳ `availability` | array | Availability windows |
| ↳ `days` | array | Days of the week (Monday, Tuesday, etc.) |
| ↳ `startTime` | string | Start time in HH:MM format |
| ↳ `endTime` | string | End time in HH:MM format |
| ↳ `overrides` | array | Date-specific availability overrides |
| ↳ `date` | string | Date in YYYY-MM-DD format |
| ↳ `startTime` | string | Start time in HH:MM format |
| ↳ `endTime` | string | End time in HH:MM format |
### Cal.com Delete Schedule [#calcom-delete-schedule]
Delete a schedule from Cal.com
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ---------------------------- |
| `scheduleId` | string | Yes | ID of the schedule to delete |
#### Output [#output-16]
| Parameter | Type | Description |
| --------- | ------ | ---------------------------------- |
| `status` | string | Response status (success or error) |
### Cal.com Get Default Schedule [#calcom-get-default-schedule]
Get the default availability schedule from Cal.com
#### Input [#input-17]
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
#### Output [#output-17]
| Parameter | Type | Description |
| ---------------- | ------- | ---------------------------------------- |
| `status` | string | Response status |
| `data` | object | Default schedule data |
| ↳ `id` | number | Schedule ID |
| ↳ `ownerId` | number | Owner user ID |
| ↳ `name` | string | Schedule name |
| ↳ `timeZone` | string | Timezone (e.g., America/New\_York) |
| ↳ `isDefault` | boolean | Whether this is the default schedule |
| ↳ `availability` | array | Availability windows |
| ↳ `days` | array | Days of the week (Monday, Tuesday, etc.) |
| ↳ `startTime` | string | Start time in HH:MM format |
| ↳ `endTime` | string | End time in HH:MM format |
| ↳ `overrides` | array | Date-specific availability overrides |
| ↳ `date` | string | Date in YYYY-MM-DD format |
| ↳ `startTime` | string | Start time in HH:MM format |
| ↳ `endTime` | string | End time in HH:MM format |
### Cal.com Get Slots [#calcom-get-slots]
Get available booking slots for a Cal.com event type within a time range
#### Input [#input-18]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ----------------------------------------------------------------------- |
| `start` | string | Yes | Start of time range in UTC ISO 8601 format (e.g., 2024-01-15T00:00:00Z) |
| `end` | string | Yes | End of time range in UTC ISO 8601 format (e.g., 2024-01-22T00:00:00Z) |
| `eventTypeId` | number | No | Event type ID for direct lookup |
| `eventTypeSlug` | string | No | Event type slug (requires username to be set) |
| `username` | string | No | Username for personal event types (required when using eventTypeSlug) |
| `timeZone` | string | No | Timezone for returned slots (defaults to UTC) |
| `duration` | number | No | Slot length in minutes |
#### Output [#output-18]
| Parameter | Type | Description |
| --------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `status` | string | Response status |
| `data` | json | Available time slots grouped by date (YYYY-MM-DD keys). Each date maps to an array of slot objects with start time, optional end time, and seated event info. |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
### CalCom Booking Cancelled [#calcom-booking-cancelled]
Trigger workflow when a booking is cancelled in Cal.com
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | --------------------------------------------------------------- |
| `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. |
#### Output [#output-19]
| Parameter | Type | Description |
| ---------------------- | ------ | --------------------------------------------- |
| `triggerEvent` | string | The webhook event type |
| `createdAt` | string | When the webhook event was created (ISO 8601) |
| `payload` | object | payload output from the tool |
| ↳ `title` | string | Booking title |
| ↳ `description` | string | Booking description |
| ↳ `eventTypeId` | number | Event type ID |
| ↳ `startTime` | string | Booking start time (ISO 8601) |
| ↳ `endTime` | string | Booking end time (ISO 8601) |
| ↳ `uid` | string | Unique booking identifier |
| ↳ `bookingId` | number | Numeric booking ID |
| ↳ `status` | string | Booking status |
| ↳ `location` | string | Meeting location or URL |
| ↳ `cancellationReason` | string | Reason for cancellation |
| ↳ `organizer` | object | Organizer details |
| ↳ `id` | number | Organizer user ID |
| ↳ `name` | string | Organizer name |
| ↳ `email` | string | Organizer email |
| ↳ `username` | string | Organizer username |
| ↳ `timeZone` | string | Organizer timezone |
| ↳ `attendees` | array | List of attendees |
| ↳ `name` | string | Attendee name |
| ↳ `email` | string | Attendee email |
| ↳ `timeZone` | string | Attendee timezone |
| ↳ `language` | string | Attendee language preference |
| ↳ `responses` | json | Booking form responses |
| ↳ `metadata` | json | Custom metadata attached to the booking |
***
### CalCom Booking Created [#calcom-booking-created]
Trigger workflow when a new booking is created in Cal.com
#### Configuration [#configuration-1]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | --------------------------------------------------------------- |
| `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. |
#### Output [#output-20]
| Parameter | Type | Description |
| ----------------- | ------ | --------------------------------------------------------------------------------- |
| `triggerEvent` | string | The webhook event type |
| `createdAt` | string | When the webhook event was created (ISO 8601) |
| `payload` | object | payload output from the tool |
| ↳ `title` | string | Booking title |
| ↳ `description` | string | Booking description |
| ↳ `eventTypeId` | number | Event type ID |
| ↳ `startTime` | string | Booking start time (ISO 8601) |
| ↳ `endTime` | string | Booking end time (ISO 8601) |
| ↳ `uid` | string | Unique booking identifier |
| ↳ `bookingId` | number | Numeric booking ID |
| ↳ `status` | string | Booking status |
| ↳ `location` | string | Meeting location or URL |
| ↳ `organizer` | object | Organizer details |
| ↳ `id` | number | Organizer user ID |
| ↳ `name` | string | Organizer name |
| ↳ `email` | string | Organizer email |
| ↳ `username` | string | Organizer username |
| ↳ `timeZone` | string | Organizer timezone |
| ↳ `attendees` | array | List of attendees |
| ↳ `name` | string | Attendee name |
| ↳ `email` | string | Attendee email |
| ↳ `timeZone` | string | Attendee timezone |
| ↳ `language` | string | Attendee language preference |
| ↳ `responses` | json | Booking form responses (dynamic - fields depend on your event type configuration) |
| ↳ `metadata` | json | Custom metadata attached to the booking (dynamic - user-defined key-value pairs) |
| ↳ `videoCallData` | json | Video call details (structure varies by provider) |
***
### CalCom Booking Paid [#calcom-booking-paid]
Trigger workflow when payment is completed for a paid booking
#### Configuration [#configuration-2]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | --------------------------------------------------------------- |
| `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. |
#### Output [#output-21]
| Parameter | Type | Description |
| --------------- | ------- | --------------------------------------------- |
| `triggerEvent` | string | The webhook event type (BOOKING\_PAID) |
| `createdAt` | string | When the webhook event was created (ISO 8601) |
| `payload` | object | payload output from the tool |
| ↳ `title` | string | Booking title |
| ↳ `description` | string | Booking description |
| ↳ `eventTypeId` | number | Event type ID |
| ↳ `startTime` | string | Booking start time (ISO 8601) |
| ↳ `endTime` | string | Booking end time (ISO 8601) |
| ↳ `uid` | string | Unique booking identifier |
| ↳ `bookingId` | number | Numeric booking ID |
| ↳ `status` | string | Booking status |
| ↳ `location` | string | Meeting location or URL |
| ↳ `payment` | object | Payment details |
| ↳ `id` | string | Payment ID |
| ↳ `amount` | number | Payment amount |
| ↳ `currency` | string | Payment currency |
| ↳ `success` | boolean | Whether payment succeeded |
| ↳ `organizer` | object | Organizer details |
| ↳ `id` | number | Organizer user ID |
| ↳ `name` | string | Organizer name |
| ↳ `email` | string | Organizer email |
| ↳ `username` | string | Organizer username |
| ↳ `timeZone` | string | Organizer timezone |
| ↳ `attendees` | array | List of attendees |
| ↳ `name` | string | Attendee name |
| ↳ `email` | string | Attendee email |
| ↳ `timeZone` | string | Attendee timezone |
| ↳ `language` | string | Attendee language preference |
| ↳ `metadata` | json | Custom metadata attached to the booking |
***
### CalCom Booking Rejected [#calcom-booking-rejected]
Trigger workflow when a booking request is rejected by the host
#### Configuration [#configuration-3]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | --------------------------------------------------------------- |
| `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. |
#### Output [#output-22]
| Parameter | Type | Description |
| ------------------- | ------ | --------------------------------------------- |
| `triggerEvent` | string | The webhook event type (BOOKING\_REJECTED) |
| `createdAt` | string | When the webhook event was created (ISO 8601) |
| `payload` | object | payload output from the tool |
| ↳ `title` | string | Booking title |
| ↳ `description` | string | Booking description |
| ↳ `eventTypeId` | number | Event type ID |
| ↳ `startTime` | string | Requested start time (ISO 8601) |
| ↳ `endTime` | string | Requested end time (ISO 8601) |
| ↳ `uid` | string | Unique booking identifier |
| ↳ `bookingId` | number | Numeric booking ID |
| ↳ `status` | string | Booking status (rejected) |
| ↳ `rejectionReason` | string | Reason for rejection provided by host |
| ↳ `organizer` | object | Organizer details |
| ↳ `id` | number | Organizer user ID |
| ↳ `name` | string | Organizer name |
| ↳ `email` | string | Organizer email |
| ↳ `username` | string | Organizer username |
| ↳ `timeZone` | string | Organizer timezone |
| ↳ `attendees` | array | List of attendees |
| ↳ `name` | string | Attendee name |
| ↳ `email` | string | Attendee email |
| ↳ `timeZone` | string | Attendee timezone |
| ↳ `language` | string | Attendee language preference |
| ↳ `metadata` | json | Custom metadata attached to the booking |
***
### CalCom Booking Requested [#calcom-booking-requested]
Trigger workflow when a booking request is submitted (pending confirmation)
#### Configuration [#configuration-4]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | --------------------------------------------------------------- |
| `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. |
#### Output [#output-23]
| Parameter | Type | Description |
| --------------- | ------ | --------------------------------------------- |
| `triggerEvent` | string | The webhook event type (BOOKING\_REQUESTED) |
| `createdAt` | string | When the webhook event was created (ISO 8601) |
| `payload` | object | payload output from the tool |
| ↳ `title` | string | Booking title |
| ↳ `description` | string | Booking description |
| ↳ `eventTypeId` | number | Event type ID |
| ↳ `startTime` | string | Requested start time (ISO 8601) |
| ↳ `endTime` | string | Requested end time (ISO 8601) |
| ↳ `uid` | string | Unique booking identifier |
| ↳ `bookingId` | number | Numeric booking ID |
| ↳ `status` | string | Booking status (pending) |
| ↳ `location` | string | Meeting location or URL |
| ↳ `organizer` | object | Organizer details |
| ↳ `id` | number | Organizer user ID |
| ↳ `name` | string | Organizer name |
| ↳ `email` | string | Organizer email |
| ↳ `username` | string | Organizer username |
| ↳ `timeZone` | string | Organizer timezone |
| ↳ `attendees` | array | List of attendees |
| ↳ `name` | string | Attendee name |
| ↳ `email` | string | Attendee email |
| ↳ `timeZone` | string | Attendee timezone |
| ↳ `language` | string | Attendee language preference |
| ↳ `responses` | json | Booking form responses |
| ↳ `metadata` | json | Custom metadata attached to the booking |
***
### CalCom Booking Rescheduled [#calcom-booking-rescheduled]
Trigger workflow when a booking is rescheduled in Cal.com
#### Configuration [#configuration-5]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | --------------------------------------------------------------- |
| `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. |
#### Output [#output-24]
| Parameter | Type | Description |
| ----------------------- | ------ | --------------------------------------------- |
| `triggerEvent` | string | The webhook event type |
| `createdAt` | string | When the webhook event was created (ISO 8601) |
| `payload` | object | payload output from the tool |
| ↳ `title` | string | Booking title |
| ↳ `description` | string | Booking description |
| ↳ `eventTypeId` | number | Event type ID |
| ↳ `startTime` | string | New booking start time (ISO 8601) |
| ↳ `endTime` | string | New booking end time (ISO 8601) |
| ↳ `uid` | string | Unique booking identifier |
| ↳ `bookingId` | number | Numeric booking ID |
| ↳ `status` | string | Booking status |
| ↳ `location` | string | Meeting location or URL |
| ↳ `rescheduleId` | number | Previous booking ID |
| ↳ `rescheduleUid` | string | Previous booking UID |
| ↳ `rescheduleStartTime` | string | Original start time (ISO 8601) |
| ↳ `rescheduleEndTime` | string | Original end time (ISO 8601) |
| ↳ `organizer` | object | Organizer details |
| ↳ `id` | number | Organizer user ID |
| ↳ `name` | string | Organizer name |
| ↳ `email` | string | Organizer email |
| ↳ `username` | string | Organizer username |
| ↳ `timeZone` | string | Organizer timezone |
| ↳ `attendees` | array | List of attendees |
| ↳ `name` | string | Attendee name |
| ↳ `email` | string | Attendee email |
| ↳ `timeZone` | string | Attendee timezone |
| ↳ `language` | string | Attendee language preference |
| ↳ `responses` | json | Booking form responses |
| ↳ `metadata` | json | Custom metadata attached to the booking |
***
### CalCom Meeting Ended [#calcom-meeting-ended]
Trigger workflow when a Cal.com meeting ends
#### Configuration [#configuration-6]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | --------------------------------------------------------------- |
| `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. |
#### Output [#output-25]
| Parameter | Type | Description |
| ----------------- | ------ | --------------------------------------------- |
| `triggerEvent` | string | The webhook event type (MEETING\_ENDED) |
| `createdAt` | string | When the webhook event was created (ISO 8601) |
| `payload` | object | payload output from the tool |
| ↳ `title` | string | Meeting title |
| ↳ `eventTypeId` | number | Event type ID |
| ↳ `startTime` | string | Meeting start time (ISO 8601) |
| ↳ `endTime` | string | Meeting end time (ISO 8601) |
| ↳ `uid` | string | Unique booking identifier |
| ↳ `bookingId` | number | Numeric booking ID |
| ↳ `duration` | number | Actual meeting duration in minutes |
| ↳ `organizer` | object | Organizer details |
| ↳ `id` | number | Organizer user ID |
| ↳ `name` | string | Organizer name |
| ↳ `email` | string | Organizer email |
| ↳ `username` | string | Organizer username |
| ↳ `timeZone` | string | Organizer timezone |
| ↳ `attendees` | array | List of attendees |
| ↳ `name` | string | Attendee name |
| ↳ `email` | string | Attendee email |
| ↳ `timeZone` | string | Attendee timezone |
| ↳ `language` | string | Attendee language preference |
| ↳ `videoCallData` | json | Video call details |
***
### CalCom Recording Ready [#calcom-recording-ready]
Trigger workflow when a meeting recording is ready for download
#### Configuration [#configuration-7]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | --------------------------------------------------------------- |
| `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. |
#### Output [#output-26]
| Parameter | Type | Description |
| ----------------- | ------ | --------------------------------------------- |
| `triggerEvent` | string | The webhook event type (RECORDING\_READY) |
| `createdAt` | string | When the webhook event was created (ISO 8601) |
| `payload` | object | payload output from the tool |
| ↳ `title` | string | Meeting title |
| ↳ `eventTypeId` | number | Event type ID |
| ↳ `startTime` | string | Meeting start time (ISO 8601) |
| ↳ `endTime` | string | Meeting end time (ISO 8601) |
| ↳ `uid` | string | Unique booking identifier |
| ↳ `bookingId` | number | Numeric booking ID |
| ↳ `recordingUrl` | string | URL to download the recording |
| ↳ `transcription` | string | Meeting transcription text (if available) |
| ↳ `organizer` | object | Organizer details |
| ↳ `id` | number | Organizer user ID |
| ↳ `name` | string | Organizer name |
| ↳ `email` | string | Organizer email |
| ↳ `username` | string | Organizer username |
| ↳ `timeZone` | string | Organizer timezone |
| ↳ `attendees` | array | List of attendees |
| ↳ `name` | string | Attendee name |
| ↳ `email` | string | Attendee email |
| ↳ `timeZone` | string | Attendee timezone |
| ↳ `language` | string | Attendee language preference |
***
### CalCom Webhook (All Events) [#calcom-webhook-all-events]
Trigger workflow on any Cal.com webhook event (configure event types in Cal.com)
#### Configuration [#configuration-8]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | --------------------------------------------------------------- |
| `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. |
#### Output [#output-27]
| Parameter | Type | Description |
| -------------- | ------ | --------------------------------------------------------------- |
| `triggerEvent` | string | The webhook event type (e.g., BOOKING\_CREATED, MEETING\_ENDED) |
| `createdAt` | string | When the webhook event was created (ISO 8601) |
| `payload` | json | Complete webhook payload (structure varies by event type) |
---
# Calendly (/integrations/calendly)
{/* MANUAL-CONTENT-START:intro */}
[Calendly](https://calendly.com/) is a popular scheduling automation platform that helps you book meetings, events, and appointments with ease. With Calendly, teams and individuals can streamline scheduling, reduce back-and-forth emails, and automate tasks around events.
With the Sim Calendly integration, your agents can:
* **Retrieve information about your account and scheduled events**: Use tools to fetch user info, event types, and scheduled events for analysis or automation.
* **Manage event types and scheduling**: Access and list available event types for users or organizations, retrieve details about specific event types, and monitor scheduled meetings and invitee data.
* **Automate follow-ups and workflows**: When users schedule, reschedule, or cancel meetings, Sim agents can automatically trigger corresponding workflows—such as sending reminders, updating CRMs, or notifying participants.
* **Integrate easily using webhooks**: Set up Sim workflows to respond to real-time Calendly webhook events, including when invitees schedule, cancel, or interact with routing forms.
Whether you want to automate meeting prep, manage invites, or run custom workflows in response to scheduling activity, the Calendly tools in Sim give you flexible and secure access. Unlock new automation by reacting instantly to scheduling changes—streamlining your team's operations and communications.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Calendly into your workflow. Manage event types, scheduled events, invitees, and webhooks. Can also trigger workflows based on Calendly webhook events (invitee scheduled, invitee canceled, routing form submitted). Requires Personal Access Token.
## Actions [#actions]
### Calendly Get Current User [#calendly-get-current-user]
Get information about the currently authenticated Calendly user
#### Input [#input]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------ |
| `apiKey` | string | Yes | Calendly Personal Access Token |
#### Output [#output]
| Parameter | Type | Description |
| ------------------------ | ------ | ---------------------------------------- |
| `resource` | object | Current user information |
| ↳ `uri` | string | Canonical reference to the user |
| ↳ `name` | string | User full name |
| ↳ `slug` | string | Unique identifier for the user in URLs |
| ↳ `email` | string | User email address |
| ↳ `scheduling_url` | string | URL to the user's scheduling page |
| ↳ `timezone` | string | User timezone |
| ↳ `avatar_url` | string | URL to user avatar image |
| ↳ `created_at` | string | ISO timestamp when user was created |
| ↳ `updated_at` | string | ISO timestamp when user was last updated |
| ↳ `current_organization` | string | URI of current organization |
### Calendly Get User [#calendly-get-user]
Get information about a specific Calendly user
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Calendly Personal Access Token |
| `userUuid` | string | Yes | User UUID. Format: UUID (e.g., "abc123-def456"), full URI (e.g., "[https://api.calendly.com/users/abc123-def456"\\](https://api.calendly.com/users/abc123-def456"\\)), or the constant "me" for the authenticated user |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------------------ | ------ | ---------------------------------------- |
| `resource` | object | User information |
| ↳ `uri` | string | Canonical reference to the user |
| ↳ `name` | string | User full name |
| ↳ `slug` | string | Unique identifier for the user in URLs |
| ↳ `email` | string | User email address |
| ↳ `scheduling_url` | string | URL to the user's scheduling page |
| ↳ `timezone` | string | User timezone |
| ↳ `time_notation` | string | Time notation preference (12h or 24h) |
| ↳ `avatar_url` | string | URL to user avatar image |
| ↳ `created_at` | string | ISO timestamp when user was created |
| ↳ `updated_at` | string | ISO timestamp when user was last updated |
| ↳ `current_organization` | string | URI of current organization |
| ↳ `resource_type` | string | Resource type |
| ↳ `locale` | string | User locale |
### Calendly List Event Types [#calendly-list-event-types]
Retrieve a list of all event types for a user or organization
#### Input [#input-2]
| Parameter | Type | Required | Description |
| -------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Calendly Personal Access Token |
| `user` | string | No | Return only event types that belong to this user. Format: URI (e.g., "[https://api.calendly.com/users/abc123-def456"\\](https://api.calendly.com/users/abc123-def456"\\)) |
| `organization` | string | No | Return only event types that belong to this organization. Format: URI (e.g., "[https://api.calendly.com/organizations/abc123-def456"\\](https://api.calendly.com/organizations/abc123-def456"\\)) |
| `count` | number | No | Number of results per page. Format: integer (default: 20, max: 100) |
| `pageToken` | string | No | Page token for pagination. Format: opaque string from previous response next\_page\_token |
| `sort` | string | No | Sort order for results. Format: "field:direction" (e.g., "name:asc", "name:desc") |
| `active` | boolean | No | When true, show only active event types. When false or unchecked, show all event types (both active and inactive). |
#### Output [#output-2]
| Parameter | Type | Description |
| ----------------------- | ------- | ---------------------------------------------------------------- |
| `collection` | array | Array of event type objects |
| ↳ `uri` | string | Canonical reference to the event type |
| ↳ `name` | string | Event type name |
| ↳ `active` | boolean | Whether the event type is active |
| ↳ `booking_method` | string | Booking method (e.g., "round\_robin\_or\_collect", "collective") |
| ↳ `color` | string | Hex color code |
| ↳ `created_at` | string | ISO timestamp of creation |
| ↳ `description_html` | string | HTML formatted description |
| ↳ `description_plain` | string | Plain text description |
| ↳ `duration` | number | Duration in minutes |
| ↳ `scheduling_url` | string | URL to scheduling page |
| ↳ `slug` | string | Unique identifier for URLs |
| ↳ `type` | string | Event type classification |
| ↳ `updated_at` | string | ISO timestamp of last update |
| `pagination` | object | Pagination information |
| ↳ `count` | number | Number of results in this page |
| ↳ `next_page` | string | URL to next page (if available) |
| ↳ `previous_page` | string | URL to previous page (if available) |
| ↳ `next_page_token` | string | Token for next page |
| ↳ `previous_page_token` | string | Token for previous page |
### Calendly Get Event Type [#calendly-get-event-type]
Get detailed information about a specific event type
#### Input [#input-3]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Calendly Personal Access Token |
| `eventTypeUuid` | string | Yes | Event type UUID. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/event\_types/abc123-def456"\\](https://api.calendly.com/event_types/abc123-def456"\\)) |
#### Output [#output-3]
| Parameter | Type | Description |
| --------------------- | ------- | --------------------------------------------------------- |
| `resource` | object | Event type details |
| ↳ `uri` | string | Canonical reference to the event type |
| ↳ `name` | string | Event type name |
| ↳ `active` | boolean | Whether the event type is active |
| ↳ `booking_method` | string | Booking method |
| ↳ `color` | string | Hex color code |
| ↳ `created_at` | string | ISO timestamp of creation |
| ↳ `custom_questions` | array | Custom questions for invitees |
| ↳ `name` | string | Question text |
| ↳ `type` | string | Question type (text, single\_select, multi\_select, etc.) |
| ↳ `position` | number | Question order |
| ↳ `enabled` | boolean | Whether question is enabled |
| ↳ `required` | boolean | Whether question is required |
| ↳ `answer_choices` | array | Available answer choices |
| ↳ `description_html` | string | HTML formatted description |
| ↳ `description_plain` | string | Plain text description |
| ↳ `duration` | number | Duration in minutes |
| ↳ `scheduling_url` | string | URL to scheduling page |
| ↳ `slug` | string | Unique identifier for URLs |
| ↳ `type` | string | Event type classification |
| ↳ `updated_at` | string | ISO timestamp of last update |
### Calendly List Event Type Available Times [#calendly-list-event-type-available-times]
Retrieve bookable time slots for an event type within a date range
#### Input [#input-4]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Calendly Personal Access Token |
| `eventTypeUri` | string | Yes | Event type to check. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/event\_types/abc123-def456"\\](https://api.calendly.com/event_types/abc123-def456"\\)) |
| `startTime` | string | Yes | Start of the availability range. Cannot be in the past. Format: ISO 8601 (e.g., "2024-01-01T00:00:00Z") |
| `endTime` | string | Yes | End of the availability range. Must be in the future and no more than 31 days after the start. Format: ISO 8601 (e.g., "2024-01-15T00:00:00Z") |
#### Output [#output-4]
| Parameter | Type | Description |
| ---------------------- | ------ | ------------------------------------------------ |
| `collection` | array | Array of available time slots |
| ↳ `status` | string | Availability status of the slot |
| ↳ `invitees_remaining` | number | Number of invitees that can still book this slot |
| ↳ `start_time` | string | ISO timestamp of the slot start |
| ↳ `scheduling_url` | string | URL that books this exact slot |
### Calendly List Scheduled Events [#calendly-list-scheduled-events]
Retrieve a list of scheduled events for a user or organization
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Calendly Personal Access Token |
| `user` | string | No | Return events that belong to this user. Either "user" or "organization" must be provided. Format: URI (e.g., "[https://api.calendly.com/users/abc123-def456"\\](https://api.calendly.com/users/abc123-def456"\\)) |
| `organization` | string | No | Return events that belong to this organization. Either "user" or "organization" must be provided. Format: URI (e.g., "[https://api.calendly.com/organizations/abc123-def456"\\](https://api.calendly.com/organizations/abc123-def456"\\)) |
| `invitee_email` | string | No | Return events where invitee has this email |
| `count` | number | No | Number of results per page. Format: integer (default: 20, max: 100) |
| `max_start_time` | string | No | Return events with start time before this time. Format: ISO 8601 (e.g., "2024-01-15T09:00:00Z") |
| `min_start_time` | string | No | Return events with start time after this time. Format: ISO 8601 (e.g., "2024-01-01T00:00:00Z") |
| `pageToken` | string | No | Page token for pagination. Format: opaque string from previous response next\_page\_token |
| `sort` | string | No | Sort order for results. Format: "field:direction" (e.g., "start\_time:asc", "start\_time:desc") |
| `status` | string | No | Filter by status. Format: "active" or "canceled" |
#### Output [#output-5]
| Parameter | Type | Description |
| ----------------------- | ------ | -------------------------------------------------------- |
| `collection` | array | Array of scheduled event objects |
| ↳ `uri` | string | Canonical reference to the event |
| ↳ `name` | string | Event name |
| ↳ `status` | string | Event status (active or canceled) |
| ↳ `start_time` | string | ISO timestamp of event start |
| ↳ `end_time` | string | ISO timestamp of event end |
| ↳ `event_type` | string | URI of the event type |
| ↳ `location` | object | Event location details |
| ↳ `type` | string | Location type (e.g., "zoom", "google\_meet", "physical") |
| ↳ `location` | string | Location description |
| ↳ `join_url` | string | URL to join online meeting (if applicable) |
| ↳ `invitees_counter` | object | Invitee count information |
| ↳ `total` | number | Total number of invitees |
| ↳ `active` | number | Number of active invitees |
| ↳ `limit` | number | Maximum number of invitees |
| ↳ `created_at` | string | ISO timestamp of event creation |
| ↳ `updated_at` | string | ISO timestamp of last update |
| `pagination` | object | Pagination information |
| ↳ `count` | number | Number of results in this page |
| ↳ `next_page` | string | URL to next page (if available) |
| ↳ `previous_page` | string | URL to previous page (if available) |
| ↳ `next_page_token` | string | Token for next page |
| ↳ `previous_page_token` | string | Token for previous page |
### Calendly Get Scheduled Event [#calendly-get-scheduled-event]
Get detailed information about a specific scheduled event
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Calendly Personal Access Token |
| `eventUuid` | string | Yes | Scheduled event UUID. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/scheduled\_events/abc123-def456"\\](https://api.calendly.com/scheduled_events/abc123-def456"\\)) |
#### Output [#output-6]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------- |
| `resource` | object | Scheduled event details |
| ↳ `uri` | string | Canonical reference to the event |
| ↳ `name` | string | Event name |
| ↳ `status` | string | Event status (active or canceled) |
| ↳ `start_time` | string | ISO timestamp of event start |
| ↳ `end_time` | string | ISO timestamp of event end |
| ↳ `event_type` | string | URI of the event type |
| ↳ `location` | object | Event location details |
| ↳ `type` | string | Location type |
| ↳ `location` | string | Location description |
| ↳ `join_url` | string | URL to join online meeting |
| ↳ `invitees_counter` | object | Invitee count information |
| ↳ `total` | number | Total number of invitees |
| ↳ `active` | number | Number of active invitees |
| ↳ `limit` | number | Maximum number of invitees |
| ↳ `event_memberships` | array | Event hosts/members |
| ↳ `user` | string | User URI |
| ↳ `user_email` | string | User email |
| ↳ `user_name` | string | User name |
| ↳ `event_guests` | array | Additional guests |
| ↳ `email` | string | Guest email |
| ↳ `created_at` | string | When guest was added |
| ↳ `updated_at` | string | When guest info was updated |
| ↳ `created_at` | string | ISO timestamp of event creation |
| ↳ `updated_at` | string | ISO timestamp of last update |
### Calendly List Event Invitees [#calendly-list-event-invitees]
Retrieve a list of invitees for a scheduled event
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Calendly Personal Access Token |
| `eventUuid` | string | Yes | Scheduled event UUID. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/scheduled\_events/abc123-def456"\\](https://api.calendly.com/scheduled_events/abc123-def456"\\)) |
| `count` | number | No | Number of results per page. Format: integer (default: 20, max: 100) |
| `email` | string | No | Filter invitees by email address |
| `pageToken` | string | No | Page token for pagination. Format: opaque string from previous response next\_page\_token |
| `sort` | string | No | Sort order for results. Format: "field:direction" (e.g., "created\_at:asc", "created\_at:desc") |
| `status` | string | No | Filter by status. Format: "active" or "canceled" |
#### Output [#output-7]
| Parameter | Type | Description |
| ------------------------- | ------- | -------------------------------------- |
| `collection` | array | Array of invitee objects |
| ↳ `uri` | string | Canonical reference to the invitee |
| ↳ `email` | string | Invitee email address |
| ↳ `name` | string | Invitee full name |
| ↳ `first_name` | string | Invitee first name |
| ↳ `last_name` | string | Invitee last name |
| ↳ `status` | string | Invitee status (active or canceled) |
| ↳ `questions_and_answers` | array | Responses to custom questions |
| ↳ `question` | string | Question text |
| ↳ `answer` | string | Invitee answer |
| ↳ `position` | number | Question order |
| ↳ `timezone` | string | Invitee timezone |
| ↳ `event` | string | URI of the scheduled event |
| ↳ `created_at` | string | ISO timestamp when invitee was created |
| ↳ `updated_at` | string | ISO timestamp when invitee was updated |
| ↳ `cancel_url` | string | URL to cancel the booking |
| ↳ `reschedule_url` | string | URL to reschedule the booking |
| ↳ `rescheduled` | boolean | Whether invitee rescheduled |
| `pagination` | object | Pagination information |
| ↳ `count` | number | Number of results in this page |
| ↳ `next_page` | string | URL to next page (if available) |
| ↳ `previous_page` | string | URL to previous page (if available) |
| ↳ `next_page_token` | string | Token for next page |
| ↳ `previous_page_token` | string | Token for previous page |
### Calendly Get Event Invitee [#calendly-get-event-invitee]
Retrieve a single invitee of a scheduled event, including their intake answers
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Calendly Personal Access Token |
| `eventUuid` | string | Yes | Scheduled event UUID. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/scheduled\_events/abc123-def456"\\](https://api.calendly.com/scheduled_events/abc123-def456"\\)) |
| `inviteeUuid` | string | Yes | Invitee UUID. Format: UUID (e.g., "abc123-def456") or full invitee URI (e.g., "[https://api.calendly.com/scheduled\_events/abc123/invitees/def456"\\](https://api.calendly.com/scheduled_events/abc123/invitees/def456"\\)) |
#### Output [#output-8]
| Parameter | Type | Description |
| --------------------------- | ------- | ------------------------------------------------------------- |
| `resource` | object | Invitee details |
| ↳ `uri` | string | Canonical reference to the invitee |
| ↳ `email` | string | Invitee email address |
| ↳ `name` | string | Invitee full name |
| ↳ `first_name` | string | Invitee first name |
| ↳ `last_name` | string | Invitee last name |
| ↳ `status` | string | Invitee status (active or canceled) |
| ↳ `timezone` | string | Invitee timezone |
| ↳ `event` | string | URI of the scheduled event |
| ↳ `created_at` | string | ISO timestamp when invitee was created |
| ↳ `updated_at` | string | ISO timestamp when invitee was updated |
| ↳ `cancel_url` | string | URL to cancel the booking |
| ↳ `reschedule_url` | string | URL to reschedule the booking |
| ↳ `rescheduled` | boolean | Whether the invitee rescheduled |
| ↳ `text_reminder_number` | string | Phone number used for SMS reminders |
| ↳ `routing_form_submission` | string | URI of the routing form submission that produced this booking |
| ↳ `questions_and_answers` | array | Responses to custom questions |
| ↳ `question` | string | Question text |
| ↳ `answer` | string | Invitee answer |
| ↳ `position` | number | Question order |
| ↳ `tracking` | object | UTM and Salesforce tracking parameters captured at booking |
| ↳ `utm_campaign` | string | UTM campaign |
| ↳ `utm_source` | string | UTM source |
| ↳ `utm_medium` | string | UTM medium |
| ↳ `utm_content` | string | UTM content |
| ↳ `utm_term` | string | UTM term |
| ↳ `salesforce_uuid` | string | Salesforce record identifier |
| ↳ `cancellation` | object | Cancellation details when the invitee has canceled |
| ↳ `canceled_by` | string | Name of person who canceled |
| ↳ `reason` | string | Cancellation reason |
| ↳ `canceler_type` | string | Type of canceler (host or invitee) |
| ↳ `created_at` | string | ISO timestamp of the cancellation |
| ↳ `no_show` | object | No-show record when the invitee has been marked as a no-show |
| ↳ `uri` | string | Canonical reference to the no-show |
| ↳ `created_at` | string | ISO timestamp when marked as no-show |
| ↳ `payment` | object | Payment collected at booking |
| ↳ `external_id` | string | Payment identifier at the provider |
| ↳ `provider` | string | Payment provider |
| ↳ `amount` | number | Amount charged |
| ↳ `currency` | string | Currency code |
| ↳ `terms` | string | Payment terms |
| ↳ `successful` | boolean | Whether the payment succeeded |
### Calendly Book Meeting [#calendly-book-meeting]
Book a meeting by creating an invitee on an event type at a chosen time. Requires a paid Calendly plan
#### Input [#input-9]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Calendly Personal Access Token |
| `eventTypeUri` | string | Yes | Event type to book. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/event\_types/abc123-def456"\\](https://api.calendly.com/event_types/abc123-def456"\\)) |
| `startTime` | string | Yes | Start time of the booking in UTC. Must be an available slot. Format: ISO 8601 (e.g., "2024-01-15T09:00:00Z") |
| `inviteeEmail` | string | Yes | Email address of the invitee being booked |
| `inviteeTimezone` | string | Yes | Invitee timezone. Format: IANA timezone (e.g., "America/New\_York") |
| `inviteeName` | string | No | Full name of the invitee. Required when a first name is not provided |
| `inviteeFirstName` | string | No | First name of the invitee. Required when a full name is not provided |
| `inviteeLastName` | string | No | Last name of the invitee |
| `textReminderNumber` | string | No | Phone number for SMS reminders. Format: E.164 phone number (e.g., "+14155551234") |
| `eventGuests` | json | No | Additional guests to copy on the invite. Format: array of email strings (max 10, e.g., \["[guest@example.com](mailto:guest@example.com)"]) |
#### Output [#output-9]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------------ |
| `resource` | object | The invitee created for the booking |
| ↳ `uri` | string | Canonical reference to the invitee |
| ↳ `email` | string | Invitee email address |
| ↳ `name` | string | Invitee full name |
| ↳ `first_name` | string | Invitee first name |
| ↳ `last_name` | string | Invitee last name |
| ↳ `status` | string | Invitee status (active or canceled) |
| ↳ `timezone` | string | Invitee timezone |
| ↳ `event` | string | URI of the scheduled event that was booked |
| ↳ `created_at` | string | ISO timestamp when the booking was created |
| ↳ `updated_at` | string | ISO timestamp when the booking was updated |
| ↳ `cancel_url` | string | URL to cancel the booking |
| ↳ `reschedule_url` | string | URL to reschedule the booking |
| ↳ `rescheduled` | boolean | Whether the invitee rescheduled |
| ↳ `text_reminder_number` | string | Phone number used for SMS reminders |
| ↳ `questions_and_answers` | array | Responses to custom questions |
| ↳ `question` | string | Question text |
| ↳ `answer` | string | Invitee answer |
| ↳ `position` | number | Question order |
### Calendly Cancel Event [#calendly-cancel-event]
Cancel a scheduled event
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Calendly Personal Access Token |
| `eventUuid` | string | Yes | Scheduled event UUID to cancel. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/scheduled\_events/abc123-def456"\\](https://api.calendly.com/scheduled_events/abc123-def456"\\)) |
| `reason` | string | No | Reason for cancellation (will be sent to invitees) |
#### Output [#output-10]
| Parameter | Type | Description |
| ----------------- | ------ | ------------------------------------- |
| `resource` | object | Cancellation details |
| ↳ `canceler_type` | string | Type of canceler (host or invitee) |
| ↳ `canceled_by` | string | Name of person who canceled |
| ↳ `reason` | string | Cancellation reason |
| ↳ `created_at` | string | ISO timestamp when event was canceled |
### Calendly Mark Invitee No-Show [#calendly-mark-invitee-no-show]
Mark an invitee of a scheduled event as a no-show
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Calendly Personal Access Token |
| `inviteeUri` | string | Yes | Full invitee URI to mark as a no-show. Format: URI (e.g., "[https://api.calendly.com/scheduled\_events/abc123/invitees/def456"\\](https://api.calendly.com/scheduled_events/abc123/invitees/def456"\\)) |
#### Output [#output-11]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------------- |
| `resource` | object | The created no-show record |
| ↳ `uri` | string | Canonical reference to the no-show |
| ↳ `invitee` | string | URI of the invitee marked as a no-show |
| ↳ `created_at` | string | ISO timestamp when the no-show was recorded |
### Calendly Unmark Invitee No-Show [#calendly-unmark-invitee-no-show]
Remove the no-show status from an invitee
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Calendly Personal Access Token |
| `noShowUuid` | string | Yes | No-show UUID to remove. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/invitee\_no\_shows/abc123-def456"\\](https://api.calendly.com/invitee_no_shows/abc123-def456"\\)) |
#### Output [#output-12]
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------------------- |
| `deleted` | boolean | Whether the no-show status was successfully removed |
| `message` | string | Status message |
### Calendly Create Scheduling Link [#calendly-create-scheduling-link]
Create a single-use scheduling link for an event type
#### Input [#input-13]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Calendly Personal Access Token |
| `eventTypeUri` | string | Yes | Event type the link books. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/event\_types/abc123-def456"\\](https://api.calendly.com/event_types/abc123-def456"\\)) |
#### Output [#output-13]
| Parameter | Type | Description |
| --------------- | ------ | ---------------------------------------- |
| `resource` | object | The created scheduling link |
| ↳ `booking_url` | string | Single-use URL to share with an invitee |
| ↳ `owner` | string | URI of the event type that owns the link |
| ↳ `owner_type` | string | Resource type of the owner |
### Calendly List User Busy Times [#calendly-list-user-busy-times]
Retrieve a user's internal and external busy times within a date range, based on their connected calendars
#### Input [#input-14]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Calendly Personal Access Token |
| `user` | string | Yes | User whose busy times are returned. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/users/abc123-def456"\\](https://api.calendly.com/users/abc123-def456"\\)) |
| `startTime` | string | Yes | Start of the requested range. Cannot be in the past. Format: ISO 8601 (e.g., "2024-01-01T00:00:00Z") |
| `endTime` | string | Yes | End of the requested range. Must be after the start and no more than 7 days later. Format: ISO 8601 (e.g., "2024-01-07T00:00:00Z") |
#### Output [#output-14]
| Parameter | Type | Description |
| ----------------------- | ------ | ---------------------------------------------------------- |
| `collection` | array | Array of busy time blocks |
| ↳ `type` | string | Source of the busy block (calendly, external, or reserved) |
| ↳ `start_time` | string | ISO timestamp when the block starts |
| ↳ `end_time` | string | ISO timestamp when the block ends |
| ↳ `buffered_start_time` | string | ISO timestamp when the block starts including buffer |
| ↳ `buffered_end_time` | string | ISO timestamp when the block ends including buffer |
| ↳ `event` | object | The Calendly event occupying this block |
| ↳ `uri` | string | URI of the scheduled event |
### Calendly List User Availability Schedules [#calendly-list-user-availability-schedules]
Retrieve a user's availability schedules, working hours, and date overrides
#### Input [#input-15]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Calendly Personal Access Token |
| `user` | string | Yes | User whose schedules are returned. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/users/abc123-def456"\\](https://api.calendly.com/users/abc123-def456"\\)) |
#### Output [#output-15]
| Parameter | Type | Description |
| ------------- | ------- | --------------------------------------------------------- |
| `collection` | array | Array of availability schedules |
| ↳ `uri` | string | Canonical reference to the schedule |
| ↳ `name` | string | Schedule name |
| ↳ `default` | boolean | Whether this is the user's default schedule |
| ↳ `user` | string | URI of the owning user |
| ↳ `timezone` | string | Timezone the schedule is defined in |
| ↳ `rules` | array | Weekly rules and date overrides that make up the schedule |
| ↳ `type` | string | Rule type (wday or date) |
| ↳ `wday` | string | Day of week the rule applies to, for wday rules |
| ↳ `date` | string | Calendar date the rule overrides, for date rules |
| ↳ `intervals` | array | Available intervals for the rule; empty means unavailable |
| ↳ `from` | string | Interval start time (HH:MM) |
| ↳ `to` | string | Interval end time (HH:MM) |
### Calendly List Organization Memberships [#calendly-list-organization-memberships]
Retrieve the members of an organization, including each member profile and role
#### Input [#input-16]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Calendly Personal Access Token |
| `organization` | string | No | Return memberships that belong to this organization. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/organizations/abc123-def456"\\](https://api.calendly.com/organizations/abc123-def456"\\)) |
| `user` | string | No | Return memberships that belong to this user. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/users/abc123-def456"\\](https://api.calendly.com/users/abc123-def456"\\)) |
| `email` | string | No | Filter memberships by member email address |
| `role` | string | No | Filter by role. Format: "owner", "admin", or "user" |
| `count` | number | No | Number of results per page. Format: integer (default: 20, max: 100) |
| `pageToken` | string | No | Page token for pagination. Format: opaque string from previous response next\_page\_token |
#### Output [#output-16]
| Parameter | Type | Description |
| ----------------------- | ------ | ----------------------------------------- |
| `collection` | array | Array of organization membership objects |
| ↳ `uri` | string | Canonical reference to the membership |
| ↳ `role` | string | Member role (owner, admin, or user) |
| ↳ `organization` | string | URI of the organization |
| ↳ `created_at` | string | ISO timestamp when the member joined |
| ↳ `updated_at` | string | ISO timestamp when the membership changed |
| ↳ `user` | object | The member |
| ↳ `uri` | string | Canonical reference to the user |
| ↳ `name` | string | User full name |
| ↳ `slug` | string | Unique identifier for the user in URLs |
| ↳ `email` | string | User email address |
| ↳ `scheduling_url` | string | URL to the user's scheduling page |
| ↳ `timezone` | string | User timezone |
| ↳ `time_notation` | string | Time notation preference (12h or 24h) |
| ↳ `avatar_url` | string | URL to user avatar image |
| ↳ `locale` | string | User locale |
| ↳ `created_at` | string | ISO timestamp when user was created |
| ↳ `updated_at` | string | ISO timestamp when user was updated |
| `pagination` | object | Pagination information |
| ↳ `count` | number | Number of results in this page |
| ↳ `next_page` | string | URL to next page (if available) |
| ↳ `previous_page` | string | URL to previous page (if available) |
| ↳ `next_page_token` | string | Token for next page |
| ↳ `previous_page_token` | string | Token for previous page |
### Calendly List Routing Forms [#calendly-list-routing-forms]
Retrieve the routing forms of an organization, including their questions
#### Input [#input-17]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Calendly Personal Access Token |
| `organization` | string | Yes | Organization whose routing forms are returned. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/organizations/abc123-def456"\\](https://api.calendly.com/organizations/abc123-def456"\\)) |
| `count` | number | No | Number of results per page. Format: integer (default: 20, max: 100) |
| `pageToken` | string | No | Page token for pagination. Format: opaque string from previous response next\_page\_token |
| `sort` | string | No | Sort order for results. Format: "created\_at:direction" (e.g., "created\_at:asc", "created\_at:desc") |
#### Output [#output-17]
| Parameter | Type | Description |
| ----------------------- | ------- | ---------------------------------------- |
| `collection` | array | Array of routing form objects |
| ↳ `uri` | string | Canonical reference to the routing form |
| ↳ `organization` | string | URI of the owning organization |
| ↳ `name` | string | Routing form name |
| ↳ `status` | string | Routing form status (published or draft) |
| ↳ `created_at` | string | ISO timestamp when the form was created |
| ↳ `updated_at` | string | ISO timestamp when the form was updated |
| ↳ `questions` | array | Questions asked by the routing form |
| ↳ `uuid` | string | Question identifier |
| ↳ `name` | string | Question text |
| ↳ `type` | string | Question answer type |
| ↳ `required` | boolean | Whether an answer is required |
| ↳ `answer_choices` | array | Selectable answers for choice questions |
| `pagination` | object | Pagination information |
| ↳ `count` | number | Number of results in this page |
| ↳ `next_page` | string | URL to next page (if available) |
| ↳ `previous_page` | string | URL to previous page (if available) |
| ↳ `next_page_token` | string | Token for next page |
| ↳ `previous_page_token` | string | Token for previous page |
### Calendly List Routing Form Submissions [#calendly-list-routing-form-submissions]
Retrieve the submissions of a routing form, including answers and routing result
#### Input [#input-18]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Calendly Personal Access Token |
| `formUri` | string | Yes | Routing form whose submissions are returned. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/routing\_forms/abc123-def456"\\](https://api.calendly.com/routing_forms/abc123-def456"\\)) |
| `count` | number | No | Number of results per page. Format: integer (default: 20, max: 100) |
| `pageToken` | string | No | Page token for pagination. Format: opaque string from previous response next\_page\_token |
| `sort` | string | No | Sort order for results. Format: "created\_at:direction" (e.g., "created\_at:asc", "created\_at:desc") |
#### Output [#output-18]
| Parameter | Type | Description |
| ------------------------- | ------ | ---------------------------------------------------------------------- |
| `collection` | array | Array of routing form submission objects |
| ↳ `uri` | string | Canonical reference to the submission |
| ↳ `routing_form` | string | URI of the routing form |
| ↳ `submitter` | string | URI of the invitee who submitted, when the submission led to a booking |
| ↳ `submitter_type` | string | Type of the submitter |
| ↳ `created_at` | string | ISO timestamp when the form was submitted |
| ↳ `updated_at` | string | ISO timestamp when the submission was updated |
| ↳ `questions_and_answers` | array | Answers given on the routing form |
| ↳ `question_uuid` | string | Question identifier |
| ↳ `question` | string | Question text |
| ↳ `answer` | string | Submitted answer |
| ↳ `tracking` | object | UTM and Salesforce tracking parameters captured at submission |
| ↳ `utm_campaign` | string | UTM campaign |
| ↳ `utm_source` | string | UTM source |
| ↳ `utm_medium` | string | UTM medium |
| ↳ `utm_content` | string | UTM content |
| ↳ `utm_term` | string | UTM term |
| ↳ `salesforce_uuid` | string | Salesforce record identifier |
| ↳ `result` | object | Where the submission routed to |
| ↳ `type` | string | Routing result type |
| ↳ `value` | string | Routing destination |
| `pagination` | object | Pagination information |
| ↳ `count` | number | Number of results in this page |
| ↳ `next_page` | string | URL to next page (if available) |
| ↳ `previous_page` | string | URL to previous page (if available) |
| ↳ `next_page_token` | string | Token for next page |
| ↳ `previous_page_token` | string | Token for previous page |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
### Calendly Invitee Canceled [#calendly-invitee-canceled]
Trigger workflow when someone cancels a scheduled event on Calendly
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Personal Access Token |
| `organization` | string | Yes | Organization URI for the webhook subscription. Get this from "Get Current User" operation. |
#### Output [#output-19]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------------------- |
| `event` | string | Event type (invitee.created or invitee.canceled) |
| `created_at` | string | Webhook event creation timestamp |
| `created_by` | string | URI of the Calendly user who created this webhook |
| `payload` | object | payload output from the tool |
| ↳ `uri` | string | Invitee URI |
| ↳ `email` | string | Invitee email address |
| ↳ `name` | string | Invitee full name |
| ↳ `first_name` | string | Invitee first name |
| ↳ `last_name` | string | Invitee last name |
| ↳ `status` | string | Invitee status (active or canceled) |
| ↳ `timezone` | string | Invitee timezone |
| ↳ `event` | string | Scheduled event URI |
| ↳ `questions_and_answers` | array | Questions and answers from the booking form |
| ↳ `tracking` | object | tracking output from the tool |
| ↳ `utm_campaign` | string | UTM campaign parameter |
| ↳ `utm_source` | string | UTM source parameter |
| ↳ `utm_medium` | string | UTM medium parameter |
| ↳ `utm_content` | string | UTM content parameter |
| ↳ `utm_term` | string | UTM term parameter |
| ↳ `salesforce_uuid` | string | Salesforce UUID |
| ↳ `text_reminder_number` | string | Phone number for text reminders |
| ↳ `rescheduled` | boolean | Whether this invitee rescheduled |
| ↳ `old_invitee` | string | URI of the old invitee (if rescheduled) |
| ↳ `new_invitee` | string | URI of the new invitee (if rescheduled) |
| ↳ `cancel_url` | string | URL to cancel the event |
| ↳ `reschedule_url` | string | URL to reschedule the event |
| ↳ `created_at` | string | Invitee creation timestamp |
| ↳ `updated_at` | string | Invitee last update timestamp |
| ↳ `canceled` | boolean | Whether the event was canceled |
| ↳ `cancellation` | object | Cancellation details |
| ↳ `canceled_by` | string | Who canceled the event |
| ↳ `reason` | string | Cancellation reason |
| ↳ `payment` | object | Payment details |
| ↳ `id` | string | Payment ID |
| ↳ `provider` | string | Payment provider |
| ↳ `amount` | number | Payment amount |
| ↳ `currency` | string | Payment currency |
| ↳ `terms` | string | Payment terms |
| ↳ `successful` | boolean | Whether payment was successful |
| ↳ `no_show` | object | No-show details |
| ↳ `created_at` | string | No-show marked timestamp |
| ↳ `reconfirmation` | object | Reconfirmation details |
| ↳ `created_at` | string | Reconfirmation timestamp |
| ↳ `confirmed_at` | string | Confirmation timestamp |
***
### Calendly Invitee Created [#calendly-invitee-created]
Trigger workflow when someone schedules a new event on Calendly
#### Configuration [#configuration-1]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Personal Access Token |
| `organization` | string | Yes | Organization URI for the webhook subscription. Get this from "Get Current User" operation. |
#### Output [#output-20]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------------------- |
| `event` | string | Event type (invitee.created or invitee.canceled) |
| `created_at` | string | Webhook event creation timestamp |
| `created_by` | string | URI of the Calendly user who created this webhook |
| `payload` | object | payload output from the tool |
| ↳ `uri` | string | Invitee URI |
| ↳ `email` | string | Invitee email address |
| ↳ `name` | string | Invitee full name |
| ↳ `first_name` | string | Invitee first name |
| ↳ `last_name` | string | Invitee last name |
| ↳ `status` | string | Invitee status (active or canceled) |
| ↳ `timezone` | string | Invitee timezone |
| ↳ `event` | string | Scheduled event URI |
| ↳ `questions_and_answers` | array | Questions and answers from the booking form |
| ↳ `tracking` | object | tracking output from the tool |
| ↳ `utm_campaign` | string | UTM campaign parameter |
| ↳ `utm_source` | string | UTM source parameter |
| ↳ `utm_medium` | string | UTM medium parameter |
| ↳ `utm_content` | string | UTM content parameter |
| ↳ `utm_term` | string | UTM term parameter |
| ↳ `salesforce_uuid` | string | Salesforce UUID |
| ↳ `text_reminder_number` | string | Phone number for text reminders |
| ↳ `rescheduled` | boolean | Whether this invitee rescheduled |
| ↳ `old_invitee` | string | URI of the old invitee (if rescheduled) |
| ↳ `new_invitee` | string | URI of the new invitee (if rescheduled) |
| ↳ `cancel_url` | string | URL to cancel the event |
| ↳ `reschedule_url` | string | URL to reschedule the event |
| ↳ `created_at` | string | Invitee creation timestamp |
| ↳ `updated_at` | string | Invitee last update timestamp |
| ↳ `canceled` | boolean | Whether the event was canceled |
| ↳ `cancellation` | object | Cancellation details |
| ↳ `canceled_by` | string | Who canceled the event |
| ↳ `reason` | string | Cancellation reason |
| ↳ `payment` | object | Payment details |
| ↳ `id` | string | Payment ID |
| ↳ `provider` | string | Payment provider |
| ↳ `amount` | number | Payment amount |
| ↳ `currency` | string | Payment currency |
| ↳ `terms` | string | Payment terms |
| ↳ `successful` | boolean | Whether payment was successful |
| ↳ `no_show` | object | No-show details |
| ↳ `created_at` | string | No-show marked timestamp |
| ↳ `reconfirmation` | object | Reconfirmation details |
| ↳ `created_at` | string | Reconfirmation timestamp |
| ↳ `confirmed_at` | string | Confirmation timestamp |
***
### Calendly Routing Form Submitted [#calendly-routing-form-submitted]
Trigger workflow when someone submits a Calendly routing form
#### Configuration [#configuration-2]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Personal Access Token |
| `organization` | string | Yes | Organization URI for the webhook subscription. Get this from "Get Current User" operation. |
#### Output [#output-21]
| Parameter | Type | Description |
| ------------------------- | ------ | ------------------------------------------------------------ |
| `event` | string | Event type (routing\_form\_submission.created) |
| `created_at` | string | Webhook event creation timestamp |
| `created_by` | string | URI of the Calendly user who created this webhook |
| `payload` | object | payload output from the tool |
| ↳ `uri` | string | Routing form submission URI |
| ↳ `routing_form` | string | Routing form URI |
| ↳ `submitter` | object | Submitter details |
| ↳ `uri` | string | Submitter URI |
| ↳ `email` | string | Submitter email address |
| ↳ `name` | string | Submitter full name |
| ↳ `submitter_type` | string | Type of submitter |
| ↳ `questions_and_answers` | array | Questions and answers from the booking form |
| ↳ `tracking` | object | tracking output from the tool |
| ↳ `utm_campaign` | string | UTM campaign parameter |
| ↳ `utm_source` | string | UTM source parameter |
| ↳ `utm_medium` | string | UTM medium parameter |
| ↳ `utm_content` | string | UTM content parameter |
| ↳ `utm_term` | string | UTM term parameter |
| ↳ `salesforce_uuid` | string | Salesforce UUID |
| ↳ `result` | object | Routing result details |
| ↳ `type` | string | Result type (event\_type, custom\_message, or external\_url) |
| ↳ `value` | string | Result value (event type URI, message, or URL) |
| ↳ `created_at` | string | Submission creation timestamp |
| ↳ `updated_at` | string | Submission last update timestamp |
***
### Calendly Webhook [#calendly-webhook]
Trigger workflow from any Calendly webhook event
#### Configuration [#configuration-3]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Personal Access Token |
| `organization` | string | Yes | Organization URI for the webhook subscription. Get this from "Get Current User" operation. |
#### Output [#output-22]
| Parameter | Type | Description |
| ------------ | ------ | ------------------------------------------------------------------------------------ |
| `event` | string | Event type (invitee.created, invitee.canceled, or routing\_form\_submission.created) |
| `created_at` | string | Webhook event creation timestamp |
| `created_by` | string | URI of the Calendly user who created this webhook |
| `payload` | object | Complete event payload (structure varies by event type) |
---
# Circleback (/integrations/circleback)
{/* MANUAL-CONTENT-START:intro */}
[Circleback](https://circleback.ai/) is an AI-powered platform that automates meeting notes, action items, transcripts, and recordings for your team. When a meeting is completed, Circleback processes the conversation and provides detailed notes and action items, along with a transcript and a recording (when available). This helps teams efficiently capture insights, distribute action items, and ensure nothing is missed—all seamlessly integrated into your workflows.
With the Sim Circleback integration, you can:
* **Receive detailed meeting notes and action items**: Automatically collect well-formatted meeting summaries and track actionable tasks discussed during your calls.
* **Access complete meeting recordings and transcripts**: Get the full conversation and the associated recording, making it easy to review key moments or share with colleagues.
* **Capture attendee information and meeting context**: Attendee lists, meeting metadata, and tags help keep your data organized and actionable.
* **Deliver insights directly into your workflows**: Trigger automations or send Circleback data to other systems the moment a meeting is done, using Sim’s powerful webhook triggers.
**How it works in Sim:**\
Circleback uses webhook triggers: whenever a meeting is processed, data is pushed automatically to your agent or automation. You can build further automations based on:
* Meeting completed (all processed data available)
* New notes (notes ready even before full meeting is processed)
* Raw webhook integration for advanced use cases
**The following information is available in the Circleback meeting webhook payload:**
| Field | Type | Description |
| -------------- | ------ | --------------------------------------------- |
| `id` | number | Circleback meeting ID |
| `name` | string | Meeting title |
| `url` | string | Virtual meeting URL (Zoom, Meet, Teams, etc.) |
| `createdAt` | string | Meeting creation timestamp |
| `duration` | number | Duration in seconds |
| `recordingUrl` | string | Recording URL (valid 24 hours) |
| `tags` | json | Array of tags |
| `icalUid` | string | Calendar event ID |
| `attendees` | json | Array of attendee objects |
| `notes` | string | Meeting notes in Markdown |
| `actionItems` | json | Array of action items |
| `transcript` | json | Array of transcript segments |
| `insights` | json | User-created insights |
| `meeting` | json | Full meeting payload |
Whether you want to distribute instant summaries, log action items, or build custom workflows triggered by new meeting data, Circleback and Sim make it seamless to handle everything related to your meetings—automatically.
{/* MANUAL-CONTENT-END */}
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
### Circleback Meeting Completed [#circleback-meeting-completed]
Trigger workflow when a meeting is processed and ready in Circleback
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `webhookSecret` | string | No | Validates that webhook deliveries originate from Circleback using HMAC-SHA256. |
#### Output [#output]
| Parameter | Type | Description |
| ---------------- | ------ | ----------------------------------------------------------- |
| `id` | number | Circleback meeting ID |
| `name` | string | Meeting title/name |
| `url` | string | URL of the virtual meeting (Zoom, Google Meet, Teams, etc.) |
| `createdAt` | string | ISO8601 timestamp when meeting was created |
| `duration` | number | Meeting duration in seconds |
| `recordingUrl` | string | Recording URL (valid for 24 hours, if enabled) |
| `tags` | array | Array of tag strings |
| `icalUid` | string | Calendar event identifier |
| `attendees` | array | Array of attendee objects with name and email |
| ↳ `name` | string | Attendee name |
| ↳ `email` | string | Attendee email address |
| `notes` | string | Meeting notes in Markdown format |
| `actionItems` | array | Array of action item objects |
| ↳ `id` | number | Action item ID |
| ↳ `title` | string | Action item title |
| ↳ `description` | string | Action item description |
| ↳ `assignee` | object | Person assigned to the action item (or null) |
| ↳ `name` | string | Assignee name |
| ↳ `email` | string | Assignee email |
| ↳ `status` | string | Status: PENDING or DONE |
| `transcript` | array | Array of transcript segments |
| ↳ `speaker` | string | Speaker name |
| ↳ `text` | string | Transcript text |
| ↳ `timestamp` | number | Timestamp in seconds |
| `insights` | object | User-created insights keyed by insight name |
| `meeting` | object | Full meeting payload object |
| ↳ `id` | number | Meeting ID |
| ↳ `name` | string | Meeting name |
| ↳ `url` | string | Meeting URL |
| ↳ `duration` | number | Duration in seconds |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `recordingUrl` | string | Recording URL |
***
### Circleback Meeting Notes Ready [#circleback-meeting-notes-ready]
Trigger workflow when meeting notes and action items are ready
#### Configuration [#configuration-1]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `webhookSecret` | string | No | Validates that webhook deliveries originate from Circleback using HMAC-SHA256. |
#### Output [#output-1]
| Parameter | Type | Description |
| ---------------- | ------ | ----------------------------------------------------------- |
| `id` | number | Circleback meeting ID |
| `name` | string | Meeting title/name |
| `url` | string | URL of the virtual meeting (Zoom, Google Meet, Teams, etc.) |
| `createdAt` | string | ISO8601 timestamp when meeting was created |
| `duration` | number | Meeting duration in seconds |
| `recordingUrl` | string | Recording URL (valid for 24 hours, if enabled) |
| `tags` | array | Array of tag strings |
| `icalUid` | string | Calendar event identifier |
| `attendees` | array | Array of attendee objects with name and email |
| ↳ `name` | string | Attendee name |
| ↳ `email` | string | Attendee email address |
| `notes` | string | Meeting notes in Markdown format |
| `actionItems` | array | Array of action item objects |
| ↳ `id` | number | Action item ID |
| ↳ `title` | string | Action item title |
| ↳ `description` | string | Action item description |
| ↳ `assignee` | object | Person assigned to the action item (or null) |
| ↳ `name` | string | Assignee name |
| ↳ `email` | string | Assignee email |
| ↳ `status` | string | Status: PENDING or DONE |
| `transcript` | array | Array of transcript segments |
| ↳ `speaker` | string | Speaker name |
| ↳ `text` | string | Transcript text |
| ↳ `timestamp` | number | Timestamp in seconds |
| `insights` | object | User-created insights keyed by insight name |
| `meeting` | object | Full meeting payload object |
| ↳ `id` | number | Meeting ID |
| ↳ `name` | string | Meeting name |
| ↳ `url` | string | Meeting URL |
| ↳ `duration` | number | Duration in seconds |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `recordingUrl` | string | Recording URL |
***
### Circleback Webhook [#circleback-webhook]
Generic webhook trigger for all Circleback events
#### Configuration [#configuration-2]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `webhookSecret` | string | No | Validates that webhook deliveries originate from Circleback using HMAC-SHA256. |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------------- | ------ | ----------------------------------------------------------- |
| `id` | number | Circleback meeting ID |
| `name` | string | Meeting title/name |
| `url` | string | URL of the virtual meeting (Zoom, Google Meet, Teams, etc.) |
| `createdAt` | string | ISO8601 timestamp when meeting was created |
| `duration` | number | Meeting duration in seconds |
| `recordingUrl` | string | Recording URL (valid for 24 hours, if enabled) |
| `tags` | array | Array of tag strings |
| `icalUid` | string | Calendar event identifier |
| `attendees` | array | Array of attendee objects with name and email |
| ↳ `name` | string | Attendee name |
| ↳ `email` | string | Attendee email address |
| `notes` | string | Meeting notes in Markdown format |
| `actionItems` | array | Array of action item objects |
| ↳ `id` | number | Action item ID |
| ↳ `title` | string | Action item title |
| ↳ `description` | string | Action item description |
| ↳ `assignee` | object | Person assigned to the action item (or null) |
| ↳ `name` | string | Assignee name |
| ↳ `email` | string | Assignee email |
| ↳ `status` | string | Status: PENDING or DONE |
| `transcript` | array | Array of transcript segments |
| ↳ `speaker` | string | Speaker name |
| ↳ `text` | string | Transcript text |
| ↳ `timestamp` | number | Timestamp in seconds |
| `insights` | object | User-created insights keyed by insight name |
| `meeting` | object | Full meeting payload object |
| ↳ `id` | number | Meeting ID |
| ↳ `name` | string | Meeting name |
| ↳ `url` | string | Meeting URL |
| ↳ `duration` | number | Duration in seconds |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `recordingUrl` | string | Recording URL |
---
# Clay (/integrations/clay)
{/* MANUAL-CONTENT-START:intro */}
[Clay](https://www.clay.com/) is a data enrichment and workflow automation platform designed to help teams streamline lead generation, research, and other data operations using powerful integrations and flexible input options.
In Sim, the Clay integration lets your agents seamlessly insert structured data into Clay workbooks via webhook triggers. This makes it easy to collect, enrich, and manage dynamic outputs—such as leads, research summaries, or action items—directly within a collaborative, spreadsheet-like interface.
With Clay, you can:
* **Enrich agent outputs**: Automatically feed your Sim agent data into Clay tables for structured tracking and analysis.
* **Trigger workflows via webhooks**: Use Clay’s webhook support to initiate Sim agent tasks directly from Clay or have agents send data to Clay as part of your workflow.
* **Leverage data loops**: Seamlessly iterate over enriched data rows with agents that operate across dynamic datasets.
The integration supports workflows where your agents populate rows in real time, enabling asynchronous, collaborative work. Whether you're automating research, enriching CRM data, or tracking operational outcomes, Clay becomes a living data layer that interacts intelligently with your agents. By connecting Sim with Clay, you can operationalize agent-generated results, automate dataset processing, and maintain an auditable, up-to-date record of AI-driven work.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Clay into the workflow. Can populate a table with data.
## Actions [#actions]
### Clay Populate [#clay-populate]
Populate Clay with data from a JSON file. Enables direct communication and notifications with timestamp tracking and channel confirmation.
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | --------------------------------------------------------------------------------------- |
| `webhookURL` | string | Yes | The webhook URL to populate |
| `data` | json | Yes | The data to populate |
| `authToken` | string | No | Optional auth token for Clay webhook authentication (most webhooks do not require this) |
#### Output [#output]
| Parameter | Type | Description |
| --------------- | ------ | --------------------------------------- |
| `data` | json | Response data from Clay webhook |
| `metadata` | object | Webhook response metadata |
| ↳ `status` | number | HTTP status code |
| ↳ `statusText` | string | HTTP status text |
| ↳ `headers` | object | Response headers from Clay |
| ↳ `timestamp` | string | ISO timestamp when webhook was received |
| ↳ `contentType` | string | Content type of the response |
---
# Clerk (/integrations/clerk)
{/* MANUAL-CONTENT-START:intro */}
[Clerk](https://clerk.com/) is a comprehensive identity infrastructure platform that helps you manage users, authentication, and sessions for your applications.
In Sim, the Clerk integration lets your agents automate user and session management through easy-to-use API-based tools. Agents can securely list users, update user profiles, manage organizations, monitor sessions, and revoke access directly in your workflow.
With Clerk, you can:
* **Authenticate users and manage sessions**: Seamlessly control sign-in, sign-up, and session lifecycle for your users.
* **List and update users**: Automatically pull user lists, update user attributes, or view profile details as part of your agent tasks.
* **Manage organizations and memberships**: Add or update organizations and administer user memberships with clarity.
* **Monitor and revoke sessions**: See active or past user sessions, and revoke access immediately if needed for security.
The integration enables real-time, auditable management of your user base—all from within Sim. Connected agents can automate onboarding, enforce policies, keep directories up to date, and react to authentication events or organizational changes, helping you run secure and flexible processes using Clerk as your identity engine.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Clerk authentication and user management into your workflow. Create, update, delete, ban, lock, and list users. Manage organizations, their memberships, and invitations. Monitor and control user sessions. Maintain allowlist/blocklist identifiers, JWT templates, and actor tokens.
## Actions [#actions]
### List Users from Clerk [#list-users-from-clerk]
List all users in your Clerk application with optional filtering and pagination
#### Input [#input]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `limit` | number | No | Number of results per page (e.g., 10, 50, 100; range: 1-500, default: 10) |
| `offset` | number | No | Number of results to skip for pagination (e.g., 0, 10, 20) |
| `orderBy` | string | No | Sort field with optional +/- prefix for direction (default: -created\_at) |
| `emailAddress` | string | No | Filter by email address (e.g., [user@example.com](mailto:user@example.com) or [user1@example.com](mailto:user1@example.com),[user2@example.com](mailto:user2@example.com)) |
| `phoneNumber` | string | No | Filter by phone number (comma-separated for multiple) |
| `externalId` | string | No | Filter by external ID (comma-separated for multiple) |
| `username` | string | No | Filter by username (comma-separated for multiple) |
| `userId` | string | No | Filter by user ID (e.g., user\_2NNEqL2nrIRdJ194ndJqAHwEfxC or comma-separated for multiple) |
| `query` | string | No | Search query to match across email, phone, username, and names (e.g., john or [john@example.com](mailto:john@example.com)) |
#### Output [#output]
| Parameter | Type | Description |
| ------------------------- | ------- | ---------------------------------------- |
| `users` | array | Array of Clerk user objects |
| ↳ `id` | string | User ID |
| ↳ `username` | string | Username |
| ↳ `firstName` | string | First name |
| ↳ `lastName` | string | Last name |
| ↳ `imageUrl` | string | Profile image URL |
| ↳ `hasImage` | boolean | Whether user has a profile image |
| ↳ `primaryEmailAddressId` | string | Primary email address ID |
| ↳ `primaryPhoneNumberId` | string | Primary phone number ID |
| ↳ `emailAddresses` | array | User email addresses |
| ↳ `id` | string | Email address ID |
| ↳ `emailAddress` | string | Email address |
| ↳ `phoneNumbers` | array | User phone numbers |
| ↳ `id` | string | Phone number ID |
| ↳ `phoneNumber` | string | Phone number |
| ↳ `externalId` | string | External system ID |
| ↳ `passwordEnabled` | boolean | Whether password is enabled |
| ↳ `twoFactorEnabled` | boolean | Whether 2FA is enabled |
| ↳ `banned` | boolean | Whether user is banned |
| ↳ `locked` | boolean | Whether user is locked |
| ↳ `lastSignInAt` | number | Last sign-in timestamp |
| ↳ `lastActiveAt` | number | Last activity timestamp |
| ↳ `createdAt` | number | Creation timestamp |
| ↳ `updatedAt` | number | Last update timestamp |
| ↳ `publicMetadata` | json | Public metadata |
| `totalCount` | number | Total number of users matching the query |
| `success` | boolean | Operation success status |
### Get User from Clerk [#get-user-from-clerk]
Retrieve a single user by their ID from Clerk
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------ |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `userId` | string | Yes | The ID of the user to retrieve (e.g., user\_2NNEqL2nrIRdJ194ndJqAHwEfxC) |
#### Output [#output-1]
| Parameter | Type | Description |
| --------------------------- | ------- | ------------------------------------------ |
| `id` | string | User ID |
| `username` | string | Username |
| `firstName` | string | First name |
| `lastName` | string | Last name |
| `imageUrl` | string | Profile image URL |
| `hasImage` | boolean | Whether user has a profile image |
| `primaryEmailAddressId` | string | Primary email address ID |
| `primaryPhoneNumberId` | string | Primary phone number ID |
| `primaryWeb3WalletId` | string | Primary Web3 wallet ID |
| `emailAddresses` | array | User email addresses |
| ↳ `id` | string | Email address ID |
| ↳ `emailAddress` | string | Email address |
| ↳ `verified` | boolean | Whether email is verified |
| `phoneNumbers` | array | User phone numbers |
| ↳ `id` | string | Phone number ID |
| ↳ `phoneNumber` | string | Phone number |
| ↳ `verified` | boolean | Whether phone is verified |
| `externalId` | string | External system ID |
| `passwordEnabled` | boolean | Whether password is enabled |
| `twoFactorEnabled` | boolean | Whether 2FA is enabled |
| `totpEnabled` | boolean | Whether TOTP is enabled |
| `backupCodeEnabled` | boolean | Whether backup codes are enabled |
| `banned` | boolean | Whether user is banned |
| `locked` | boolean | Whether user is locked |
| `deleteSelfEnabled` | boolean | Whether user can delete themselves |
| `createOrganizationEnabled` | boolean | Whether user can create organizations |
| `lastSignInAt` | number | Last sign-in timestamp |
| `lastActiveAt` | number | Last activity timestamp |
| `createdAt` | number | Creation timestamp |
| `updatedAt` | number | Last update timestamp |
| `publicMetadata` | json | Public metadata (readable from frontend) |
| `privateMetadata` | json | Private metadata (backend only) |
| `unsafeMetadata` | json | Unsafe metadata (modifiable from frontend) |
| `success` | boolean | Operation success status |
### Create User in Clerk [#create-user-in-clerk]
Create a new user in your Clerk application
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------------------- | ------- | -------- | ----------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `emailAddress` | string | No | Email addresses for the user (comma-separated for multiple) |
| `phoneNumber` | string | No | Phone numbers for the user (comma-separated for multiple) |
| `username` | string | No | Username for the user (must be unique) |
| `password` | string | No | Password for the user (minimum 8 characters) |
| `firstName` | string | No | First name of the user |
| `lastName` | string | No | Last name of the user |
| `externalId` | string | No | External system identifier (must be unique) |
| `publicMetadata` | json | No | Public metadata (JSON object, readable from frontend) |
| `privateMetadata` | json | No | Private metadata (JSON object, backend only) |
| `unsafeMetadata` | json | No | Unsafe metadata (JSON object, modifiable from frontend) |
| `skipPasswordChecks` | boolean | No | Skip password validation checks |
| `skipPasswordRequirement` | boolean | No | Make password optional |
#### Output [#output-2]
| Parameter | Type | Description |
| ----------------------- | ------- | ------------------------- |
| `id` | string | Created user ID |
| `username` | string | Username |
| `firstName` | string | First name |
| `lastName` | string | Last name |
| `imageUrl` | string | Profile image URL |
| `primaryEmailAddressId` | string | Primary email address ID |
| `primaryPhoneNumberId` | string | Primary phone number ID |
| `emailAddresses` | array | User email addresses |
| ↳ `id` | string | Email address ID |
| ↳ `emailAddress` | string | Email address |
| ↳ `verified` | boolean | Whether email is verified |
| `phoneNumbers` | array | User phone numbers |
| ↳ `id` | string | Phone number ID |
| ↳ `phoneNumber` | string | Phone number |
| ↳ `verified` | boolean | Whether phone is verified |
| `externalId` | string | External system ID |
| `createdAt` | number | Creation timestamp |
| `updatedAt` | number | Last update timestamp |
| `publicMetadata` | json | Public metadata |
| `success` | boolean | Operation success status |
### Update User in Clerk [#update-user-in-clerk]
Update an existing user in your Clerk application
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ----------------------- | ------- | -------- | ---------------------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `userId` | string | Yes | The ID of the user to update (e.g., user\_2NNEqL2nrIRdJ194ndJqAHwEfxC) |
| `firstName` | string | No | First name of the user |
| `lastName` | string | No | Last name of the user |
| `username` | string | No | Username (must be unique) |
| `password` | string | No | New password (minimum 8 characters) |
| `externalId` | string | No | External system identifier |
| `primaryEmailAddressId` | string | No | ID of verified email to set as primary |
| `primaryPhoneNumberId` | string | No | ID of verified phone to set as primary |
| `publicMetadata` | json | No | Public metadata (JSON object) |
| `privateMetadata` | json | No | Private metadata (JSON object) |
| `unsafeMetadata` | json | No | Unsafe metadata (JSON object) |
| `skipPasswordChecks` | boolean | No | Skip password validation checks |
#### Output [#output-3]
| Parameter | Type | Description |
| ----------------------- | ------- | ------------------------- |
| `id` | string | Updated user ID |
| `username` | string | Username |
| `firstName` | string | First name |
| `lastName` | string | Last name |
| `imageUrl` | string | Profile image URL |
| `primaryEmailAddressId` | string | Primary email address ID |
| `primaryPhoneNumberId` | string | Primary phone number ID |
| `emailAddresses` | array | User email addresses |
| ↳ `id` | string | Email address ID |
| ↳ `emailAddress` | string | Email address |
| ↳ `verified` | boolean | Whether email is verified |
| `phoneNumbers` | array | User phone numbers |
| ↳ `id` | string | Phone number ID |
| ↳ `phoneNumber` | string | Phone number |
| ↳ `verified` | boolean | Whether phone is verified |
| `externalId` | string | External system ID |
| `banned` | boolean | Whether user is banned |
| `locked` | boolean | Whether user is locked |
| `createdAt` | number | Creation timestamp |
| `updatedAt` | number | Last update timestamp |
| `publicMetadata` | json | Public metadata |
| `success` | boolean | Operation success status |
### Delete User from Clerk [#delete-user-from-clerk]
Delete a user from your Clerk application
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `userId` | string | Yes | The ID of the user to delete (e.g., user\_2NNEqL2nrIRdJ194ndJqAHwEfxC) |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ------- | ---------------------------- |
| `id` | string | Deleted user ID |
| `object` | string | Object type (user) |
| `deleted` | boolean | Whether the user was deleted |
| `success` | boolean | Operation success status |
### Ban User in Clerk [#ban-user-in-clerk]
Ban a user, preventing them from signing in
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `userId` | string | Yes | The ID of the user to ban (e.g., user\_2NNEqL2nrIRdJ194ndJqAHwEfxC) |
#### Output [#output-5]
| Parameter | Type | Description |
| ------------------------- | ------- | ----------------------------- |
| `id` | string | User ID |
| `username` | string | Username |
| `firstName` | string | First name |
| `lastName` | string | Last name |
| `banned` | boolean | Whether the user is banned |
| `locked` | boolean | Whether the user is locked |
| `lockoutExpiresInSeconds` | number | Seconds until lockout expires |
| `updatedAt` | number | Last update timestamp |
| `success` | boolean | Operation success status |
### Unban User in Clerk [#unban-user-in-clerk]
Remove a ban from a user, allowing them to sign in again
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `userId` | string | Yes | The ID of the user to unban (e.g., user\_2NNEqL2nrIRdJ194ndJqAHwEfxC) |
#### Output [#output-6]
| Parameter | Type | Description |
| ------------------------- | ------- | ----------------------------- |
| `id` | string | User ID |
| `username` | string | Username |
| `firstName` | string | First name |
| `lastName` | string | Last name |
| `banned` | boolean | Whether the user is banned |
| `locked` | boolean | Whether the user is locked |
| `lockoutExpiresInSeconds` | number | Seconds until lockout expires |
| `updatedAt` | number | Last update timestamp |
| `success` | boolean | Operation success status |
### Lock User in Clerk [#lock-user-in-clerk]
Lock a user account, blocking sign-in attempts
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | -------------------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `userId` | string | Yes | The ID of the user to lock (e.g., user\_2NNEqL2nrIRdJ194ndJqAHwEfxC) |
#### Output [#output-7]
| Parameter | Type | Description |
| ------------------------- | ------- | ----------------------------- |
| `id` | string | User ID |
| `username` | string | Username |
| `firstName` | string | First name |
| `lastName` | string | Last name |
| `banned` | boolean | Whether the user is banned |
| `locked` | boolean | Whether the user is locked |
| `lockoutExpiresInSeconds` | number | Seconds until lockout expires |
| `updatedAt` | number | Last update timestamp |
| `success` | boolean | Operation success status |
### Unlock User in Clerk [#unlock-user-in-clerk]
Unlock a previously locked user account
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `userId` | string | Yes | The ID of the user to unlock (e.g., user\_2NNEqL2nrIRdJ194ndJqAHwEfxC) |
#### Output [#output-8]
| Parameter | Type | Description |
| ------------------------- | ------- | ----------------------------- |
| `id` | string | User ID |
| `username` | string | Username |
| `firstName` | string | First name |
| `lastName` | string | Last name |
| `banned` | boolean | Whether the user is banned |
| `locked` | boolean | Whether the user is locked |
| `lockoutExpiresInSeconds` | number | Seconds until lockout expires |
| `updatedAt` | number | Last update timestamp |
| `success` | boolean | Operation success status |
### Get User OAuth Access Token from Clerk [#get-user-oauth-access-token-from-clerk]
Retrieve a user's OAuth access token for a connected external provider (e.g. Google, GitHub, Microsoft) obtained via Clerk SSO
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `userId` | string | Yes | The ID of the user (e.g., user\_2NNEqL2nrIRdJ194ndJqAHwEfxC) |
| `provider` | string | Yes | OAuth provider slug, e.g. google, github, microsoft, discord (without the oauth\_ prefix) |
#### Output [#output-9]
| Parameter | Type | Description |
| --------------------- | ------- | ---------------------------------------------- |
| `accessTokens` | array | OAuth access tokens for the connected provider |
| ↳ `externalAccountId` | string | External account ID |
| ↳ `token` | string | OAuth access token |
| ↳ `expiresAt` | number | Expiration timestamp |
| ↳ `provider` | string | OAuth provider slug |
| ↳ `label` | string | Token label |
| ↳ `scopes` | array | OAuth scopes granted to the token |
| ↳ `publicMetadata` | json | Public metadata associated with the token |
| `success` | boolean | Operation success status |
### List Organizations from Clerk [#list-organizations-from-clerk]
List all organizations in your Clerk application with optional filtering
#### Input [#input-10]
| Parameter | Type | Required | Description |
| --------------------- | ------- | -------- | ------------------------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `limit` | number | No | Number of results per page (e.g., 10, 50, 100; range: 1-500, default: 10) |
| `offset` | number | No | Number of results to skip for pagination (e.g., 0, 10, 20) |
| `includeMembersCount` | boolean | No | Include member count for each organization |
| `query` | string | No | Search by organization ID, name, or slug (e.g., Acme Corp or acme-corp) |
| `orderBy` | string | No | Sort field (name, created\_at, members\_count) with +/- prefix |
#### Output [#output-10]
| Parameter | Type | Description |
| --------------------------- | ------- | ----------------------------------- |
| `organizations` | array | Array of Clerk organization objects |
| ↳ `id` | string | Organization ID |
| ↳ `name` | string | Organization name |
| ↳ `slug` | string | Organization slug |
| ↳ `imageUrl` | string | Organization image URL |
| ↳ `hasImage` | boolean | Whether organization has an image |
| ↳ `membersCount` | number | Number of members |
| ↳ `pendingInvitationsCount` | number | Number of pending invitations |
| ↳ `maxAllowedMemberships` | number | Max allowed memberships |
| ↳ `adminDeleteEnabled` | boolean | Whether admin delete is enabled |
| ↳ `createdBy` | string | Creator user ID |
| ↳ `createdAt` | number | Creation timestamp |
| ↳ `updatedAt` | number | Last update timestamp |
| ↳ `publicMetadata` | json | Public metadata |
| `totalCount` | number | Total number of organizations |
| `success` | boolean | Operation success status |
### Get Organization from Clerk [#get-organization-from-clerk]
Retrieve a single organization by ID or slug from Clerk
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `organizationId` | string | Yes | The ID or slug of the organization to retrieve (e.g., org\_2NNEqL2nrIRdJ194ndJqAHwEfxC or my-org-slug) |
#### Output [#output-11]
| Parameter | Type | Description |
| ------------------------- | ------- | --------------------------------- |
| `id` | string | Organization ID |
| `name` | string | Organization name |
| `slug` | string | Organization slug |
| `imageUrl` | string | Organization image URL |
| `hasImage` | boolean | Whether organization has an image |
| `membersCount` | number | Number of members |
| `pendingInvitationsCount` | number | Number of pending invitations |
| `maxAllowedMemberships` | number | Max allowed memberships |
| `adminDeleteEnabled` | boolean | Whether admin delete is enabled |
| `createdBy` | string | Creator user ID |
| `createdAt` | number | Creation timestamp |
| `updatedAt` | number | Last update timestamp |
| `publicMetadata` | json | Public metadata |
| `success` | boolean | Operation success status |
### Create Organization in Clerk [#create-organization-in-clerk]
Create a new organization in your Clerk application
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ----------------------- | ------ | -------- | -------------------------------------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `name` | string | Yes | Name of the organization |
| `createdBy` | string | Yes | User ID of the creator who will become admin (e.g., user\_2NNEqL2nrIRdJ194ndJqAHwEfxC) |
| `slug` | string | No | Slug identifier for the organization |
| `maxAllowedMemberships` | number | No | Maximum member capacity (0 for unlimited) |
| `publicMetadata` | json | No | Public metadata (JSON object) |
| `privateMetadata` | json | No | Private metadata (JSON object) |
#### Output [#output-12]
| Parameter | Type | Description |
| ------------------------- | ------- | --------------------------------- |
| `id` | string | Created organization ID |
| `name` | string | Organization name |
| `slug` | string | Organization slug |
| `imageUrl` | string | Organization image URL |
| `hasImage` | boolean | Whether organization has an image |
| `membersCount` | number | Number of members |
| `pendingInvitationsCount` | number | Number of pending invitations |
| `maxAllowedMemberships` | number | Max allowed memberships |
| `adminDeleteEnabled` | boolean | Whether admin delete is enabled |
| `createdBy` | string | Creator user ID |
| `createdAt` | number | Creation timestamp |
| `updatedAt` | number | Last update timestamp |
| `publicMetadata` | json | Public metadata |
| `success` | boolean | Operation success status |
### Update Organization in Clerk [#update-organization-in-clerk]
Update an existing organization in your Clerk application
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ----------------------- | ------- | -------- | ----------------------------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `organizationId` | string | Yes | The ID of the organization to update (e.g., org\_2NNEqL2nrIRdJ194ndJqAHwEfxC) |
| `name` | string | No | Name of the organization |
| `slug` | string | No | Slug identifier for the organization |
| `maxAllowedMemberships` | number | No | Maximum member capacity (0 for unlimited) |
| `adminDeleteEnabled` | boolean | No | Whether admins can delete the organization |
#### Output [#output-13]
| Parameter | Type | Description |
| ------------------------- | ------- | --------------------------------- |
| `id` | string | Organization ID |
| `name` | string | Organization name |
| `slug` | string | Organization slug |
| `imageUrl` | string | Organization image URL |
| `hasImage` | boolean | Whether organization has an image |
| `membersCount` | number | Number of members |
| `pendingInvitationsCount` | number | Number of pending invitations |
| `maxAllowedMemberships` | number | Max allowed memberships |
| `adminDeleteEnabled` | boolean | Whether admin delete is enabled |
| `createdBy` | string | Creator user ID |
| `createdAt` | number | Creation timestamp |
| `updatedAt` | number | Last update timestamp |
| `publicMetadata` | json | Public metadata |
| `success` | boolean | Operation success status |
### Delete Organization from Clerk [#delete-organization-from-clerk]
Delete an organization from your Clerk application
#### Input [#input-14]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ----------------------------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `organizationId` | string | Yes | The ID of the organization to delete (e.g., org\_2NNEqL2nrIRdJ194ndJqAHwEfxC) |
#### Output [#output-14]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------ |
| `id` | string | Deleted organization ID |
| `object` | string | Object type (organization) |
| `deleted` | boolean | Whether the organization was deleted |
| `success` | boolean | Operation success status |
### List Organization Memberships from Clerk [#list-organization-memberships-from-clerk]
List members of a Clerk organization with optional filtering and pagination
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `organizationId` | string | Yes | The ID of the organization (e.g., org\_2NNEqL2nrIRdJ194ndJqAHwEfxC) |
| `limit` | number | No | Number of results per page (e.g., 10, 50, 100; range: 1-500, default: 10) |
| `offset` | number | No | Number of results to skip for pagination (e.g., 0, 10, 20) |
| `orderBy` | string | No | Sort field (e.g., created\_at) with +/- prefix for direction |
| `role` | string | No | Filter by role, comma-separated for multiple (e.g., org:admin,org:member) |
#### Output [#output-15]
| Parameter | Type | Description |
| ------------------ | ------- | ---------------------------------------------- |
| `memberships` | array | Array of Clerk organization membership objects |
| ↳ `id` | string | Membership ID |
| ↳ `role` | string | Member role |
| ↳ `roleName` | string | Human-readable role name |
| ↳ `permissions` | array | Permissions granted by the role |
| ↳ `organizationId` | string | Organization ID |
| ↳ `userId` | string | Member user ID |
| ↳ `firstName` | string | Member first name |
| ↳ `lastName` | string | Member last name |
| ↳ `imageUrl` | string | Member profile image URL |
| ↳ `identifier` | string | Member identifier (e.g., email) |
| ↳ `username` | string | Member username |
| ↳ `banned` | boolean | Whether the member is banned |
| ↳ `publicMetadata` | json | Public metadata |
| ↳ `createdAt` | number | Creation timestamp |
| ↳ `updatedAt` | number | Last update timestamp |
| `totalCount` | number | Total number of memberships |
| `success` | boolean | Operation success status |
### Add Organization Member in Clerk [#add-organization-member-in-clerk]
Add a user as a member of a Clerk organization with a given role
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `organizationId` | string | Yes | The ID of the organization (e.g., org\_2NNEqL2nrIRdJ194ndJqAHwEfxC) |
| `userId` | string | Yes | ID of the user to add as a member |
| `role` | string | Yes | Role to assign, e.g. org:admin or org:member |
#### Output [#output-16]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------------- |
| `id` | string | Membership ID |
| `role` | string | Member role |
| `roleName` | string | Human-readable role name |
| `permissions` | array | Permissions granted by the role |
| `organizationId` | string | Organization ID |
| `userId` | string | Member user ID |
| `firstName` | string | Member first name |
| `lastName` | string | Member last name |
| `imageUrl` | string | Member profile image URL |
| `identifier` | string | Member identifier (e.g., email) |
| `username` | string | Member username |
| `banned` | boolean | Whether the member is banned |
| `publicMetadata` | json | Public metadata |
| `createdAt` | number | Creation timestamp |
| `updatedAt` | number | Last update timestamp |
| `success` | boolean | Operation success status |
### Update Organization Membership in Clerk [#update-organization-membership-in-clerk]
Change a member's role within a Clerk organization
#### Input [#input-17]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `organizationId` | string | Yes | The ID of the organization (e.g., org\_2NNEqL2nrIRdJ194ndJqAHwEfxC) |
| `userId` | string | Yes | ID of the member whose role is being changed |
| `role` | string | Yes | New role to assign, e.g. org:admin or org:member |
#### Output [#output-17]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------------- |
| `id` | string | Membership ID |
| `role` | string | Member role |
| `roleName` | string | Human-readable role name |
| `permissions` | array | Permissions granted by the role |
| `organizationId` | string | Organization ID |
| `userId` | string | Member user ID |
| `firstName` | string | Member first name |
| `lastName` | string | Member last name |
| `imageUrl` | string | Member profile image URL |
| `identifier` | string | Member identifier (e.g., email) |
| `username` | string | Member username |
| `banned` | boolean | Whether the member is banned |
| `publicMetadata` | json | Public metadata |
| `createdAt` | number | Creation timestamp |
| `updatedAt` | number | Last update timestamp |
| `success` | boolean | Operation success status |
### Remove Organization Member from Clerk [#remove-organization-member-from-clerk]
Remove a member from a Clerk organization
#### Input [#input-18]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `organizationId` | string | Yes | The ID of the organization (e.g., org\_2NNEqL2nrIRdJ194ndJqAHwEfxC) |
| `userId` | string | Yes | ID of the member to remove |
#### Output [#output-18]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------------- |
| `id` | string | Membership ID |
| `role` | string | Member role |
| `roleName` | string | Human-readable role name |
| `permissions` | array | Permissions granted by the role |
| `organizationId` | string | Organization ID |
| `userId` | string | Member user ID |
| `firstName` | string | Member first name |
| `lastName` | string | Member last name |
| `imageUrl` | string | Member profile image URL |
| `identifier` | string | Member identifier (e.g., email) |
| `username` | string | Member username |
| `banned` | boolean | Whether the member is banned |
| `publicMetadata` | json | Public metadata |
| `createdAt` | number | Creation timestamp |
| `updatedAt` | number | Last update timestamp |
| `success` | boolean | Operation success status |
### Create Organization Invitation in Clerk [#create-organization-invitation-in-clerk]
Invite a user by email to join a Clerk organization with a given role
#### Input [#input-19]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | ------------------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `organizationId` | string | Yes | The ID of the organization (e.g., org\_2NNEqL2nrIRdJ194ndJqAHwEfxC) |
| `emailAddress` | string | Yes | Email address of the user to invite |
| `role` | string | Yes | Role to assign on acceptance, e.g. org:admin or org:member |
| `inviterUserId` | string | No | User ID of the inviter |
| `redirectUrl` | string | No | URL to redirect to after the invitation is accepted |
| `expiresInDays` | number | No | Days until the invitation expires (1-365, default 30) |
| `publicMetadata` | json | No | Public metadata (JSON object) |
| `privateMetadata` | json | No | Private metadata (JSON object) |
| `notify` | boolean | No | Whether Clerk sends the invitation email (default true) |
#### Output [#output-19]
| Parameter | Type | Description |
| ------------------ | ------- | ---------------------------- |
| `id` | string | Invitation ID |
| `emailAddress` | string | Invited email address |
| `role` | string | Role to assign on acceptance |
| `roleName` | string | Human-readable role name |
| `organizationId` | string | Organization ID |
| `inviterId` | string | User ID of the inviter |
| `inviterEmail` | string | Inviter's email address |
| `inviterFirstName` | string | Inviter's first name |
| `inviterLastName` | string | Inviter's last name |
| `status` | string | Invitation status |
| `url` | string | Invitation URL |
| `expiresAt` | number | Expiration timestamp |
| `publicMetadata` | json | Public metadata |
| `createdAt` | number | Creation timestamp |
| `updatedAt` | number | Last update timestamp |
| `success` | boolean | Operation success status |
### List Organization Invitations from Clerk [#list-organization-invitations-from-clerk]
List pending and past invitations for a Clerk organization
#### Input [#input-20]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | -------------------------------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `organizationId` | string | Yes | The ID of the organization (e.g., org\_2NNEqL2nrIRdJ194ndJqAHwEfxC) |
| `status` | string | No | Filter by status: pending, accepted, revoked, or expired |
| `emailAddress` | string | No | Filter by invited email address |
| `orderBy` | string | No | Sort field (created\_at, email\_address) with +/- prefix (default: -created\_at) |
| `limit` | number | No | Number of results per page (e.g., 10, 50, 100; range: 1-500, default: 10) |
| `offset` | number | No | Number of results to skip for pagination (e.g., 0, 10, 20) |
#### Output [#output-20]
| Parameter | Type | Description |
| -------------------- | ------- | ---------------------------------------------- |
| `invitations` | array | Array of Clerk organization invitation objects |
| ↳ `id` | string | Invitation ID |
| ↳ `emailAddress` | string | Invited email address |
| ↳ `role` | string | Role to assign on acceptance |
| ↳ `roleName` | string | Human-readable role name |
| ↳ `organizationId` | string | Organization ID |
| ↳ `inviterId` | string | User ID of the inviter |
| ↳ `inviterEmail` | string | Inviter's email address |
| ↳ `inviterFirstName` | string | Inviter's first name |
| ↳ `inviterLastName` | string | Inviter's last name |
| ↳ `status` | string | Invitation status |
| ↳ `url` | string | Invitation URL |
| ↳ `expiresAt` | number | Expiration timestamp |
| ↳ `publicMetadata` | json | Public metadata |
| ↳ `createdAt` | number | Creation timestamp |
| ↳ `updatedAt` | number | Last update timestamp |
| `totalCount` | number | Total number of invitations |
| `success` | boolean | Operation success status |
### List Sessions from Clerk [#list-sessions-from-clerk]
List sessions for a user or client in your Clerk application
#### Input [#input-21]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `userId` | string | No | User ID to list sessions for (e.g., user\_2NNEqL2nrIRdJ194ndJqAHwEfxC; required if clientId not provided) |
| `clientId` | string | No | Client ID to list sessions for (required if userId not provided) |
| `status` | string | No | Filter by session status (abandoned, active, ended, expired, pending, removed, replaced, revoked) |
| `limit` | number | No | Number of results per page (e.g., 10, 50, 100; range: 1-500, default: 10) |
| `offset` | number | No | Number of results to skip for pagination (e.g., 0, 10, 20) |
#### Output [#output-21]
| Parameter | Type | Description |
| ---------------------------- | ------- | ------------------------------ |
| `sessions` | array | Array of Clerk session objects |
| ↳ `id` | string | Session ID |
| ↳ `userId` | string | User ID |
| ↳ `clientId` | string | Client ID |
| ↳ `status` | string | Session status |
| ↳ `lastActiveAt` | number | Last activity timestamp |
| ↳ `lastActiveOrganizationId` | string | Last active organization ID |
| ↳ `expireAt` | number | Expiration timestamp |
| ↳ `abandonAt` | number | Abandon timestamp |
| ↳ `createdAt` | number | Creation timestamp |
| ↳ `updatedAt` | number | Last update timestamp |
| `totalCount` | number | Total number of sessions |
| `success` | boolean | Operation success status |
### Get Session from Clerk [#get-session-from-clerk]
Retrieve a single session by ID from Clerk
#### Input [#input-22]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `sessionId` | string | Yes | The ID of the session to retrieve (e.g., sess\_2NNEqL2nrIRdJ194ndJqAHwEfxC) |
#### Output [#output-22]
| Parameter | Type | Description |
| -------------------------- | ------- | --------------------------- |
| `id` | string | Session ID |
| `userId` | string | User ID |
| `clientId` | string | Client ID |
| `status` | string | Session status |
| `lastActiveAt` | number | Last activity timestamp |
| `lastActiveOrganizationId` | string | Last active organization ID |
| `expireAt` | number | Expiration timestamp |
| `abandonAt` | number | Abandon timestamp |
| `createdAt` | number | Creation timestamp |
| `updatedAt` | number | Last update timestamp |
| `success` | boolean | Operation success status |
### Revoke Session in Clerk [#revoke-session-in-clerk]
Revoke a session to immediately invalidate it
#### Input [#input-23]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `sessionId` | string | Yes | The ID of the session to revoke (e.g., sess\_2NNEqL2nrIRdJ194ndJqAHwEfxC) |
#### Output [#output-23]
| Parameter | Type | Description |
| -------------------------- | ------- | ---------------------------------- |
| `id` | string | Session ID |
| `userId` | string | User ID |
| `clientId` | string | Client ID |
| `status` | string | Session status (should be revoked) |
| `lastActiveAt` | number | Last activity timestamp |
| `lastActiveOrganizationId` | string | Last active organization ID |
| `expireAt` | number | Expiration timestamp |
| `abandonAt` | number | Abandon timestamp |
| `createdAt` | number | Creation timestamp |
| `updatedAt` | number | Last update timestamp |
| `success` | boolean | Operation success status |
### List Allowlist Identifiers from Clerk [#list-allowlist-identifiers-from-clerk]
List email/phone/web3-wallet identifiers on your Clerk instance allowlist
#### Input [#input-24]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `limit` | number | No | Number of results per page (e.g., 10, 50, 100; range: 1-500, default: 10) |
| `offset` | number | No | Number of results to skip for pagination (e.g., 0, 10, 20) |
#### Output [#output-24]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------- |
| `identifiers` | array | Array of Clerk allowlist identifier objects |
| ↳ `id` | string | Allowlist identifier ID |
| ↳ `identifier` | string | Email, phone, or web3 wallet identifier |
| ↳ `identifierType` | string | Type of identifier |
| ↳ `invitationId` | string | Associated invitation ID |
| ↳ `createdAt` | number | Creation timestamp |
| ↳ `updatedAt` | number | Last update timestamp |
| `totalCount` | number | Total number of allowlist identifiers |
| `success` | boolean | Operation success status |
### Create Allowlist Identifier in Clerk [#create-allowlist-identifier-in-clerk]
Add an email, phone number, or web3 wallet to your Clerk instance allowlist
#### Input [#input-25]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | -------------------------------------------------------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `identifier` | string | Yes | Email address, phone number, or web3 wallet to allow (wildcards like \*@example.com supported for email) |
| `notify` | boolean | No | Whether to notify the identifier owner by email (default false) |
#### Output [#output-25]
| Parameter | Type | Description |
| ---------------- | ------- | --------------------------------------- |
| `id` | string | Allowlist identifier ID |
| `identifier` | string | Email, phone, or web3 wallet identifier |
| `identifierType` | string | Type of identifier |
| `invitationId` | string | Associated invitation ID |
| `createdAt` | number | Creation timestamp |
| `updatedAt` | number | Last update timestamp |
| `success` | boolean | Operation success status |
### Delete Allowlist Identifier from Clerk [#delete-allowlist-identifier-from-clerk]
Remove an identifier from your Clerk instance allowlist
#### Input [#input-26]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `identifierId` | string | Yes | ID of the allowlist identifier to delete |
#### Output [#output-26]
| Parameter | Type | Description |
| --------- | ------- | ----------------------------------- |
| `id` | string | Deleted allowlist identifier ID |
| `object` | string | Object type (allowlist\_identifier) |
| `deleted` | boolean | Whether the identifier was deleted |
| `success` | boolean | Operation success status |
### List Blocklist Identifiers from Clerk [#list-blocklist-identifiers-from-clerk]
List email/phone/web3-wallet identifiers on your Clerk instance blocklist
#### Input [#input-27]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
#### Output [#output-27]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------- |
| `identifiers` | array | Array of Clerk blocklist identifier objects |
| ↳ `id` | string | Blocklist identifier ID |
| ↳ `identifier` | string | Email, phone, or web3 wallet identifier |
| ↳ `identifierType` | string | Type of identifier |
| ↳ `createdAt` | number | Creation timestamp |
| ↳ `updatedAt` | number | Last update timestamp |
| `totalCount` | number | Total number of blocklist identifiers |
| `success` | boolean | Operation success status |
### Create Blocklist Identifier in Clerk [#create-blocklist-identifier-in-clerk]
Add an email, phone number, or web3 wallet to your Clerk instance blocklist to prevent sign-ups
#### Input [#input-28]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ---------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `identifier` | string | Yes | Email address, phone number, or web3 wallet to block |
#### Output [#output-28]
| Parameter | Type | Description |
| ---------------- | ------- | --------------------------------------- |
| `id` | string | Blocklist identifier ID |
| `identifier` | string | Email, phone, or web3 wallet identifier |
| `identifierType` | string | Type of identifier |
| `createdAt` | number | Creation timestamp |
| `updatedAt` | number | Last update timestamp |
| `success` | boolean | Operation success status |
### Delete Blocklist Identifier from Clerk [#delete-blocklist-identifier-from-clerk]
Remove an identifier from your Clerk instance blocklist
#### Input [#input-29]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `identifierId` | string | Yes | ID of the blocklist identifier to delete |
#### Output [#output-29]
| Parameter | Type | Description |
| --------- | ------- | ----------------------------------- |
| `id` | string | Deleted blocklist identifier ID |
| `object` | string | Object type (blocklist\_identifier) |
| `deleted` | boolean | Whether the identifier was deleted |
| `success` | boolean | Operation success status |
### List JWT Templates from Clerk [#list-jwt-templates-from-clerk]
List custom JWT templates configured on your Clerk instance
#### Input [#input-30]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
#### Output [#output-30]
| Parameter | Type | Description |
| -------------------- | ------- | ------------------------------------------ |
| `templates` | array | Array of Clerk JWT template objects |
| ↳ `id` | string | JWT template ID |
| ↳ `name` | string | JWT template name |
| ↳ `claims` | json | Custom claims defined on the template |
| ↳ `lifetime` | number | Token lifetime in seconds |
| ↳ `allowedClockSkew` | number | Allowed clock skew in seconds |
| ↳ `customSigningKey` | boolean | Whether a custom signing key is configured |
| ↳ `signingAlgorithm` | string | Signing algorithm used |
| ↳ `createdAt` | number | Creation timestamp |
| ↳ `updatedAt` | number | Last update timestamp |
| `totalCount` | number | Total number of JWT templates |
| `success` | boolean | Operation success status |
### Get JWT Template from Clerk [#get-jwt-template-from-clerk]
Retrieve a single custom JWT template by ID from Clerk
#### Input [#input-31]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `templateId` | string | Yes | ID of the JWT template to retrieve |
#### Output [#output-31]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------ |
| `id` | string | JWT template ID |
| `name` | string | JWT template name |
| `claims` | json | Custom claims defined on the template |
| `lifetime` | number | Token lifetime in seconds |
| `allowedClockSkew` | number | Allowed clock skew in seconds |
| `customSigningKey` | boolean | Whether a custom signing key is configured |
| `signingAlgorithm` | string | Signing algorithm used |
| `createdAt` | number | Creation timestamp |
| `updatedAt` | number | Last update timestamp |
| `success` | boolean | Operation success status |
### Create Actor Token in Clerk [#create-actor-token-in-clerk]
Create an actor token to impersonate a user (God Mode / act-as-user), e.g. for support tooling
#### Input [#input-32]
| Parameter | Type | Required | Description |
| ----------------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `userId` | string | Yes | ID of the user to impersonate |
| `actor` | json | Yes | Actor JSON object identifying who is impersonating, must include a "sub" field, e.g. \{"sub": "user\_support\_agent\_id"} |
| `expiresInSeconds` | number | No | Seconds until the token expires (default 3600) |
| `sessionMaxDurationInSeconds` | number | No | Max duration in seconds for sessions created with this token (default 1800) |
#### Output [#output-32]
| Parameter | Type | Description |
| ----------- | ------- | --------------------------------------------- |
| `id` | string | Actor token ID |
| `status` | string | Actor token status |
| `userId` | string | ID of the impersonated user |
| `actor` | json | Actor object identifying who is impersonating |
| `token` | string | Signed actor token (JWT) |
| `url` | string | Sign-in URL for the actor token |
| `createdAt` | number | Creation timestamp |
| `updatedAt` | number | Last update timestamp |
| `success` | boolean | Operation success status |
### Revoke Actor Token in Clerk [#revoke-actor-token-in-clerk]
Revoke an actor token before it is used or expires
#### Input [#input-33]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------- |
| `secretKey` | string | Yes | The Clerk Secret Key for API authentication |
| `actorTokenId` | string | Yes | ID of the actor token to revoke |
#### Output [#output-33]
| Parameter | Type | Description |
| ----------- | ------- | --------------------------------------------- |
| `id` | string | Actor token ID |
| `status` | string | Actor token status (should be revoked) |
| `userId` | string | ID of the impersonated user |
| `actor` | json | Actor object identifying who is impersonating |
| `token` | string | Signed actor token (JWT) |
| `url` | string | Sign-in URL for the actor token |
| `createdAt` | number | Creation timestamp |
| `updatedAt` | number | Last update timestamp |
| `success` | boolean | Operation success status |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
### Clerk Organization Created [#clerk-organization-created]
Trigger workflow when a Clerk organization is created
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ---------------------------------------------------------------------- |
| `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. |
#### Output [#output-34]
| Parameter | Type | Description |
| ----------------------- | ------ | ------------------------------------------------------------ |
| `type` | string | Event type (e.g., user.created, session.created) |
| `object` | string | Always "event" |
| `timestamp` | number | Timestamp in milliseconds when the event occurred |
| `instance_id` | string | Identifier of your Clerk instance |
| `data` | json | Raw event `data` object (shape varies by event type) |
| `organizationId` | string | Clerk organization ID (data.id) |
| `name` | string | Organization name (data.name) |
| `slug` | string | Organization slug (data.slug) |
| `createdBy` | string | User ID of the creator (data.created\_by) |
| `membersCount` | number | Number of members (data.members\_count) |
| `maxAllowedMemberships` | number | Maximum allowed memberships (data.max\_allowed\_memberships) |
| `createdAt` | number | Organization creation timestamp (data.created\_at) |
***
### Clerk Organization Deleted [#clerk-organization-deleted]
Trigger workflow when a Clerk organization is deleted
#### Configuration [#configuration-1]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ---------------------------------------------------------------------- |
| `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. |
#### Output [#output-35]
| Parameter | Type | Description |
| ---------------- | ------- | ---------------------------------------------------- |
| `type` | string | Event type (e.g., user.created, session.created) |
| `object` | string | Always "event" |
| `timestamp` | number | Timestamp in milliseconds when the event occurred |
| `instance_id` | string | Identifier of your Clerk instance |
| `data` | json | Raw event `data` object (shape varies by event type) |
| `organizationId` | string | Deleted Clerk organization ID (data.id) |
| `deleted` | boolean | Whether the organization was deleted (data.deleted) |
***
### Clerk Organization Membership Created [#clerk-organization-membership-created]
Trigger workflow when a Clerk organization membership is created
#### Configuration [#configuration-2]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ---------------------------------------------------------------------- |
| `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. |
#### Output [#output-36]
| Parameter | Type | Description |
| ---------------- | ------ | -------------------------------------------------------- |
| `type` | string | Event type (e.g., user.created, session.created) |
| `object` | string | Always "event" |
| `timestamp` | number | Timestamp in milliseconds when the event occurred |
| `instance_id` | string | Identifier of your Clerk instance |
| `data` | json | Raw event `data` object (shape varies by event type) |
| `membershipId` | string | Membership ID (data.id) |
| `role` | string | Membership role, e.g. org:admin (data.role) |
| `organizationId` | string | Organization ID (data.organization.id) |
| `userId` | string | User ID of the member (data.public\_user\_data.user\_id) |
| `createdAt` | number | Membership creation timestamp (data.created\_at) |
***
### Clerk Organization Membership Deleted [#clerk-organization-membership-deleted]
Trigger workflow when a Clerk organization membership is deleted
#### Configuration [#configuration-3]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ---------------------------------------------------------------------- |
| `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. |
#### Output [#output-37]
| Parameter | Type | Description |
| -------------- | ------- | ---------------------------------------------------- |
| `type` | string | Event type (e.g., user.created, session.created) |
| `object` | string | Always "event" |
| `timestamp` | number | Timestamp in milliseconds when the event occurred |
| `instance_id` | string | Identifier of your Clerk instance |
| `data` | json | Raw event `data` object (shape varies by event type) |
| `membershipId` | string | Deleted membership ID (data.id) |
| `deleted` | boolean | Whether the membership was deleted (data.deleted) |
***
### Clerk Organization Membership Updated [#clerk-organization-membership-updated]
Trigger workflow when a Clerk organization membership is updated
#### Configuration [#configuration-4]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ---------------------------------------------------------------------- |
| `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. |
#### Output [#output-38]
| Parameter | Type | Description |
| ---------------- | ------ | -------------------------------------------------------- |
| `type` | string | Event type (e.g., user.created, session.created) |
| `object` | string | Always "event" |
| `timestamp` | number | Timestamp in milliseconds when the event occurred |
| `instance_id` | string | Identifier of your Clerk instance |
| `data` | json | Raw event `data` object (shape varies by event type) |
| `membershipId` | string | Membership ID (data.id) |
| `role` | string | Membership role, e.g. org:admin (data.role) |
| `organizationId` | string | Organization ID (data.organization.id) |
| `userId` | string | User ID of the member (data.public\_user\_data.user\_id) |
| `createdAt` | number | Membership creation timestamp (data.created\_at) |
***
### Clerk Organization Updated [#clerk-organization-updated]
Trigger workflow when a Clerk organization is updated
#### Configuration [#configuration-5]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ---------------------------------------------------------------------- |
| `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. |
#### Output [#output-39]
| Parameter | Type | Description |
| ----------------------- | ------ | ------------------------------------------------------------ |
| `type` | string | Event type (e.g., user.created, session.created) |
| `object` | string | Always "event" |
| `timestamp` | number | Timestamp in milliseconds when the event occurred |
| `instance_id` | string | Identifier of your Clerk instance |
| `data` | json | Raw event `data` object (shape varies by event type) |
| `organizationId` | string | Clerk organization ID (data.id) |
| `name` | string | Organization name (data.name) |
| `slug` | string | Organization slug (data.slug) |
| `createdBy` | string | User ID of the creator (data.created\_by) |
| `membersCount` | number | Number of members (data.members\_count) |
| `maxAllowedMemberships` | number | Maximum allowed memberships (data.max\_allowed\_memberships) |
| `createdAt` | number | Organization creation timestamp (data.created\_at) |
***
### Clerk Session Created [#clerk-session-created]
Trigger workflow when a Clerk session is created
#### Configuration [#configuration-6]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ---------------------------------------------------------------------- |
| `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. |
#### Output [#output-40]
| Parameter | Type | Description |
| ------------- | ------ | ---------------------------------------------------- |
| `type` | string | Event type (e.g., user.created, session.created) |
| `object` | string | Always "event" |
| `timestamp` | number | Timestamp in milliseconds when the event occurred |
| `instance_id` | string | Identifier of your Clerk instance |
| `data` | json | Raw event `data` object (shape varies by event type) |
| `sessionId` | string | Clerk session ID (data.id) |
| `userId` | string | User the session belongs to (data.user\_id) |
| `clientId` | string | Client ID for the session (data.client\_id) |
| `status` | string | Session status (data.status) |
| `createdAt` | number | Session creation timestamp (data.created\_at) |
***
### Clerk Session Ended [#clerk-session-ended]
Trigger workflow when a Clerk session ends
#### Configuration [#configuration-7]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ---------------------------------------------------------------------- |
| `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. |
#### Output [#output-41]
| Parameter | Type | Description |
| ------------- | ------ | ---------------------------------------------------- |
| `type` | string | Event type (e.g., user.created, session.created) |
| `object` | string | Always "event" |
| `timestamp` | number | Timestamp in milliseconds when the event occurred |
| `instance_id` | string | Identifier of your Clerk instance |
| `data` | json | Raw event `data` object (shape varies by event type) |
| `sessionId` | string | Clerk session ID (data.id) |
| `userId` | string | User the session belongs to (data.user\_id) |
| `clientId` | string | Client ID for the session (data.client\_id) |
| `status` | string | Session status (data.status) |
| `createdAt` | number | Session creation timestamp (data.created\_at) |
***
### Clerk Session Removed [#clerk-session-removed]
Trigger workflow when a Clerk session is removed
#### Configuration [#configuration-8]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ---------------------------------------------------------------------- |
| `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. |
#### Output [#output-42]
| Parameter | Type | Description |
| ------------- | ------ | ---------------------------------------------------- |
| `type` | string | Event type (e.g., user.created, session.created) |
| `object` | string | Always "event" |
| `timestamp` | number | Timestamp in milliseconds when the event occurred |
| `instance_id` | string | Identifier of your Clerk instance |
| `data` | json | Raw event `data` object (shape varies by event type) |
| `sessionId` | string | Clerk session ID (data.id) |
| `userId` | string | User the session belongs to (data.user\_id) |
| `clientId` | string | Client ID for the session (data.client\_id) |
| `status` | string | Session status (data.status) |
| `createdAt` | number | Session creation timestamp (data.created\_at) |
***
### Clerk Session Revoked [#clerk-session-revoked]
Trigger workflow when a Clerk session is revoked
#### Configuration [#configuration-9]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ---------------------------------------------------------------------- |
| `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. |
#### Output [#output-43]
| Parameter | Type | Description |
| ------------- | ------ | ---------------------------------------------------- |
| `type` | string | Event type (e.g., user.created, session.created) |
| `object` | string | Always "event" |
| `timestamp` | number | Timestamp in milliseconds when the event occurred |
| `instance_id` | string | Identifier of your Clerk instance |
| `data` | json | Raw event `data` object (shape varies by event type) |
| `sessionId` | string | Clerk session ID (data.id) |
| `userId` | string | User the session belongs to (data.user\_id) |
| `clientId` | string | Client ID for the session (data.client\_id) |
| `status` | string | Session status (data.status) |
| `createdAt` | number | Session creation timestamp (data.created\_at) |
***
### Clerk User Created [#clerk-user-created]
Trigger workflow when a Clerk user is created
#### Configuration [#configuration-10]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ---------------------------------------------------------------------- |
| `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. |
#### Output [#output-44]
| Parameter | Type | Description |
| ----------------------- | ------ | ---------------------------------------------------- |
| `type` | string | Event type (e.g., user.created, session.created) |
| `object` | string | Always "event" |
| `timestamp` | number | Timestamp in milliseconds when the event occurred |
| `instance_id` | string | Identifier of your Clerk instance |
| `data` | json | Raw event `data` object (shape varies by event type) |
| `userId` | string | Clerk user ID (data.id) |
| `firstName` | string | User's first name |
| `lastName` | string | User's last name |
| `username` | string | User's username |
| `imageUrl` | string | Profile image URL |
| `primaryEmailAddressId` | string | Primary email address ID |
| `emailAddresses` | json | Array of email address objects |
| `phoneNumbers` | json | Array of phone number objects |
| `externalId` | string | External system ID linked to the user |
| `createdAt` | number | User creation timestamp (data.created\_at) |
| `updatedAt` | number | User last update timestamp (data.updated\_at) |
***
### Clerk User Deleted [#clerk-user-deleted]
Trigger workflow when a Clerk user is deleted
#### Configuration [#configuration-11]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ---------------------------------------------------------------------- |
| `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. |
#### Output [#output-45]
| Parameter | Type | Description |
| ------------- | ------- | ---------------------------------------------------- |
| `type` | string | Event type (e.g., user.created, session.created) |
| `object` | string | Always "event" |
| `timestamp` | number | Timestamp in milliseconds when the event occurred |
| `instance_id` | string | Identifier of your Clerk instance |
| `data` | json | Raw event `data` object (shape varies by event type) |
| `userId` | string | Deleted Clerk user ID (data.id) |
| `deleted` | boolean | Whether the user was deleted (data.deleted) |
***
### Clerk User Updated [#clerk-user-updated]
Trigger workflow when a Clerk user is updated
#### Configuration [#configuration-12]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ---------------------------------------------------------------------- |
| `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. |
#### Output [#output-46]
| Parameter | Type | Description |
| ----------------------- | ------ | ---------------------------------------------------- |
| `type` | string | Event type (e.g., user.created, session.created) |
| `object` | string | Always "event" |
| `timestamp` | number | Timestamp in milliseconds when the event occurred |
| `instance_id` | string | Identifier of your Clerk instance |
| `data` | json | Raw event `data` object (shape varies by event type) |
| `userId` | string | Clerk user ID (data.id) |
| `firstName` | string | User's first name |
| `lastName` | string | User's last name |
| `username` | string | User's username |
| `imageUrl` | string | Profile image URL |
| `primaryEmailAddressId` | string | Primary email address ID |
| `emailAddresses` | json | Array of email address objects |
| `phoneNumbers` | json | Array of phone number objects |
| `externalId` | string | External system ID linked to the user |
| `createdAt` | number | User creation timestamp (data.created\_at) |
| `updatedAt` | number | User last update timestamp (data.updated\_at) |
***
### Clerk Webhook [#clerk-webhook]
Trigger workflow on any Clerk webhook event
#### Configuration [#configuration-13]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ---------------------------------------------------------------------- |
| `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. |
#### Output [#output-47]
| Parameter | Type | Description |
| ------------- | ------ | ---------------------------------------------------- |
| `type` | string | Event type (e.g., user.created, session.created) |
| `object` | string | Always "event" |
| `timestamp` | number | Timestamp in milliseconds when the event occurred |
| `instance_id` | string | Identifier of your Clerk instance |
| `data` | json | Raw event `data` object (shape varies by event type) |
---
# ClickHouse (/integrations/clickhouse)
{/* MANUAL-CONTENT-START:intro */}
[ClickHouse](https://clickhouse.com) is an open-source, column-oriented database management system for online analytical processing (OLAP). It is built for speed at scale — running aggregations and analytical queries over billions of rows in real time.
The ClickHouse block connects to any ClickHouse deployment (ClickHouse Cloud or self-hosted) over the [HTTP interface](https://clickhouse.com/docs/interfaces/http). Use it to run analytical queries, stream rows into tables, manage schemas, inspect system state, and execute arbitrary SQL — all from within a workflow.
**Connection details**
* **Host** — your ClickHouse hostname (e.g. `your-instance.clickhouse.cloud` or your server address).
* **Port** — the HTTP interface port. Use `8443` for HTTPS (ClickHouse Cloud) or `8123` for plain HTTP (self-hosted).
* **Database** / **Username** — default to `default` if not specified.
* **Password** — optional for unauthenticated local instances.
* **Use HTTPS** — keep enabled for any remote or Cloud instance.
**Things to know**
* `UPDATE` and `DELETE` are implemented as ClickHouse [mutations](https://clickhouse.com/docs/sql-reference/statements/alter/update) (`ALTER TABLE ... UPDATE/DELETE`). Mutations run **asynchronously** in the background, so the affected row count is not returned immediately.
* ClickHouse is optimized for bulk inserts. Prefer batching many rows per insert over many single-row inserts.
* The connection host is validated to block private/internal addresses, so the block cannot reach `localhost` or internal-only hosts.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate ClickHouse into the workflow. Query and insert data, manage databases and tables, inspect schemas, monitor mutations and running queries, manage partitions, and execute raw SQL over the ClickHouse HTTP interface.
## Actions [#actions]
### ClickHouse Query [#clickhouse-query]
Execute a SELECT query on a ClickHouse database
#### Input [#input]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
| `query` | string | Yes | SQL SELECT query to execute |
#### Output [#output]
| Parameter | Type | Description |
| ---------- | ------ | ------------------------------------- |
| `message` | string | Operation status message |
| `rows` | array | Array of rows returned from the query |
| `rowCount` | number | Number of rows returned |
### ClickHouse Execute [#clickhouse-execute]
Execute raw SQL (DDL, mutations, or queries) on a ClickHouse database
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
| `query` | string | Yes | Raw SQL statement to execute |
#### Output [#output-1]
| Parameter | Type | Description |
| ---------- | ------ | ----------------------------------------- |
| `message` | string | Operation status message |
| `rows` | array | Array of rows returned from the statement |
| `rowCount` | number | Number of rows returned or affected |
### ClickHouse Insert [#clickhouse-insert]
Insert a row into a ClickHouse table
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ---------------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
| `table` | string | Yes | Table name to insert data into |
| `data` | object | Yes | Data object to insert (key-value pairs mapping column names to values) |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------- | ------ | -------------------------------------------- |
| `message` | string | Operation status message |
| `rows` | array | Inserted rows (empty for ClickHouse inserts) |
| `rowCount` | number | Number of rows inserted |
### ClickHouse Insert Rows [#clickhouse-insert-rows]
Insert multiple rows into a ClickHouse table
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | --------------------------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
| `table` | string | Yes | Table to insert into |
| `rows` | json | Yes | Array of row objects to insert, e.g. \[\{"id":1,"name":"a"},\{"id":2,"name":"b"}] |
#### Output [#output-3]
| Parameter | Type | Description |
| ---------- | ------ | -------------------------------------------- |
| `message` | string | Operation status message |
| `rows` | array | Inserted rows (empty for ClickHouse inserts) |
| `rowCount` | number | Number of rows inserted |
### ClickHouse Update [#clickhouse-update]
Update rows in a ClickHouse table via an ALTER TABLE ... UPDATE mutation
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
| `table` | string | Yes | Table name to update data in |
| `data` | object | Yes | Data object with fields to update (key-value pairs) |
| `where` | string | Yes | WHERE clause condition (without the WHERE keyword) |
#### Output [#output-4]
| Parameter | Type | Description |
| ---------- | ------ | --------------------------------------------- |
| `message` | string | Operation status message |
| `rows` | array | Updated rows (empty for ClickHouse mutations) |
| `rowCount` | number | Number of rows written by the mutation |
### ClickHouse Delete [#clickhouse-delete]
Delete rows from a ClickHouse table via an ALTER TABLE ... DELETE mutation
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
| `table` | string | Yes | Table name to delete data from |
| `where` | string | Yes | WHERE clause condition (without the WHERE keyword) |
#### Output [#output-5]
| Parameter | Type | Description |
| ---------- | ------ | --------------------------------------------- |
| `message` | string | Operation status message |
| `rows` | array | Deleted rows (empty for ClickHouse mutations) |
| `rowCount` | number | Number of rows affected by the mutation |
### ClickHouse List Databases [#clickhouse-list-databases]
List all databases on a ClickHouse server
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
#### Output [#output-6]
| Parameter | Type | Description |
| ---------- | ------ | ----------------------------------------- |
| `message` | string | Operation status message |
| `rows` | array | List of databases with engine and comment |
| `rowCount` | number | Number of rows returned |
### ClickHouse List Tables [#clickhouse-list-tables]
List tables in the connected ClickHouse database
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
#### Output [#output-7]
| Parameter | Type | Description |
| ---------- | ------ | ------------------------------------- |
| `message` | string | Operation status message |
| `rows` | array | Array of rows returned from the query |
| `rowCount` | number | Number of rows returned |
### ClickHouse Describe Table [#clickhouse-describe-table]
Describe the columns of a ClickHouse table
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
| `table` | string | Yes | Table name to describe |
#### Output [#output-8]
| Parameter | Type | Description |
| ---------- | ------ | ------------------------------------- |
| `message` | string | Operation status message |
| `rows` | array | Array of rows returned from the query |
| `rowCount` | number | Number of rows returned |
### ClickHouse Show Create Table [#clickhouse-show-create-table]
Get the CREATE TABLE statement (DDL) for a ClickHouse table
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
| `table` | string | Yes | Table name to get the CREATE statement for |
#### Output [#output-9]
| Parameter | Type | Description |
| --------- | ------ | -------------------------- |
| `message` | string | Operation status message |
| `ddl` | string | The CREATE TABLE statement |
### ClickHouse Count Rows [#clickhouse-count-rows]
Count rows in a ClickHouse table, optionally filtered
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
| `table` | string | Yes | Table name to count rows in |
| `where` | string | No | Optional WHERE clause condition without the WHERE keyword |
#### Output [#output-10]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
| `count` | number | Number of rows |
### ClickHouse Introspect [#clickhouse-introspect]
Introspect a ClickHouse database to retrieve table structures, columns, and engines
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to introspect |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
#### Output [#output-11]
| Parameter | Type | Description |
| --------------------- | ------- | --------------------------------------------------------- |
| `message` | string | Operation status message |
| `tables` | array | Array of table schemas with columns and engines |
| ↳ `name` | string | Table name |
| ↳ `database` | string | Database the table belongs to |
| ↳ `engine` | string | Table engine (e.g., MergeTree, Log) |
| ↳ `totalRows` | number | Approximate total number of rows in the table |
| ↳ `columns` | array | Table columns |
| ↳ `name` | string | Column name |
| ↳ `type` | string | ClickHouse data type (e.g., UInt32, String, DateTime) |
| ↳ `defaultKind` | string | Kind of default expression (DEFAULT, MATERIALIZED, ALIAS) |
| ↳ `defaultExpression` | string | Default value expression for the column |
| ↳ `isInPrimaryKey` | boolean | Whether the column is part of the primary key |
| ↳ `isInSortingKey` | boolean | Whether the column is part of the sorting key |
### ClickHouse Create Database [#clickhouse-create-database]
Create a new database on a ClickHouse server
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
| `name` | string | Yes | Name of the database to create |
#### Output [#output-12]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### ClickHouse Drop Database [#clickhouse-drop-database]
Drop a database from a ClickHouse server
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
| `name` | string | Yes | Name of the database to drop |
#### Output [#output-13]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### ClickHouse Create Table [#clickhouse-create-table]
Create a new MergeTree-family table in ClickHouse
#### Input [#input-14]
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
| `table` | string | Yes | Name of the table to create |
| `columns` | json | Yes | Array of column definitions, each an object with name and type, e.g. \[\{"name":"id","type":"UInt64"},\{"name":"ts","type":"DateTime"}] |
| `engine` | string | No | Table engine (default MergeTree) |
| `orderBy` | string | Yes | ORDER BY expression, e.g. "id" or "(id, ts)" |
| `partitionBy` | string | No | Optional PARTITION BY expression, e.g. toYYYYMM(ts) |
#### Output [#output-14]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### ClickHouse Drop Table [#clickhouse-drop-table]
Drop a table from a ClickHouse database
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
| `table` | string | Yes | Table name to drop |
#### Output [#output-15]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### ClickHouse Truncate Table [#clickhouse-truncate-table]
Remove all rows from a ClickHouse table
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
| `table` | string | Yes | Table name to truncate |
#### Output [#output-16]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### ClickHouse Rename Table [#clickhouse-rename-table]
Rename a ClickHouse table
#### Input [#input-17]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
| `table` | string | Yes | Current table name |
| `newTable` | string | Yes | New table name |
#### Output [#output-17]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### ClickHouse Optimize Table [#clickhouse-optimize-table]
Trigger a merge of table parts via OPTIMIZE TABLE
#### Input [#input-18]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
| `table` | string | Yes | Table to optimize |
| `final` | boolean | No | Force a merge to a single part using FINAL |
#### Output [#output-18]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### ClickHouse List Partitions [#clickhouse-list-partitions]
List active partitions for a ClickHouse table
#### Input [#input-19]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
| `table` | string | Yes | Table name to inspect partitions for |
#### Output [#output-19]
| Parameter | Type | Description |
| ---------- | ------ | ------------------------------------- |
| `message` | string | Operation status message |
| `rows` | array | Array of rows returned from the query |
| `rowCount` | number | Number of rows returned |
### ClickHouse Drop Partition [#clickhouse-drop-partition]
Drop a partition from a ClickHouse table
#### Input [#input-20]
| Parameter | Type | Required | Description |
| ----------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
| `table` | string | Yes | Table name |
| `partition` | string | Yes | Partition expression, e.g. '2024-01' or 202401 |
#### Output [#output-20]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### ClickHouse List Mutations [#clickhouse-list-mutations]
List mutations (async ALTER UPDATE/DELETE) for the connected database
#### Input [#input-21]
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
| `table` | string | No | Optional table name to filter mutations |
| `onlyRunning` | boolean | No | Only show mutations that are still running |
#### Output [#output-21]
| Parameter | Type | Description |
| ---------- | ------ | ------------------------ |
| `message` | string | Operation status message |
| `rows` | array | Array of mutation rows |
| `rowCount` | number | Number of rows returned |
### ClickHouse List Running Queries [#clickhouse-list-running-queries]
List currently running queries on a ClickHouse server
#### Input [#input-22]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
#### Output [#output-22]
| Parameter | Type | Description |
| ---------- | ------ | ------------------------------------- |
| `message` | string | Operation status message |
| `rows` | array | Array of rows returned from the query |
| `rowCount` | number | Number of rows returned |
### ClickHouse Kill Query [#clickhouse-kill-query]
Kill a running query by its query ID
#### Input [#input-23]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
| `queryId` | string | Yes | The query\_id of the running query to kill |
#### Output [#output-23]
| Parameter | Type | Description |
| ---------- | ------ | ------------------------ |
| `message` | string | Operation status message |
| `rows` | array | Kill status rows |
| `rowCount` | number | Number of rows returned |
### ClickHouse Table Stats [#clickhouse-table-stats]
Get row counts and on-disk size for tables in the connected database
#### Input [#input-24]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
| `table` | string | No | Optional table name to get stats for |
#### Output [#output-24]
| Parameter | Type | Description |
| ---------- | ------ | ------------------------- |
| `message` | string | Operation status message |
| `rows` | array | Array of table stats rows |
| `rowCount` | number | Number of rows returned |
### ClickHouse List Clusters [#clickhouse-list-clusters]
List configured clusters, shards, and replicas
#### Input [#input-25]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) |
| `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | ClickHouse username |
| `password` | string | No | ClickHouse password |
| `secure` | boolean | No | Use a secure HTTPS connection (default: true) |
#### Output [#output-25]
| Parameter | Type | Description |
| ---------- | ------ | -------------------------- |
| `message` | string | Operation status message |
| `rows` | array | Array of cluster node rows |
| `rowCount` | number | Number of rows returned |
---
# ClickUp API Tokens (/integrations/clickup-service-account)
ClickUp personal API tokens let your workflows authenticate without an OAuth consent flow. A token gives full parity with the ClickUp API — everything Sim's ClickUp blocks can do over OAuth works with a token.
Tokens are bound to the user who creates them: every action a workflow takes is attributed to that user, and the token stops working if the user is deactivated or removed from the workspace. For production workflows, create the token from a dedicated service user (e.g. `sim-bot@yourcompany.com`) rather than a personal account.
## Prerequisites [#prerequisites]
A ClickUp account with access to the workspaces your workflows need. Any user can generate a personal API token from their settings.
## Creating the API Token [#creating-the-api-token]
Log in as the service user, click your avatar in ClickUp, and open **Settings**
{/* TODO(screenshot): ClickUp avatar menu with Settings highlighted */}
In the sidebar, go to **Apps** (labeled **API Token** in some plans)
Click **Generate** to create your personal token
{/* TODO(screenshot): ClickUp Apps page with the Generate API token button visible */}
Copy the token — it starts with `pk_` — and store it somewhere safe.
The API token carries the creating user's full access to every workspace they belong to. Treat it like a password — do not commit it to source control or share it publicly. Sim encrypts the token at rest.
## Adding the API Token to Sim [#adding-the-api-token-to-sim]
Open **Integrations** from your workspace sidebar
Search for "ClickUp" and open it, then click **Add to Sim** and choose **Add API token**
{/* TODO(screenshot): ClickUp integration page with the service-account connect option */}
Paste the API token (`pk_...`) and optionally set a display name and description
{/* TODO(screenshot): Add ClickUp API token dialog with the token filled in */}
Click **Add API token**. Sim verifies the token by fetching the authorized user from ClickUp — if it fails, you'll see a specific error explaining what went wrong.
The token is encrypted before being stored.
## Using the Service Account in Workflows [#using-the-service-account-in-workflows]
Add a ClickUp block to your workflow. In the credential dropdown, your ClickUp service account appears alongside any OAuth credentials. Select it and configure the block as you normally would.
{/* TODO(screenshot): ClickUp block in a workflow with the service account selected as the credential */}
The block calls the ClickUp API (`api.clickup.com`) with the token. Everything the workflow does — creating tasks, adding comments, uploading attachments — is attributed to the user who created the token.
---
# ClickUp (/integrations/clickup)
## Usage Instructions [#usage-instructions]
Integrate ClickUp into the workflow. Create, read, update, and delete tasks, manage comments, tags, folders, and lists, upload attachments, and look up workspaces, members, and custom fields. Can also trigger workflows on ClickUp events like task, list, folder, space, and goal changes.
## Actions [#actions]
### ClickUp Create Task [#clickup-create-task]
Create a new task in a ClickUp list
#### Input [#input]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | ---------------------------------------------------------------------------------- |
| `listId` | string | Yes | ID of the list to create the task in |
| `name` | string | Yes | Name of the task |
| `description` | string | No | Plain text description of the task |
| `markdownContent` | string | No | Markdown description of the task (overrides description) |
| `status` | string | No | Status to create the task with (must exist in the list) |
| `priority` | number | No | Priority: 1 (urgent), 2 (high), 3 (normal), 4 (low) |
| `dueDate` | number | No | Due date as a Unix timestamp in milliseconds |
| `dueDateTime` | boolean | No | Whether the due date includes a time of day |
| `startDate` | number | No | Start date as a Unix timestamp in milliseconds |
| `startDateTime` | boolean | No | Whether the start date includes a time of day |
| `assignees` | array | No | User IDs to assign to the task |
| `tags` | array | No | Tag names to apply to the task |
| `timeEstimate` | number | No | Time estimate in milliseconds |
| `points` | number | No | Sprint points for the task |
| `parent` | string | No | Parent task ID to create this task as a subtask |
| `notifyAll` | boolean | No | When true, creation notifications are sent to everyone, including the task creator |
#### Output [#output]
| Parameter | Type | Description |
| --------- | ---- | ---------------- |
| `task` | json | The created task |
### ClickUp Get Task [#clickup-get-task]
Retrieve a task from ClickUp by ID
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ---------------------------- | ------- | -------- | ---------------------------------------------- |
| `taskId` | string | Yes | ID of the task to retrieve |
| `includeSubtasks` | boolean | No | Include subtasks in the response |
| `includeMarkdownDescription` | boolean | No | Return the task description in Markdown format |
#### Output [#output-1]
| Parameter | Type | Description |
| --------- | ---- | ------------------ |
| `task` | json | The requested task |
### ClickUp Update Task [#clickup-update-task]
Update an existing task in ClickUp
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------------- | ------- | -------- | ------------------------------------------------------------ |
| `taskId` | string | Yes | ID of the task to update |
| `name` | string | No | New name for the task |
| `description` | string | No | New plain text description (use a single space to clear) |
| `markdownContent` | string | No | New Markdown description (takes precedence over description) |
| `status` | string | No | New status for the task (must exist in the list) |
| `priority` | number | No | Priority: 1 (urgent), 2 (high), 3 (normal), 4 (low) |
| `dueDate` | number | No | New due date as a Unix timestamp in milliseconds |
| `dueDateTime` | boolean | No | Whether the due date includes a time of day |
| `startDate` | number | No | New start date as a Unix timestamp in milliseconds |
| `startDateTime` | boolean | No | Whether the start date includes a time of day |
| `timeEstimate` | number | No | New time estimate in milliseconds |
| `points` | number | No | New sprint points value |
| `parent` | string | No | Parent task ID to move this task under (cannot be cleared) |
| `archived` | boolean | No | Set to true to archive the task, false to unarchive |
| `assigneesToAdd` | array | No | User IDs to add as assignees |
| `assigneesToRemove` | array | No | User IDs to remove from assignees |
#### Output [#output-2]
| Parameter | Type | Description |
| --------- | ---- | ---------------- |
| `task` | json | The updated task |
### ClickUp Delete Task [#clickup-delete-task]
Delete a task from ClickUp
#### Input [#input-3]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------ |
| `taskId` | string | Yes | ID of the task to delete |
#### Output [#output-3]
| Parameter | Type | Description |
| --------- | ------- | ---------------------------- |
| `id` | string | ID of the deleted task |
| `deleted` | boolean | Whether the task was deleted |
### ClickUp Get Tasks [#clickup-get-tasks]
List the tasks in a ClickUp list (100 tasks per page; increment page until an empty result to paginate)
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ---------------------------- | ------- | -------- | --------------------------------------------------------- |
| `listId` | string | Yes | ID of the list to fetch tasks from |
| `page` | number | No | Page to fetch (starts at 0) |
| `orderBy` | string | No | Order by field: id, created, updated, or due\_date |
| `reverse` | boolean | No | Return tasks in reverse order |
| `subtasks` | boolean | No | Include subtasks (excluded by default) |
| `includeClosed` | boolean | No | Include closed tasks (excluded by default) |
| `includeMarkdownDescription` | boolean | No | Return task descriptions in Markdown format |
| `archived` | boolean | No | Return archived tasks |
| `statuses` | array | No | Filter tasks by status names |
| `assignees` | array | No | Filter tasks by assignee user IDs |
| `tags` | array | No | Filter tasks by tag names |
| `dueDateGt` | number | No | Only tasks due after this Unix timestamp in milliseconds |
| `dueDateLt` | number | No | Only tasks due before this Unix timestamp in milliseconds |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ----- | ----------------- |
| `tasks` | array | Tasks in the list |
### ClickUp Search Tasks [#clickup-search-tasks]
Search tasks across a ClickUp workspace with filters for lists, folders, spaces, statuses, assignees, tags, and due dates (100 tasks per page; increment page until an empty result to paginate)
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ---------------------------- | ------- | -------- | --------------------------------------------------------- |
| `workspaceId` | string | Yes | ID of the workspace (team) to search tasks in |
| `page` | number | No | Page to fetch (starts at 0) |
| `orderBy` | string | No | Order by field: id, created, updated, or due\_date |
| `reverse` | boolean | No | Return tasks in reverse order |
| `subtasks` | boolean | No | Include subtasks (excluded by default) |
| `includeClosed` | boolean | No | Include closed tasks (excluded by default) |
| `includeMarkdownDescription` | boolean | No | Return task descriptions in Markdown format |
| `listIds` | array | No | Filter by list IDs |
| `spaceIds` | array | No | Filter by space IDs |
| `folderIds` | array | No | Filter by folder IDs |
| `statuses` | array | No | Filter tasks by status names |
| `assignees` | array | No | Filter tasks by assignee user IDs |
| `tags` | array | No | Filter tasks by tag names |
| `dueDateGt` | number | No | Only tasks due after this Unix timestamp in milliseconds |
| `dueDateLt` | number | No | Only tasks due before this Unix timestamp in milliseconds |
#### Output [#output-5]
| Parameter | Type | Description |
| --------- | ----- | -------------------------- |
| `tasks` | array | Tasks matching the filters |
### ClickUp Create Comment [#clickup-create-comment]
Add a comment to a ClickUp task
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | ------------------------------------------------------------------------------------ |
| `taskId` | string | Yes | ID of the task to comment on |
| `commentText` | string | Yes | Content of the comment |
| `assignee` | number | No | User ID to assign the comment to |
| `notifyAll` | boolean | No | When true, comment notifications are sent to everyone, including the comment creator |
#### Output [#output-6]
| Parameter | Type | Description |
| --------- | ------ | ------------------------------------------- |
| `id` | string | ID of the created comment |
| `histId` | string | History ID of the created comment |
| `date` | number | Creation timestamp of the comment (Unix ms) |
### ClickUp Get Comments [#clickup-get-comments]
Retrieve comments on a ClickUp task, newest first (25 per page; paginate with start and startId)
#### Input [#input-7]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `taskId` | string | Yes | ID of the task to fetch comments from |
| `start` | number | No | Unix timestamp (ms) of the reference comment for pagination (use the date of the last comment from the previous page, together with startId) |
| `startId` | string | No | ID of the reference comment for pagination (use the id of the last comment from the previous page, together with start) |
#### Output [#output-7]
| Parameter | Type | Description |
| ---------- | ----- | ---------------------------------- |
| `comments` | array | Comments on the task, newest first |
### ClickUp Update Comment [#clickup-update-comment]
Update the content, assignee, or resolved state of a ClickUp task comment
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | -------------------------------- |
| `commentId` | string | Yes | ID of the comment to update |
| `commentText` | string | No | New content for the comment |
| `assignee` | number | No | User ID to assign the comment to |
| `resolved` | boolean | No | Whether the comment is resolved |
#### Output [#output-8]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------- |
| `id` | string | ID of the updated comment |
| `updated` | boolean | Whether the comment was updated |
### ClickUp Delete Comment [#clickup-delete-comment]
Delete a comment from a ClickUp task
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------- |
| `commentId` | string | Yes | ID of the comment to delete |
#### Output [#output-9]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------- |
| `id` | string | ID of the deleted comment |
| `deleted` | boolean | Whether the comment was deleted |
### ClickUp Upload Attachment [#clickup-upload-attachment]
Upload a file to a ClickUp task as an attachment
#### Input [#input-10]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------ |
| `taskId` | string | Yes | ID of the task to attach the file to |
| `file` | file | Yes | File to attach to the task |
#### Output [#output-10]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------ |
| `attachment` | json | The created attachment |
| ↳ `id` | string | Attachment ID |
| ↳ `version` | string | Attachment version |
| ↳ `title` | string | Attachment title |
| ↳ `extension` | string | File extension |
| ↳ `url` | string | URL of the uploaded attachment |
| ↳ `date` | number | Upload timestamp (Unix ms) |
| ↳ `thumbnailSmall` | string | Small thumbnail URL |
| ↳ `thumbnailLarge` | string | Large thumbnail URL |
| `files` | file\[] | The uploaded attachment file |
### ClickUp Add Tag To Task [#clickup-add-tag-to-task]
Add an existing space tag to a ClickUp task
#### Input [#input-11]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------ |
| `taskId` | string | Yes | ID of the task to tag |
| `tagName` | string | Yes | Name of the tag to add (must exist in the space) |
#### Output [#output-11]
| Parameter | Type | Description |
| --------- | ------ | ------------------------------ |
| `taskId` | string | ID of the tagged task |
| `tagName` | string | Name of the tag that was added |
### ClickUp Remove Tag From Task [#clickup-remove-tag-from-task]
Remove a tag from a ClickUp task
#### Input [#input-12]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------- |
| `taskId` | string | Yes | ID of the task to remove the tag from |
| `tagName` | string | Yes | Name of the tag to remove |
#### Output [#output-12]
| Parameter | Type | Description |
| --------- | ------ | -------------------------------- |
| `taskId` | string | ID of the task |
| `tagName` | string | Name of the tag that was removed |
### ClickUp Get Space Tags [#clickup-get-space-tags]
List the task tags available in a ClickUp space
#### Input [#input-13]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------- |
| `spaceId` | string | Yes | ID of the space to list tags from |
#### Output [#output-13]
| Parameter | Type | Description |
| --------- | ----- | --------------------------- |
| `tags` | array | Tags available in the space |
### ClickUp Get Task Members [#clickup-get-task-members]
List the workspace members who have explicit access to a ClickUp task
#### Input [#input-14]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------- |
| `taskId` | string | Yes | ID of the task to list members for |
#### Output [#output-14]
| Parameter | Type | Description |
| --------- | ----- | ---------------------------------------- |
| `members` | array | Members with explicit access to the task |
### ClickUp Get List Members [#clickup-get-list-members]
List the workspace members who have explicit access to a ClickUp list
#### Input [#input-15]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------- |
| `listId` | string | Yes | ID of the list to list members for |
#### Output [#output-15]
| Parameter | Type | Description |
| --------- | ----- | ---------------------------------------- |
| `members` | array | Members with explicit access to the list |
### ClickUp Get Custom Fields [#clickup-get-custom-fields]
List the custom fields accessible in a ClickUp list
#### Input [#input-16]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------ |
| `listId` | string | Yes | ID of the list to fetch custom fields from |
#### Output [#output-16]
| Parameter | Type | Description |
| ------------------ | ------- | --------------------------------------------------- |
| `fields` | array | Custom fields accessible in the list |
| ↳ `id` | string | Custom field ID |
| ↳ `name` | string | Custom field name |
| ↳ `type` | string | Custom field type (e.g. text, number, drop\_down) |
| ↳ `typeConfig` | json | Type-specific configuration (e.g. dropdown options) |
| ↳ `dateCreated` | string | Creation timestamp (Unix ms) |
| ↳ `hideFromGuests` | boolean | Whether the field is hidden from guests |
### ClickUp Get Workspaces [#clickup-get-workspaces]
List the ClickUp workspaces (teams) available to the connected account
#### Input [#input-17]
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
#### Output [#output-17]
| Parameter | Type | Description |
| ------------ | ------ | --------------------------------------------- |
| `workspaces` | array | Workspaces available to the connected account |
| ↳ `id` | string | Workspace ID |
| ↳ `name` | string | Workspace name |
| ↳ `color` | string | Workspace color |
| ↳ `avatar` | string | Workspace avatar URL |
### ClickUp Get Spaces [#clickup-get-spaces]
List the spaces in a ClickUp workspace
#### Input [#input-18]
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | ---------------------------------------------- |
| `workspaceId` | string | Yes | ID of the workspace (team) to list spaces from |
| `archived` | boolean | No | Return archived spaces |
#### Output [#output-18]
| Parameter | Type | Description |
| ------------ | ------- | ------------------------------------ |
| `spaces` | array | Spaces in the workspace |
| ↳ `id` | string | Space ID |
| ↳ `name` | string | Space name |
| ↳ `private` | boolean | Whether the space is private |
| ↳ `archived` | boolean | Whether the space is archived |
| ↳ `statuses` | array | Task statuses available in the space |
| ↳ `status` | string | Status name |
| ↳ `color` | string | Status color |
| ↳ `type` | string | Status type |
### ClickUp Get Folders [#clickup-get-folders]
List the folders in a ClickUp space
#### Input [#input-19]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ------------------------------------ |
| `spaceId` | string | Yes | ID of the space to list folders from |
| `archived` | boolean | No | Return archived folders |
#### Output [#output-19]
| Parameter | Type | Description |
| --------- | ----- | -------------------- |
| `folders` | array | Folders in the space |
### ClickUp Get Lists [#clickup-get-lists]
List the lists in a ClickUp folder, or the folderless lists in a space when a space ID is provided instead
#### Input [#input-20]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------- |
| `folderId` | string | No | ID of the folder to list lists from (provide this or spaceId; folderId takes precedence when both are set) |
| `spaceId` | string | No | ID of the space to list folderless lists from (provide this or folderId) |
| `archived` | boolean | No | Return archived lists |
#### Output [#output-20]
| Parameter | Type | Description |
| --------- | ----- | ---------------------------- |
| `lists` | array | Lists in the folder or space |
### ClickUp Create Folder [#clickup-create-folder]
Create a new folder in a ClickUp space
#### Input [#input-21]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------- |
| `spaceId` | string | Yes | ID of the space to create the folder in |
| `name` | string | Yes | Name of the folder |
#### Output [#output-21]
| Parameter | Type | Description |
| --------- | ---- | ------------------ |
| `folder` | json | The created folder |
### ClickUp Create List [#clickup-create-list]
Create a new list in a ClickUp folder, or a folderless list in a space when a space ID is provided instead
#### Input [#input-22]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- |
| `folderId` | string | No | ID of the folder to create the list in (provide this or spaceId; folderId takes precedence when both are set) |
| `spaceId` | string | No | ID of the space to create a folderless list in (provide this or folderId) |
| `name` | string | Yes | Name of the list |
| `content` | string | No | Plain text description of the list |
| `markdownContent` | string | No | Markdown description of the list (use instead of content) |
#### Output [#output-22]
| Parameter | Type | Description |
| --------- | ---- | ---------------- |
| `list` | json | The created list |
### ClickUp Set Custom Field Value [#clickup-set-custom-field-value]
Set the value of a custom field on a ClickUp task (the value shape depends on the field type)
#### Input [#input-23]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `taskId` | string | Yes | ID of the task to set the custom field on |
| `fieldId` | string | Yes | UUID of the custom field (find it with the Get Custom Fields or Get Task operations) |
| `value` | json | Yes | Value to set. The shape depends on the field type: text/number fields take a plain value, label fields take an array of option UUIDs, dropdown fields take an option UUID |
#### Output [#output-23]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------------- |
| `taskId` | string | ID of the updated task |
| `fieldId` | string | ID of the custom field that was set |
### ClickUp Remove Custom Field Value [#clickup-remove-custom-field-value]
Remove the value of a custom field from a ClickUp task (does not delete the field itself)
#### Input [#input-24]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------- |
| `taskId` | string | Yes | ID of the task to remove the custom field value from |
| `fieldId` | string | Yes | UUID of the custom field to clear |
#### Output [#output-24]
| Parameter | Type | Description |
| --------- | ------ | --------------------------------------- |
| `taskId` | string | ID of the updated task |
| `fieldId` | string | ID of the custom field that was cleared |
### ClickUp Create Checklist [#clickup-create-checklist]
Add a new checklist to a ClickUp task
#### Input [#input-25]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------- |
| `taskId` | string | Yes | ID of the task to add the checklist to |
| `name` | string | Yes | Name of the checklist |
#### Output [#output-25]
| Parameter | Type | Description |
| ----------- | ---- | --------------------- |
| `checklist` | json | The created checklist |
### ClickUp Update Checklist [#clickup-update-checklist]
Rename or reorder a checklist on a ClickUp task
#### Input [#input-26]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------------- |
| `checklistId` | string | Yes | UUID of the checklist to update |
| `name` | string | No | New name for the checklist |
| `position` | number | No | New position of the checklist on the task (0 places it first) |
#### Output [#output-26]
| Parameter | Type | Description |
| --------- | ------- | --------------------------------- |
| `id` | string | ID of the updated checklist |
| `updated` | boolean | Whether the checklist was updated |
### ClickUp Delete Checklist [#clickup-delete-checklist]
Delete a checklist from a ClickUp task
#### Input [#input-27]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------- |
| `checklistId` | string | Yes | UUID of the checklist to delete |
#### Output [#output-27]
| Parameter | Type | Description |
| --------- | ------- | --------------------------------- |
| `id` | string | ID of the deleted checklist |
| `deleted` | boolean | Whether the checklist was deleted |
### ClickUp Create Checklist Item [#clickup-create-checklist-item]
Add an item to a checklist on a ClickUp task
#### Input [#input-28]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------- |
| `checklistId` | string | Yes | UUID of the checklist to add the item to |
| `name` | string | Yes | Name of the checklist item |
| `assignee` | number | No | User ID to assign the item to |
#### Output [#output-28]
| Parameter | Type | Description |
| ----------- | ---- | ----------------------------------------- |
| `checklist` | json | The updated checklist including its items |
### ClickUp Update Checklist Item [#clickup-update-checklist-item]
Update a checklist item on a ClickUp task — rename, assign, resolve, or nest it
#### Input [#input-29]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | ------------------------------------------------------ |
| `checklistId` | string | Yes | UUID of the checklist containing the item |
| `checklistItemId` | string | Yes | UUID of the checklist item to update |
| `name` | string | No | New name for the checklist item |
| `assignee` | number | No | User ID to assign the item to |
| `resolved` | boolean | No | Whether the item is resolved |
| `parent` | string | No | UUID of another checklist item to nest this item under |
#### Output [#output-29]
| Parameter | Type | Description |
| ----------- | ---- | ----------------------------------------- |
| `checklist` | json | The updated checklist including its items |
### ClickUp Delete Checklist Item [#clickup-delete-checklist-item]
Delete an item from a checklist on a ClickUp task
#### Input [#input-30]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ----------------------------------------- |
| `checklistId` | string | Yes | UUID of the checklist containing the item |
| `checklistItemId` | string | Yes | UUID of the checklist item to delete |
#### Output [#output-30]
| Parameter | Type | Description |
| --------- | ------- | -------------------------------- |
| `id` | string | ID of the deleted checklist item |
| `deleted` | boolean | Whether the item was deleted |
### ClickUp Get Time Entries [#clickup-get-time-entries]
List time entries in a ClickUp workspace within a date range (defaults to the last 30 days for the authenticated user)
#### Input [#input-31]
| Parameter | Type | Required | Description |
| ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------- |
| `workspaceId` | string | Yes | ID of the workspace (team) to list time entries from |
| `startDate` | number | No | Start of the date range as a Unix timestamp in milliseconds |
| `endDate` | number | No | End of the date range as a Unix timestamp in milliseconds |
| `assignee` | string | No | Filter by user IDs, comma-separated (requires workspace owner/admin to view others) |
| `taskId` | string | No | Only entries for this task (use at most one location filter) |
| `listId` | string | No | Only entries in this list (use at most one location filter) |
| `folderId` | string | No | Only entries in this folder (use at most one location filter) |
| `spaceId` | string | No | Only entries in this space (use at most one location filter) |
| `includeTaskTags` | boolean | No | Include task tags in the response |
| `includeLocationNames` | boolean | No | Include list, folder, and space names in the response |
#### Output [#output-31]
| Parameter | Type | Description |
| ------------- | ----- | ------------------------------ |
| `timeEntries` | array | Time entries in the date range |
### ClickUp Create Time Entry [#clickup-create-time-entry]
Create a manual time entry in a ClickUp workspace, optionally linked to a task
#### Input [#input-32]
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | -------------------------------------------------------------- |
| `workspaceId` | string | Yes | ID of the workspace (team) to create the entry in |
| `start` | number | Yes | Start of the entry as a Unix timestamp in milliseconds |
| `duration` | number | Yes | Duration of the entry in milliseconds |
| `description` | string | No | Description of the time entry |
| `billable` | boolean | No | Whether the entry is billable |
| `taskId` | string | No | Task ID to associate the entry with |
| `assignee` | number | No | User ID to create the entry for (workspace owners/admins only) |
#### Output [#output-32]
| Parameter | Type | Description |
| ----------- | ---- | ---------------------- |
| `timeEntry` | json | The created time entry |
### ClickUp Update Time Entry [#clickup-update-time-entry]
Update a time entry in a ClickUp workspace — description, start/end times, task, or billable state
#### Input [#input-33]
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | ------------------------------------------------------------- |
| `workspaceId` | string | Yes | ID of the workspace (team) the entry belongs to |
| `timerId` | string | Yes | ID of the time entry to update |
| `description` | string | No | New description for the entry |
| `start` | number | No | New start (Unix ms); when provided, end must also be provided |
| `end` | number | No | New end (Unix ms); when provided, start must also be provided |
| `duration` | number | No | New duration in milliseconds |
| `taskId` | string | No | Task ID to associate the entry with |
| `billable` | boolean | No | Whether the entry is billable |
#### Output [#output-33]
| Parameter | Type | Description |
| --------- | ------- | ----------------------------- |
| `id` | string | ID of the updated time entry |
| `updated` | boolean | Whether the entry was updated |
### ClickUp Delete Time Entry [#clickup-delete-time-entry]
Delete a time entry from a ClickUp workspace
#### Input [#input-34]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ----------------------------------------------- |
| `workspaceId` | string | Yes | ID of the workspace (team) the entry belongs to |
| `timerId` | string | Yes | ID of the time entry to delete |
#### Output [#output-34]
| Parameter | Type | Description |
| ----------- | ---- | ---------------------- |
| `timeEntry` | json | The deleted time entry |
### ClickUp Start Timer [#clickup-start-timer]
Start a timer for the authenticated user in a ClickUp workspace
#### Input [#input-35]
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | ------------------------------------------------ |
| `workspaceId` | string | Yes | ID of the workspace (team) to start the timer in |
| `taskId` | string | No | Task ID to associate the timer with |
| `description` | string | No | Description of the time entry |
| `billable` | boolean | No | Whether the entry is billable |
| `tags` | array | No | Time entry tag names to apply |
#### Output [#output-35]
| Parameter | Type | Description |
| ----------- | ---- | ----------------------------------------------------------- |
| `timeEntry` | json | The started time entry (duration is negative while running) |
### ClickUp Stop Timer [#clickup-stop-timer]
Stop the authenticated user's currently running timer in a ClickUp workspace
#### Input [#input-36]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | -------------------------------------------------- |
| `workspaceId` | string | Yes | ID of the workspace (team) the timer is running in |
#### Output [#output-36]
| Parameter | Type | Description |
| ----------- | ---- | ---------------------- |
| `timeEntry` | json | The stopped time entry |
### ClickUp Get Running Timer [#clickup-get-running-timer]
Get the currently running time entry in a ClickUp workspace (null when no timer is running)
#### Input [#input-37]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ----------------------------------------------------------------------- |
| `workspaceId` | string | Yes | ID of the workspace (team) to check |
| `assignee` | number | No | User ID to check instead of the authenticated user (owners/admins only) |
#### Output [#output-37]
| Parameter | Type | Description |
| ----------- | ---- | ------------------------------------------------------------------------------------------ |
| `timeEntry` | json | The running time entry (duration is negative while running); null when no timer is running |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
### ClickUp Folder Created [#clickup-folder-created]
Trigger workflow when a folder is created in ClickUp
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-38]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
| `folderId` | string | ID of the affected folder |
***
### ClickUp Folder Deleted [#clickup-folder-deleted]
Trigger workflow when a folder is deleted in ClickUp
#### Configuration [#configuration-1]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-39]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
| `folderId` | string | ID of the affected folder |
***
### ClickUp Folder Updated [#clickup-folder-updated]
Trigger workflow when a folder is updated in ClickUp
#### Configuration [#configuration-2]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-40]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
| `folderId` | string | ID of the affected folder |
***
### ClickUp Goal Created [#clickup-goal-created]
Trigger workflow when a goal is created in ClickUp
#### Configuration [#configuration-3]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-41]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
***
### ClickUp Goal Deleted [#clickup-goal-deleted]
Trigger workflow when a goal is deleted in ClickUp
#### Configuration [#configuration-4]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-42]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
***
### ClickUp Goal Updated [#clickup-goal-updated]
Trigger workflow when a goal is updated in ClickUp
#### Configuration [#configuration-5]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-43]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
***
### ClickUp Key Result Created [#clickup-key-result-created]
Trigger workflow when a key result is created in ClickUp
#### Configuration [#configuration-6]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-44]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
***
### ClickUp Key Result Deleted [#clickup-key-result-deleted]
Trigger workflow when a key result is deleted in ClickUp
#### Configuration [#configuration-7]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-45]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
***
### ClickUp Key Result Updated [#clickup-key-result-updated]
Trigger workflow when a key result is updated in ClickUp
#### Configuration [#configuration-8]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-46]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
***
### ClickUp List Created [#clickup-list-created]
Trigger workflow when a list is created in ClickUp
#### Configuration [#configuration-9]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-47]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
| `listId` | string | ID of the affected list |
***
### ClickUp List Deleted [#clickup-list-deleted]
Trigger workflow when a list is deleted in ClickUp
#### Configuration [#configuration-10]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-48]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
| `listId` | string | ID of the affected list |
***
### ClickUp List Updated [#clickup-list-updated]
Trigger workflow when a list is updated in ClickUp
#### Configuration [#configuration-11]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-49]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
| `listId` | string | ID of the affected list |
***
### ClickUp Space Created [#clickup-space-created]
Trigger workflow when a space is created in ClickUp
#### Configuration [#configuration-12]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-50]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
| `spaceId` | string | ID of the affected space |
***
### ClickUp Space Deleted [#clickup-space-deleted]
Trigger workflow when a space is deleted in ClickUp
#### Configuration [#configuration-13]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-51]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
| `spaceId` | string | ID of the affected space |
***
### ClickUp Space Updated [#clickup-space-updated]
Trigger workflow when a space is updated in ClickUp
#### Configuration [#configuration-14]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-52]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
| `spaceId` | string | ID of the affected space |
***
### ClickUp Task Assignee Updated [#clickup-task-assignee-updated]
Trigger workflow when the assignees of a task change in ClickUp
#### Configuration [#configuration-15]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-53]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
| `taskId` | string | ID of the affected task |
***
### ClickUp Task Comment Posted [#clickup-task-comment-posted]
Trigger workflow when a comment is posted on a task in ClickUp
#### Configuration [#configuration-16]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-54]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
| `taskId` | string | ID of the affected task |
***
### ClickUp Task Comment Updated [#clickup-task-comment-updated]
Trigger workflow when a task comment is updated in ClickUp
#### Configuration [#configuration-17]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-55]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
| `taskId` | string | ID of the affected task |
***
### ClickUp Task Created [#clickup-task-created]
Trigger workflow when a task is created in ClickUp
#### Configuration [#configuration-18]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-56]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
| `taskId` | string | ID of the affected task |
***
### ClickUp Task Deleted [#clickup-task-deleted]
Trigger workflow when a task is deleted in ClickUp
#### Configuration [#configuration-19]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-57]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
| `taskId` | string | ID of the affected task |
***
### ClickUp Task Due Date Updated [#clickup-task-due-date-updated]
Trigger workflow when the due date of a task changes in ClickUp
#### Configuration [#configuration-20]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-58]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
| `taskId` | string | ID of the affected task |
***
### ClickUp Task Moved [#clickup-task-moved]
Trigger workflow when a task is moved to a different list in ClickUp
#### Configuration [#configuration-21]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-59]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
| `taskId` | string | ID of the affected task |
***
### ClickUp Task Priority Updated [#clickup-task-priority-updated]
Trigger workflow when the priority of a task changes in ClickUp
#### Configuration [#configuration-22]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-60]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
| `taskId` | string | ID of the affected task |
***
### ClickUp Task Status Updated [#clickup-task-status-updated]
Trigger workflow when the status of a task changes in ClickUp
#### Configuration [#configuration-23]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-61]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
| `taskId` | string | ID of the affected task |
***
### ClickUp Task Tag Updated [#clickup-task-tag-updated]
Trigger workflow when the tags of a task change in ClickUp
#### Configuration [#configuration-24]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-62]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
| `taskId` | string | ID of the affected task |
***
### ClickUp Task Time Estimate Updated [#clickup-task-time-estimate-updated]
Trigger workflow when the time estimate of a task changes in ClickUp
#### Configuration [#configuration-25]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-63]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
| `taskId` | string | ID of the affected task |
***
### ClickUp Task Time Tracked Updated [#clickup-task-time-tracked-updated]
Trigger workflow when the tracked time of a task changes in ClickUp
#### Configuration [#configuration-26]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-64]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
| `taskId` | string | ID of the affected task |
***
### ClickUp Task Updated [#clickup-task-updated]
Trigger workflow when a task is updated in ClickUp
#### Configuration [#configuration-27]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-65]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
| `taskId` | string | ID of the affected task |
***
### ClickUp Webhook [#clickup-webhook]
Trigger workflow on any ClickUp event (subscribes to all events)
#### Configuration [#configuration-28]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | ClickUp Account |
| `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in |
| `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set |
| `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set |
| `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set |
| `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set |
#### Output [#output-66]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------------------- |
| `eventType` | string | The ClickUp event name (e.g. taskCreated) |
| `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) |
| `payload` | json | Full raw ClickUp webhook payload |
| `taskId` | string | ID of the affected task (task events only) |
| `listId` | string | ID of the affected list (list events only) |
| `folderId` | string | ID of the affected folder (folder events only) |
| `spaceId` | string | ID of the affected space (space events only) |
---
# Cloudflare (/integrations/cloudflare)
{/* MANUAL-CONTENT-START:intro */}
[Cloudflare](https://cloudflare.com/) is a global cloud platform that provides content delivery, domain management, cybersecurity, and performance services for websites and applications.
In Sim, the Cloudflare integration empowers your agents to automate the management of DNS records, SSL/TLS certificates, domains (zones), cache, zone settings, and more through easy-to-use API tools. Agents can securely list and edit domains, update DNS records, monitor analytics, and manage security and performance—all as part of your automated workflows.
With Cloudflare, you can:
* **Manage DNS and Domains**: List all your domains (zones), view zone details, and fully control DNS records from your automated agent workflows.
* **Handle SSL/TLS Certificates and Settings**: Issue, renew, or list certificates and adjust security and performance settings for your sites.
* **Purge Cache and Analyze Traffic**: Instantly purge edge cache and review real-time DNS analytics directly within your Sim agent processes.
* **Automate Security and Operations**: Use agents to programmatically manage zones, update settings, and streamline repetitive Cloudflare tasks.
This integration enables streamlined, secure management of your site's infrastructure from within Sim. Your agents can integrate Cloudflare operations directly into processes—keeping DNS records up-to-date, responding to security events, improving site performance, and automating large-scale site and account administration.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Cloudflare into the workflow. Manage zones (domains), DNS records, SSL/TLS certificates, zone settings, DNS analytics, and cache purging via the Cloudflare API.
## Actions [#actions]
### Cloudflare List Zones [#cloudflare-list-zones]
Lists all zones (domains) in the Cloudflare account.
#### Input [#input]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------------- |
| `name` | string | No | Filter zones by domain name (e.g., "example.com") |
| `status` | string | No | Filter by zone status: "initializing", "pending", "active", or "moved" |
| `page` | number | No | Page number for pagination (default: 1) |
| `per_page` | number | No | Number of zones per page (default: 20, max: 50) |
| `accountId` | string | No | Filter zones by account ID |
| `order` | string | No | Sort field (name, status, account.id, account.name, plan.id) |
| `direction` | string | No | Sort direction (asc, desc) |
| `match` | string | No | Match logic for filters (any, all). Default: all |
| `apiKey` | string | Yes | Cloudflare API Token |
#### Output [#output]
| Parameter | Type | Description |
| ---------------------------- | ------- | -------------------------------------------------- |
| `zones` | array | List of zones/domains |
| ↳ `id` | string | Zone ID |
| ↳ `name` | string | Domain name |
| ↳ `status` | string | Zone status (initializing, pending, active, moved) |
| ↳ `paused` | boolean | Whether the zone is paused |
| ↳ `type` | string | Zone type (full, partial, or secondary) |
| ↳ `name_servers` | array | Assigned Cloudflare name servers |
| ↳ `original_name_servers` | array | Original name servers before moving to Cloudflare |
| ↳ `created_on` | string | ISO 8601 date when the zone was created |
| ↳ `modified_on` | string | ISO 8601 date when the zone was last modified |
| ↳ `activated_on` | string | ISO 8601 date when the zone was activated |
| ↳ `development_mode` | number | Seconds remaining in development mode (0 = off) |
| ↳ `plan` | object | Zone plan information |
| ↳ `id` | string | Plan identifier |
| ↳ `name` | string | Plan name |
| ↳ `price` | number | Plan price |
| ↳ `is_subscribed` | boolean | Whether the zone is subscribed to the plan |
| ↳ `frequency` | string | Plan billing frequency |
| ↳ `currency` | string | Plan currency |
| ↳ `legacy_id` | string | Legacy plan identifier |
| ↳ `account` | object | Account the zone belongs to |
| ↳ `id` | string | Account identifier |
| ↳ `name` | string | Account name |
| ↳ `owner` | object | Zone owner information |
| ↳ `id` | string | Owner identifier |
| ↳ `name` | string | Owner name |
| ↳ `type` | string | Owner type |
| ↳ `meta` | object | Zone metadata |
| ↳ `cdn_only` | boolean | Whether the zone is CDN only |
| ↳ `custom_certificate_quota` | number | Custom certificate quota |
| ↳ `dns_only` | boolean | Whether the zone is DNS only |
| ↳ `foundation_dns` | boolean | Whether foundation DNS is enabled |
| ↳ `page_rule_quota` | number | Page rule quota |
| ↳ `phishing_detected` | boolean | Whether phishing was detected |
| ↳ `step` | number | Current setup step |
| ↳ `vanity_name_servers` | array | Custom vanity name servers |
| ↳ `permissions` | array | User permissions for the zone |
| `total_count` | number | Total number of zones matching the query |
### Cloudflare Get Zone [#cloudflare-get-zone]
Gets details for a specific zone (domain) by its ID.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------------- |
| `zoneId` | string | Yes | The zone ID to retrieve details for |
| `apiKey` | string | Yes | Cloudflare API Token |
#### Output [#output-1]
| Parameter | Type | Description |
| ---------------------------- | ------- | -------------------------------------------------- |
| `id` | string | Zone ID |
| `name` | string | Domain name |
| `status` | string | Zone status (initializing, pending, active, moved) |
| `paused` | boolean | Whether the zone is paused |
| `type` | string | Zone type (full, partial, or secondary) |
| `name_servers` | array | Assigned Cloudflare name servers |
| `original_name_servers` | array | Original name servers before moving to Cloudflare |
| `created_on` | string | ISO 8601 date when the zone was created |
| `modified_on` | string | ISO 8601 date when the zone was last modified |
| `activated_on` | string | ISO 8601 date when the zone was activated |
| `development_mode` | number | Seconds remaining in development mode (0 = off) |
| `plan` | object | Zone plan information |
| ↳ `id` | string | Plan identifier |
| ↳ `name` | string | Plan name |
| ↳ `price` | number | Plan price |
| ↳ `is_subscribed` | boolean | Whether the zone is subscribed to the plan |
| ↳ `frequency` | string | Plan billing frequency |
| ↳ `currency` | string | Plan currency |
| ↳ `legacy_id` | string | Legacy plan identifier |
| `account` | object | Account the zone belongs to |
| ↳ `id` | string | Account identifier |
| ↳ `name` | string | Account name |
| `owner` | object | Zone owner information |
| ↳ `id` | string | Owner identifier |
| ↳ `name` | string | Owner name |
| ↳ `type` | string | Owner type |
| `meta` | object | Zone metadata |
| ↳ `cdn_only` | boolean | Whether the zone is CDN only |
| ↳ `custom_certificate_quota` | number | Custom certificate quota |
| ↳ `dns_only` | boolean | Whether the zone is DNS only |
| ↳ `foundation_dns` | boolean | Whether foundation DNS is enabled |
| ↳ `page_rule_quota` | number | Page rule quota |
| ↳ `phishing_detected` | boolean | Whether phishing was detected |
| ↳ `step` | number | Current setup step |
| `vanity_name_servers` | array | Custom vanity name servers |
| `permissions` | array | User permissions for the zone |
### Cloudflare Create Zone [#cloudflare-create-zone]
Adds a new zone (domain) to the Cloudflare account.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------- |
| `name` | string | Yes | The domain name to add (e.g., "example.com") |
| `accountId` | string | Yes | The Cloudflare account ID |
| `type` | string | No | Zone type: "full" (Cloudflare manages DNS), "partial" (CNAME setup), or "secondary" (secondary DNS) |
| `apiKey` | string | Yes | Cloudflare API Token |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------------------------- | ------- | -------------------------------------------------- |
| `id` | string | Created zone ID |
| `name` | string | Domain name |
| `status` | string | Zone status (initializing, pending, active, moved) |
| `paused` | boolean | Whether the zone is paused |
| `type` | string | Zone type (full, partial, or secondary) |
| `name_servers` | array | Assigned Cloudflare name servers |
| `original_name_servers` | array | Original name servers before moving to Cloudflare |
| `created_on` | string | ISO 8601 date when the zone was created |
| `modified_on` | string | ISO 8601 date when the zone was last modified |
| `activated_on` | string | ISO 8601 date when the zone was activated |
| `development_mode` | number | Seconds remaining in development mode (0 = off) |
| `plan` | object | Zone plan information |
| ↳ `id` | string | Plan identifier |
| ↳ `name` | string | Plan name |
| ↳ `price` | number | Plan price |
| ↳ `is_subscribed` | boolean | Whether the zone is subscribed to the plan |
| ↳ `frequency` | string | Plan billing frequency |
| ↳ `currency` | string | Plan currency |
| ↳ `legacy_id` | string | Legacy plan identifier |
| `account` | object | Account the zone belongs to |
| ↳ `id` | string | Account identifier |
| ↳ `name` | string | Account name |
| `owner` | object | Zone owner information |
| ↳ `id` | string | Owner identifier |
| ↳ `name` | string | Owner name |
| ↳ `type` | string | Owner type |
| `meta` | object | Zone metadata |
| ↳ `cdn_only` | boolean | Whether the zone is CDN only |
| ↳ `custom_certificate_quota` | number | Custom certificate quota |
| ↳ `dns_only` | boolean | Whether the zone is DNS only |
| ↳ `foundation_dns` | boolean | Whether foundation DNS is enabled |
| ↳ `page_rule_quota` | number | Page rule quota |
| ↳ `phishing_detected` | boolean | Whether phishing was detected |
| ↳ `step` | number | Current setup step |
| `vanity_name_servers` | array | Custom vanity name servers |
| `permissions` | array | User permissions for the zone |
### Cloudflare Delete Zone [#cloudflare-delete-zone]
Deletes a zone (domain) from the Cloudflare account.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------- |
| `zoneId` | string | Yes | The zone ID to delete |
| `apiKey` | string | Yes | Cloudflare API Token |
#### Output [#output-3]
| Parameter | Type | Description |
| --------- | ------ | --------------- |
| `id` | string | Deleted zone ID |
### Cloudflare List DNS Records [#cloudflare-list-dns-records]
Lists DNS records for a specific zone.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `zoneId` | string | Yes | The zone ID to list DNS records for |
| `type` | string | No | Filter by record type (e.g., "A", "AAAA", "CNAME", "MX", "TXT") |
| `name` | string | No | Filter by record name (exact match) |
| `content` | string | No | Filter by record content (exact match) |
| `page` | number | No | Page number for pagination (default: 1) |
| `per_page` | number | No | Number of records per page (default: 100, max: 5000000) |
| `direction` | string | No | Sort direction (asc or desc) |
| `match` | string | No | Match logic for filters: any or all (default: all) |
| `order` | string | No | Sort field (type, name, content, ttl, proxied) |
| `proxied` | boolean | No | Filter by proxy status |
| `search` | string | No | Free-text search across record name, content, and value |
| `tag` | string | No | Filter by an exact tag name |
| `tag_match` | string | No | Tag filter match logic: any or all. Only affects results when combined with multiple tag filter conditions; has no effect with the single exact-match Tag Filter above. |
| `commentFilter` | string | No | Filter records by comment content (substring match) |
| `apiKey` | string | Yes | Cloudflare API Token |
#### Output [#output-4]
| Parameter | Type | Description |
| ----------------------- | ------- | ----------------------------------------------------- |
| `records` | array | List of DNS records |
| ↳ `id` | string | Unique identifier for the DNS record |
| ↳ `zone_id` | string | The ID of the zone the record belongs to |
| ↳ `zone_name` | string | The name of the zone |
| ↳ `type` | string | Record type (A, AAAA, CNAME, MX, TXT, etc.) |
| ↳ `name` | string | Record name (e.g., example.com) |
| ↳ `content` | string | Record content (e.g., IP address) |
| ↳ `proxiable` | boolean | Whether the record can be proxied |
| ↳ `proxied` | boolean | Whether Cloudflare proxy is enabled |
| ↳ `ttl` | number | TTL in seconds (1 = automatic) |
| ↳ `locked` | boolean | Whether the record is locked |
| ↳ `priority` | number | MX/SRV record priority |
| ↳ `comment` | string | Comment associated with the record |
| ↳ `tags` | array | Tags associated with the record |
| ↳ `comment_modified_on` | string | ISO 8601 timestamp when the comment was last modified |
| ↳ `tags_modified_on` | string | ISO 8601 timestamp when tags were last modified |
| ↳ `meta` | object | Record metadata |
| ↳ `source` | string | Source of the DNS record |
| ↳ `created_on` | string | ISO 8601 timestamp when the record was created |
| ↳ `modified_on` | string | ISO 8601 timestamp when the record was last modified |
| `total_count` | number | Total number of DNS records matching the query |
### Cloudflare Create DNS Record [#cloudflare-create-dns-record]
Creates a new DNS record for a zone.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ---------------------------------------------------------------------- |
| `zoneId` | string | Yes | The zone ID to create the DNS record in |
| `type` | string | Yes | DNS record type (e.g., "A", "AAAA", "CNAME", "MX", "TXT", "NS", "SRV") |
| `name` | string | Yes | DNS record name (e.g., "example.com" or "subdomain.example.com") |
| `content` | string | Yes | DNS record content (e.g., IP address for A records, target for CNAME) |
| `ttl` | number | No | Time to live in seconds (1 = automatic, default: 1) |
| `proxied` | boolean | No | Whether to enable Cloudflare proxy (default: false) |
| `priority` | number | No | Priority for MX and SRV records |
| `comment` | string | No | Comment for the DNS record |
| `tags` | string | No | Comma-separated tags for the DNS record |
| `apiKey` | string | Yes | Cloudflare API Token |
#### Output [#output-5]
| Parameter | Type | Description |
| --------------------- | ------- | ----------------------------------------------------- |
| `id` | string | Unique identifier for the created DNS record |
| `zone_id` | string | The ID of the zone the record belongs to |
| `zone_name` | string | The name of the zone |
| `type` | string | DNS record type (A, AAAA, CNAME, MX, TXT, etc.) |
| `name` | string | DNS record hostname |
| `content` | string | DNS record value (e.g., IP address, target hostname) |
| `proxiable` | boolean | Whether the record can be proxied through Cloudflare |
| `proxied` | boolean | Whether Cloudflare proxy is enabled |
| `ttl` | number | Time to live in seconds (1 = automatic) |
| `locked` | boolean | Whether the record is locked |
| `priority` | number | Priority for MX and SRV records |
| `comment` | string | Comment associated with the record |
| `tags` | array | Tags associated with the record |
| `comment_modified_on` | string | ISO 8601 timestamp when the comment was last modified |
| `tags_modified_on` | string | ISO 8601 timestamp when tags were last modified |
| `meta` | object | Record metadata |
| ↳ `source` | string | Source of the DNS record |
| `created_on` | string | ISO 8601 timestamp when the record was created |
| `modified_on` | string | ISO 8601 timestamp when the record was last modified |
### Cloudflare Update DNS Record [#cloudflare-update-dns-record]
Updates an existing DNS record for a zone.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | --------------------------------------------------------- |
| `zoneId` | string | Yes | The zone ID containing the DNS record |
| `recordId` | string | Yes | The DNS record ID to update |
| `type` | string | No | DNS record type (e.g., "A", "AAAA", "CNAME", "MX", "TXT") |
| `name` | string | No | DNS record name |
| `content` | string | No | DNS record content (e.g., IP address) |
| `ttl` | number | No | Time to live in seconds (1 = automatic) |
| `proxied` | boolean | No | Whether to enable Cloudflare proxy |
| `priority` | number | No | Priority for MX and SRV records |
| `comment` | string | No | Comment for the DNS record |
| `tags` | string | No | Comma-separated tags for the DNS record |
| `apiKey` | string | Yes | Cloudflare API Token |
#### Output [#output-6]
| Parameter | Type | Description |
| --------------------- | ------- | ----------------------------------------------------- |
| `id` | string | Unique identifier for the updated DNS record |
| `zone_id` | string | The ID of the zone the record belongs to |
| `zone_name` | string | The name of the zone |
| `type` | string | DNS record type (A, AAAA, CNAME, MX, TXT, etc.) |
| `name` | string | DNS record hostname |
| `content` | string | DNS record value (e.g., IP address, target hostname) |
| `proxiable` | boolean | Whether the record can be proxied through Cloudflare |
| `proxied` | boolean | Whether Cloudflare proxy is enabled |
| `ttl` | number | Time to live in seconds (1 = automatic) |
| `locked` | boolean | Whether the record is locked |
| `priority` | number | Priority for MX and SRV records |
| `comment` | string | Comment associated with the record |
| `tags` | array | Tags associated with the record |
| `comment_modified_on` | string | ISO 8601 timestamp when the comment was last modified |
| `tags_modified_on` | string | ISO 8601 timestamp when tags were last modified |
| `meta` | object | Record metadata |
| ↳ `source` | string | Source of the DNS record |
| `created_on` | string | ISO 8601 timestamp when the record was created |
| `modified_on` | string | ISO 8601 timestamp when the record was last modified |
### Cloudflare Delete DNS Record [#cloudflare-delete-dns-record]
Deletes a DNS record from a zone.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------- |
| `zoneId` | string | Yes | The zone ID containing the DNS record |
| `recordId` | string | Yes | The DNS record ID to delete |
| `apiKey` | string | Yes | Cloudflare API Token |
#### Output [#output-7]
| Parameter | Type | Description |
| --------- | ------ | ----------------- |
| `id` | string | Deleted record ID |
### Cloudflare List Certificates [#cloudflare-list-certificates]
Lists SSL/TLS certificate packs for a zone.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------- |
| `zoneId` | string | Yes | The zone ID to list certificates for |
| `status` | string | No | Filter certificate packs by status (e.g., "all", "active", "pending") |
| `page` | number | No | Page number of paginated results (default: 1) |
| `per_page` | number | No | Number of certificate packs per page (default: 20, min: 5, max: 50) |
| `deploy` | string | No | Filter by deployment environment: "staging" or "production" |
| `apiKey` | string | Yes | Cloudflare API Token |
#### Output [#output-8]
| Parameter | Type | Description |
| -------------------------- | ------- | --------------------------------------------------------- |
| `certificates` | array | List of SSL/TLS certificate packs |
| ↳ `id` | string | Certificate pack ID |
| ↳ `type` | string | Certificate type (e.g., "universal", "advanced") |
| ↳ `hosts` | array | Hostnames covered by this certificate pack |
| ↳ `primary_certificate` | string | ID of the primary certificate in the pack |
| ↳ `status` | string | Certificate pack status (e.g., "active", "pending") |
| ↳ `certificates` | array | Individual certificates within the pack |
| ↳ `id` | string | Certificate ID |
| ↳ `hosts` | array | Hostnames covered by this certificate |
| ↳ `issuer` | string | Certificate issuer |
| ↳ `signature` | string | Signature algorithm (e.g., "ECDSAWithSHA256") |
| ↳ `status` | string | Certificate status |
| ↳ `bundle_method` | string | Bundle method (e.g., "ubiquitous") |
| ↳ `zone_id` | string | Zone ID the certificate belongs to |
| ↳ `uploaded_on` | string | Upload date (ISO 8601) |
| ↳ `modified_on` | string | Last modified date (ISO 8601) |
| ↳ `expires_on` | string | Expiration date (ISO 8601) |
| ↳ `priority` | number | Certificate priority order |
| ↳ `geo_restrictions` | object | Geographic restrictions for the certificate |
| ↳ `label` | string | Geographic restriction label |
| ↳ `cloudflare_branding` | boolean | Whether Cloudflare branding is enabled on the certificate |
| ↳ `validation_method` | string | Validation method (e.g., "txt", "http", "cname") |
| ↳ `validity_days` | number | Validity period in days |
| ↳ `certificate_authority` | string | Certificate authority (e.g., "lets\_encrypt", "google") |
| ↳ `validation_errors` | array | Validation issues for the certificate pack |
| ↳ `message` | string | Validation error message |
| ↳ `validation_records` | array | Validation records for the certificate pack |
| ↳ `cname` | string | CNAME record name |
| ↳ `cname_target` | string | CNAME record target |
| ↳ `emails` | array | Email addresses for validation |
| ↳ `http_body` | string | HTTP validation body content |
| ↳ `http_url` | string | HTTP validation URL |
| ↳ `status` | string | Validation record status |
| ↳ `txt_name` | string | TXT record name |
| ↳ `txt_value` | string | TXT record value |
| ↳ `dcv_delegation_records` | array | Domain control validation delegation records |
| ↳ `cname` | string | CNAME record name |
| ↳ `cname_target` | string | CNAME record target |
| ↳ `emails` | array | Email addresses for validation |
| ↳ `http_body` | string | HTTP validation body content |
| ↳ `http_url` | string | HTTP validation URL |
| ↳ `status` | string | Delegation record status |
| ↳ `txt_name` | string | TXT record name |
| ↳ `txt_value` | string | TXT record value |
| `total_count` | number | Total number of certificate packs |
### Cloudflare Get Zone Settings [#cloudflare-get-zone-settings]
Gets all settings for a zone including SSL mode, caching level, and security settings.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------- |
| `zoneId` | string | Yes | The zone ID to get settings for |
| `apiKey` | string | Yes | Cloudflare API Token |
#### Output [#output-9]
| Parameter | Type | Description |
| ------------------ | ------- | --------------------------------------------------------------------------------------------------------------------------- |
| `settings` | array | List of zone settings |
| ↳ `id` | string | Setting identifier (e.g., ssl, cache\_level, security\_level, always\_use\_https) |
| ↳ `value` | string | Setting value as a string. Simple values returned as-is (e.g., "full", "on"). Complex values are JSON-stringified (e.g., \\ |
| ↳ `editable` | boolean | Whether the setting can be modified for the current zone plan |
| ↳ `modified_on` | string | ISO 8601 timestamp when the setting was last modified |
| ↳ `time_remaining` | number | Seconds remaining until the setting can be modified again (only present for rate-limited settings) |
### Cloudflare Update Zone Setting [#cloudflare-update-zone-setting]
Updates a specific zone setting such as SSL mode, security level, cache level, or other configuration.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `zoneId` | string | Yes | The zone ID to update settings for |
| `settingId` | string | Yes | Setting to update (e.g., "ssl", "security\_level", "cache\_level", "always\_use\_https", "browser\_cache\_ttl", "http3", "min\_tls\_version", "ciphers") |
| `value` | string | Yes | New value for the setting as a string or JSON string for complex values (e.g., "full" for SSL, "medium" for security\_level, "aggressive" for cache\_level, '\["ECDHE-RSA-AES128-GCM-SHA256"]' for ciphers) |
| `apiKey` | string | Yes | Cloudflare API Token |
#### Output [#output-10]
| Parameter | Type | Description |
| ---------------- | ------- | -------------------------------------------------------------------------------------------------------------------------- |
| `id` | string | Setting identifier (e.g., ssl, cache\_level, security\_level) |
| `value` | string | Updated setting value as a string. Simple values returned as-is (e.g., "full", "on"). Complex values are JSON-stringified. |
| `editable` | boolean | Whether the setting can be modified for the current zone plan |
| `modified_on` | string | ISO 8601 timestamp when the setting was last modified |
| `time_remaining` | number | Seconds remaining until the setting can be modified again (only present for rate-limited settings) |
### Cloudflare DNS Analytics [#cloudflare-dns-analytics]
Gets DNS analytics report for a zone including query counts and trends.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `zoneId` | string | Yes | The zone ID to get DNS analytics for |
| `since` | string | No | Start date for analytics (ISO 8601, e.g., "2024-01-01T00:00:00Z") or relative (e.g., "-6h") |
| `until` | string | No | End date for analytics (ISO 8601, e.g., "2024-01-31T23:59:59Z") or relative (e.g., "now") |
| `metrics` | string | Yes | Comma-separated metrics to retrieve (e.g., "queryCount,uncachedCount,staleCount,responseTimeAvg,responseTimeMedian,responseTime90th,responseTime99th") |
| `dimensions` | string | No | Comma-separated dimensions to group by (e.g., "queryName,queryType,responseCode,responseCached,coloName,origin,dayOfWeek,tcp,ipVersion,querySizeBucket,responseSizeBucket") |
| `filters` | string | No | Filters to apply to the data (e.g., "queryType==A") |
| `sort` | string | No | Sort order for the result set. Fields must be included in metrics or dimensions (e.g., "+queryCount" or "-responseTimeAvg") |
| `limit` | number | No | Maximum number of results to return |
| `apiKey` | string | Yes | Cloudflare API Token |
#### Output [#output-11]
| Parameter | Type | Description |
| ---------------------- | ------ | ----------------------------------------------------------------------------- |
| `totals` | object | Aggregate DNS analytics totals for the entire queried period |
| ↳ `queryCount` | number | Total number of DNS queries |
| ↳ `uncachedCount` | number | Number of uncached DNS queries |
| ↳ `staleCount` | number | Number of stale DNS queries |
| ↳ `responseTimeAvg` | number | Average response time in milliseconds |
| ↳ `responseTimeMedian` | number | Median response time in milliseconds |
| ↳ `responseTime90th` | number | 90th percentile response time in milliseconds |
| ↳ `responseTime99th` | number | 99th percentile response time in milliseconds |
| `min` | object | Minimum values across the analytics period |
| ↳ `queryCount` | number | Minimum number of DNS queries |
| ↳ `uncachedCount` | number | Minimum number of uncached DNS queries |
| ↳ `staleCount` | number | Minimum number of stale DNS queries |
| ↳ `responseTimeAvg` | number | Minimum average response time in milliseconds |
| ↳ `responseTimeMedian` | number | Minimum median response time in milliseconds |
| ↳ `responseTime90th` | number | Minimum 90th percentile response time in milliseconds |
| ↳ `responseTime99th` | number | Minimum 99th percentile response time in milliseconds |
| `max` | object | Maximum values across the analytics period |
| ↳ `queryCount` | number | Maximum number of DNS queries |
| ↳ `uncachedCount` | number | Maximum number of uncached DNS queries |
| ↳ `staleCount` | number | Maximum number of stale DNS queries |
| ↳ `responseTimeAvg` | number | Maximum average response time in milliseconds |
| ↳ `responseTimeMedian` | number | Maximum median response time in milliseconds |
| ↳ `responseTime90th` | number | Maximum 90th percentile response time in milliseconds |
| ↳ `responseTime99th` | number | Maximum 99th percentile response time in milliseconds |
| `data` | array | Raw analytics data rows returned by the Cloudflare DNS analytics report |
| ↳ `dimensions` | array | Dimension values for this data row, parallel to the requested dimensions list |
| ↳ `metrics` | array | Metric values for this data row, parallel to the requested metrics list |
| `data_lag` | number | Processing lag in seconds before analytics data becomes available |
| `rows` | number | Total number of rows in the result set |
| `query` | object | Echo of the query parameters sent to the API |
| ↳ `since` | string | Start date of the analytics query |
| ↳ `until` | string | End date of the analytics query |
| ↳ `metrics` | array | Metrics requested in the query |
| ↳ `dimensions` | array | Dimensions requested in the query |
| ↳ `filters` | string | Filters applied to the query |
| ↳ `sort` | array | Sort order applied to the query |
| ↳ `limit` | number | Maximum number of results requested |
### Cloudflare Purge Cache [#cloudflare-purge-cache]
Purges cached content for a zone. Can purge everything or specific files/tags/hosts/prefixes.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------- |
| `zoneId` | string | Yes | The zone ID to purge cache for |
| `purge_everything` | boolean | No | Set to true to purge all cached content. Mutually exclusive with files, tags, hosts, and prefixes |
| `files` | string | No | Comma-separated list of URLs to purge from cache |
| `tags` | string | No | Comma-separated list of cache tags to purge (Enterprise only) |
| `hosts` | string | No | Comma-separated list of hostnames to purge (Enterprise only) |
| `prefixes` | string | No | Comma-separated list of URL prefixes to purge (Enterprise only) |
| `apiKey` | string | Yes | Cloudflare API Token |
#### Output [#output-12]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------------------------- |
| `id` | string | Purge request identifier returned by Cloudflare |
---
# CloudFormation (/integrations/cloudformation)
{/* MANUAL-CONTENT-START:intro */}
[AWS CloudFormation](https://aws.amazon.com/cloudformation/) is an infrastructure-as-code service that lets you model, provision, and manage AWS resources by treating infrastructure as code. CloudFormation uses templates to describe the resources you need and their dependencies, so you can launch and configure them together as a stack.
With the CloudFormation integration, you can:
* **Describe Stacks**: List all stacks in a region or get detailed information about a specific stack, including its status, outputs, tags, and drift information
* **List Stack Resources**: Enumerate every resource in a stack with its logical ID, physical ID, type, status, and drift status
* **Describe Stack Events**: View the full event history for a stack to understand what happened during create, update, or delete operations
* **Detect Stack Drift**: Initiate drift detection to check whether any resources in a stack have been modified outside of CloudFormation
* **Drift Detection Status**: Poll the results of a drift detection operation to see which resources have drifted and how many
* **Get Template**: Retrieve the original template body (JSON or YAML) used to create or update a stack
* **Validate Template**: Check a CloudFormation template for syntax errors, required capabilities, parameters, and declared transforms before deploying
In Sim, the CloudFormation integration enables your agents to monitor infrastructure state, detect configuration drift, audit stack resources, and validate templates as part of automated SRE and DevOps workflows. This is especially powerful when combined with CloudWatch for observability and SNS for alerting, creating end-to-end infrastructure monitoring pipelines.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate AWS CloudFormation into workflows. Create, update, and delete stacks, preview changes with change sets, describe stacks, list resources, detect drift, view stack events, and retrieve or validate templates. Requires AWS access key and secret access key.
## Actions [#actions]
### CloudFormation Describe Stacks [#cloudformation-describe-stacks]
List and describe CloudFormation stacks
#### Input [#input]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------------------------------------------------ |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `stackName` | string | No | Stack name or ID to describe (omit to list all stacks) |
#### Output [#output]
| Parameter | Type | Description |
| --------- | ----- | ------------------------------------------------------------ |
| `stacks` | array | List of CloudFormation stacks with status, outputs, and tags |
### CloudFormation Create Stack [#cloudformation-create-stack]
Create a new CloudFormation stack from a template
#### Input [#input-1]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `stackName` | string | Yes | Name for the new stack (must be unique in the Region) |
| `templateBody` | string | Yes | The CloudFormation template body (JSON or YAML) |
| `parameters` | json | No | Template input parameters (e.g., \[\{"parameterKey": "InstanceType", "parameterValue": "t3.micro"}]) |
| `capabilities` | string | No | Comma-separated capabilities to acknowledge (CAPABILITY\_IAM, CAPABILITY\_NAMED\_IAM, CAPABILITY\_AUTO\_EXPAND) required when the template creates IAM resources or uses macros |
| `tags` | json | No | Tags to apply to the stack and its resources (e.g., \[\{"key": "env", "value": "prod"}]) |
| `onFailure` | string | No | Action to take on creation failure: ROLLBACK (default), DELETE, or DO\_NOTHING |
| `timeoutInMinutes` | number | No | Amount of time before the stack creation times out and rolls back |
#### Output [#output-1]
| Parameter | Type | Description |
| --------- | ------ | ---------------------------------- |
| `stackId` | string | The unique ID of the created stack |
### CloudFormation Update Stack [#cloudformation-update-stack]
Update an existing CloudFormation stack with a new or previous template
#### Input [#input-2]
| Parameter | Type | Required | Description |
| --------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `stackName` | string | Yes | Name or ID of the stack to update |
| `templateBody` | string | No | The new CloudFormation template body (JSON or YAML). Required unless usePreviousTemplate is true |
| `usePreviousTemplate` | boolean | No | Reuse the template currently associated with the stack instead of providing templateBody |
| `parameters` | json | No | Template input parameters (e.g., \[\{"parameterKey": "InstanceType", "parameterValue": "t3.micro"}]) |
| `capabilities` | string | No | Comma-separated capabilities to acknowledge (CAPABILITY\_IAM, CAPABILITY\_NAMED\_IAM, CAPABILITY\_AUTO\_EXPAND) |
| `tags` | json | No | Tags to apply to the stack and its resources (e.g., \[\{"key": "env", "value": "prod"}]) |
#### Output [#output-2]
| Parameter | Type | Description |
| --------- | ------ | ---------------------------------- |
| `stackId` | string | The unique ID of the updated stack |
### CloudFormation Delete Stack [#cloudformation-delete-stack]
Delete a CloudFormation stack and its resources
#### Input [#input-3]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `stackName` | string | Yes | Name or ID of the stack to delete |
| `retainResources` | string | No | Comma-separated logical resource IDs to retain instead of deleting (only applies to stacks in DELETE\_FAILED state) |
#### Output [#output-3]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### CloudFormation Cancel Update Stack [#cloudformation-cancel-update-stack]
Cancel an in-progress stack update and roll back to the last known stable state
#### Input [#input-4]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | -------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `stackName` | string | Yes | Name or ID of the stack whose update should be cancelled |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### CloudFormation Create Change Set [#cloudformation-create-change-set]
Preview the changes a stack create or update would make before applying them
#### Input [#input-5]
| Parameter | Type | Required | Description |
| --------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `stackName` | string | Yes | Name of the stack to create or update (new name for CREATE type, existing name for UPDATE) |
| `changeSetName` | string | Yes | Name for the new change set |
| `templateBody` | string | No | The CloudFormation template body (JSON or YAML). Required unless usePreviousTemplate is true |
| `usePreviousTemplate` | boolean | No | Reuse the template currently associated with the stack (UPDATE change sets only) |
| `parameters` | json | No | Template input parameters (e.g., \[\{"parameterKey": "InstanceType", "parameterValue": "t3.micro"}]) |
| `capabilities` | string | No | Comma-separated capabilities to acknowledge (CAPABILITY\_IAM, CAPABILITY\_NAMED\_IAM, CAPABILITY\_AUTO\_EXPAND) |
| `changeSetType` | string | No | CREATE (default, new stack), UPDATE (existing stack), or IMPORT (import existing resources) |
| `description` | string | No | Description of the change set for reference |
#### Output [#output-5]
| Parameter | Type | Description |
| ------------- | ------ | --------------------------------------- |
| `changeSetId` | string | The unique ID of the created change set |
| `stackId` | string | The unique ID of the target stack |
### CloudFormation Describe Change Set [#cloudformation-describe-change-set]
View the resource changes a change set would make and its execution status
#### Input [#input-6]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `changeSetName` | string | Yes | Name or ARN of the change set to describe |
| `stackName` | string | No | Name or ID of the stack the change set belongs to (required if changeSetName is not an ARN) |
#### Output [#output-6]
| Parameter | Type | Description |
| ----------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------ |
| `changeSetName` | string | Name of the change set |
| `changeSetId` | string | The unique ID of the change set |
| `stackId` | string | The unique ID of the target stack |
| `stackName` | string | Name of the target stack |
| `description` | string | Description of the change set |
| `executionStatus` | string | Whether the change set can be executed (AVAILABLE, UNAVAILABLE, EXECUTE\_IN\_PROGRESS, EXECUTE\_COMPLETE, EXECUTE\_FAILED, OBSOLETE) |
| `status` | string | Current status of the change set (CREATE\_PENDING, CREATE\_IN\_PROGRESS, CREATE\_COMPLETE, DELETE\_COMPLETE, FAILED) |
| `statusReason` | string | Reason for the current status, particularly if failed |
| `creationTime` | number | Timestamp the change set was created |
| `capabilities` | array | Capabilities required to execute the change set |
| `changes` | array | List of resource changes (action, logical/physical resource ID, resource type, replacement) |
### CloudFormation Execute Change Set [#cloudformation-execute-change-set]
Apply a previously created and reviewed change set to its stack
#### Input [#input-7]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `changeSetName` | string | Yes | Name or ARN of the change set to execute |
| `stackName` | string | No | Name or ID of the stack the change set belongs to (required if changeSetName is not an ARN) |
#### Output [#output-7]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### CloudFormation List Stack Resources [#cloudformation-list-stack-resources]
List all resources in a CloudFormation stack
#### Input [#input-8]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ---------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `stackName` | string | Yes | Stack name or ID |
#### Output [#output-8]
| Parameter | Type | Description |
| ----------- | ----- | ---------------------------------------------------------------- |
| `resources` | array | List of stack resources with type, status, and drift information |
### CloudFormation Detect Stack Drift [#cloudformation-detect-stack-drift]
Initiate drift detection on a CloudFormation stack
#### Input [#input-9]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `stackName` | string | Yes | Stack name or ID to detect drift on |
#### Output [#output-9]
| Parameter | Type | Description |
| ----------------------- | ------ | --------------------------------------------------------------------- |
| `stackDriftDetectionId` | string | ID to use with Describe Stack Drift Detection Status to check results |
### CloudFormation Describe Stack Drift Detection Status [#cloudformation-describe-stack-drift-detection-status]
Check the status of a stack drift detection operation
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ----------------------- | ------ | -------- | ----------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `stackDriftDetectionId` | string | Yes | The drift detection ID returned by Detect Stack Drift |
#### Output [#output-10]
| Parameter | Type | Description |
| --------------------------- | ------ | ---------------------------------------------------------------------------------- |
| `stackId` | string | The stack ID |
| `stackDriftDetectionId` | string | The drift detection ID |
| `stackDriftStatus` | string | Drift status (DRIFTED, IN\_SYNC, NOT\_CHECKED) |
| `detectionStatus` | string | Detection status (DETECTION\_IN\_PROGRESS, DETECTION\_COMPLETE, DETECTION\_FAILED) |
| `detectionStatusReason` | string | Reason if detection failed |
| `driftedStackResourceCount` | number | Number of resources that have drifted |
| `timestamp` | number | Timestamp of the detection |
### CloudFormation Describe Stack Events [#cloudformation-describe-stack-events]
Get the event history for a CloudFormation stack
#### Input [#input-11]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------------------------------------------ |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `stackName` | string | Yes | Stack name or ID |
| `limit` | number | No | Maximum number of events to return (default: 50) |
#### Output [#output-11]
| Parameter | Type | Description |
| --------- | ----- | -------------------------------------------------------- |
| `events` | array | List of stack events with resource status and timestamps |
### CloudFormation Get Template [#cloudformation-get-template]
Retrieve the template body for a CloudFormation stack
#### Input [#input-12]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `stackName` | string | Yes | Stack name or ID |
| `templateStage` | string | No | Which template version to retrieve: Processed (default, with transforms applied) or Original (as submitted) |
#### Output [#output-12]
| Parameter | Type | Description |
| ----------------- | ------ | ------------------------------------------ |
| `templateBody` | string | The template body as a JSON or YAML string |
| `stagesAvailable` | array | Available template stages |
### CloudFormation Get Template Summary [#cloudformation-get-template-summary]
Get a summary of a template or deployed stack: resource types, required capabilities, and parameters, without full validation
#### Input [#input-13]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | -------------------------------------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `templateBody` | string | No | The CloudFormation template body (JSON or YAML). Required if stackName is not provided |
| `stackName` | string | No | Name or ID of a deployed stack to summarize instead of a template body |
#### Output [#output-13]
| Parameter | Type | Description |
| -------------------- | ------ | ------------------------------------------------------------------- |
| `description` | string | Template description |
| `parameters` | array | Template parameters with types, defaults, and descriptions |
| `capabilities` | array | Required capabilities (e.g., CAPABILITY\_IAM) |
| `capabilitiesReason` | string | Reason capabilities are required |
| `resourceTypes` | array | AWS resource types declared in the template (e.g., AWS::S3::Bucket) |
| `version` | string | Template format version |
| `declaredTransforms` | array | Transforms used in the template (e.g., AWS::Serverless-2016-10-31) |
### CloudFormation Validate Template [#cloudformation-validate-template]
Validate a CloudFormation template for syntax and structural correctness
#### Input [#input-14]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `templateBody` | string | Yes | The CloudFormation template body (JSON or YAML) |
#### Output [#output-14]
| Parameter | Type | Description |
| -------------------- | ------ | ------------------------------------------------------------------ |
| `description` | string | Template description |
| `parameters` | array | Template parameters with defaults and descriptions |
| `capabilities` | array | Required capabilities (e.g., CAPABILITY\_IAM) |
| `capabilitiesReason` | string | Reason capabilities are required |
| `declaredTransforms` | array | Transforms used in the template (e.g., AWS::Serverless-2016-10-31) |
---
# CloudWatch (/integrations/cloudwatch)
{/* MANUAL-CONTENT-START:intro */}
[AWS CloudWatch](https://aws.amazon.com/cloudwatch/) is a monitoring and observability service that provides data and actionable insights for AWS resources, applications, and services. CloudWatch collects monitoring and operational data in the form of logs, metrics, and events, giving you a unified view of your AWS environment.
With the CloudWatch integration, you can:
* **Query Logs (Insights)**: Run CloudWatch Log Insights queries against one or more log groups to analyze log data with a powerful query language
* **Describe Log Groups**: List available CloudWatch log groups in your account, optionally filtered by name prefix
* **Get Log Events**: Retrieve log events from a specific log stream within a log group
* **Describe Log Streams**: List log streams within a log group, ordered by last event time or filtered by name prefix
* **List Metrics**: Browse available CloudWatch metrics, optionally filtered by namespace, metric name, or recent activity
* **Get Metric Statistics**: Retrieve statistical data for a metric over a specified time range with configurable granularity
* **Publish Metric**: Publish custom metric data points to CloudWatch for your own application monitoring
* **Describe Alarms**: List and filter CloudWatch alarms by name prefix, state, or alarm type
In Sim, the CloudWatch integration enables your agents to monitor AWS infrastructure, analyze application logs, track custom metrics, and respond to alarm states as part of automated DevOps and SRE workflows. This is especially powerful when combined with other AWS integrations like CloudFormation and SNS for end-to-end infrastructure management.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate AWS CloudWatch into workflows. Run Log Insights queries, list log groups, retrieve log events, list and get metrics, and monitor alarms. Requires AWS access key and secret access key.
## Actions [#actions]
### CloudWatch Query Logs [#cloudwatch-query-logs]
Run a CloudWatch Log Insights query against one or more log groups
#### Input [#input]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------------------------------ |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `logGroupNames` | array | Yes | Log group names to query |
| `queryString` | string | Yes | CloudWatch Log Insights query string |
| `startTime` | number | Yes | Start time as Unix epoch seconds |
| `endTime` | number | Yes | End time as Unix epoch seconds |
| `limit` | number | No | Maximum number of results to return |
#### Output [#output]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------------------------------------------------- |
| `results` | array | Query result rows (each row is a key/value map of field name to value) |
| `statistics` | object | Query statistics |
| ↳ `bytesScanned` | number | Total bytes of log data scanned |
| ↳ `recordsMatched` | number | Number of log records that matched the query |
| ↳ `recordsScanned` | number | Total log records scanned |
| `status` | string | Query completion status (Complete, Failed, Cancelled, or Timeout) |
### CloudWatch Filter Log Events [#cloudwatch-filter-log-events]
Search log events across all streams in a log group by filter pattern and time range, without writing a Log Insights query
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `logGroupName` | string | Yes | CloudWatch log group name to search |
| `filterPattern` | string | No | CloudWatch Logs filter pattern (e.g., "ERROR", "?ERROR ?Exception"). Matches all events if omitted. |
| `logStreamNamePrefix` | string | No | Only search log streams whose name starts with this prefix |
| `startTime` | number | No | Start time as Unix epoch seconds |
| `endTime` | number | No | End time as Unix epoch seconds |
| `startFromHead` | boolean | No | Return the earliest matching events first instead of the latest |
| `limit` | number | No | Maximum number of events to return |
#### Output [#output-1]
| Parameter | Type | Description |
| ----------------- | ------ | -------------------------------------------------------------------- |
| `events` | array | Matching log events across all searched streams, sorted by timestamp |
| ↳ `logStreamName` | string | Log stream the event belongs to |
| ↳ `timestamp` | number | Event timestamp in epoch milliseconds |
| ↳ `message` | string | Log event message |
| ↳ `ingestionTime` | number | Ingestion time in epoch milliseconds |
### CloudWatch Describe Log Groups [#cloudwatch-describe-log-groups]
List available CloudWatch log groups
#### Input [#input-2]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | -------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `prefix` | string | No | Filter log groups by name prefix |
| `limit` | number | No | Maximum number of log groups to return |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------------- | ------ | ------------------------------------------- |
| `logGroups` | array | List of CloudWatch log groups with metadata |
| ↳ `logGroupName` | string | Log group name |
| ↳ `arn` | string | Log group ARN |
| ↳ `storedBytes` | number | Total stored bytes |
| ↳ `retentionInDays` | number | Retention period in days (if set) |
| ↳ `creationTime` | number | Creation time in epoch milliseconds |
### CloudWatch Get Log Events [#cloudwatch-get-log-events]
Retrieve log events from a specific CloudWatch log stream
#### Input [#input-3]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ---------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `logGroupName` | string | Yes | CloudWatch log group name |
| `logStreamName` | string | Yes | CloudWatch log stream name |
| `startTime` | number | No | Start time as Unix epoch seconds |
| `endTime` | number | No | End time as Unix epoch seconds |
| `limit` | number | No | Maximum number of events to return |
#### Output [#output-3]
| Parameter | Type | Description |
| ----------------- | ------ | ------------------------------------------------------ |
| `events` | array | Log events with timestamp, message, and ingestion time |
| ↳ `timestamp` | number | Event timestamp in epoch milliseconds |
| ↳ `message` | string | Log event message |
| ↳ `ingestionTime` | number | Ingestion time in epoch milliseconds |
### CloudWatch Describe Log Streams [#cloudwatch-describe-log-streams]
List log streams within a CloudWatch log group
#### Input [#input-4]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | --------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `logGroupName` | string | Yes | CloudWatch log group name |
| `prefix` | string | No | Filter log streams by name prefix |
| `limit` | number | No | Maximum number of log streams to return |
#### Output [#output-4]
| Parameter | Type | Description |
| ----------------------- | ------ | ------------------------------------------------------------------------------------------------------------------ |
| `logStreams` | array | List of log streams with metadata, sorted by last event time (most recent first) unless a prefix filter is applied |
| ↳ `logStreamName` | string | Log stream name |
| ↳ `lastEventTimestamp` | number | Timestamp of the last log event in epoch milliseconds |
| ↳ `firstEventTimestamp` | number | Timestamp of the first log event in epoch milliseconds |
| ↳ `creationTime` | number | Stream creation time in epoch milliseconds |
| ↳ `storedBytes` | number | Total stored bytes |
### CloudWatch Set Log Group Retention [#cloudwatch-set-log-group-retention]
Set (or clear, for never-expire) the retention period for a CloudWatch log group
#### Input [#input-5]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `logGroupName` | string | Yes | CloudWatch log group name |
| `retentionInDays` | number | No | Days to retain log events (one of 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1096, 1827, 2192, 2557, 2922, 3288, 3653). Omit to make events never expire. |
#### Output [#output-5]
| Parameter | Type | Description |
| ----------------- | ------- | -------------------------------------------------------- |
| `success` | boolean | Whether the retention policy was updated |
| `logGroupName` | string | Log group the policy applies to |
| `retentionInDays` | number | Retention period in days, or null if events never expire |
### CloudWatch List Metrics [#cloudwatch-list-metrics]
List available CloudWatch metrics
#### Input [#input-6]
| Parameter | Type | Required | Description |
| -------------------- | ------- | -------- | ----------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `namespace` | string | No | Filter by namespace (e.g., AWS/EC2, AWS/Lambda) |
| `metricName` | string | No | Filter by metric name |
| `recentlyActive` | boolean | No | Only show metrics active in the last 3 hours |
| `limit` | number | No | Maximum number of metrics to return |
#### Output [#output-6]
| Parameter | Type | Description |
| -------------- | ------ | ---------------------------------------------------- |
| `metrics` | array | List of metrics with namespace, name, and dimensions |
| ↳ `namespace` | string | Metric namespace (e.g., AWS/EC2) |
| ↳ `metricName` | string | Metric name (e.g., CPUUtilization) |
| ↳ `dimensions` | array | Array of name/value dimension pairs |
### CloudWatch Get Metric Statistics [#cloudwatch-get-metric-statistics]
Get statistics for a CloudWatch metric over a time range
#### Input [#input-7]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | -------------------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `namespace` | string | Yes | Metric namespace (e.g., AWS/EC2, AWS/Lambda) |
| `metricName` | string | Yes | Metric name (e.g., CPUUtilization, Invocations) |
| `startTime` | number | Yes | Start time as Unix epoch seconds |
| `endTime` | number | Yes | End time as Unix epoch seconds |
| `period` | number | Yes | Granularity in seconds (e.g., 60, 300, 3600) |
| `statistics` | array | Yes | Statistics to retrieve (Average, Sum, Minimum, Maximum, SampleCount) |
| `dimensions` | string | No | Dimensions as JSON (e.g., \{"InstanceId": "i-1234"}) |
#### Output [#output-7]
| Parameter | Type | Description |
| --------------- | ------ | ----------------------------------------------------- |
| `label` | string | Metric label returned by CloudWatch |
| `datapoints` | array | Datapoints sorted by timestamp with statistics values |
| ↳ `timestamp` | number | Datapoint timestamp in epoch milliseconds |
| ↳ `average` | number | Average statistic value |
| ↳ `sum` | number | Sum statistic value |
| ↳ `minimum` | number | Minimum statistic value |
| ↳ `maximum` | number | Maximum statistic value |
| ↳ `sampleCount` | number | Sample count statistic value |
| ↳ `unit` | string | Unit of the metric |
### CloudWatch Publish Metric [#cloudwatch-publish-metric]
Publish a custom metric data point to CloudWatch
#### Input [#input-8]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------------------------------------------ |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `namespace` | string | Yes | Metric namespace (e.g., Custom/MyApp) |
| `metricName` | string | Yes | Name of the metric |
| `value` | number | Yes | Metric value to publish |
| `unit` | string | No | Unit of the metric (e.g., Count, Seconds, Bytes) |
| `dimensions` | string | No | JSON string of dimension name/value pairs |
#### Output [#output-8]
| Parameter | Type | Description |
| ------------ | ------- | --------------------------------------------- |
| `success` | boolean | Whether the metric was published successfully |
| `namespace` | string | Metric namespace |
| `metricName` | string | Metric name |
| `value` | number | Published metric value |
| `unit` | string | Metric unit |
| `timestamp` | string | Timestamp when the metric was published |
### CloudWatch Describe Alarms [#cloudwatch-describe-alarms]
List and filter CloudWatch alarms
#### Input [#input-9]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `alarmNamePrefix` | string | No | Filter alarms by name prefix |
| `stateValue` | string | No | Filter by alarm state (OK, ALARM, INSUFFICIENT\_DATA) |
| `alarmType` | string | No | Filter by alarm type (MetricAlarm, CompositeAlarm) |
| `limit` | number | No | Maximum number of alarms to return |
#### Output [#output-9]
| Parameter | Type | Description |
| ------------------------- | ------ | ------------------------------------------------------ |
| `alarms` | array | List of CloudWatch alarms with state and configuration |
| ↳ `alarmName` | string | Alarm name |
| ↳ `alarmArn` | string | Alarm ARN |
| ↳ `stateValue` | string | Current state (OK, ALARM, INSUFFICIENT\_DATA) |
| ↳ `stateReason` | string | Human-readable reason for the state |
| ↳ `metricName` | string | Metric name (MetricAlarm only) |
| ↳ `namespace` | string | Metric namespace (MetricAlarm only) |
| ↳ `threshold` | number | Threshold value (MetricAlarm only) |
| ↳ `stateUpdatedTimestamp` | number | Epoch ms when state last changed |
### CloudWatch Describe Alarm History [#cloudwatch-describe-alarm-history]
Retrieve state-change and configuration history for CloudWatch alarms
#### Input [#input-10]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `alarmName` | string | No | Name of a specific alarm to retrieve history for. Omit for all alarms. |
| `historyItemType` | string | No | Filter by history item type (ConfigurationUpdate, StateUpdate, Action, AlarmContributorStateUpdate, AlarmContributorAction) |
| `startDate` | number | No | Start of the history window as Unix epoch seconds |
| `endDate` | number | No | End of the history window as Unix epoch seconds |
| `scanBy` | string | No | Sort order: TimestampDescending (newest first) or TimestampAscending |
| `limit` | number | No | Maximum number of history records to return |
#### Output [#output-10]
| Parameter | Type | Description |
| ------------------- | ------ | ----------------------------------------------------------------- |
| `alarmHistoryItems` | array | Alarm history items sorted per scanBy, newest first by default |
| ↳ `alarmName` | string | Name of the alarm this history item belongs to |
| ↳ `alarmType` | string | MetricAlarm or CompositeAlarm |
| ↳ `timestamp` | number | Epoch ms when the history item occurred |
| ↳ `historyItemType` | string | ConfigurationUpdate, StateUpdate, Action, or contributor variants |
| ↳ `historySummary` | string | Human-readable summary of the event |
### CloudWatch Mute Alarm [#cloudwatch-mute-alarm]
Create a CloudWatch alarm mute rule that suppresses alarms for a fixed duration
#### Input [#input-11]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | --------------------------------------------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `muteRuleName` | string | Yes | Unique name for the mute rule (used later to unmute) |
| `alarmNames` | array | Yes | Names of the CloudWatch alarms this mute rule targets |
| `durationValue` | number | Yes | How long the mute lasts (paired with durationUnit) |
| `durationUnit` | string | Yes | Unit for durationValue: minutes, hours, or days |
| `description` | string | No | Optional description of why the alarms are being muted |
| `startDate` | number | No | When the mute window begins as Unix epoch seconds. Defaults to now (mute starts immediately). |
#### Output [#output-11]
| Parameter | Type | Description |
| -------------- | ------- | ---------------------------------------------- |
| `success` | boolean | Whether the mute rule was created successfully |
| `muteRuleName` | string | Name of the mute rule that was created |
| `alarmNames` | array | Names of the alarms this rule mutes |
| `expression` | string | Schedule expression used by the mute rule |
| `duration` | string | ISO 8601 duration of the mute window |
### CloudWatch Unmute Alarm [#cloudwatch-unmute-alarm]
Delete a CloudWatch alarm mute rule, restoring alarm notifications
#### Input [#input-12]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `muteRuleName` | string | Yes | Name of the mute rule to delete |
#### Output [#output-12]
| Parameter | Type | Description |
| -------------- | ------- | ---------------------------------------------- |
| `success` | boolean | Whether the mute rule was deleted successfully |
| `muteRuleName` | string | Name of the mute rule that was deleted |
---
# CodePipeline (/integrations/codepipeline)
{/* MANUAL-CONTENT-START:intro */}
[AWS CodePipeline](https://aws.amazon.com/codepipeline/) is a continuous delivery service that automates the build, test, and deploy phases of software release pipelines. It orchestrates pipeline stages and actions, tracking execution status, source revisions, and approval steps across a release process.
With this integration, you can:
* **Inspect pipelines**: List pipelines, retrieve a pipeline's stage and action structure, and check its current execution state
* **Track executions**: Get details on a specific execution or list recent executions and action-level history, including status, triggers, and source revisions
* **Control pipeline flow**: Start or stop executions, retry failed stages, and approve or reject pending manual approval actions
* **Manage stage transitions**: Disable or re-enable artifact transitions into or out of a stage to freeze or resume a pipeline
In Sim, the AWS CodePipeline integration allows your agents to monitor and control release pipelines programmatically — listing pipelines and their structure, checking execution and action status, starting or stopping executions, retrying failed stages, approving or rejecting manual approvals, and enabling or disabling stage transitions. This lets your agents build deployment automation and approval workflows that respond to pipeline state in real time.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate AWS CodePipeline into workflows. Start, stop, and monitor pipeline executions, retry failed stages, and approve or reject manual approval actions. Requires AWS access key and secret access key.
## Actions [#actions]
### CodePipeline List Pipelines [#codepipeline-list-pipelines]
List all CodePipeline pipelines in an AWS account and region
#### Input [#input]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ---------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `maxResults` | number | No | Maximum number of pipelines to return (1-1000) |
| `nextToken` | string | No | Pagination token from a previous call |
#### Output [#output]
| Parameter | Type | Description |
| ----------------- | ------ | ---------------------------------------------------------- |
| `pipelines` | array | List of pipelines with name, version, type, and timestamps |
| ↳ `name` | string | Pipeline name |
| ↳ `version` | number | Pipeline version number |
| ↳ `pipelineType` | string | Pipeline type (V1 or V2) |
| ↳ `executionMode` | string | Execution mode (QUEUED, SUPERSEDED, PARALLEL) |
| ↳ `created` | number | Epoch ms when the pipeline was created |
| ↳ `updated` | number | Epoch ms when the pipeline was last updated |
| `nextToken` | string | Pagination token for the next page of results |
### CodePipeline Get Pipeline [#codepipeline-get-pipeline]
Get the structure of a CodePipeline pipeline, including its stages, actions, and variables
#### Input [#input-1]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | -------------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `pipelineName` | string | Yes | Name of the pipeline |
| `version` | number | No | Pipeline version to retrieve (defaults to the current version) |
#### Output [#output-1]
| Parameter | Type | Description |
| ----------------------- | ------ | ---------------------------------------------------------------------------- |
| `pipelineName` | string | Pipeline name |
| `pipelineArn` | string | Pipeline ARN |
| `roleArn` | string | IAM role ARN the pipeline assumes |
| `version` | number | Pipeline version number |
| `pipelineType` | string | Pipeline type (V1 or V2) |
| `executionMode` | string | Execution mode (QUEUED, SUPERSEDED, PARALLEL) |
| `artifactStoreType` | string | Artifact store type (S3) |
| `artifactStoreLocation` | string | Artifact store bucket location |
| `stages` | array | Pipeline stages with their actions (name, category, provider, configuration) |
| ↳ `stageName` | string | Stage name |
| ↳ `actions` | array | Actions in the stage, in run order |
| `variables` | array | Pipeline variable declarations with default values |
| ↳ `name` | string | Variable name |
| ↳ `defaultValue` | string | Default value |
| ↳ `description` | string | Variable description |
| `created` | number | Epoch ms when the pipeline was created |
| `updated` | number | Epoch ms when the pipeline was last updated |
### CodePipeline Get Pipeline State [#codepipeline-get-pipeline-state]
Get the current state of a CodePipeline pipeline, including stage and action status and pending approval tokens
#### Input [#input-2]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ---------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `pipelineName` | string | Yes | Name of the pipeline |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------------------------- | ------- | ------------------------------------------------------------------------------------------------------- |
| `pipelineName` | string | Pipeline name |
| `pipelineVersion` | number | Pipeline version number |
| `created` | number | Epoch ms when the pipeline was created |
| `updated` | number | Epoch ms when the pipeline was last updated |
| `stageStates` | array | Per-stage state including latest execution status and action details |
| ↳ `stageName` | string | Stage name |
| ↳ `status` | string | Latest stage execution status (InProgress, Succeeded, Failed, Stopped, Cancelled) |
| ↳ `pipelineExecutionId` | string | Pipeline execution ID currently in the stage |
| ↳ `inboundTransitionEnabled` | boolean | Whether the inbound transition into the stage is enabled |
| ↳ `actionStates` | array | Per-action state with status, summary, error details, and approval token (for pending manual approvals) |
### CodePipeline Get Pipeline Execution [#codepipeline-get-pipeline-execution]
Get details of a CodePipeline execution, including status, trigger, source revisions, and resolved variables
#### Input [#input-3]
| Parameter | Type | Required | Description |
| --------------------- | ------ | -------- | ---------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `pipelineName` | string | Yes | Name of the pipeline |
| `pipelineExecutionId` | string | Yes | ID of the pipeline execution |
#### Output [#output-3]
| Parameter | Type | Description |
| --------------------- | ------ | ------------------------------------------------------------------------------------------ |
| `pipelineExecutionId` | string | Pipeline execution ID |
| `pipelineName` | string | Pipeline name |
| `pipelineVersion` | number | Pipeline version number |
| `status` | string | Execution status (Cancelled, InProgress, Stopped, Stopping, Succeeded, Superseded, Failed) |
| `statusSummary` | string | Status summary for the execution |
| `executionMode` | string | Execution mode (QUEUED, SUPERSEDED, PARALLEL) |
| `executionType` | string | Execution type (STANDARD or ROLLBACK) |
| `triggerType` | string | What triggered the execution (e.g., Webhook, StartPipelineExecution) |
| `triggerDetail` | string | Detail about the trigger (e.g., user ARN) |
| `artifactRevisions` | array | Source artifact revisions for the execution |
| ↳ `name` | string | Artifact name |
| ↳ `revisionId` | string | Revision ID (e.g., commit SHA) |
| ↳ `revisionSummary` | string | Revision summary (e.g., commit message) |
| ↳ `revisionUrl` | string | URL of the revision |
| ↳ `created` | number | Epoch ms when the revision was created |
| `variables` | array | Resolved pipeline variables for the execution |
| ↳ `name` | string | Variable name |
| ↳ `resolvedValue` | string | Resolved variable value |
### CodePipeline List Pipeline Executions [#codepipeline-list-pipeline-executions]
List recent executions of a CodePipeline pipeline with status and source revisions
#### Input [#input-4]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `pipelineName` | string | Yes | Name of the pipeline |
| `maxResults` | number | No | Maximum number of executions to return (1-100, default 100) |
| `nextToken` | string | No | Pagination token from a previous call |
| `succeededInStage` | string | No | Only return executions that succeeded in this stage |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------------------------------- | ------ | ------------------------------------------------------------------------------------------ |
| `executions` | array | Pipeline execution summaries, most recent first |
| ↳ `pipelineExecutionId` | string | Pipeline execution ID |
| ↳ `status` | string | Execution status (Cancelled, InProgress, Stopped, Stopping, Succeeded, Superseded, Failed) |
| ↳ `statusSummary` | string | Status summary for the execution |
| ↳ `startTime` | number | Epoch ms when the execution started |
| ↳ `lastUpdateTime` | number | Epoch ms when the execution was last updated |
| ↳ `executionMode` | string | Execution mode (QUEUED, SUPERSEDED, PARALLEL) |
| ↳ `executionType` | string | Execution type (STANDARD or ROLLBACK) |
| ↳ `stopTriggerReason` | string | Reason the execution was stopped, if applicable |
| ↳ `triggerType` | string | What triggered the execution |
| ↳ `triggerDetail` | string | Detail about the trigger |
| ↳ `rollbackTargetPipelineExecutionId` | string | Execution ID this run rolled back to, if it was a rollback |
| ↳ `sourceRevisions` | array | Source revisions (commit IDs, summaries, URLs) for the execution |
| `nextToken` | string | Pagination token for the next page of results |
### CodePipeline List Action Executions [#codepipeline-list-action-executions]
List action-level execution history for a CodePipeline pipeline, including per-action status, timing, and error details
#### Input [#input-5]
| Parameter | Type | Required | Description |
| --------------------- | ------ | -------- | ------------------------------------------------------------------ |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `pipelineName` | string | Yes | Name of the pipeline |
| `pipelineExecutionId` | string | No | Only return action executions for this pipeline execution |
| `maxResults` | number | No | Maximum number of action executions to return (1-100, default 100) |
| `nextToken` | string | No | Pagination token from a previous call |
#### Output [#output-5]
| Parameter | Type | Description |
| ---------------------------- | ------ | ------------------------------------------------------------------------------------- |
| `actionExecutionDetails` | array | Action execution history, most recent first |
| ↳ `pipelineExecutionId` | string | Pipeline execution ID |
| ↳ `actionExecutionId` | string | Action execution ID (use as the approval token for PARALLEL execution-mode pipelines) |
| ↳ `pipelineVersion` | number | Pipeline version number |
| ↳ `stageName` | string | Stage the action belongs to |
| ↳ `actionName` | string | Action name |
| ↳ `startTime` | number | Epoch ms when the action started |
| ↳ `lastUpdateTime` | number | Epoch ms when the action was last updated |
| ↳ `updatedBy` | string | Who or what last updated the action |
| ↳ `status` | string | Action execution status (InProgress, Abandoned, Succeeded, Failed) |
| ↳ `externalExecutionId` | string | ID of the external system execution (e.g., CodeBuild build ID) |
| ↳ `externalExecutionSummary` | string | Summary from the external system execution |
| ↳ `externalExecutionUrl` | string | URL of the external system execution |
| ↳ `errorCode` | string | Error code if the action failed |
| ↳ `errorMessage` | string | Error message if the action failed |
| `nextToken` | string | Pagination token for the next page of results |
### CodePipeline Start Execution [#codepipeline-start-execution]
Start a CodePipeline pipeline execution, optionally overriding pipeline variables
#### Input [#input-6]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `pipelineName` | string | Yes | Name of the pipeline to start |
| `clientRequestToken` | string | No | Idempotency token to identify a unique execution request |
| `variables` | json | No | Pipeline variable overrides as an array of \{ name, value } objects |
#### Output [#output-6]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------------------- |
| `pipelineExecutionId` | string | ID of the pipeline execution that was started |
### CodePipeline Stop Execution [#codepipeline-stop-execution]
Stop a CodePipeline pipeline execution, either finishing in-progress actions or abandoning them
#### Input [#input-7]
| Parameter | Type | Required | Description |
| --------------------- | ------- | -------- | -------------------------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `pipelineName` | string | Yes | Name of the pipeline |
| `pipelineExecutionId` | string | Yes | ID of the pipeline execution to stop |
| `abandon` | boolean | No | Abandon in-progress actions instead of letting them finish (default false) |
| `reason` | string | No | Reason for stopping the execution (max 200 characters) |
#### Output [#output-7]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------------------- |
| `pipelineExecutionId` | string | ID of the pipeline execution that was stopped |
### CodePipeline Retry Stage Execution [#codepipeline-retry-stage-execution]
Retry the failed actions (or all actions) of a failed CodePipeline stage
#### Input [#input-8]
| Parameter | Type | Required | Description |
| --------------------- | ------ | -------- | --------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `pipelineName` | string | Yes | Name of the pipeline |
| `stageName` | string | Yes | Name of the failed stage to retry |
| `pipelineExecutionId` | string | Yes | ID of the pipeline execution in the failed stage |
| `retryMode` | string | Yes | Scope of the retry: FAILED\_ACTIONS or ALL\_ACTIONS |
#### Output [#output-8]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------------------------- |
| `pipelineExecutionId` | string | ID of the pipeline execution with the retried stage |
### CodePipeline Put Approval Result [#codepipeline-put-approval-result]
Approve or reject a pending CodePipeline manual approval action. The approval token is available from Get Pipeline State on the pending approval action
#### Input [#input-9]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | --------------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `pipelineName` | string | Yes | Name of the pipeline |
| `stageName` | string | Yes | Name of the stage containing the approval action |
| `actionName` | string | Yes | Name of the manual approval action |
| `token` | string | Yes | Approval token from Get Pipeline State for the pending approval |
| `status` | string | Yes | Approval decision: Approved or Rejected |
| `summary` | string | Yes | Summary explaining the approval decision (max 512 characters) |
#### Output [#output-9]
| Parameter | Type | Description |
| ------------ | ------ | ------------------------------------------------------ |
| `approvedAt` | number | Epoch ms when the approval or rejection was submitted |
| `status` | string | The submitted approval decision (Approved or Rejected) |
### CodePipeline Disable Stage Transition [#codepipeline-disable-stage-transition]
Prevent artifacts from transitioning into or out of a CodePipeline stage, freezing the pipeline at that point
#### Input [#input-10]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `pipelineName` | string | Yes | Name of the pipeline |
| `stageName` | string | Yes | Name of the stage to disable the transition for |
| `transitionType` | string | Yes | Inbound to block artifacts entering the stage, Outbound to block artifacts leaving it |
| `reason` | string | Yes | Reason the transition is disabled, shown in the pipeline console (max 300 characters) |
#### Output [#output-10]
| Parameter | Type | Description |
| ---------------- | ------ | ------------------------------------------------------- |
| `pipelineName` | string | Pipeline name |
| `stageName` | string | Stage whose transition was disabled |
| `transitionType` | string | Transition type that was disabled (Inbound or Outbound) |
### CodePipeline Enable Stage Transition [#codepipeline-enable-stage-transition]
Re-enable artifacts transitioning into or out of a CodePipeline stage after it was disabled
#### Input [#input-11]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `awsRegion` | string | Yes | AWS region (e.g., us-east-1) |
| `awsAccessKeyId` | string | Yes | AWS access key ID |
| `awsSecretAccessKey` | string | Yes | AWS secret access key |
| `pipelineName` | string | Yes | Name of the pipeline |
| `stageName` | string | Yes | Name of the stage to enable the transition for |
| `transitionType` | string | Yes | Inbound to allow artifacts entering the stage, Outbound to allow artifacts leaving it |
#### Output [#output-11]
| Parameter | Type | Description |
| ---------------- | ------ | ------------------------------------------------------ |
| `pipelineName` | string | Pipeline name |
| `stageName` | string | Stage whose transition was enabled |
| `transitionType` | string | Transition type that was enabled (Inbound or Outbound) |
---
# Confluence (/integrations/confluence)
{/* MANUAL-CONTENT-START:intro */}
[Confluence](https://www.atlassian.com/software/confluence) is Atlassian's powerful team collaboration and knowledge management platform. It serves as a centralized workspace where teams can create, organize, and share information across departments and organizations.
With Confluence, you can:
* **Create structured documentation**: Build comprehensive wikis, project plans, and knowledge bases with rich formatting
* **Collaborate in real-time**: Work together on documents with teammates, with comments, mentions, and editing capabilities
* **Organize information hierarchically**: Structure content with spaces, pages, and nested hierarchies for intuitive navigation
* **Integrate with other tools**: Connect with Jira, Trello, and other Atlassian products for seamless workflow integration
* **Control access permissions**: Manage who can view, edit, or comment on specific content
In Sim, the Confluence integration enables your agents to access and leverage your organization's knowledge base. Agents can retrieve information from Confluence pages, search for specific content, and even update documentation when needed. This allows your workflows to incorporate the collective knowledge stored in your Confluence instance, making it possible to build agents that can reference internal documentation, follow established procedures, and maintain up-to-date information resources as part of their operations.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Confluence into the workflow. Can read, create, update, delete pages, manage comments, attachments, labels, and search content.
## Actions [#actions]
### Confluence Retrieve [#confluence-retrieve]
Retrieve content from Confluence pages using the Confluence API.
#### Input [#input]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `pageId` | string | Yes | Confluence page ID to retrieve (numeric ID from page URL or API) |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output]
| Parameter | Type | Description |
| ------------------ | ------- | ----------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `pageId` | string | Confluence page ID |
| `title` | string | Page title |
| `content` | string | Page content with HTML tags stripped |
| `status` | string | Page status (current, archived, trashed, draft) |
| `spaceId` | string | ID of the space containing the page |
| `parentId` | string | ID of the parent page |
| `authorId` | string | Account ID of the page author |
| `createdAt` | string | ISO 8601 timestamp when the page was created |
| `url` | string | URL to view the page in Confluence |
| `body` | object | Raw page body content in storage format |
| ↳ `value` | string | The content value in the specified format |
| ↳ `representation` | string | Content representation type |
| `version` | object | Page version information |
| ↳ `number` | number | Version number |
| ↳ `message` | string | Version message |
| ↳ `minorEdit` | boolean | Whether this is a minor edit |
| ↳ `authorId` | string | Account ID of the version author |
| ↳ `createdAt` | string | ISO 8601 timestamp of version creation |
### Confluence Update [#confluence-update]
Update a Confluence page using the Confluence API.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `pageId` | string | Yes | Confluence page ID to update (numeric ID from page URL or API) |
| `title` | string | No | New title for the page |
| `content` | string | No | New content for the page in Confluence storage format |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-1]
| Parameter | Type | Description |
| -------------------- | ------- | ------------------------------------------ |
| `ts` | string | Timestamp of update |
| `pageId` | string | Confluence page ID |
| `title` | string | Updated page title |
| `status` | string | Page status |
| `spaceId` | string | Space ID |
| `body` | object | Page body content in storage format |
| ↳ `storage` | object | Body in storage format (Confluence markup) |
| ↳ `value` | string | The content value in the specified format |
| ↳ `representation` | string | Content representation type |
| ↳ `view` | object | Body in view format (rendered HTML) |
| ↳ `value` | string | The content value in the specified format |
| ↳ `representation` | string | Content representation type |
| ↳ `atlas_doc_format` | object | Body in Atlassian Document Format (ADF) |
| ↳ `value` | string | The content value in the specified format |
| ↳ `representation` | string | Content representation type |
| `version` | object | Page version information |
| ↳ `number` | number | Version number |
| ↳ `message` | string | Version message |
| ↳ `minorEdit` | boolean | Whether this is a minor edit |
| ↳ `authorId` | string | Account ID of the version author |
| ↳ `createdAt` | string | ISO 8601 timestamp of version creation |
| `url` | string | URL to view the page in Confluence |
| `success` | boolean | Update operation success status |
### Confluence Create Page [#confluence-create-page]
Create a new page in a Confluence space.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `spaceId` | string | Yes | Confluence space ID where the page will be created |
| `title` | string | Yes | Title of the new page |
| `content` | string | Yes | Page content in Confluence storage format (HTML) |
| `parentId` | string | No | Parent page ID if creating a child page |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-2]
| Parameter | Type | Description |
| -------------------- | ------- | ------------------------------------------ |
| `ts` | string | Timestamp of creation |
| `pageId` | string | Created page ID |
| `title` | string | Page title |
| `status` | string | Page status |
| `spaceId` | string | Space ID |
| `parentId` | string | Parent page ID |
| `body` | object | Page body content |
| ↳ `storage` | object | Body in storage format (Confluence markup) |
| ↳ `value` | string | The content value in the specified format |
| ↳ `representation` | string | Content representation type |
| ↳ `view` | object | Body in view format (rendered HTML) |
| ↳ `value` | string | The content value in the specified format |
| ↳ `representation` | string | Content representation type |
| ↳ `atlas_doc_format` | object | Body in Atlassian Document Format (ADF) |
| ↳ `value` | string | The content value in the specified format |
| ↳ `representation` | string | Content representation type |
| `version` | object | Page version information |
| ↳ `number` | number | Version number |
| ↳ `message` | string | Version message |
| ↳ `minorEdit` | boolean | Whether this is a minor edit |
| ↳ `authorId` | string | Account ID of the version author |
| ↳ `createdAt` | string | ISO 8601 timestamp of version creation |
| `url` | string | Page URL |
### Confluence Delete Page [#confluence-delete-page]
Delete a Confluence page. By default moves to trash; use purge=true to permanently delete.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| --------- | ------- | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `pageId` | string | Yes | Confluence page ID to delete |
| `purge` | boolean | No | If true, permanently deletes the page instead of moving to trash (default: false) |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-3]
| Parameter | Type | Description |
| --------- | ------- | --------------------- |
| `ts` | string | Timestamp of deletion |
| `pageId` | string | Deleted page ID |
| `deleted` | boolean | Deletion status |
### Confluence List Pages in Space [#confluence-list-pages-in-space]
List all pages within a specific Confluence space. Supports pagination and filtering by status.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `spaceId` | string | Yes | The ID of the Confluence space to list pages from |
| `limit` | number | No | Maximum number of pages to return (default: 50, max: 250) |
| `status` | string | No | Filter pages by status: current, archived, trashed, or draft |
| `bodyFormat` | string | No | Format for page body content: storage, atlas\_doc\_format, or view. If not specified, body is not included. |
| `cursor` | string | No | Pagination cursor from previous response to get the next page of results |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-4]
| Parameter | Type | Description |
| -------------------- | ------- | ----------------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `pages` | array | Array of pages in the space |
| ↳ `id` | string | Unique page identifier |
| ↳ `title` | string | Page title |
| ↳ `status` | string | Page status (e.g., current, archived, trashed, draft) |
| ↳ `spaceId` | string | ID of the space containing the page |
| ↳ `parentId` | string | ID of the parent page (null if top-level) |
| ↳ `authorId` | string | Account ID of the page author |
| ↳ `createdAt` | string | ISO 8601 timestamp when the page was created |
| ↳ `version` | object | Page version information |
| ↳ `number` | number | Version number |
| ↳ `message` | string | Version message |
| ↳ `minorEdit` | boolean | Whether this is a minor edit |
| ↳ `authorId` | string | Account ID of the version author |
| ↳ `createdAt` | string | ISO 8601 timestamp of version creation |
| ↳ `body` | object | Page body content (if bodyFormat was specified) |
| ↳ `storage` | object | Body in storage format (Confluence markup) |
| ↳ `value` | string | The content value in the specified format |
| ↳ `representation` | string | Content representation type |
| ↳ `view` | object | Body in view format (rendered HTML) |
| ↳ `value` | string | The content value in the specified format |
| ↳ `representation` | string | Content representation type |
| ↳ `atlas_doc_format` | object | Body in Atlassian Document Format (ADF) |
| ↳ `value` | string | The content value in the specified format |
| ↳ `representation` | string | Content representation type |
| ↳ `webUrl` | string | URL to view the page in Confluence |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Confluence Get Page Children [#confluence-get-page-children]
Get all child pages of a specific Confluence page. Useful for navigating page hierarchies.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `pageId` | string | Yes | The ID of the parent page to get children from |
| `limit` | number | No | Maximum number of child pages to return (default: 50, max: 250) |
| `cursor` | string | No | Pagination cursor from previous response to get the next page of results |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-5]
| Parameter | Type | Description |
| ----------------- | ------ | -------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `parentId` | string | ID of the parent page |
| `children` | array | Array of child pages |
| ↳ `id` | string | Child page ID |
| ↳ `title` | string | Child page title |
| ↳ `status` | string | Page status |
| ↳ `spaceId` | string | Space ID |
| ↳ `childPosition` | number | Position among siblings |
| ↳ `webUrl` | string | URL to view the page |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Confluence Get Page Ancestors [#confluence-get-page-ancestors]
Get the ancestor (parent) pages of a specific Confluence page. Returns the full hierarchy from the page up to the root.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `pageId` | string | Yes | The ID of the page to get ancestors for |
| `limit` | number | No | Maximum number of ancestors to return (default: 25, max: 250) |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-6]
| Parameter | Type | Description |
| ----------- | ------ | ----------------------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `pageId` | string | ID of the page whose ancestors were retrieved |
| `ancestors` | array | Array of ancestor pages, ordered from direct parent to root |
| ↳ `id` | string | Ancestor page ID |
| ↳ `title` | string | Ancestor page title |
| ↳ `status` | string | Page status |
| ↳ `spaceId` | string | Space ID |
| ↳ `webUrl` | string | URL to view the page |
### Confluence List Page Versions [#confluence-list-page-versions]
List all versions (revision history) of a Confluence page.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `pageId` | string | Yes | The ID of the page to get versions for |
| `limit` | number | No | Maximum number of versions to return (default: 50, max: 250) |
| `cursor` | string | No | Pagination cursor from previous response |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-7]
| Parameter | Type | Description |
| ------------- | ------- | -------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `pageId` | string | ID of the page |
| `versions` | array | Array of page versions |
| ↳ `number` | number | Version number |
| ↳ `message` | string | Version message |
| ↳ `minorEdit` | boolean | Whether this is a minor edit |
| ↳ `authorId` | string | Account ID of the version author |
| ↳ `createdAt` | string | ISO 8601 timestamp of version creation |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Confluence Get Page Version [#confluence-get-page-version]
Get details about a specific version of a Confluence page.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `pageId` | string | Yes | The ID of the page |
| `versionNumber` | number | Yes | The version number to retrieve (e.g., 1, 2, 3) |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-8]
| Parameter | Type | Description |
| ----------------------- | ------- | ------------------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `pageId` | string | ID of the page |
| `title` | string | Page title at this version |
| `content` | string | Page content with HTML tags stripped at this version |
| `version` | object | Detailed version information |
| ↳ `number` | number | Version number |
| ↳ `message` | string | Version message |
| ↳ `minorEdit` | boolean | Whether this is a minor edit |
| ↳ `authorId` | string | Account ID of the version author |
| ↳ `createdAt` | string | ISO 8601 timestamp of version creation |
| ↳ `contentTypeModified` | boolean | Whether the content type was modified in this version |
| ↳ `collaborators` | array | List of collaborator account IDs for this version |
| ↳ `prevVersion` | number | Previous version number |
| ↳ `nextVersion` | number | Next version number |
| `body` | object | Raw page body content in storage format at this version |
| ↳ `value` | string | The content value in the specified format |
| ↳ `representation` | string | Content representation type |
### Confluence List Page Properties [#confluence-list-page-properties]
List all custom properties (metadata) attached to a Confluence page.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `pageId` | string | Yes | The ID of the page to list properties from |
| `limit` | number | No | Maximum number of properties to return (default: 50, max: 250) |
| `cursor` | string | No | Pagination cursor from previous response |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-9]
| Parameter | Type | Description |
| ------------- | ------- | -------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `pageId` | string | ID of the page |
| `properties` | array | Array of content properties |
| ↳ `id` | string | Property ID |
| ↳ `key` | string | Property key |
| ↳ `value` | json | Property value (can be any JSON) |
| ↳ `version` | object | Version information |
| ↳ `number` | number | Version number |
| ↳ `message` | string | Version message |
| ↳ `minorEdit` | boolean | Whether this is a minor edit |
| ↳ `authorId` | string | Account ID of the version author |
| ↳ `createdAt` | string | ISO 8601 timestamp of version creation |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Confluence Create Page Property [#confluence-create-page-property]
Create a new custom property (metadata) on a Confluence page.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `pageId` | string | Yes | The ID of the page to add the property to |
| `key` | string | Yes | The key/name for the property |
| `value` | json | Yes | The value for the property (can be any JSON value) |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-10]
| Parameter | Type | Description |
| ------------- | ------- | -------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `pageId` | string | ID of the page |
| `propertyId` | string | ID of the created property |
| `key` | string | Property key |
| `value` | json | Property value |
| `version` | object | Version information |
| ↳ `number` | number | Version number |
| ↳ `message` | string | Version message |
| ↳ `minorEdit` | boolean | Whether this is a minor edit |
| ↳ `authorId` | string | Account ID of the version author |
| ↳ `createdAt` | string | ISO 8601 timestamp of version creation |
### Confluence Delete Page Property [#confluence-delete-page-property]
Delete a content property from a Confluence page by its property ID.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `pageId` | string | Yes | The ID of the page containing the property |
| `propertyId` | string | Yes | The ID of the property to delete |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-11]
| Parameter | Type | Description |
| ------------ | ------- | ----------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `pageId` | string | ID of the page |
| `propertyId` | string | ID of the deleted property |
| `deleted` | boolean | Deletion status |
### Confluence Search [#confluence-search]
Search for content across Confluence pages, blog posts, and other content.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `query` | string | Yes | Search query string |
| `limit` | number | No | Maximum number of results to return (default: 25) |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-12]
| Parameter | Type | Description |
| ---------------- | ------ | -------------------------------------------------------- |
| `ts` | string | Timestamp of search |
| `results` | array | Array of search results |
| ↳ `id` | string | Unique content identifier |
| ↳ `title` | string | Content title |
| ↳ `type` | string | Content type (e.g., page, blogpost, attachment, comment) |
| ↳ `status` | string | Content status (e.g., current) |
| ↳ `url` | string | URL to view the content in Confluence |
| ↳ `excerpt` | string | Text excerpt matching the search query |
| ↳ `spaceKey` | string | Key of the space containing the content |
| ↳ `space` | object | Space information for the content |
| ↳ `id` | string | Space identifier |
| ↳ `key` | string | Space key |
| ↳ `name` | string | Space name |
| ↳ `lastModified` | string | ISO 8601 timestamp of last modification |
| ↳ `entityType` | string | Entity type identifier (e.g., content, space) |
### Confluence Search in Space [#confluence-search-in-space]
Search for content within a specific Confluence space. Optionally filter by text query and content type.
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `spaceKey` | string | Yes | The key of the Confluence space to search in (e.g., "ENG", "HR") |
| `query` | string | No | Text search query. If not provided, returns all content in the space. |
| `contentType` | string | No | Filter by content type: page, blogpost, attachment, or comment |
| `limit` | number | No | Maximum number of results to return (default: 25, max: 250) |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-13]
| Parameter | Type | Description |
| ---------------- | ------ | -------------------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `spaceKey` | string | The space key that was searched |
| `totalSize` | number | Total number of matching results |
| `results` | array | Array of search results |
| ↳ `id` | string | Unique content identifier |
| ↳ `title` | string | Content title |
| ↳ `type` | string | Content type (e.g., page, blogpost, attachment, comment) |
| ↳ `status` | string | Content status (e.g., current) |
| ↳ `url` | string | URL to view the content in Confluence |
| ↳ `excerpt` | string | Text excerpt matching the search query |
| ↳ `spaceKey` | string | Key of the space containing the content |
| ↳ `space` | object | Space information for the content |
| ↳ `id` | string | Space identifier |
| ↳ `key` | string | Space key |
| ↳ `name` | string | Space name |
| ↳ `lastModified` | string | ISO 8601 timestamp of last modification |
| ↳ `entityType` | string | Entity type identifier (e.g., content, space) |
### Confluence List Blog Posts [#confluence-list-blog-posts]
List all blog posts across all accessible Confluence spaces.
#### Input [#input-14]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `limit` | number | No | Maximum number of blog posts to return (default: 25, max: 250) |
| `status` | string | No | Filter by status: current, archived, trashed, or draft |
| `sort` | string | No | Sort order: created-date, -created-date, modified-date, -modified-date, title, -title |
| `cursor` | string | No | Pagination cursor from previous response |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-14]
| Parameter | Type | Description |
| ------------- | ------- | -------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `blogPosts` | array | Array of blog posts |
| ↳ `id` | string | Blog post ID |
| ↳ `title` | string | Blog post title |
| ↳ `status` | string | Blog post status |
| ↳ `spaceId` | string | Space ID |
| ↳ `authorId` | string | Author account ID |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `version` | object | Version information |
| ↳ `number` | number | Version number |
| ↳ `message` | string | Version message |
| ↳ `minorEdit` | boolean | Whether this is a minor edit |
| ↳ `authorId` | string | Account ID of the version author |
| ↳ `createdAt` | string | ISO 8601 timestamp of version creation |
| ↳ `webUrl` | string | URL to view the blog post |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Confluence Get Blog Post [#confluence-get-blog-post]
Get a specific Confluence blog post by ID, including its content.
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `blogPostId` | string | Yes | The ID of the blog post to retrieve |
| `bodyFormat` | string | No | Format for blog post body: storage, atlas\_doc\_format, or view |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-15]
| Parameter | Type | Description |
| -------------------- | ------- | --------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `id` | string | Blog post ID |
| `title` | string | Blog post title |
| `status` | string | Blog post status |
| `spaceId` | string | Space ID |
| `authorId` | string | Author account ID |
| `createdAt` | string | Creation timestamp |
| `version` | object | Version information |
| ↳ `number` | number | Version number |
| ↳ `message` | string | Version message |
| ↳ `minorEdit` | boolean | Whether this is a minor edit |
| ↳ `authorId` | string | Account ID of the version author |
| ↳ `createdAt` | string | ISO 8601 timestamp of version creation |
| `body` | object | Blog post body content in requested format(s) |
| ↳ `storage` | object | Body in storage format (Confluence markup) |
| ↳ `value` | string | The content value in the specified format |
| ↳ `representation` | string | Content representation type |
| ↳ `view` | object | Body in view format (rendered HTML) |
| ↳ `value` | string | The content value in the specified format |
| ↳ `representation` | string | Content representation type |
| ↳ `atlas_doc_format` | object | Body in Atlassian Document Format (ADF) |
| ↳ `value` | string | The content value in the specified format |
| ↳ `representation` | string | Content representation type |
| `webUrl` | string | URL to view the blog post |
### Confluence Create Blog Post [#confluence-create-blog-post]
Create a new blog post in a Confluence space.
#### Input [#input-16]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `spaceId` | string | Yes | The ID of the space to create the blog post in |
| `title` | string | Yes | Title of the blog post |
| `content` | string | Yes | Blog post content in Confluence storage format (HTML) |
| `status` | string | No | Blog post status: current (default) or draft |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-16]
| Parameter | Type | Description |
| -------------------- | ------- | ------------------------------------------ |
| `ts` | string | ISO 8601 timestamp of the operation |
| `id` | string | Created blog post ID |
| `title` | string | Blog post title |
| `status` | string | Blog post status |
| `spaceId` | string | Space ID |
| `authorId` | string | Author account ID |
| `body` | object | Blog post body content |
| ↳ `storage` | object | Body in storage format (Confluence markup) |
| ↳ `value` | string | The content value in the specified format |
| ↳ `representation` | string | Content representation type |
| ↳ `view` | object | Body in view format (rendered HTML) |
| ↳ `value` | string | The content value in the specified format |
| ↳ `representation` | string | Content representation type |
| ↳ `atlas_doc_format` | object | Body in Atlassian Document Format (ADF) |
| ↳ `value` | string | The content value in the specified format |
| ↳ `representation` | string | Content representation type |
| `version` | object | Blog post version information |
| ↳ `number` | number | Version number |
| ↳ `message` | string | Version message |
| ↳ `minorEdit` | boolean | Whether this is a minor edit |
| ↳ `authorId` | string | Account ID of the version author |
| ↳ `createdAt` | string | ISO 8601 timestamp of version creation |
| `webUrl` | string | URL to view the blog post |
### Confluence List Blog Posts in Space [#confluence-list-blog-posts-in-space]
List all blog posts within a specific Confluence space.
#### Input [#input-17]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `spaceId` | string | Yes | The ID of the Confluence space to list blog posts from |
| `limit` | number | No | Maximum number of blog posts to return (default: 25, max: 250) |
| `status` | string | No | Filter by status: current, archived, trashed, or draft |
| `bodyFormat` | string | No | Format for blog post body: storage, atlas\_doc\_format, or view |
| `cursor` | string | No | Pagination cursor from previous response |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-17]
| Parameter | Type | Description |
| -------------------- | ------- | -------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `blogPosts` | array | Array of blog posts in the space |
| ↳ `id` | string | Blog post ID |
| ↳ `title` | string | Blog post title |
| ↳ `status` | string | Blog post status |
| ↳ `spaceId` | string | Space ID |
| ↳ `authorId` | string | Author account ID |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `version` | object | Version information |
| ↳ `number` | number | Version number |
| ↳ `message` | string | Version message |
| ↳ `minorEdit` | boolean | Whether this is a minor edit |
| ↳ `authorId` | string | Account ID of the version author |
| ↳ `createdAt` | string | ISO 8601 timestamp of version creation |
| ↳ `body` | object | Blog post body content |
| ↳ `storage` | object | Body in storage format (Confluence markup) |
| ↳ `value` | string | The content value in the specified format |
| ↳ `representation` | string | Content representation type |
| ↳ `view` | object | Body in view format (rendered HTML) |
| ↳ `value` | string | The content value in the specified format |
| ↳ `representation` | string | Content representation type |
| ↳ `atlas_doc_format` | object | Body in Atlassian Document Format (ADF) |
| ↳ `value` | string | The content value in the specified format |
| ↳ `representation` | string | Content representation type |
| ↳ `webUrl` | string | URL to view the blog post |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Confluence Create Comment [#confluence-create-comment]
Add a comment to a Confluence page.
#### Input [#input-18]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `pageId` | string | Yes | Confluence page ID to comment on |
| `comment` | string | Yes | Comment text in Confluence storage format |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-18]
| Parameter | Type | Description |
| ----------- | ------ | --------------------- |
| `ts` | string | Timestamp of creation |
| `commentId` | string | Created comment ID |
| `pageId` | string | Page ID |
### Confluence List Comments [#confluence-list-comments]
List all comments on a Confluence page.
#### Input [#input-19]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `pageId` | string | Yes | Confluence page ID to list comments from |
| `limit` | number | No | Maximum number of comments to return (default: 25) |
| `bodyFormat` | string | No | Format for the comment body: storage, atlas\_doc\_format, view, or export\_view (default: storage) |
| `cursor` | string | No | Pagination cursor from previous response |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-19]
| Parameter | Type | Description |
| ------------------- | ------- | --------------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `comments` | array | Array of Confluence comments |
| ↳ `id` | string | Unique comment identifier |
| ↳ `status` | string | Comment status (e.g., current) |
| ↳ `title` | string | Comment title |
| ↳ `pageId` | string | ID of the page the comment belongs to |
| ↳ `blogPostId` | string | ID of the blog post the comment belongs to |
| ↳ `parentCommentId` | string | ID of the parent comment |
| ↳ `body` | object | Comment body content |
| ↳ `value` | string | Comment body content |
| ↳ `representation` | string | Content representation format (e.g., storage, view) |
| ↳ `createdAt` | string | ISO 8601 timestamp when the comment was created |
| ↳ `authorId` | string | Account ID of the comment author |
| ↳ `version` | object | Comment version information |
| ↳ `number` | number | Version number |
| ↳ `message` | string | Version message |
| ↳ `minorEdit` | boolean | Whether this is a minor edit |
| ↳ `authorId` | string | Account ID of the version author |
| ↳ `createdAt` | string | ISO 8601 timestamp of version creation |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Confluence Update Comment [#confluence-update-comment]
Update an existing comment on a Confluence page.
#### Input [#input-20]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `commentId` | string | Yes | Confluence comment ID to update |
| `comment` | string | Yes | Updated comment text in Confluence storage format |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-20]
| Parameter | Type | Description |
| ----------- | ------- | ------------------- |
| `ts` | string | Timestamp of update |
| `commentId` | string | Updated comment ID |
| `updated` | boolean | Update status |
### Confluence Delete Comment [#confluence-delete-comment]
Delete a comment from a Confluence page.
#### Input [#input-21]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `commentId` | string | Yes | Confluence comment ID to delete |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-21]
| Parameter | Type | Description |
| ----------- | ------- | --------------------- |
| `ts` | string | Timestamp of deletion |
| `commentId` | string | Deleted comment ID |
| `deleted` | boolean | Deletion status |
### Confluence Upload Attachment [#confluence-upload-attachment]
Upload a file as an attachment to a Confluence page.
#### Input [#input-22]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `pageId` | string | Yes | Confluence page ID to attach the file to |
| `file` | file | Yes | The file to upload as an attachment |
| `fileName` | string | No | Optional custom file name for the attachment |
| `comment` | string | No | Optional comment to add to the attachment |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-22]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------- |
| `ts` | string | Timestamp of upload |
| `attachmentId` | string | Uploaded attachment ID |
| `title` | string | Attachment file name |
| `fileSize` | number | File size in bytes |
| `mediaType` | string | MIME type of the attachment |
| `downloadUrl` | string | Download URL for the attachment |
| `pageId` | string | Page ID the attachment was added to |
### Confluence List Attachments [#confluence-list-attachments]
List all attachments on a Confluence page.
#### Input [#input-23]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `pageId` | string | Yes | Confluence page ID to list attachments from |
| `limit` | number | No | Maximum number of attachments to return (default: 50, max: 250) |
| `cursor` | string | No | Pagination cursor from previous response |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-23]
| Parameter | Type | Description |
| --------------- | ------- | ---------------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `attachments` | array | Array of Confluence attachments |
| ↳ `id` | string | Unique attachment identifier (prefixed with "att") |
| ↳ `title` | string | Attachment file name |
| ↳ `status` | string | Attachment status (e.g., current, archived, trashed) |
| ↳ `mediaType` | string | MIME type of the attachment |
| ↳ `fileSize` | number | File size in bytes |
| ↳ `downloadUrl` | string | URL to download the attachment |
| ↳ `webuiUrl` | string | URL to view the attachment in Confluence UI |
| ↳ `pageId` | string | ID of the page the attachment belongs to |
| ↳ `blogPostId` | string | ID of the blog post the attachment belongs to |
| ↳ `comment` | string | Comment/description of the attachment |
| ↳ `version` | object | Attachment version information |
| ↳ `number` | number | Version number |
| ↳ `message` | string | Version message |
| ↳ `minorEdit` | boolean | Whether this is a minor edit |
| ↳ `authorId` | string | Account ID of the version author |
| ↳ `createdAt` | string | ISO 8601 timestamp of version creation |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Confluence Delete Attachment [#confluence-delete-attachment]
Delete an attachment from a Confluence page (moves to trash).
#### Input [#input-24]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `attachmentId` | string | Yes | Confluence attachment ID to delete |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-24]
| Parameter | Type | Description |
| -------------- | ------- | --------------------- |
| `ts` | string | Timestamp of deletion |
| `attachmentId` | string | Deleted attachment ID |
| `deleted` | boolean | Deletion status |
### Confluence List Labels [#confluence-list-labels]
List all labels on a Confluence page.
#### Input [#input-25]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `pageId` | string | Yes | Confluence page ID to list labels from |
| `limit` | number | No | Maximum number of labels to return (default: 25, max: 250) |
| `cursor` | string | No | Pagination cursor from previous response |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-25]
| Parameter | Type | Description |
| ------------ | ------ | -------------------------------------------- |
| `ts` | string | Timestamp of retrieval |
| `labels` | array | Array of labels on the page |
| ↳ `id` | string | Unique label identifier |
| ↳ `name` | string | Label name |
| ↳ `prefix` | string | Label prefix/type (e.g., global, my, team) |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Confluence Add Label [#confluence-add-label]
Add a label to a Confluence page for organization and categorization.
#### Input [#input-26]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `pageId` | string | Yes | Confluence page ID to add the label to |
| `labelName` | string | Yes | Name of the label to add |
| `prefix` | string | No | Label prefix: global (default), my, team, or system |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-26]
| Parameter | Type | Description |
| ----------- | ------ | ----------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `pageId` | string | Page ID that the label was added to |
| `labelName` | string | Name of the added label |
| `labelId` | string | ID of the added label |
### Confluence Delete Label [#confluence-delete-label]
Remove a label from a Confluence page.
#### Input [#input-27]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `pageId` | string | Yes | Confluence page ID to remove the label from |
| `labelName` | string | Yes | Name of the label to remove |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-27]
| Parameter | Type | Description |
| ----------- | ------- | ----------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `pageId` | string | Page ID the label was removed from |
| `labelName` | string | Name of the removed label |
| `deleted` | boolean | Deletion status |
### Confluence Get Pages by Label [#confluence-get-pages-by-label]
Retrieve all pages that have a specific label applied.
#### Input [#input-28]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `labelId` | string | Yes | The ID of the label to get pages for |
| `limit` | number | No | Maximum number of pages to return (default: 50, max: 250) |
| `cursor` | string | No | Pagination cursor from previous response |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-28]
| Parameter | Type | Description |
| ------------- | ------- | ----------------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `labelId` | string | ID of the label |
| `pages` | array | Array of pages with this label |
| ↳ `id` | string | Unique page identifier |
| ↳ `title` | string | Page title |
| ↳ `status` | string | Page status (e.g., current, archived, trashed, draft) |
| ↳ `spaceId` | string | ID of the space containing the page |
| ↳ `parentId` | string | ID of the parent page (null if top-level) |
| ↳ `authorId` | string | Account ID of the page author |
| ↳ `createdAt` | string | ISO 8601 timestamp when the page was created |
| ↳ `version` | object | Page version information |
| ↳ `number` | number | Version number |
| ↳ `message` | string | Version message |
| ↳ `minorEdit` | boolean | Whether this is a minor edit |
| ↳ `authorId` | string | Account ID of the version author |
| ↳ `createdAt` | string | ISO 8601 timestamp of version creation |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Confluence List Space Labels [#confluence-list-space-labels]
List all labels associated with a Confluence space.
#### Input [#input-29]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `spaceId` | string | Yes | The ID of the Confluence space to list labels from |
| `limit` | number | No | Maximum number of labels to return (default: 25, max: 250) |
| `cursor` | string | No | Pagination cursor from previous response |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-29]
| Parameter | Type | Description |
| ------------ | ------ | -------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `spaceId` | string | ID of the space |
| `labels` | array | Array of labels on the space |
| ↳ `id` | string | Unique label identifier |
| ↳ `name` | string | Label name |
| ↳ `prefix` | string | Label prefix/type (e.g., global, my, team) |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Confluence Get Space [#confluence-get-space]
Get details about a specific Confluence space.
#### Input [#input-30]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `spaceId` | string | Yes | Confluence space ID to retrieve |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-30]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `spaceId` | string | Space ID |
| `name` | string | Space name |
| `key` | string | Space key |
| `type` | string | Space type (global, personal) |
| `status` | string | Space status (current, archived) |
| `url` | string | URL to view the space in Confluence |
| `authorId` | string | Account ID of the space creator |
| `createdAt` | string | ISO 8601 timestamp when the space was created |
| `homepageId` | string | ID of the space homepage |
| `description` | object | Space description content |
| ↳ `value` | string | Description text content |
| ↳ `representation` | string | Content representation format (e.g., plain, view, storage) |
### Confluence Create Space [#confluence-create-space]
Create a new Confluence space.
#### Input [#input-31]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `name` | string | Yes | Name for the new space |
| `key` | string | Yes | Unique key for the space (uppercase, no spaces) |
| `description` | string | No | Description for the new space |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-31]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `spaceId` | string | Created space ID |
| `name` | string | Space name |
| `key` | string | Space key |
| `type` | string | Space type |
| `status` | string | Space status |
| `url` | string | URL to view the space |
| `homepageId` | string | Homepage ID |
| `description` | object | Space description |
| ↳ `value` | string | Description text content |
| ↳ `representation` | string | Content representation format (e.g., plain, view, storage) |
### Confluence Update Space [#confluence-update-space]
Update a Confluence space name or description.
#### Input [#input-32]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `spaceId` | string | Yes | ID of the space to update |
| `name` | string | No | New name for the space |
| `description` | string | No | New description for the space |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-32]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `spaceId` | string | Updated space ID |
| `name` | string | Space name |
| `key` | string | Space key |
| `type` | string | Space type |
| `status` | string | Space status |
| `url` | string | URL to view the space |
| `description` | object | Space description |
| ↳ `value` | string | Description text content |
| ↳ `representation` | string | Content representation format (e.g., plain, view, storage) |
### Confluence Delete Space [#confluence-delete-space]
Delete a Confluence space.
#### Input [#input-33]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `spaceId` | string | Yes | ID of the space to delete |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-33]
| Parameter | Type | Description |
| -------------------- | ------- | --------------------------------------------------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `spaceId` | string | Deleted space ID |
| `deleted` | boolean | Deletion status |
| `longTaskId` | string | ID of the long-running deletion task; poll Confluence long-task API to track completion |
| `longTaskStatusLink` | string | Relative link to the long-task status endpoint |
### Confluence List Spaces [#confluence-list-spaces]
List all Confluence spaces accessible to the user.
#### Input [#input-34]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `limit` | number | No | Maximum number of spaces to return (default: 25, max: 250) |
| `cursor` | string | No | Pagination cursor from previous response |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-34]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `spaces` | array | Array of Confluence spaces |
| ↳ `id` | string | Unique space identifier |
| ↳ `key` | string | Space key (short identifier used in URLs) |
| ↳ `name` | string | Space name |
| ↳ `type` | string | Space type (e.g., global, personal) |
| ↳ `status` | string | Space status (e.g., current, archived) |
| ↳ `authorId` | string | Account ID of the space creator |
| ↳ `createdAt` | string | ISO 8601 timestamp when the space was created |
| ↳ `homepageId` | string | ID of the space homepage |
| ↳ `description` | object | Space description |
| ↳ `value` | string | Description text content |
| ↳ `representation` | string | Content representation format (e.g., plain, view, storage) |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Confluence List Space Properties [#confluence-list-space-properties]
List properties on a Confluence space.
#### Input [#input-35]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `spaceId` | string | Yes | Space ID to list properties for |
| `limit` | number | No | Maximum number of properties to return (default: 50, max: 250) |
| `cursor` | string | No | Pagination cursor from previous response |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-35]
| Parameter | Type | Description |
| ------------ | ------ | -------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `properties` | array | Array of space properties |
| ↳ `id` | string | Property ID |
| ↳ `key` | string | Property key |
| ↳ `value` | json | Property value |
| `spaceId` | string | Space ID |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Confluence Create Space Property [#confluence-create-space-property]
Create a property on a Confluence space.
#### Input [#input-36]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `spaceId` | string | Yes | Space ID to create the property on |
| `key` | string | Yes | Property key/name |
| `value` | json | No | Property value (JSON) |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-36]
| Parameter | Type | Description |
| ------------ | ------ | ----------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `propertyId` | string | Created property ID |
| `key` | string | Property key |
| `value` | json | Property value |
| `spaceId` | string | Space ID |
### Confluence Delete Space Property [#confluence-delete-space-property]
Delete a property from a Confluence space.
#### Input [#input-37]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `spaceId` | string | Yes | Space ID the property belongs to |
| `propertyId` | string | Yes | Property ID to delete |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-37]
| Parameter | Type | Description |
| ------------ | ------- | ----------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `spaceId` | string | Space ID |
| `propertyId` | string | Deleted property ID |
| `deleted` | boolean | Deletion status |
### Confluence List Space Permissions [#confluence-list-space-permissions]
List permissions for a Confluence space.
#### Input [#input-38]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `spaceId` | string | Yes | Space ID to list permissions for |
| `limit` | number | No | Maximum number of permissions to return (default: 50, max: 250) |
| `cursor` | string | No | Pagination cursor from previous response |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-38]
| Parameter | Type | Description |
| ----------------------- | ------- | -------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `permissions` | array | Array of space permissions |
| ↳ `id` | string | Permission ID |
| ↳ `principalType` | string | Principal type (user, group, role) |
| ↳ `principalId` | string | Principal ID |
| ↳ `operationKey` | string | Operation key (read, create, delete, etc.) |
| ↳ `operationTargetType` | string | Target type (page, blogpost, space, etc.) |
| ↳ `anonymousAccess` | boolean | Whether anonymous access is allowed |
| ↳ `unlicensedAccess` | boolean | Whether unlicensed access is allowed |
| `spaceId` | string | Space ID |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Confluence Get Page Descendants [#confluence-get-page-descendants]
Get all descendants of a Confluence page recursively.
#### Input [#input-39]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `pageId` | string | Yes | Page ID to get descendants for |
| `limit` | number | No | Maximum number of descendants to return (default: 50, max: 250) |
| `cursor` | string | No | Pagination cursor from previous response |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-39]
| Parameter | Type | Description |
| ----------------- | ------ | ----------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `descendants` | array | Array of descendant pages |
| ↳ `id` | string | Page ID |
| ↳ `title` | string | Page title |
| ↳ `type` | string | Content type (page, whiteboard, database, etc.) |
| ↳ `status` | string | Page status |
| ↳ `spaceId` | string | Space ID |
| ↳ `parentId` | string | Parent page ID |
| ↳ `childPosition` | number | Position among siblings |
| ↳ `depth` | number | Depth in the hierarchy |
| `pageId` | string | Parent page ID |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Confluence List Tasks [#confluence-list-tasks]
List inline tasks from Confluence. Optionally filter by page, space, assignee, or status.
#### Input [#input-40]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `pageId` | string | No | Filter tasks by page ID |
| `spaceId` | string | No | Filter tasks by space ID |
| `assignedTo` | string | No | Filter tasks by assignee account ID |
| `status` | string | No | Filter tasks by status (complete or incomplete) |
| `limit` | number | No | Maximum number of tasks to return (default: 50, max: 250) |
| `cursor` | string | No | Pagination cursor from previous response |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-40]
| Parameter | Type | Description |
| --------------- | ------ | -------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `tasks` | array | Array of Confluence tasks |
| ↳ `id` | string | Task ID |
| ↳ `localId` | string | Local task ID |
| ↳ `spaceId` | string | Space ID |
| ↳ `pageId` | string | Page ID |
| ↳ `blogPostId` | string | Blog post ID |
| ↳ `status` | string | Task status (complete or incomplete) |
| ↳ `body` | string | Task body content in storage format |
| ↳ `createdBy` | string | Creator account ID |
| ↳ `assignedTo` | string | Assignee account ID |
| ↳ `completedBy` | string | Completer account ID |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `updatedAt` | string | Last update timestamp |
| ↳ `dueAt` | string | Due date |
| ↳ `completedAt` | string | Completion timestamp |
| `nextCursor` | string | Cursor for fetching the next page of results |
### Confluence Get Task [#confluence-get-task]
Get a specific Confluence inline task by ID.
#### Input [#input-41]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `taskId` | string | Yes | The ID of the task to retrieve |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-41]
| Parameter | Type | Description |
| ------------- | ------ | ------------------------------------ |
| `ts` | string | ISO 8601 timestamp of the operation |
| `id` | string | Task ID |
| `localId` | string | Local task ID |
| `spaceId` | string | Space ID |
| `pageId` | string | Page ID |
| `blogPostId` | string | Blog post ID |
| `status` | string | Task status (complete or incomplete) |
| `body` | string | Task body content in storage format |
| `createdBy` | string | Creator account ID |
| `assignedTo` | string | Assignee account ID |
| `completedBy` | string | Completer account ID |
| `createdAt` | string | Creation timestamp |
| `updatedAt` | string | Last update timestamp |
| `dueAt` | string | Due date |
| `completedAt` | string | Completion timestamp |
### Confluence Update Task [#confluence-update-task]
Update the status of a Confluence inline task (complete or incomplete).
#### Input [#input-42]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `taskId` | string | Yes | The ID of the task to update |
| `status` | string | Yes | New status for the task (complete or incomplete) |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-42]
| Parameter | Type | Description |
| ------------- | ------ | ----------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `id` | string | Task ID |
| `localId` | string | Local task ID |
| `spaceId` | string | Space ID |
| `pageId` | string | Page ID |
| `blogPostId` | string | Blog post ID |
| `status` | string | Updated task status |
| `body` | string | Task body content in storage format |
| `createdBy` | string | Creator account ID |
| `assignedTo` | string | Assignee account ID |
| `completedBy` | string | Completer account ID |
| `createdAt` | string | Creation timestamp |
| `updatedAt` | string | Last update timestamp |
| `dueAt` | string | Due date |
| `completedAt` | string | Completion timestamp |
### Confluence Update Blog Post [#confluence-update-blog-post]
Update an existing Confluence blog post title and/or content.
#### Input [#input-43]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `blogPostId` | string | Yes | The ID of the blog post to update |
| `title` | string | No | New title for the blog post |
| `content` | string | No | New content for the blog post in storage format |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-43]
| Parameter | Type | Description |
| ------------ | ------ | ----------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `blogPostId` | string | Updated blog post ID |
| `title` | string | Blog post title |
| `status` | string | Blog post status |
| `spaceId` | string | Space ID |
| `version` | json | Version information |
| `url` | string | URL to view the blog post |
### Confluence Delete Blog Post [#confluence-delete-blog-post]
Delete a Confluence blog post.
#### Input [#input-44]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `blogPostId` | string | Yes | The ID of the blog post to delete |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-44]
| Parameter | Type | Description |
| ------------ | ------- | ----------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `blogPostId` | string | Deleted blog post ID |
| `deleted` | boolean | Deletion status |
### Confluence Get User [#confluence-get-user]
Get display name and profile info for a Confluence user by account ID.
#### Input [#input-45]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) |
| `accountId` | string | Yes | The Atlassian account ID of the user to look up |
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-45]
| Parameter | Type | Description |
| ---------------- | ------ | --------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `accountId` | string | Atlassian account ID of the user |
| `displayName` | string | Display name of the user |
| `email` | string | Email address of the user |
| `accountType` | string | Account type (e.g., atlassian, app, customer) |
| `profilePicture` | string | Path to the user profile picture |
| `publicName` | string | Public name of the user |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
### Confluence Attachment Created [#confluence-attachment-created]
Trigger workflow when an attachment is uploaded in Confluence
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| -------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature |
| `confluenceDomain` | string | No | Your Confluence Cloud domain |
| `confluenceEmail` | string | No | Your Atlassian account email. Required together with API token to download attachment files. |
| `confluenceApiToken` | string | No | API token from [https://id.atlassian.com/manage-profile/security/api-tokens](https://id.atlassian.com/manage-profile/security/api-tokens). Required to download attachment file content. |
| `includeFileContent` | boolean | No | Download and include actual file content from attachments. Requires email, API token, and domain. |
#### Output [#output-46]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------------------------------------------------------------------------ |
| `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) |
| `userAccountId` | string | Account ID of the user who triggered the event |
| `accountType` | string | Account type (e.g., customer) |
| `attachment` | object | attachment output from the tool |
| ↳ `id` | number | Content ID |
| ↳ `title` | string | Content title |
| ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) |
| ↳ `version` | number | Version number |
| ↳ `spaceKey` | string | Space key the content belongs to |
| ↳ `creatorAccountId` | string | Account ID of the creator |
| ↳ `lastModifierAccountId` | string | Account ID of the last modifier |
| ↳ `self` | string | URL link to the content |
| ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) |
| ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) |
| ↳ `mediaType` | string | MIME type of the attachment |
| ↳ `fileSize` | number | File size in bytes |
| ↳ `parent` | object | parent output from the tool |
| ↳ `id` | number | Container page/blog ID |
| ↳ `title` | string | Container page/blog title |
| ↳ `contentType` | string | Container content type |
| `files` | file\[] | Attachment file content downloaded from Confluence (if includeFileContent is enabled with credentials) |
***
### Confluence Attachment Removed [#confluence-attachment-removed]
Trigger workflow when an attachment is removed in Confluence
#### Configuration [#configuration-1]
| Parameter | Type | Required | Description |
| -------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature |
| `confluenceDomain` | string | No | Your Confluence Cloud domain |
| `confluenceEmail` | string | No | Your Atlassian account email. Required together with API token to download attachment files. |
| `confluenceApiToken` | string | No | API token from [https://id.atlassian.com/manage-profile/security/api-tokens](https://id.atlassian.com/manage-profile/security/api-tokens). Required to download attachment file content. |
| `includeFileContent` | boolean | No | Download and include actual file content from attachments. Requires email, API token, and domain. |
#### Output [#output-47]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------------------------------------------------------------------------ |
| `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) |
| `userAccountId` | string | Account ID of the user who triggered the event |
| `accountType` | string | Account type (e.g., customer) |
| `attachment` | object | attachment output from the tool |
| ↳ `id` | number | Content ID |
| ↳ `title` | string | Content title |
| ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) |
| ↳ `version` | number | Version number |
| ↳ `spaceKey` | string | Space key the content belongs to |
| ↳ `creatorAccountId` | string | Account ID of the creator |
| ↳ `lastModifierAccountId` | string | Account ID of the last modifier |
| ↳ `self` | string | URL link to the content |
| ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) |
| ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) |
| ↳ `mediaType` | string | MIME type of the attachment |
| ↳ `fileSize` | number | File size in bytes |
| ↳ `parent` | object | parent output from the tool |
| ↳ `id` | number | Container page/blog ID |
| ↳ `title` | string | Container page/blog title |
| ↳ `contentType` | string | Container content type |
| `files` | file\[] | Attachment file content downloaded from Confluence (if includeFileContent is enabled with credentials) |
***
### Confluence Attachment Updated [#confluence-attachment-updated]
Trigger workflow when an attachment is updated in Confluence
#### Configuration [#configuration-2]
| Parameter | Type | Required | Description |
| -------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature |
| `confluenceDomain` | string | No | Your Confluence Cloud domain |
| `confluenceEmail` | string | No | Your Atlassian account email. Required together with API token to download attachment files. |
| `confluenceApiToken` | string | No | API token from [https://id.atlassian.com/manage-profile/security/api-tokens](https://id.atlassian.com/manage-profile/security/api-tokens). Required to download attachment file content. |
| `includeFileContent` | boolean | No | Download and include actual file content from attachments. Requires email, API token, and domain. |
#### Output [#output-48]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------------------------------------------------------------------------ |
| `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) |
| `userAccountId` | string | Account ID of the user who triggered the event |
| `accountType` | string | Account type (e.g., customer) |
| `attachment` | object | attachment output from the tool |
| ↳ `id` | number | Content ID |
| ↳ `title` | string | Content title |
| ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) |
| ↳ `version` | number | Version number |
| ↳ `spaceKey` | string | Space key the content belongs to |
| ↳ `creatorAccountId` | string | Account ID of the creator |
| ↳ `lastModifierAccountId` | string | Account ID of the last modifier |
| ↳ `self` | string | URL link to the content |
| ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) |
| ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) |
| ↳ `mediaType` | string | MIME type of the attachment |
| ↳ `fileSize` | number | File size in bytes |
| ↳ `parent` | object | parent output from the tool |
| ↳ `id` | number | Container page/blog ID |
| ↳ `title` | string | Container page/blog title |
| ↳ `contentType` | string | Container content type |
| `files` | file\[] | Attachment file content downloaded from Confluence (if includeFileContent is enabled with credentials) |
***
### Confluence Blog Post Created [#confluence-blog-post-created]
Trigger workflow when a blog post is created in Confluence
#### Configuration [#configuration-3]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature |
| `confluenceDomain` | string | No | Your Confluence Cloud domain |
#### Output [#output-49]
| Parameter | Type | Description |
| ------------------------- | ------ | -------------------------------------------------------- |
| `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) |
| `userAccountId` | string | Account ID of the user who triggered the event |
| `accountType` | string | Account type (e.g., customer) |
| `blog` | object | blog output from the tool |
| ↳ `id` | number | Content ID |
| ↳ `title` | string | Content title |
| ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) |
| ↳ `version` | number | Version number |
| ↳ `spaceKey` | string | Space key the content belongs to |
| ↳ `creatorAccountId` | string | Account ID of the creator |
| ↳ `lastModifierAccountId` | string | Account ID of the last modifier |
| ↳ `self` | string | URL link to the content |
| ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) |
| ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) |
***
### Confluence Blog Post Removed [#confluence-blog-post-removed]
Trigger workflow when a blog post is removed in Confluence
#### Configuration [#configuration-4]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature |
| `confluenceDomain` | string | No | Your Confluence Cloud domain |
#### Output [#output-50]
| Parameter | Type | Description |
| ------------------------- | ------ | -------------------------------------------------------- |
| `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) |
| `userAccountId` | string | Account ID of the user who triggered the event |
| `accountType` | string | Account type (e.g., customer) |
| `blog` | object | blog output from the tool |
| ↳ `id` | number | Content ID |
| ↳ `title` | string | Content title |
| ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) |
| ↳ `version` | number | Version number |
| ↳ `spaceKey` | string | Space key the content belongs to |
| ↳ `creatorAccountId` | string | Account ID of the creator |
| ↳ `lastModifierAccountId` | string | Account ID of the last modifier |
| ↳ `self` | string | URL link to the content |
| ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) |
| ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) |
***
### Confluence Blog Post Restored [#confluence-blog-post-restored]
Trigger workflow when a blog post is restored from trash in Confluence
#### Configuration [#configuration-5]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature |
| `confluenceDomain` | string | No | Your Confluence Cloud domain |
#### Output [#output-51]
| Parameter | Type | Description |
| ------------------------- | ------ | -------------------------------------------------------- |
| `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) |
| `userAccountId` | string | Account ID of the user who triggered the event |
| `accountType` | string | Account type (e.g., customer) |
| `blog` | object | blog output from the tool |
| ↳ `id` | number | Content ID |
| ↳ `title` | string | Content title |
| ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) |
| ↳ `version` | number | Version number |
| ↳ `spaceKey` | string | Space key the content belongs to |
| ↳ `creatorAccountId` | string | Account ID of the creator |
| ↳ `lastModifierAccountId` | string | Account ID of the last modifier |
| ↳ `self` | string | URL link to the content |
| ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) |
| ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) |
***
### Confluence Blog Post Updated [#confluence-blog-post-updated]
Trigger workflow when a blog post is updated in Confluence
#### Configuration [#configuration-6]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature |
| `confluenceDomain` | string | No | Your Confluence Cloud domain |
#### Output [#output-52]
| Parameter | Type | Description |
| ------------------------- | ------ | -------------------------------------------------------- |
| `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) |
| `userAccountId` | string | Account ID of the user who triggered the event |
| `accountType` | string | Account type (e.g., customer) |
| `blog` | object | blog output from the tool |
| ↳ `id` | number | Content ID |
| ↳ `title` | string | Content title |
| ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) |
| ↳ `version` | number | Version number |
| ↳ `spaceKey` | string | Space key the content belongs to |
| ↳ `creatorAccountId` | string | Account ID of the creator |
| ↳ `lastModifierAccountId` | string | Account ID of the last modifier |
| ↳ `self` | string | URL link to the content |
| ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) |
| ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) |
***
### Confluence Comment Created [#confluence-comment-created]
Trigger workflow when a comment is created in Confluence
#### Configuration [#configuration-7]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature |
| `confluenceDomain` | string | No | Your Confluence Cloud domain |
#### Output [#output-53]
| Parameter | Type | Description |
| ------------------------- | ------ | -------------------------------------------------------- |
| `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) |
| `userAccountId` | string | Account ID of the user who triggered the event |
| `accountType` | string | Account type (e.g., customer) |
| `comment` | object | comment output from the tool |
| ↳ `id` | number | Content ID |
| ↳ `title` | string | Content title |
| ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) |
| ↳ `version` | number | Version number |
| ↳ `spaceKey` | string | Space key the content belongs to |
| ↳ `creatorAccountId` | string | Account ID of the creator |
| ↳ `lastModifierAccountId` | string | Account ID of the last modifier |
| ↳ `self` | string | URL link to the content |
| ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) |
| ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) |
| ↳ `parent` | object | parent output from the tool |
| ↳ `id` | number | Parent page/blog ID |
| ↳ `title` | string | Parent page/blog title |
| ↳ `contentType` | string | Parent content type (page or blogpost) |
| ↳ `spaceKey` | string | Space key of the parent |
| ↳ `self` | string | URL link to the parent content |
***
### Confluence Comment Removed [#confluence-comment-removed]
Trigger workflow when a comment is removed in Confluence
#### Configuration [#configuration-8]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature |
| `confluenceDomain` | string | No | Your Confluence Cloud domain |
#### Output [#output-54]
| Parameter | Type | Description |
| ------------------------- | ------ | -------------------------------------------------------- |
| `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) |
| `userAccountId` | string | Account ID of the user who triggered the event |
| `accountType` | string | Account type (e.g., customer) |
| `comment` | object | comment output from the tool |
| ↳ `id` | number | Content ID |
| ↳ `title` | string | Content title |
| ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) |
| ↳ `version` | number | Version number |
| ↳ `spaceKey` | string | Space key the content belongs to |
| ↳ `creatorAccountId` | string | Account ID of the creator |
| ↳ `lastModifierAccountId` | string | Account ID of the last modifier |
| ↳ `self` | string | URL link to the content |
| ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) |
| ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) |
| ↳ `parent` | object | parent output from the tool |
| ↳ `id` | number | Parent page/blog ID |
| ↳ `title` | string | Parent page/blog title |
| ↳ `contentType` | string | Parent content type (page or blogpost) |
| ↳ `spaceKey` | string | Space key of the parent |
| ↳ `self` | string | URL link to the parent content |
***
### Confluence Comment Updated [#confluence-comment-updated]
Trigger workflow when a comment is updated in Confluence
#### Configuration [#configuration-9]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature |
| `confluenceDomain` | string | No | Your Confluence Cloud domain |
#### Output [#output-55]
| Parameter | Type | Description |
| ------------------------- | ------ | -------------------------------------------------------- |
| `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) |
| `userAccountId` | string | Account ID of the user who triggered the event |
| `accountType` | string | Account type (e.g., customer) |
| `comment` | object | comment output from the tool |
| ↳ `id` | number | Content ID |
| ↳ `title` | string | Content title |
| ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) |
| ↳ `version` | number | Version number |
| ↳ `spaceKey` | string | Space key the content belongs to |
| ↳ `creatorAccountId` | string | Account ID of the creator |
| ↳ `lastModifierAccountId` | string | Account ID of the last modifier |
| ↳ `self` | string | URL link to the content |
| ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) |
| ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) |
| ↳ `parent` | object | parent output from the tool |
| ↳ `id` | number | Parent page/blog ID |
| ↳ `title` | string | Parent page/blog title |
| ↳ `contentType` | string | Parent content type (page or blogpost) |
| ↳ `spaceKey` | string | Space key of the parent |
| ↳ `self` | string | URL link to the parent content |
***
### Confluence Label Added [#confluence-label-added]
Trigger workflow when a label is added to content in Confluence
#### Configuration [#configuration-10]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature |
| `confluenceDomain` | string | No | Your Confluence Cloud domain |
#### Output [#output-56]
| Parameter | Type | Description |
| --------------- | ------ | -------------------------------------------------------- |
| `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) |
| `userAccountId` | string | Account ID of the user who triggered the event |
| `accountType` | string | Account type (e.g., customer) |
| `label` | object | label output from the tool |
| ↳ `name` | string | Label name |
| ↳ `id` | string | Label ID |
| ↳ `prefix` | string | Label prefix (global, my, team) |
| `content` | object | content output from the tool |
| ↳ `id` | number | Content ID the label was added to or removed from |
| ↳ `title` | string | Content title |
| ↳ `contentType` | string | Content type (page, blogpost) |
***
### Confluence Label Removed [#confluence-label-removed]
Trigger workflow when a label is removed from content in Confluence
#### Configuration [#configuration-11]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature |
| `confluenceDomain` | string | No | Your Confluence Cloud domain |
#### Output [#output-57]
| Parameter | Type | Description |
| --------------- | ------ | -------------------------------------------------------- |
| `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) |
| `userAccountId` | string | Account ID of the user who triggered the event |
| `accountType` | string | Account type (e.g., customer) |
| `label` | object | label output from the tool |
| ↳ `name` | string | Label name |
| ↳ `id` | string | Label ID |
| ↳ `prefix` | string | Label prefix (global, my, team) |
| `content` | object | content output from the tool |
| ↳ `id` | number | Content ID the label was added to or removed from |
| ↳ `title` | string | Content title |
| ↳ `contentType` | string | Content type (page, blogpost) |
***
### Confluence Page Created [#confluence-page-created]
Trigger workflow when a new page is created in Confluence
#### Configuration [#configuration-12]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature |
| `confluenceDomain` | string | No | Your Confluence Cloud domain |
#### Output [#output-58]
| Parameter | Type | Description |
| ------------------------- | ------ | -------------------------------------------------------- |
| `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) |
| `userAccountId` | string | Account ID of the user who triggered the event |
| `accountType` | string | Account type (e.g., customer) |
| `page` | object | page output from the tool |
| ↳ `id` | number | Content ID |
| ↳ `title` | string | Content title |
| ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) |
| ↳ `version` | number | Version number |
| ↳ `spaceKey` | string | Space key the content belongs to |
| ↳ `creatorAccountId` | string | Account ID of the creator |
| ↳ `lastModifierAccountId` | string | Account ID of the last modifier |
| ↳ `self` | string | URL link to the content |
| ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) |
| ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) |
***
### Confluence Page Moved [#confluence-page-moved]
Trigger workflow when a page is moved in Confluence
#### Configuration [#configuration-13]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature |
| `confluenceDomain` | string | No | Your Confluence Cloud domain |
#### Output [#output-59]
| Parameter | Type | Description |
| ------------------------- | ------ | -------------------------------------------------------- |
| `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) |
| `userAccountId` | string | Account ID of the user who triggered the event |
| `accountType` | string | Account type (e.g., customer) |
| `page` | object | page output from the tool |
| ↳ `id` | number | Content ID |
| ↳ `title` | string | Content title |
| ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) |
| ↳ `version` | number | Version number |
| ↳ `spaceKey` | string | Space key the content belongs to |
| ↳ `creatorAccountId` | string | Account ID of the creator |
| ↳ `lastModifierAccountId` | string | Account ID of the last modifier |
| ↳ `self` | string | URL link to the content |
| ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) |
| ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) |
***
### Confluence Page Permissions Updated [#confluence-page-permissions-updated]
Trigger workflow when page permissions are changed in Confluence
#### Configuration [#configuration-14]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature |
| `confluenceDomain` | string | No | Your Confluence Cloud domain |
#### Output [#output-60]
| Parameter | Type | Description |
| ------------------------- | ------ | -------------------------------------------------------- |
| `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) |
| `userAccountId` | string | Account ID of the user who triggered the event |
| `accountType` | string | Account type (e.g., customer) |
| `page` | object | page output from the tool |
| ↳ `id` | number | Content ID |
| ↳ `title` | string | Content title |
| ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) |
| ↳ `version` | number | Version number |
| ↳ `spaceKey` | string | Space key the content belongs to |
| ↳ `creatorAccountId` | string | Account ID of the creator |
| ↳ `lastModifierAccountId` | string | Account ID of the last modifier |
| ↳ `self` | string | URL link to the content |
| ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) |
| ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) |
| ↳ `permissions` | json | Updated permissions object for the page |
***
### Confluence Page Removed [#confluence-page-removed]
Trigger workflow when a page is removed or trashed in Confluence
#### Configuration [#configuration-15]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature |
| `confluenceDomain` | string | No | Your Confluence Cloud domain |
#### Output [#output-61]
| Parameter | Type | Description |
| ------------------------- | ------ | -------------------------------------------------------- |
| `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) |
| `userAccountId` | string | Account ID of the user who triggered the event |
| `accountType` | string | Account type (e.g., customer) |
| `page` | object | page output from the tool |
| ↳ `id` | number | Content ID |
| ↳ `title` | string | Content title |
| ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) |
| ↳ `version` | number | Version number |
| ↳ `spaceKey` | string | Space key the content belongs to |
| ↳ `creatorAccountId` | string | Account ID of the creator |
| ↳ `lastModifierAccountId` | string | Account ID of the last modifier |
| ↳ `self` | string | URL link to the content |
| ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) |
| ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) |
***
### Confluence Page Restored [#confluence-page-restored]
Trigger workflow when a page is restored from trash in Confluence
#### Configuration [#configuration-16]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature |
| `confluenceDomain` | string | No | Your Confluence Cloud domain |
#### Output [#output-62]
| Parameter | Type | Description |
| ------------------------- | ------ | -------------------------------------------------------- |
| `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) |
| `userAccountId` | string | Account ID of the user who triggered the event |
| `accountType` | string | Account type (e.g., customer) |
| `page` | object | page output from the tool |
| ↳ `id` | number | Content ID |
| ↳ `title` | string | Content title |
| ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) |
| ↳ `version` | number | Version number |
| ↳ `spaceKey` | string | Space key the content belongs to |
| ↳ `creatorAccountId` | string | Account ID of the creator |
| ↳ `lastModifierAccountId` | string | Account ID of the last modifier |
| ↳ `self` | string | URL link to the content |
| ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) |
| ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) |
***
### Confluence Page Updated [#confluence-page-updated]
Trigger workflow when a page is updated in Confluence
#### Configuration [#configuration-17]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature |
| `confluenceDomain` | string | No | Your Confluence Cloud domain |
#### Output [#output-63]
| Parameter | Type | Description |
| ------------------------- | ------ | -------------------------------------------------------- |
| `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) |
| `userAccountId` | string | Account ID of the user who triggered the event |
| `accountType` | string | Account type (e.g., customer) |
| `page` | object | page output from the tool |
| ↳ `id` | number | Content ID |
| ↳ `title` | string | Content title |
| ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) |
| ↳ `version` | number | Version number |
| ↳ `spaceKey` | string | Space key the content belongs to |
| ↳ `creatorAccountId` | string | Account ID of the creator |
| ↳ `lastModifierAccountId` | string | Account ID of the last modifier |
| ↳ `self` | string | URL link to the content |
| ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) |
| ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) |
***
### Confluence Space Created [#confluence-space-created]
Trigger workflow when a new space is created in Confluence
#### Configuration [#configuration-18]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature |
| `confluenceDomain` | string | No | Your Confluence Cloud domain |
#### Output [#output-64]
| Parameter | Type | Description |
| --------------- | ------ | -------------------------------------------------------- |
| `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) |
| `userAccountId` | string | Account ID of the user who triggered the event |
| `accountType` | string | Account type (e.g., customer) |
| `space` | object | space output from the tool |
| ↳ `key` | string | Space key |
| ↳ `name` | string | Space name |
| ↳ `self` | string | URL link to the space |
***
### Confluence Space Removed [#confluence-space-removed]
Trigger workflow when a space is removed in Confluence
#### Configuration [#configuration-19]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature |
| `confluenceDomain` | string | No | Your Confluence Cloud domain |
#### Output [#output-65]
| Parameter | Type | Description |
| --------------- | ------ | -------------------------------------------------------- |
| `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) |
| `userAccountId` | string | Account ID of the user who triggered the event |
| `accountType` | string | Account type (e.g., customer) |
| `space` | object | space output from the tool |
| ↳ `key` | string | Space key |
| ↳ `name` | string | Space name |
| ↳ `self` | string | URL link to the space |
***
### Confluence Space Updated [#confluence-space-updated]
Trigger workflow when a space is updated in Confluence
#### Configuration [#configuration-20]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature |
| `confluenceDomain` | string | No | Your Confluence Cloud domain |
#### Output [#output-66]
| Parameter | Type | Description |
| --------------- | ------ | -------------------------------------------------------- |
| `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) |
| `userAccountId` | string | Account ID of the user who triggered the event |
| `accountType` | string | Account type (e.g., customer) |
| `space` | object | space output from the tool |
| ↳ `key` | string | Space key |
| ↳ `name` | string | Space name |
| ↳ `self` | string | URL link to the space |
***
### Confluence User Created [#confluence-user-created]
Trigger workflow when a new user is added to Confluence
#### Configuration [#configuration-21]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature |
| `confluenceDomain` | string | No | Your Confluence Cloud domain |
#### Output [#output-67]
| Parameter | Type | Description |
| ---------------- | ------ | ----------------------------------------------------------------------------- |
| `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) |
| `userAccountId` | string | Account ID of the user who triggered the event |
| `accountType` | string | Account type (e.g., customer) |
| `user` | object | user output from the tool |
| ↳ `accountId` | string | Account ID of the new user |
| ↳ `accountType` | string | Account type (e.g., atlassian, app) |
| ↳ `displayName` | string | Display name of the user |
| ↳ `emailAddress` | string | Email address of the user (may not be available due to GDPR/privacy settings) |
| ↳ `publicName` | string | Public name of the user |
| ↳ `self` | string | URL link to the user profile |
***
### Confluence Webhook (All Events) [#confluence-webhook-all-events]
Trigger workflow on any Confluence webhook event
#### Configuration [#configuration-22]
| Parameter | Type | Required | Description |
| -------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature |
| `confluenceDomain` | string | No | Your Confluence Cloud domain |
| `confluenceEmail` | string | No | Your Atlassian account email. Required together with API token to download attachment files. |
| `confluenceApiToken` | string | No | API token from [https://id.atlassian.com/manage-profile/security/api-tokens](https://id.atlassian.com/manage-profile/security/api-tokens). Required to download attachment file content. |
| `includeFileContent` | boolean | No | Download and include actual file content from attachments. Requires email, API token, and domain. |
#### Output [#output-68]
| Parameter | Type | Description |
| --------------- | ------- | ----------------------------------------------------------------------------------------- |
| `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) |
| `userAccountId` | string | Account ID of the user who triggered the event |
| `accountType` | string | Account type (e.g., customer) |
| `page` | json | Page object (present in page events) |
| `comment` | json | Comment object (present in comment events) |
| `blog` | json | Blog post object (present in blog events) |
| `attachment` | json | Attachment object (present in attachment events) |
| `space` | json | Space object (present in space events) |
| `label` | json | Label object (present in label events) |
| `content` | json | Content object (present in label events) |
| `user` | json | User object (present in user events) |
| `files` | file\[] | Attachment file content (present in attachment events when includeFileContent is enabled) |
---
# Context.dev (/integrations/context_dev)
{/* MANUAL-CONTENT-START:intro */}
[Context.dev](https://context.dev/) is a web data API that scrapes, crawls, searches, and extracts data from the web, and resolves brand and company data from a domain, name, email, ticker, or transaction descriptor.
With Context.dev, you can:
* **Scrape and crawl pages**: Convert URLs to clean markdown or HTML, capture screenshots, discover images, crawl entire sites, and map sitemaps
* **Search the web**: Run natural language searches with domain filters and optional markdown scraping of results
* **Extract structured data**: Pull data matching a JSON schema, or detect and extract product details and catalogs from a page or domain
* **Analyze brand and design data**: Extract a domain's fonts and design system, classify a brand into NAICS/SIC industry codes, and resolve brand data (logos, colors, socials, address) from a domain, company name, email, ticker, or transaction descriptor
In Sim, the Context.dev integration allows your agents to scrape and crawl web pages into markdown or HTML, capture screenshots, search the web, extract structured data and product information, pull a site's fonts and style guide, classify a brand's industry, and look up brand assets and company details by domain, name, email, ticker, or transaction — all through a single set of API calls in your workflow.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Context.dev into the workflow. Scrape pages to markdown or HTML, capture screenshots, list images, crawl entire sites, map sitemaps, search the web, extract structured data and products, pull design systems, classify industries, and retrieve brand assets by domain, name, email, ticker, or transaction — all from one API.
## Actions [#actions]
### Context.dev Scrape Markdown [#contextdev-scrape-markdown]
Scrape any URL and return clean, LLM-ready markdown content.
#### Input [#input]
| Parameter | Type | Required | Description |
| -------------------- | ------- | -------- | -------------------------------------------------------------------- |
| `url` | string | Yes | The full URL to scrape (must include http\:// or https\://) |
| `useMainContentOnly` | boolean | No | Return only main content, excluding headers, footers, and navigation |
| `includeLinks` | boolean | No | Preserve hyperlinks in the markdown output (default: true) |
| `includeImages` | boolean | No | Include image references in the markdown output (default: false) |
| `includeFrames` | boolean | No | Render iframe contents inline (default: false) |
| `maxAgeMs` | number | No | Cache duration in milliseconds (0-2592000000, default: 86400000) |
| `waitForMs` | number | No | Browser wait time after page load in milliseconds (0-30000) |
| `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) |
| `apiKey` | string | Yes | Context.dev API key |
#### Output [#output]
| Parameter | Type | Description |
| ---------- | ------ | ------------------------------ |
| `markdown` | string | Page content as clean markdown |
| `url` | string | The scraped URL |
### Context.dev Scrape HTML [#contextdev-scrape-html]
Scrape any URL and return the raw HTML content of the page.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| -------------------- | ------- | -------- | --------------------------------------------------------------------- |
| `url` | string | Yes | The full URL to scrape (must include http\:// or https\://) |
| `useMainContentOnly` | boolean | No | Return only main content, excluding headers, footers, and navigation |
| `includeFrames` | boolean | No | Render iframe contents inline into the returned HTML (default: false) |
| `maxAgeMs` | number | No | Cache duration in milliseconds (0-2592000000, default: 86400000) |
| `waitForMs` | number | No | Browser wait time after page load in milliseconds (0-30000) |
| `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) |
| `apiKey` | string | Yes | Context.dev API key |
#### Output [#output-1]
| Parameter | Type | Description |
| --------- | ------ | --------------------------------------------------------------------------------- |
| `html` | string | Raw HTML content of the page |
| `url` | string | The scraped URL |
| `type` | string | Detected content type (html, xml, json, text, csv, markdown, svg, pdf, doc, docx) |
### Context.dev Scrape Images [#contextdev-scrape-images]
Discover every image asset on a page, with optional dimension and type enrichment.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ---------------------- | ------- | -------- | ---------------------------------------------------------------------------- |
| `url` | string | Yes | The full URL to scrape images from (must include http\:// or https\://) |
| `maxAgeMs` | number | No | Cache duration in milliseconds (0-2592000000, default: 86400000) |
| `waitForMs` | number | No | Browser wait time after page load in milliseconds (0-30000) |
| `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) |
| `enrichResolution` | boolean | No | Measure image dimensions (enables 5-credit enrichment) |
| `enrichHostedUrl` | boolean | No | Host images on a CDN and return their URL and MIME type (enables enrichment) |
| `enrichClassification` | boolean | No | Classify each image by visual asset type (enables enrichment) |
| `apiKey` | string | Yes | Context.dev API key |
#### Output [#output-2]
| Parameter | Type | Description |
| -------------- | ------- | ----------------------------------------------------------------------------- |
| `success` | boolean | Whether the scrape succeeded |
| `images` | array | Discovered image assets with source, element, type, and optional enrichment |
| ↳ `src` | string | Image source URL or data |
| ↳ `element` | string | Source element (img, svg, link, source, video, css, object, meta, background) |
| ↳ `type` | string | Image representation (url, html, base64) |
| ↳ `alt` | string | Alt text |
| ↳ `enrichment` | json | Optional enrichment (width, height, mimetype, url, type) when requested |
| `url` | string | The scraped URL |
### Context.dev Screenshot [#contextdev-screenshot]
Capture a screenshot of any web page and store it as a downloadable image file.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ------------------- | ------- | -------- | ------------------------------------------------------------------------------ |
| `url` | string | Yes | The full URL to capture (must include http\:// or https\://) |
| `fullScreenshot` | boolean | No | Capture the full scrollable page instead of just the viewport (default: false) |
| `handleCookiePopup` | boolean | No | Attempt to dismiss cookie banners before capturing (default: false) |
| `viewportWidth` | number | No | Viewport width in pixels (240-7680, default: 1920) |
| `viewportHeight` | number | No | Viewport height in pixels (240-4320, default: 1080) |
| `maxAgeMs` | number | No | Cache duration in milliseconds (0-2592000000, default: 86400000) |
| `waitForMs` | number | No | Post-load delay before capturing in milliseconds (0-30000, default: 3000) |
| `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) |
| `apiKey` | string | Yes | Context.dev API key |
#### Output [#output-3]
| Parameter | Type | Description |
| ---------------- | ------ | -------------------------------------- |
| `file` | file | Stored screenshot image file |
| `screenshotUrl` | string | Public URL of the captured screenshot |
| `screenshotType` | string | Screenshot type (viewport or fullPage) |
| `domain` | string | Domain that was captured |
| `width` | number | Screenshot width in pixels |
| `height` | number | Screenshot height in pixels |
### Context.dev Crawl [#contextdev-crawl]
Crawl an entire website and return each discovered page as clean markdown.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| -------------------- | ------- | -------- | --------------------------------------------------------------------- |
| `url` | string | Yes | The starting URL to crawl (must include http\:// or https\://) |
| `maxPages` | number | No | Maximum number of pages to crawl (1-500, default: 100) |
| `maxDepth` | number | No | Maximum link depth from the starting URL (0 = start page only) |
| `urlRegex` | string | No | Regex pattern to filter which URLs are crawled |
| `includeLinks` | boolean | No | Preserve hyperlinks in the markdown output (default: true) |
| `includeImages` | boolean | No | Include image references in the markdown output (default: false) |
| `useMainContentOnly` | boolean | No | Strip headers, footers, and sidebars from each page (default: false) |
| `followSubdomains` | boolean | No | Follow links to subdomains of the starting domain (default: false) |
| `maxAgeMs` | number | No | Cache duration in milliseconds (0-2592000000, default: 86400000) |
| `waitForMs` | number | No | Browser wait time after page load in milliseconds (0-30000) |
| `stopAfterMs` | number | No | Soft crawl time budget in milliseconds (10000-110000, default: 80000) |
| `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) |
| `apiKey` | string | Yes | Context.dev API key |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------ | ------ | --------------------------------------------------------------------------- |
| `results` | array | Crawled pages with markdown content and per-page metadata |
| ↳ `markdown` | string | Page content as markdown |
| ↳ `metadata` | json | Page metadata (url, title, crawlDepth, statusCode) |
| `metadata` | object | Crawl summary (numUrls, maxCrawlDepth, numSucceeded, numFailed, numSkipped) |
### Context.dev Map [#contextdev-map]
Build a sitemap of a domain and return every discovered page URL.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------- |
| `domain` | string | Yes | The domain to build a sitemap for (e.g., "example.com") |
| `maxLinks` | number | No | Maximum number of URLs to return (1-100000, default: 10000) |
| `urlRegex` | string | No | RE2-compatible regex to filter URLs (max 256 chars) |
| `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) |
| `apiKey` | string | Yes | Context.dev API key |
#### Output [#output-5]
| Parameter | Type | Description |
| --------- | ------ | -------------------------------------------------------------------------------------- |
| `domain` | string | The domain that was mapped |
| `urls` | array | All page URLs discovered from the sitemap |
| `meta` | object | Sitemap discovery stats (sitemapsDiscovered, sitemapsFetched, sitemapsSkipped, errors) |
### Context.dev Search [#contextdev-search]
Search the web with natural language and optionally scrape results to markdown.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | --------------------------------------------------------------------- |
| `query` | string | Yes | The natural language search query (1-500 characters) |
| `includeDomains` | array | No | Only return results from these domains |
| `excludeDomains` | array | No | Exclude results from these domains |
| `freshness` | string | No | Recency filter (last\_24\_hours, last\_week, last\_month, last\_year) |
| `numResults` | number | No | Number of results to return (10-100, default 10) |
| `country` | string | No | Restrict results to a country (ISO 3166-1 alpha-2 code, e.g. US) |
| `queryFanout` | boolean | No | Expand the query into parallel variants for broader coverage |
| `markdownEnabled` | boolean | No | Scrape each result page to markdown (default: false) |
| `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) |
| `apiKey` | string | Yes | Context.dev API key |
#### Output [#output-6]
| Parameter | Type | Description |
| --------------- | ------ | ----------------------------------------------------------------------------- |
| `results` | array | Search results with url, title, description, relevance, and optional markdown |
| ↳ `url` | string | Result page URL |
| ↳ `title` | string | Result page title |
| ↳ `description` | string | Result snippet/description |
| ↳ `relevance` | string | Relevance rating (high, medium, low) |
| ↳ `markdown` | json | Scraped markdown for the result (when markdown scraping is enabled) |
| `query` | string | The query that was searched |
### Context.dev Extract [#contextdev-extract]
Crawl a website and extract structured data matching a provided JSON schema.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | ---------------------------------------------------------------------- |
| `url` | string | Yes | The starting website URL (must include http\:// or https\://) |
| `schema` | json | Yes | JSON Schema describing the structure of the data to extract |
| `instructions` | string | No | Optional extraction guidance for link prioritization (max 2000 chars) |
| `factCheck` | boolean | No | Require extracted values to be grounded in page facts (default: false) |
| `followSubdomains` | boolean | No | Follow links on subdomains of the starting domain (default: false) |
| `maxPages` | number | No | Maximum number of pages to analyze (1-50, default: 5) |
| `maxDepth` | number | No | Maximum link depth from the starting URL |
| `maxAgeMs` | number | No | Cache duration in milliseconds (0-2592000000, default: 604800000) |
| `stopAfterMs` | number | No | Soft crawl time budget in milliseconds (10000-110000, default: 80000) |
| `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) |
| `apiKey` | string | Yes | Context.dev API key |
#### Output [#output-7]
| Parameter | Type | Description |
| -------------- | ------ | --------------------------------------------------------------------------- |
| `status` | string | Extraction status |
| `url` | string | The starting URL that was crawled |
| `urlsAnalyzed` | array | URLs that were analyzed during extraction |
| `data` | json | Structured data matching the requested schema |
| `metadata` | object | Crawl summary (numUrls, maxCrawlDepth, numSucceeded, numFailed, numSkipped) |
### Context.dev Extract Product [#contextdev-extract-product]
Detect and extract structured product details from a single product page URL.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------------- |
| `url` | string | Yes | The product page URL (must include http\:// or https\://) |
| `maxAgeMs` | number | No | Cache duration in milliseconds (0-2592000000, default: 604800000) |
| `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) |
| `apiKey` | string | Yes | Context.dev API key |
#### Output [#output-8]
| Parameter | Type | Description |
| --------------------- | ------- | ------------------------------------------------------------ |
| `isProductPage` | boolean | Whether the URL is a product page |
| `platform` | string | Detected platform (amazon, tiktok\_shop, etsy, generic) |
| `product` | object | Extracted product details |
| ↳ `name` | string | Product name |
| ↳ `description` | string | Product description |
| ↳ `price` | number | Product price |
| ↳ `currency` | string | Price currency |
| ↳ `billing_frequency` | string | Billing frequency (monthly, yearly, one\_time, usage\_based) |
| ↳ `pricing_model` | string | Pricing model (per\_seat, flat, tiered, freemium, custom) |
| ↳ `url` | string | Product URL |
| ↳ `category` | string | Product category |
| ↳ `features` | json | Product features |
| ↳ `target_audience` | json | Target audience |
| ↳ `tags` | json | Product tags |
| ↳ `image_url` | string | Primary product image URL |
| ↳ `images` | json | Product image URLs |
| ↳ `sku` | string | Product SKU |
### Context.dev Extract Products [#contextdev-extract-products]
Extract the product catalog from a brand's website by domain (beta).
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ----------------------------------------------------------------- |
| `domain` | string | Yes | The domain to extract products from (e.g., "example.com") |
| `maxProducts` | number | No | Maximum number of products to extract (1-12) |
| `maxAgeMs` | number | No | Cache duration in milliseconds (0-2592000000, default: 604800000) |
| `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) |
| `apiKey` | string | Yes | Context.dev API key |
#### Output [#output-9]
| Parameter | Type | Description |
| --------------------- | ------ | ------------------------------------------------------------ |
| `products` | array | Extracted products with pricing, features, and metadata |
| ↳ `name` | string | Product name |
| ↳ `description` | string | Product description |
| ↳ `price` | number | Product price |
| ↳ `currency` | string | Price currency |
| ↳ `billing_frequency` | string | Billing frequency (monthly, yearly, one\_time, usage\_based) |
| ↳ `pricing_model` | string | Pricing model (per\_seat, flat, tiered, freemium, custom) |
| ↳ `url` | string | Product URL |
| ↳ `category` | string | Product category |
| ↳ `features` | json | Product features |
| ↳ `target_audience` | json | Target audience |
| ↳ `tags` | json | Product tags |
| ↳ `image_url` | string | Primary product image URL |
| ↳ `images` | json | Product image URLs |
| ↳ `sku` | string | Product SKU |
### Context.dev Scrape Fonts [#contextdev-scrape-fonts]
Extract the font families, usage stats, and font files used by a domain.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------- |
| `domain` | string | Yes | The domain to extract fonts from (e.g., "example.com") |
| `maxAgeMs` | number | No | Cache max age in milliseconds (86400000-31536000000, default: 7776000000) |
| `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) |
| `apiKey` | string | Yes | Context.dev API key |
#### Output [#output-10]
| Parameter | Type | Description |
| -------------------- | ------ | --------------------------------------------------------------------- |
| `status` | string | Extraction status |
| `domain` | string | The domain that was analyzed |
| `fonts` | array | Fonts with usage statistics and fallbacks |
| ↳ `font` | string | Font family name |
| ↳ `uses` | json | Where the font is used |
| ↳ `fallbacks` | json | Fallback font families |
| ↳ `num_elements` | number | Number of elements using the font |
| ↳ `num_words` | number | Number of words rendered in the font |
| ↳ `percent_words` | number | Percent of words using the font |
| ↳ `percent_elements` | number | Percent of elements using the font |
| `fontLinks` | json | Font family download links keyed by font name (type, files, category) |
### Context.dev Scrape Styleguide [#contextdev-scrape-styleguide]
Extract a domain's design system: colors, typography, spacing, shadows, and UI components.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------- |
| `domain` | string | Yes | The domain to extract the styleguide from (e.g., "example.com") |
| `maxAgeMs` | number | No | Cache max age in milliseconds (86400000-31536000000, default: 7776000000) |
| `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) |
| `apiKey` | string | Yes | Context.dev API key |
#### Output [#output-11]
| Parameter | Type | Description |
| ------------ | ------ | --------------------------------------------------------------------------------------- |
| `status` | string | Extraction status |
| `domain` | string | The domain that was analyzed |
| `styleguide` | json | Design system: mode, colors, typography, elementSpacing, shadows, fontLinks, components |
### Context.dev Classify NAICS [#contextdev-classify-naics]
Classify a brand into NAICS industry codes from its domain or company name.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------- |
| `input` | string | Yes | Brand domain or company name to classify (e.g., "stripe.com" or "Stripe") |
| `minResults` | number | No | Minimum number of codes to return (1-10, default: 1) |
| `maxResults` | number | No | Maximum number of codes to return (1-10, default: 5) |
| `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) |
| `apiKey` | string | Yes | Context.dev API key |
#### Output [#output-12]
| Parameter | Type | Description |
| -------------- | ------ | -------------------------------------------- |
| `status` | string | Classification status |
| `domain` | string | Resolved domain |
| `type` | string | Input type that was resolved |
| `codes` | array | Matched NAICS codes with name and confidence |
| ↳ `code` | string | Industry code |
| ↳ `name` | string | Industry name |
| ↳ `confidence` | string | Match confidence (high, medium, low) |
### Context.dev Classify SIC [#contextdev-classify-sic]
Classify a brand into SIC industry codes from its domain or company name.
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------- |
| `input` | string | Yes | Brand domain or company name to classify (e.g., "stripe.com" or "Stripe") |
| `type` | string | No | SIC taxonomy version: "original\_sic" (default) or "latest\_sec" |
| `minResults` | number | No | Minimum number of codes to return (1-10, default: 1) |
| `maxResults` | number | No | Maximum number of codes to return (1-10, default: 5) |
| `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) |
| `apiKey` | string | Yes | Context.dev API key |
#### Output [#output-13]
| Parameter | Type | Description |
| ------------------ | ------ | ----------------------------------------------------------- |
| `status` | string | Classification status |
| `domain` | string | Resolved domain |
| `type` | string | Input type that was resolved |
| `classification` | string | SIC taxonomy version used (original\_sic or latest\_sec) |
| `codes` | array | Matched SIC codes with name, confidence, and group metadata |
| ↳ `code` | string | Industry code |
| ↳ `name` | string | Industry name |
| ↳ `confidence` | string | Match confidence (high, medium, low) |
| ↳ `majorGroup` | string | Major group code (original\_sic only) |
| ↳ `majorGroupName` | string | Major group name (original\_sic only) |
| ↳ `office` | string | SEC office (latest\_sec only) |
### Context.dev Get Brand [#contextdev-get-brand]
Retrieve brand data for a domain: logos, colors, backdrops, socials, address, and industry.
#### Input [#input-14]
| Parameter | Type | Required | Description |
| --------------- | ------- | -------- | ------------------------------------------------------------------------- |
| `domain` | string | Yes | The domain to retrieve brand data for (e.g., "airbnb.com") |
| `forceLanguage` | string | No | Override the detected language with a supported language code |
| `maxSpeed` | boolean | No | Skip time-consuming operations for a faster response (default: false) |
| `maxAgeMs` | number | No | Cache max age in milliseconds (86400000-31536000000, default: 7776000000) |
| `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) |
| `apiKey` | string | Yes | Context.dev API key |
#### Output [#output-14]
| Parameter | Type | Description |
| -------------------- | ------- | ----------------------------------------------------------------- |
| `status` | string | Retrieval status |
| `brand` | object | Brand data object |
| ↳ `domain` | string | Brand domain |
| ↳ `title` | string | Brand title |
| ↳ `description` | string | Brand description |
| ↳ `slogan` | string | Brand slogan |
| ↳ `colors` | json | Brand colors (hex and name) |
| ↳ `logos` | json | Brand logos with mode, colors, resolution, and type |
| ↳ `backdrops` | json | Brand backdrop images |
| ↳ `socials` | json | Social media profiles (type and url) |
| ↳ `address` | json | Brand address |
| ↳ `stock` | json | Stock info (ticker and exchange) |
| ↳ `is_nsfw` | boolean | Whether the brand contains adult content |
| ↳ `email` | string | Brand contact email |
| ↳ `phone` | string | Brand contact phone |
| ↳ `industries` | json | Industry taxonomy (eic industry/subindustry pairs) |
| ↳ `links` | json | Key brand links (careers, privacy, terms, blog, pricing, contact) |
| ↳ `primary_language` | string | Primary language of the brand site |
### Context.dev Get Brand by Name [#contextdev-get-brand-by-name]
Retrieve brand data by company name: logos, colors, socials, address, and industry.
#### Input [#input-15]
| Parameter | Type | Required | Description |
| --------------- | ------- | -------- | ------------------------------------------------------------------------- |
| `name` | string | Yes | Company name to retrieve brand data for (3-30 chars, e.g., "Apple Inc") |
| `countryGl` | string | No | ISO 2-letter country code to prioritize (e.g., "us") |
| `forceLanguage` | string | No | Override the detected language with a supported language code |
| `maxSpeed` | boolean | No | Skip time-consuming operations for a faster response (default: false) |
| `maxAgeMs` | number | No | Cache max age in milliseconds (86400000-31536000000, default: 7776000000) |
| `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) |
| `apiKey` | string | Yes | Context.dev API key |
#### Output [#output-15]
| Parameter | Type | Description |
| -------------------- | ------- | ----------------------------------------------------------------- |
| `status` | string | Retrieval status |
| `brand` | object | Brand data object |
| ↳ `domain` | string | Brand domain |
| ↳ `title` | string | Brand title |
| ↳ `description` | string | Brand description |
| ↳ `slogan` | string | Brand slogan |
| ↳ `colors` | json | Brand colors (hex and name) |
| ↳ `logos` | json | Brand logos with mode, colors, resolution, and type |
| ↳ `backdrops` | json | Brand backdrop images |
| ↳ `socials` | json | Social media profiles (type and url) |
| ↳ `address` | json | Brand address |
| ↳ `stock` | json | Stock info (ticker and exchange) |
| ↳ `is_nsfw` | boolean | Whether the brand contains adult content |
| ↳ `email` | string | Brand contact email |
| ↳ `phone` | string | Brand contact phone |
| ↳ `industries` | json | Industry taxonomy (eic industry/subindustry pairs) |
| ↳ `links` | json | Key brand links (careers, privacy, terms, blog, pricing, contact) |
| ↳ `primary_language` | string | Primary language of the brand site |
### Context.dev Get Brand by Email [#contextdev-get-brand-by-email]
Retrieve brand data from a work email address. Free/disposable emails are rejected (422).
#### Input [#input-16]
| Parameter | Type | Required | Description |
| --------------- | ------- | -------- | ------------------------------------------------------------------------- |
| `email` | string | Yes | Work email address; the domain is extracted (free providers are rejected) |
| `forceLanguage` | string | No | Override the detected language with a supported language code |
| `maxSpeed` | boolean | No | Skip time-consuming operations for a faster response (default: false) |
| `maxAgeMs` | number | No | Cache max age in milliseconds (86400000-31536000000, default: 7776000000) |
| `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) |
| `apiKey` | string | Yes | Context.dev API key |
#### Output [#output-16]
| Parameter | Type | Description |
| -------------------- | ------- | ----------------------------------------------------------------- |
| `status` | string | Retrieval status |
| `brand` | object | Brand data object |
| ↳ `domain` | string | Brand domain |
| ↳ `title` | string | Brand title |
| ↳ `description` | string | Brand description |
| ↳ `slogan` | string | Brand slogan |
| ↳ `colors` | json | Brand colors (hex and name) |
| ↳ `logos` | json | Brand logos with mode, colors, resolution, and type |
| ↳ `backdrops` | json | Brand backdrop images |
| ↳ `socials` | json | Social media profiles (type and url) |
| ↳ `address` | json | Brand address |
| ↳ `stock` | json | Stock info (ticker and exchange) |
| ↳ `is_nsfw` | boolean | Whether the brand contains adult content |
| ↳ `email` | string | Brand contact email |
| ↳ `phone` | string | Brand contact phone |
| ↳ `industries` | json | Industry taxonomy (eic industry/subindustry pairs) |
| ↳ `links` | json | Key brand links (careers, privacy, terms, blog, pricing, contact) |
| ↳ `primary_language` | string | Primary language of the brand site |
### Context.dev Get Brand by Ticker [#contextdev-get-brand-by-ticker]
Retrieve brand data for a public company by its stock ticker symbol.
#### Input [#input-17]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | ----------------------------------------------------------------------------- |
| `ticker` | string | Yes | Stock ticker symbol (e.g., "AAPL", "GOOGL", "BRK.A") |
| `tickerExchange` | string | No | Exchange code for the ticker (e.g., "NASDAQ", "NYSE", "LSE"). Default: NASDAQ |
| `forceLanguage` | string | No | Override the detected language with a supported language code |
| `maxSpeed` | boolean | No | Skip time-consuming operations for a faster response (default: false) |
| `maxAgeMs` | number | No | Cache max age in milliseconds (86400000-31536000000, default: 7776000000) |
| `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) |
| `apiKey` | string | Yes | Context.dev API key |
#### Output [#output-17]
| Parameter | Type | Description |
| -------------------- | ------- | ----------------------------------------------------------------- |
| `status` | string | Retrieval status |
| `brand` | object | Brand data object |
| ↳ `domain` | string | Brand domain |
| ↳ `title` | string | Brand title |
| ↳ `description` | string | Brand description |
| ↳ `slogan` | string | Brand slogan |
| ↳ `colors` | json | Brand colors (hex and name) |
| ↳ `logos` | json | Brand logos with mode, colors, resolution, and type |
| ↳ `backdrops` | json | Brand backdrop images |
| ↳ `socials` | json | Social media profiles (type and url) |
| ↳ `address` | json | Brand address |
| ↳ `stock` | json | Stock info (ticker and exchange) |
| ↳ `is_nsfw` | boolean | Whether the brand contains adult content |
| ↳ `email` | string | Brand contact email |
| ↳ `phone` | string | Brand contact phone |
| ↳ `industries` | json | Industry taxonomy (eic industry/subindustry pairs) |
| ↳ `links` | json | Key brand links (careers, privacy, terms, blog, pricing, contact) |
| ↳ `primary_language` | string | Primary language of the brand site |
### Context.dev Identify Transaction [#contextdev-identify-transaction]
Identify the brand behind a raw bank/card transaction descriptor and return its brand data.
#### Input [#input-18]
| Parameter | Type | Required | Description |
| -------------------- | ------- | -------- | ---------------------------------------------------------------------------- |
| `transactionInfo` | string | Yes | The raw transaction descriptor or identifier to resolve to a brand |
| `countryGl` | string | No | ISO 2-letter country code from the transaction (e.g., "us", "gb") |
| `city` | string | No | City name to prioritize in the search |
| `mcc` | string | No | Merchant Category Code for the business category |
| `phone` | number | No | Phone number from the transaction for verification |
| `highConfidenceOnly` | boolean | No | Enforce additional verification steps for higher confidence (default: false) |
| `forceLanguage` | string | No | Override the detected language with a supported language code |
| `maxSpeed` | boolean | No | Skip time-consuming operations for a faster response (default: false) |
| `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) |
| `apiKey` | string | Yes | Context.dev API key |
#### Output [#output-18]
| Parameter | Type | Description |
| -------------------- | ------- | ----------------------------------------------------------------- |
| `status` | string | Identification status |
| `brand` | object | Brand data for the identified merchant |
| ↳ `domain` | string | Brand domain |
| ↳ `title` | string | Brand title |
| ↳ `description` | string | Brand description |
| ↳ `slogan` | string | Brand slogan |
| ↳ `colors` | json | Brand colors (hex and name) |
| ↳ `logos` | json | Brand logos with mode, colors, resolution, and type |
| ↳ `backdrops` | json | Brand backdrop images |
| ↳ `socials` | json | Social media profiles (type and url) |
| ↳ `address` | json | Brand address |
| ↳ `stock` | json | Stock info (ticker and exchange) |
| ↳ `is_nsfw` | boolean | Whether the brand contains adult content |
| ↳ `email` | string | Brand contact email |
| ↳ `phone` | string | Brand contact phone |
| ↳ `industries` | json | Industry taxonomy (eic industry/subindustry pairs) |
| ↳ `links` | json | Key brand links (careers, privacy, terms, blog, pricing, contact) |
| ↳ `primary_language` | string | Primary language of the brand site |
---
# Convex (/integrations/convex)
{/* MANUAL-CONTENT-START:intro */}
[Convex](https://www.convex.dev/) is an open-source reactive backend platform that combines a document database, serverless functions, and real-time sync in one developer-friendly package. Instead of writing SQL, you define queries, mutations, and actions in TypeScript that run right next to your data, and every client subscribed to a query updates automatically when the underlying data changes.
**Why Convex?**
* **Functions as the API:** Queries (reads), mutations (transactional writes), and actions (side effects like calling external APIs) are the building blocks of your backend — typed, versioned, and deployed together.
* **Reactive by default:** Query results update live as data changes, with no cache invalidation or polling logic to maintain.
* **Transactional writes:** Mutations run as ACID transactions with serializable isolation, so your data stays consistent without manual locking.
* **Built-in schema awareness:** Convex tracks the shape of every table, so tooling can introspect your data model without a separate migration system.
**Using Convex in Sim**
Sim's Convex integration connects your workflows to any Convex deployment with two fields: the deployment URL and a deploy key from the dashboard Settings page. From there you can:
* **Run functions:** Call query, mutation, and action functions with named JSON arguments — or use Run Function when you don't want to specify the function type.
* **Inspect your data model:** List Tables returns every table in the deployment with the JSON schema of its documents.
* **Export and sync data:** List Documents pages through a consistent snapshot of a table, and Document Deltas returns only the documents that changed since a snapshot — including deletions — making incremental syncs to warehouses, search indexes, or other tools straightforward.
The Run Query, Run Mutation, Run Action, and Run Function operations work on every Convex plan. List Tables, List Documents, and Document Deltas use Convex's streaming export API, which is available on Convex paid plans.
Typical patterns include agents that read and write application data through your existing Convex functions, scheduled exports to analytics destinations, and change-driven automations that react to new or updated documents.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Convex into the workflow. Run query, mutation, and action functions on your deployment, list tables with their schemas, and export documents with snapshot pagination and change deltas.
## Actions [#actions]
### Convex Run Query [#convex-run-query]
Run a Convex query function and return its result
#### Input [#input]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- |
| `deploymentUrl` | string | Yes | Convex deployment URL (e.g., [https://your-deployment.convex.cloud\\](https://your-deployment.convex.cloud\\)) |
| `deployKey` | string | Yes | Convex deploy key from the dashboard Settings page |
| `functionPath` | string | Yes | Path to the query function (e.g., messages:list or folder/file:myQuery) |
| `args` | json | No | Named arguments to pass to the function as a JSON object |
#### Output [#output]
| Parameter | Type | Description |
| ---------- | ----- | ----------------------------------------------- |
| `value` | json | Result returned by the query function |
| `logLines` | array | Log lines printed during the function execution |
### Convex Run Mutation [#convex-run-mutation]
Run a Convex mutation function to write data and return its result
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- |
| `deploymentUrl` | string | Yes | Convex deployment URL (e.g., [https://your-deployment.convex.cloud\\](https://your-deployment.convex.cloud\\)) |
| `deployKey` | string | Yes | Convex deploy key from the dashboard Settings page |
| `functionPath` | string | Yes | Path to the mutation function (e.g., messages:send or folder/file:myMutation) |
| `args` | json | No | Named arguments to pass to the function as a JSON object |
#### Output [#output-1]
| Parameter | Type | Description |
| ---------- | ----- | ----------------------------------------------- |
| `value` | json | Result returned by the mutation function |
| `logLines` | array | Log lines printed during the function execution |
### Convex Run Action [#convex-run-action]
Run a Convex action function and return its result
#### Input [#input-2]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- |
| `deploymentUrl` | string | Yes | Convex deployment URL (e.g., [https://your-deployment.convex.cloud\\](https://your-deployment.convex.cloud\\)) |
| `deployKey` | string | Yes | Convex deploy key from the dashboard Settings page |
| `functionPath` | string | Yes | Path to the action function (e.g., emails:send or folder/file:myAction) |
| `args` | json | No | Named arguments to pass to the function as a JSON object |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------- | ----- | ----------------------------------------------- |
| `value` | json | Result returned by the action function |
| `logLines` | array | Log lines printed during the function execution |
### Convex Run Function [#convex-run-function]
Run any Convex function (query, mutation, or action) by path without specifying its type
#### Input [#input-3]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- |
| `deploymentUrl` | string | Yes | Convex deployment URL (e.g., [https://your-deployment.convex.cloud\\](https://your-deployment.convex.cloud\\)) |
| `deployKey` | string | Yes | Convex deploy key from the dashboard Settings page |
| `functionPath` | string | Yes | Path to the function (e.g., messages:list or folder/file:myFunction) |
| `args` | json | No | Named arguments to pass to the function as a JSON object |
#### Output [#output-3]
| Parameter | Type | Description |
| ---------- | ----- | ----------------------------------------------- |
| `value` | json | Result returned by the function |
| `logLines` | array | Log lines printed during the function execution |
### Convex List Tables [#convex-list-tables]
List all tables in a Convex deployment along with their JSON schemas. Requires streaming export, available on Convex paid plans.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- |
| `deploymentUrl` | string | Yes | Convex deployment URL (e.g., [https://your-deployment.convex.cloud\\](https://your-deployment.convex.cloud\\)) |
| `deployKey` | string | Yes | Convex deploy key from the dashboard Settings page |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ----- | ----------------------------------------------------- |
| `tables` | array | Names of the tables in the deployment |
| `schemas` | json | Map of table name to the JSON schema of its documents |
### Convex List Documents [#convex-list-documents]
List documents from a Convex table via a paginated snapshot. Pass the returned snapshot and page cursor back in to fetch the next page. Requires streaming export, available on Convex paid plans.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- |
| `deploymentUrl` | string | Yes | Convex deployment URL (e.g., [https://your-deployment.convex.cloud\\](https://your-deployment.convex.cloud\\)) |
| `deployKey` | string | Yes | Convex deploy key from the dashboard Settings page |
| `tableName` | string | No | Table to list documents from. Omit to list documents from all tables. |
| `snapshot` | string | No | Snapshot timestamp from a previous page. Omit on the first request to start a new snapshot. |
| `pageCursor` | string | No | Page cursor from a previous page of the same snapshot. Omit on the first request. |
#### Output [#output-5]
| Parameter | Type | Description |
| ------------ | ------- | -------------------------------------------------------------- |
| `documents` | array | Documents in this page of the snapshot |
| `hasMore` | boolean | Whether more pages remain in the snapshot |
| `snapshot` | string | Snapshot timestamp to pass back in when fetching the next page |
| `pageCursor` | string | Page cursor to pass back in when fetching the next page |
### Convex Document Deltas [#convex-document-deltas]
List documents that changed after a snapshot or previous delta cursor. Deleted documents are returned with a \_deleted flag. Requires streaming export, available on Convex paid plans.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `deploymentUrl` | string | Yes | Convex deployment URL (e.g., [https://your-deployment.convex.cloud\\](https://your-deployment.convex.cloud\\)) |
| `deployKey` | string | Yes | Convex deploy key from the dashboard Settings page |
| `cursor` | string | Yes | Timestamp cursor to read deltas after. Use the snapshot value from List Documents or the cursor from a previous Document Deltas page. |
| `tableName` | string | No | Table to read deltas from. Omit to read deltas from all tables. |
#### Output [#output-6]
| Parameter | Type | Description |
| ----------- | ------- | ------------------------------------------------------------ |
| `documents` | array | Changed documents, each including \_table and \_ts fields |
| `hasMore` | boolean | Whether more delta pages remain |
| `cursor` | string | Cursor to pass back in when fetching the next page of deltas |
---
# CrowdStrike (/integrations/crowdstrike)
{/* MANUAL-CONTENT-START:intro */}
[CrowdStrike](https://www.crowdstrike.com/) is a cybersecurity platform providing endpoint protection, threat intelligence, and identity security through its Falcon suite. This integration connects to the Falcon Identity Protection API to query sensor data.
With this integration, you can:
* **Search sensors**: Query CrowdStrike identity protection sensors by hostname, IP, or related fields using Falcon Query Language filters
* **Fetch sensor details**: Retrieve documented sensor details, including protection status, policy assignments, and protocol configuration, for one or more device IDs
* **Run sensor aggregates**: Execute documented JSON aggregate queries to summarize sensor data into buckets and metrics
In Sim, the CrowdStrike integration allows your agents to search identity protection sensors, look up detailed sensor records by device ID, and run aggregate queries against sensor data—all authenticated with a Falcon API client ID and secret against a specified cloud region. This lets agents surface device protection status, policy coverage, and protocol configuration (Kerberos, LDAP, NTLM, RDP, SMB) as part of security monitoring and reporting workflows.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate CrowdStrike Identity Protection into workflows to search sensors, fetch documented sensor details by device ID, and run documented sensor aggregate queries.
## Actions [#actions]
### CrowdStrike Get Sensor Aggregates [#crowdstrike-get-sensor-aggregates]
Get documented CrowdStrike Identity Protection sensor aggregates from a JSON aggregate query body
#### Input [#input]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------- |
| `clientId` | string | Yes | CrowdStrike Falcon API client ID |
| `clientSecret` | string | Yes | CrowdStrike Falcon API client secret |
| `cloud` | string | Yes | CrowdStrike Falcon cloud region |
| `aggregateQuery` | json | Yes | JSON aggregate query body documented by CrowdStrike for sensor aggregates |
#### Output [#output]
| Parameter | Type | Description |
| --------------------------- | ------ | --------------------------------------------------- |
| `aggregates` | array | Aggregate result groups returned by CrowdStrike |
| ↳ `buckets` | array | Buckets within the aggregate result |
| ↳ `count` | number | Bucket document count |
| ↳ `from` | number | Bucket lower bound |
| ↳ `keyAsString` | string | String representation of the bucket key |
| ↳ `label` | json | Bucket label object |
| ↳ `stringFrom` | string | String lower bound |
| ↳ `stringTo` | string | String upper bound |
| ↳ `subAggregates` | json | Nested aggregate results for this bucket |
| ↳ `to` | number | Bucket upper bound |
| ↳ `value` | number | Bucket metric value |
| ↳ `valueAsString` | string | String representation of the bucket value |
| ↳ `docCountErrorUpperBound` | number | Upper bound for bucket count error |
| ↳ `name` | string | Aggregate result name |
| ↳ `sumOtherDocCount` | number | Document count not included in the returned buckets |
| `count` | number | Number of aggregate result groups returned |
### CrowdStrike Get Sensor Details [#crowdstrike-get-sensor-details]
Get documented CrowdStrike Identity Protection sensor details for one or more device IDs
#### Input [#input-1]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------- |
| `clientId` | string | Yes | CrowdStrike Falcon API client ID |
| `clientSecret` | string | Yes | CrowdStrike Falcon API client secret |
| `cloud` | string | Yes | CrowdStrike Falcon cloud region |
| `ids` | json | Yes | JSON array of CrowdStrike sensor device IDs |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------------- |
| `sensors` | array | CrowdStrike identity sensor detail records |
| ↳ `agentVersion` | string | Sensor agent version |
| ↳ `cid` | string | CrowdStrike customer identifier |
| ↳ `deviceId` | string | Sensor device identifier |
| ↳ `heartbeatTime` | number | Last heartbeat timestamp |
| ↳ `hostname` | string | Sensor hostname |
| ↳ `idpPolicyId` | string | Assigned Identity Protection policy ID |
| ↳ `idpPolicyName` | string | Assigned Identity Protection policy name |
| ↳ `ipAddress` | string | Sensor local IP address |
| ↳ `kerberosConfig` | string | Kerberos configuration status |
| ↳ `ldapConfig` | string | LDAP configuration status |
| ↳ `ldapsConfig` | string | LDAPS configuration status |
| ↳ `machineDomain` | string | Machine domain |
| ↳ `ntlmConfig` | string | NTLM configuration status |
| ↳ `osVersion` | string | Operating system version |
| ↳ `rdpToDcConfig` | string | RDP to domain controller configuration status |
| ↳ `smbToDcConfig` | string | SMB to domain controller configuration status |
| ↳ `status` | string | Sensor protection status |
| ↳ `statusCauses` | array | Documented causes behind the current status |
| ↳ `tiEnabled` | string | Threat intelligence enablement status |
| `count` | number | Number of sensors returned |
| `pagination` | json | Pagination metadata when returned by the underlying API |
| ↳ `limit` | number | Page size used for the query |
| ↳ `offset` | number | Offset returned by CrowdStrike |
| ↳ `total` | number | Total records available |
### CrowdStrike Query Sensors [#crowdstrike-query-sensors]
Search CrowdStrike identity protection sensors by hostname, IP, or related fields
#### Input [#input-2]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------- |
| `clientId` | string | Yes | CrowdStrike Falcon API client ID |
| `clientSecret` | string | Yes | CrowdStrike Falcon API client secret |
| `cloud` | string | Yes | CrowdStrike Falcon cloud region |
| `filter` | string | No | Falcon Query Language filter for identity sensor search |
| `limit` | number | No | Maximum number of sensor records to return |
| `offset` | number | No | Pagination offset for the identity sensor query |
| `sort` | string | No | Sort expression for identity sensor results |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------------------------- |
| `sensors` | array | Matching CrowdStrike identity sensor records |
| ↳ `agentVersion` | string | Sensor agent version |
| ↳ `cid` | string | CrowdStrike customer identifier |
| ↳ `deviceId` | string | Sensor device identifier |
| ↳ `heartbeatTime` | number | Last heartbeat timestamp |
| ↳ `hostname` | string | Sensor hostname |
| ↳ `idpPolicyId` | string | Assigned Identity Protection policy ID |
| ↳ `idpPolicyName` | string | Assigned Identity Protection policy name |
| ↳ `ipAddress` | string | Sensor local IP address |
| ↳ `kerberosConfig` | string | Kerberos configuration status |
| ↳ `ldapConfig` | string | LDAP configuration status |
| ↳ `ldapsConfig` | string | LDAPS configuration status |
| ↳ `machineDomain` | string | Machine domain |
| ↳ `ntlmConfig` | string | NTLM configuration status |
| ↳ `osVersion` | string | Operating system version |
| ↳ `rdpToDcConfig` | string | RDP to domain controller configuration status |
| ↳ `smbToDcConfig` | string | SMB to domain controller configuration status |
| ↳ `status` | string | Sensor protection status |
| ↳ `statusCauses` | array | Documented causes behind the current status |
| ↳ `tiEnabled` | string | Threat intelligence enablement status |
| `count` | number | Number of sensors returned |
| `pagination` | json | Pagination metadata (limit, offset, total) |
| ↳ `limit` | number | Page size used for the query |
| ↳ `offset` | number | Offset returned by CrowdStrike |
| ↳ `total` | number | Total records available |
---
# Cursor (/integrations/cursor)
{/* MANUAL-CONTENT-START:intro */}
[Cursor](https://www.cursor.so) is an intelligent cloud-based platform that enables you to launch and manage AI agents capable of collaborating on your GitHub repositories. Cursor agents are designed to help automate software development workflows, accelerate code changes, and provide powerful assistance directly within your version control stack.
With Cursor, you can:
* **Launch cloud agents**: Instantly start AI agents to perform tasks on your repositories—ranging from code generation and refactoring to documentation and bug fixing.
* **Collaborate on pull requests and branches**: Agents can work on feature branches, propose changes, and assist with code reviews.
* **Guide and refine AI work**: Provide follow-up instructions to agents, enabling you to iteratively direct their actions and results.
* **Monitor progress and results**: Check agent status, review their output, and inspect conversation threads—all from a unified dashboard or API.
* **Control agent lifecycle**: Start, stop, restart, or archive agents as needed to manage compute resources and workflow states.
* **Integrate with your workflow**: Use the API to connect Cursor agents with CI/CD pipelines, chatbots, or internal tools for automated workflows.
Integrating Cursor into your Sim automations unleashes the power of AI assistance on your software projects. Let agents contribute code, resolve issues, and complete repetitive development tasks so you and your team can focus on higher-level engineering work.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Interact with Cursor Cloud Agents API to launch AI agents that can work on your GitHub repositories. Supports launching agents, adding follow-up instructions, checking status, viewing conversations, and managing agent lifecycle.
## Actions [#actions]
### Cursor List Agents [#cursor-list-agents]
List all cloud agents for the authenticated user with optional pagination. Returns API-aligned fields only.
#### Input [#input]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------------- |
| `apiKey` | string | Yes | Cursor API key |
| `limit` | number | No | Number of agents to return (default: 20, max: 100) |
| `cursor` | string | No | Pagination cursor from previous response |
| `prUrl` | string | No | Filter agents by pull request URL |
#### Output [#output]
| Parameter | Type | Description |
| ------------ | ------ | ------------------------------- |
| `agents` | array | Array of agent objects |
| `nextCursor` | string | Pagination cursor for next page |
### Cursor Get Agent [#cursor-get-agent]
Retrieve the current status and results of a cloud agent. Returns API-aligned fields only.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------------------- |
| `apiKey` | string | Yes | Cursor API key |
| `agentId` | string | Yes | Unique identifier for the cloud agent (e.g., bc\_abc123) |
#### Output [#output-1]
| Parameter | Type | Description |
| ----------- | ------ | ---------------------- |
| `id` | string | Agent ID |
| `name` | string | Agent name |
| `status` | string | Agent status |
| `source` | json | Source repository info |
| `target` | json | Target branch/PR info |
| `summary` | string | Agent summary |
| `createdAt` | string | Creation timestamp |
### Cursor Get Conversation [#cursor-get-conversation]
Retrieve the conversation history of a cloud agent, including all user prompts and assistant responses. Returns API-aligned fields only.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------------------- |
| `apiKey` | string | Yes | Cursor API key |
| `agentId` | string | Yes | Unique identifier for the cloud agent (e.g., bc\_abc123) |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------- | ------ | ------------------------------ |
| `id` | string | Agent ID |
| `messages` | array | Array of conversation messages |
### Cursor Launch Agent [#cursor-launch-agent]
Start a new cloud agent to work on a GitHub repository with the given instructions. Returns API-aligned fields only.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ----------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Cursor API key |
| `repository` | string | Yes | GitHub repository URL (e.g., [https://github.com/your-org/your-repo\\](https://github.com/your-org/your-repo\\)) |
| `ref` | string | No | Branch, tag, or commit to work from (defaults to default branch) |
| `promptText` | string | Yes | The instruction text for the agent |
| `promptImages` | string | No | JSON array of image objects with base64 data and dimensions |
| `model` | string | No | Model to use (leave empty for auto-selection) |
| `branchName` | string | No | Custom branch name for the agent to use |
| `autoCreatePr` | boolean | No | Automatically create a PR when the agent finishes |
| `openAsCursorGithubApp` | boolean | No | Open the PR as the Cursor GitHub App |
| `skipReviewerRequest` | boolean | No | Skip requesting reviewers on the PR |
#### Output [#output-3]
| Parameter | Type | Description |
| --------- | ------ | ----------- |
| `id` | string | Agent ID |
| `url` | string | Agent URL |
### Cursor Add Follow-up [#cursor-add-follow-up]
Add a follow-up instruction to an existing cloud agent. Returns API-aligned fields only.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------------------------------------------------------------- |
| `apiKey` | string | Yes | Cursor API key |
| `agentId` | string | Yes | Unique identifier for the cloud agent (e.g., bc\_abc123) |
| `followupPromptText` | string | Yes | The follow-up instruction text for the agent |
| `promptImages` | string | No | JSON array of image objects with base64 data and dimensions (max 5) |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ------ | ----------- |
| `id` | string | Agent ID |
### Cursor Stop Agent [#cursor-stop-agent]
Stop a running cloud agent. Returns API-aligned fields only.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------------------- |
| `apiKey` | string | Yes | Cursor API key |
| `agentId` | string | Yes | Unique identifier for the cloud agent (e.g., bc\_abc123) |
#### Output [#output-5]
| Parameter | Type | Description |
| --------- | ------ | ----------- |
| `id` | string | Agent ID |
### Cursor Delete Agent [#cursor-delete-agent]
Permanently delete a cloud agent. Returns API-aligned fields only.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------------------- |
| `apiKey` | string | Yes | Cursor API key |
| `agentId` | string | Yes | Unique identifier for the cloud agent (e.g., bc\_abc123) |
#### Output [#output-6]
| Parameter | Type | Description |
| --------- | ------ | ----------- |
| `id` | string | Agent ID |
### Cursor List Artifacts [#cursor-list-artifacts]
List generated artifact files for a cloud agent. Returns API-aligned fields only.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------------------- |
| `apiKey` | string | Yes | Cursor API key |
| `agentId` | string | Yes | Unique identifier for the cloud agent (e.g., bc\_abc123) |
#### Output [#output-7]
| Parameter | Type | Description |
| ----------- | ------ | ---------------------- |
| `artifacts` | array | List of artifact files |
| ↳ `path` | string | Artifact file path |
| ↳ `size` | number | File size in bytes |
### Cursor Download Artifact [#cursor-download-artifact]
Download a generated artifact file from a cloud agent. Returns the file for execution storage.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------------------------------- |
| `apiKey` | string | Yes | Cursor API key |
| `agentId` | string | Yes | Unique identifier for the cloud agent (e.g., bc\_abc123) |
| `path` | string | Yes | Absolute path of the artifact to download (e.g., /src/index.ts) |
#### Output [#output-8]
| Parameter | Type | Description |
| --------- | ---- | -------------------------------------------------- |
| `file` | file | Downloaded artifact file stored in execution files |
### Cursor List Models [#cursor-list-models]
List the models available for launching cloud agents. Returns API-aligned fields only.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------- |
| `apiKey` | string | Yes | Cursor API key |
#### Output [#output-9]
| Parameter | Type | Description |
| --------- | ----- | ------------------------------ |
| `models` | array | Array of available model names |
### Cursor List Repositories [#cursor-list-repositories]
List the GitHub repositories accessible to the authenticated user. Returns API-aligned fields only.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------- |
| `apiKey` | string | Yes | Cursor API key |
#### Output [#output-10]
| Parameter | Type | Description |
| -------------- | ------ | -------------------------------- |
| `repositories` | array | Array of accessible repositories |
| ↳ `owner` | string | Repository owner |
| ↳ `name` | string | Repository name |
| ↳ `repository` | string | Repository URL |
### Cursor Get API Key Info [#cursor-get-api-key-info]
Retrieve details about the API key currently in use. Returns API-aligned fields only.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------- |
| `apiKey` | string | Yes | Cursor API key |
#### Output [#output-11]
| Parameter | Type | Description |
| ------------ | ------ | -------------------------- |
| `apiKeyName` | string | Name of the API key |
| `createdAt` | string | API key creation timestamp |
| `userEmail` | string | Email of the key owner |
---
# Dagster (/integrations/dagster)
{/* MANUAL-CONTENT-START:intro */}
[Dagster](https://dagster.io/) is an open-source data orchestration platform designed for building, testing, and monitoring data pipelines. It provides a unified model for defining data assets, scheduling jobs, and observing pipeline execution — whether running locally or deployed to Dagster+.
With Dagster, you can:
* **Orchestrate data pipelines**: Define and run jobs composed of ops and assets with full dependency tracking
* **Monitor executions**: Track run status, inspect logs, and debug failures step by step
* **Manage schedules and sensors**: Automate pipeline triggers on a cron schedule or in response to external events
* **Reexecute selectively**: Resume failed pipelines from the point of failure without rerunning successful steps
In Sim, the Dagster integration enables your agents to interact with a Dagster instance programmatically. Agents can launch and monitor job runs, retrieve execution logs, reexecute failed runs, and manage schedules and sensors — all as part of a larger automated workflow. Use Dagster as an orchestration layer your agents can control and observe, enabling data-driven automation that responds dynamically to pipeline outcomes.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Connect to a Dagster instance to launch job runs, monitor run status, list available jobs across repositories, terminate or delete runs, reexecute failed runs, fetch run logs, and manage schedules and sensors. API token only required for Dagster+.
## Actions [#actions]
### Dagster Launch Run [#dagster-launch-run]
Launch a job run on a Dagster instance.
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3000\\](http://localhost:3000\\)) |
| `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) |
| `repositoryLocationName` | string | Yes | Repository location (code location) name |
| `repositoryName` | string | Yes | Repository name within the code location |
| `jobName` | string | Yes | Name of the job to launch |
| `runConfigJson` | string | No | Run configuration as a JSON object (optional) |
| `tags` | string | No | Tags as a JSON array of \{key, value} objects (optional) |
#### Output [#output]
| Parameter | Type | Description |
| --------- | ------ | ------------------------------------------ |
| `runId` | string | The globally unique ID of the launched run |
### Dagster Get Run [#dagster-get-run]
Get the status and details of a Dagster run by its ID.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3000\\](http://localhost:3000\\)) |
| `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) |
| `runId` | string | Yes | The ID of the run to retrieve |
#### Output [#output-1]
| Parameter | Type | Description |
| ---------------- | ------- | ---------------------------------------------------------------------------------------------------- |
| `runId` | string | Run ID |
| `jobName` | string | Name of the job this run belongs to |
| `status` | string | Run status (QUEUED, NOT\_STARTED, STARTING, MANAGED, STARTED, SUCCESS, FAILURE, CANCELING, CANCELED) |
| `mode` | string | Execution mode of the run |
| `startTime` | number | Run start time as Unix timestamp |
| `endTime` | number | Run end time as Unix timestamp |
| `creationTime` | number | Time the run was created as Unix timestamp |
| `updateTime` | number | Time the run was last updated as Unix timestamp |
| `parentRunId` | string | ID of the immediate parent run (for re-executions) |
| `rootRunId` | string | ID of the root run in the re-execution group |
| `canTerminate` | boolean | Whether the run can currently be terminated |
| `assetSelection` | json | Asset keys targeted by the run, as slash-joined strings |
| `runConfigYaml` | string | Run configuration as YAML |
| `tags` | json | Run tags as array of \{key, value} objects |
### Dagster Get Run Logs [#dagster-get-run-logs]
Fetch execution event logs for a Dagster run.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001\\](http://localhost:3001\\)) |
| `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) |
| `runId` | string | Yes | The ID of the run to fetch logs for |
| `afterCursor` | string | No | Cursor for paginating through log events (from a previous response) |
| `limit` | number | No | Maximum number of log events to return |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------- | ------- | ------------------------------------------------------------------------- |
| `events` | json | Array of log events (type, message, timestamp, level, stepKey, eventType) |
| ↳ `type` | string | GraphQL typename of the event |
| ↳ `message` | string | Human-readable log message |
| ↳ `timestamp` | string | Event timestamp as a Unix epoch string |
| ↳ `level` | string | Log level (DEBUG, INFO, WARNING, ERROR, CRITICAL) |
| ↳ `stepKey` | string | Step key, if the event is step-scoped |
| ↳ `eventType` | string | Dagster event type enum value |
| `cursor` | string | Cursor for fetching the next page of log events |
| `hasMore` | boolean | Whether more log events are available beyond this page |
### Dagster List Runs [#dagster-list-runs]
List Dagster runs with optional filters by job name, status, and creation-time range, plus cursor pagination.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001\\](http://localhost:3001\\)) |
| `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) |
| `jobName` | string | No | Filter runs by job name (optional) |
| `statuses` | string | No | Comma-separated run statuses to filter by, e.g. "SUCCESS,FAILURE" (optional) |
| `createdAfter` | number | No | Only return runs created at or after this Unix timestamp in seconds (optional) |
| `createdBefore` | number | No | Only return runs created at or before this Unix timestamp in seconds (optional) |
| `cursor` | string | No | Run ID to page after, from a previous response cursor (optional) |
| `limit` | number | No | Maximum number of runs to return (default 20) |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------- | ------- | ----------------------------------------------------------------------- |
| `runs` | json | Array of runs |
| ↳ `runId` | string | Run ID |
| ↳ `jobName` | string | Job name |
| ↳ `status` | string | Run status |
| ↳ `tags` | json | Run tags as array of \{key, value} objects |
| ↳ `startTime` | number | Start time as Unix timestamp |
| ↳ `endTime` | number | End time as Unix timestamp |
| `cursor` | string | Run ID of the last returned run — pass as cursor to fetch the next page |
| `hasMore` | boolean | Whether more runs are likely available beyond this page |
### Dagster List Jobs [#dagster-list-jobs]
List all jobs across repositories in a Dagster instance.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001\\](http://localhost:3001\\)) |
| `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------ |
| `jobs` | json | Array of jobs with name and repositoryName |
| ↳ `name` | string | Job name |
| ↳ `repositoryName` | string | Repository name |
### Dagster Reexecute Run [#dagster-reexecute-run]
Reexecute an existing Dagster run, optionally resuming only from failed steps.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001\\](http://localhost:3001\\)) |
| `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) |
| `parentRunId` | string | Yes | The ID of the run to reexecute |
| `strategy` | string | Yes | Reexecution strategy: ALL\_STEPS reruns everything, FROM\_FAILURE resumes from failed steps, FROM\_ASSET\_FAILURE resumes from failed assets |
#### Output [#output-5]
| Parameter | Type | Description |
| --------- | ------ | -------------------------------------------- |
| `runId` | string | The ID of the newly launched reexecution run |
### Dagster Terminate Run [#dagster-terminate-run]
Terminate an in-progress Dagster run.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001\\](http://localhost:3001\\)) |
| `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) |
| `runId` | string | Yes | The ID of the run to terminate |
#### Output [#output-6]
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------------- |
| `success` | boolean | Whether the run was successfully terminated |
| `runId` | string | The ID of the terminated run |
| `message` | string | Error or status message if termination failed |
### Dagster Delete Run [#dagster-delete-run]
Permanently delete a Dagster run record.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001\\](http://localhost:3001\\)) |
| `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) |
| `runId` | string | Yes | The ID of the run to delete |
#### Output [#output-7]
| Parameter | Type | Description |
| --------- | ------ | ------------------------- |
| `runId` | string | The ID of the deleted run |
### Dagster List Schedules [#dagster-list-schedules]
List all schedules in a Dagster repository, optionally filtered by status.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ------------------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001\\](http://localhost:3001\\)) |
| `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) |
| `repositoryLocationName` | string | Yes | Repository location (code location) name |
| `repositoryName` | string | Yes | Repository name within the code location |
| `scheduleStatus` | string | No | Filter schedules by status: RUNNING or STOPPED (omit to return all) |
#### Output [#output-8]
| Parameter | Type | Description |
| --------------------- | ------ | -------------------------------------------------------------------------------------------- |
| `schedules` | json | Array of schedules (name, cronSchedule, jobName, status, id, description, executionTimezone) |
| ↳ `name` | string | Schedule name |
| ↳ `cronSchedule` | string | Cron expression for the schedule |
| ↳ `jobName` | string | Job the schedule targets |
| ↳ `status` | string | Schedule status: RUNNING or STOPPED |
| ↳ `id` | string | Instigator state ID — use this to start or stop the schedule |
| ↳ `description` | string | Human-readable schedule description |
| ↳ `executionTimezone` | string | Timezone for cron evaluation |
### Dagster Start Schedule [#dagster-start-schedule]
Enable (start) a schedule in a Dagster repository.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ------------------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001\\](http://localhost:3001\\)) |
| `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) |
| `repositoryLocationName` | string | Yes | Repository location (code location) name |
| `repositoryName` | string | Yes | Repository name within the code location |
| `scheduleName` | string | Yes | Name of the schedule to start |
#### Output [#output-9]
| Parameter | Type | Description |
| --------- | ------ | -------------------------------------------- |
| `id` | string | Instigator state ID of the schedule |
| `status` | string | Updated schedule status (RUNNING or STOPPED) |
### Dagster Stop Schedule [#dagster-stop-schedule]
Disable (stop) a running schedule in Dagster.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001\\](http://localhost:3001\\)) |
| `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) |
| `instigationStateId` | string | Yes | InstigationState ID of the schedule to stop — available from dagster\_list\_schedules output |
#### Output [#output-10]
| Parameter | Type | Description |
| --------- | ------ | -------------------------------------------- |
| `id` | string | Instigator state ID of the schedule |
| `status` | string | Updated schedule status (RUNNING or STOPPED) |
### Dagster List Sensors [#dagster-list-sensors]
List all sensors in a Dagster repository, optionally filtered by status.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ------------------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001\\](http://localhost:3001\\)) |
| `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) |
| `repositoryLocationName` | string | Yes | Repository location (code location) name |
| `repositoryName` | string | Yes | Repository name within the code location |
| `sensorStatus` | string | No | Filter sensors by status: RUNNING or STOPPED (omit to return all) |
#### Output [#output-11]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------------------------------------------------------------------------------- |
| `sensors` | json | Array of sensors (name, sensorType, status, id, description) |
| ↳ `name` | string | Sensor name |
| ↳ `sensorType` | string | Sensor type (ASSET, AUTO\_MATERIALIZE, FRESHNESS\_POLICY, MULTI\_ASSET, RUN\_STATUS, STANDARD, UNKNOWN) |
| ↳ `status` | string | Sensor status: RUNNING or STOPPED |
| ↳ `id` | string | Instigator state ID — use this to start or stop the sensor |
| ↳ `description` | string | Human-readable sensor description |
### Dagster Start Sensor [#dagster-start-sensor]
Enable (start) a sensor in a Dagster repository.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ------------------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001\\](http://localhost:3001\\)) |
| `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) |
| `repositoryLocationName` | string | Yes | Repository location (code location) name |
| `repositoryName` | string | Yes | Repository name within the code location |
| `sensorName` | string | Yes | Name of the sensor to start |
#### Output [#output-12]
| Parameter | Type | Description |
| --------- | ------ | ------------------------------------------ |
| `id` | string | Instigator state ID of the sensor |
| `status` | string | Updated sensor status (RUNNING or STOPPED) |
### Dagster Stop Sensor [#dagster-stop-sensor]
Disable (stop) a running sensor in Dagster.
#### Input [#input-13]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001\\](http://localhost:3001\\)) |
| `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) |
| `instigationStateId` | string | Yes | InstigationState ID of the sensor to stop — available from dagster\_list\_sensors output |
#### Output [#output-13]
| Parameter | Type | Description |
| --------- | ------ | ------------------------------------------ |
| `id` | string | Instigator state ID of the sensor |
| `status` | string | Updated sensor status (RUNNING or STOPPED) |
### Dagster List Assets [#dagster-list-assets]
List assets tracked by a Dagster instance, optionally filtered by key prefix.
#### Input [#input-14]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001\\](http://localhost:3001\\)) |
| `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) |
| `prefix` | string | No | Slash-delimited asset key prefix to filter by, e.g. "raw" or "raw/events" (optional) |
| `cursor` | string | No | Asset key cursor from a previous response, for pagination (optional) |
| `limit` | number | No | Maximum number of assets to return per page (default 100) |
#### Output [#output-14]
| Parameter | Type | Description |
| ------------ | ------- | --------------------------------------------------------- |
| `assets` | json | Array of assets (assetKey, path) |
| ↳ `assetKey` | string | Slash-joined asset key |
| ↳ `path` | json | Asset key path segments |
| `cursor` | string | Cursor to pass on the next call to fetch more assets |
| `hasMore` | boolean | Whether more assets are likely available beyond this page |
### Dagster Get Asset [#dagster-get-asset]
Get an asset definition and its latest materialization by asset key.
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001\\](http://localhost:3001\\)) |
| `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) |
| `assetKey` | string | Yes | Slash-delimited asset key, e.g. "my\_asset" or "raw/events" |
#### Output [#output-15]
| Parameter | Type | Description |
| ----------------------- | ------- | ------------------------------------------------------------------ |
| `assetKey` | string | Slash-joined asset key |
| `path` | json | Asset key path segments |
| `groupName` | string | Asset group the definition belongs to |
| `description` | string | Asset description |
| `jobNames` | json | Names of jobs that can materialize this asset |
| `computeKind` | string | Compute kind tag (e.g., python, dbt, spark) |
| `isPartitioned` | boolean | Whether the asset is partitioned |
| `latestMaterialization` | json | Most recent materialization (runId, timestamp, partition, stepKey) |
| ↳ `runId` | string | Run that produced the materialization |
| ↳ `timestamp` | string | Materialization timestamp (epoch ms string) |
| ↳ `partition` | string | Partition key, if partitioned |
| ↳ `stepKey` | string | Step key that emitted it |
### Dagster Materialize Assets [#dagster-materialize-assets]
Materialize selected assets by launching their asset job with an asset selection.
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ------------------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001\\](http://localhost:3001\\)) |
| `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) |
| `repositoryLocationName` | string | Yes | Repository location (code location) name |
| `repositoryName` | string | Yes | Repository name within the code location |
| `jobName` | string | Yes | Asset job that contains the assets, e.g. "\_\_ASSET\_JOB" or a named asset job |
| `assetSelection` | string | Yes | Comma- or newline-separated asset keys to materialize, each slash-delimited (e.g. "raw/events, summary") |
| `tags` | string | No | Tags as a JSON array of \{key, value} objects (optional) |
#### Output [#output-16]
| Parameter | Type | Description |
| --------- | ------ | ---------------------------------------------------------- |
| `runId` | string | The globally unique ID of the launched materialization run |
### Dagster Report Asset Materialization [#dagster-report-asset-materialization]
Report an external (runless) materialization or observation for an asset.
#### Input [#input-17]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001\\](http://localhost:3001\\)) |
| `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) |
| `assetKey` | string | Yes | Slash-delimited asset key to report against, e.g. "my\_asset" or "raw/events" |
| `eventType` | string | No | Event type to report: ASSET\_MATERIALIZATION (default) or ASSET\_OBSERVATION |
| `partitionKeys` | string | No | Comma-separated partition keys to report against (optional) |
| `description` | string | No | Human-readable description for the reported event (optional) |
#### Output [#output-17]
| Parameter | Type | Description |
| ---------- | ------- | ----------------------------------------------------- |
| `success` | boolean | Whether the event was reported successfully |
| `assetKey` | string | Slash-joined asset key the event was reported against |
### Dagster Wipe Asset [#dagster-wipe-asset]
DESTRUCTIVE: permanently wipes ALL materialization history (every partition) for an asset. This cannot be undone.
#### Input [#input-18]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001\\](http://localhost:3001\\)) |
| `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) |
| `assetKey` | string | Yes | Slash-delimited asset key to wipe, e.g. "my\_asset" or "raw/events" |
#### Output [#output-18]
| Parameter | Type | Description |
| ---------- | ------- | ---------------------------------------- |
| `success` | boolean | Whether the asset was wiped successfully |
| `assetKey` | string | Slash-joined asset key that was wiped |
---
# Databricks (/integrations/databricks)
{/* MANUAL-CONTENT-START:intro */}
[Databricks](https://www.databricks.com/) is a unified data analytics platform built on Apache Spark, providing a collaborative environment for data engineering, data science, and machine learning. Databricks combines data warehousing, ETL, and AI workloads into a single lakehouse architecture, with support for SQL analytics, job orchestration, and cluster management across major cloud providers.
With the Databricks integration in Sim, you can:
* **Execute SQL queries**: Run SQL statements against Databricks SQL warehouses with support for parameterized queries and Unity Catalog
* **Manage jobs**: List, trigger, and monitor Databricks job runs programmatically
* **Track run status**: Get detailed run information including timing, state, and output results
* **Control clusters**: List and inspect cluster configurations, states, and resource details
* **Retrieve run outputs**: Access notebook results, error messages, and logs from completed job runs
In Sim, the Databricks integration enables your agents to interact with your data lakehouse as part of automated workflows. Agents can query large-scale datasets, orchestrate ETL pipelines by triggering jobs, monitor job execution, and retrieve results—all without leaving the workflow canvas. This is ideal for automated reporting, data pipeline management, scheduled analytics, and building AI-driven data workflows that react to query results or job outcomes.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Connect to Databricks to execute SQL queries against SQL warehouses, trigger and monitor job runs, manage clusters, and retrieve run outputs. Requires a Personal Access Token and workspace host URL.
## Actions [#actions]
### Databricks Execute SQL [#databricks-execute-sql]
Execute a SQL statement against a Databricks SQL warehouse and return results inline. Supports parameterized queries and Unity Catalog.
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------------------------------------------------------- |
| `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) |
| `apiKey` | string | Yes | Databricks Personal Access Token |
| `warehouseId` | string | Yes | The ID of the SQL warehouse to execute against |
| `statement` | string | Yes | The SQL statement to execute (max 16 MiB) |
| `catalog` | string | No | Unity Catalog name (equivalent to USE CATALOG) |
| `schema` | string | No | Schema name (equivalent to USE SCHEMA) |
| `rowLimit` | number | No | Maximum number of rows to return |
| `waitTimeout` | string | No | How long to wait for results (e.g., "50s"). Range: "0s" or "5s" to "50s". Default: "50s" |
#### Output [#output]
| Parameter | Type | Description |
| ------------- | ------- | ------------------------------------------------------------------------------------- |
| `statementId` | string | Unique identifier for the executed statement |
| `status` | string | Execution status (SUCCEEDED, PENDING, RUNNING, FAILED, CANCELED, CLOSED) |
| `columns` | array | Column schema of the result set |
| ↳ `name` | string | Column name |
| ↳ `position` | number | Column position (0-based) |
| ↳ `typeName` | string | Column type (STRING, INT, LONG, DOUBLE, BOOLEAN, TIMESTAMP, DATE, DECIMAL, etc.) |
| `data` | array | Result rows as a 2D array of strings where each inner array is a row of column values |
| `totalRows` | number | Total number of rows in the result |
| `truncated` | boolean | Whether the result set was truncated due to row\_limit or byte\_limit |
### Databricks Get Statement [#databricks-get-statement]
Poll a SQL statement by its ID to retrieve status and results. Use this after Execute SQL when a query runs longer than the wait timeout.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) |
| `apiKey` | string | Yes | Databricks Personal Access Token |
| `statementId` | string | Yes | The ID of the statement to fetch (returned by Execute SQL) |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------- | ------- | ------------------------------------------------------------------------------------- |
| `statementId` | string | Unique identifier for the statement |
| `status` | string | Execution status (SUCCEEDED, PENDING, RUNNING, FAILED, CANCELED, CLOSED) |
| `columns` | array | Column schema of the result set |
| ↳ `name` | string | Column name |
| ↳ `position` | number | Column position (0-based) |
| ↳ `typeName` | string | Column type (STRING, INT, LONG, DOUBLE, BOOLEAN, TIMESTAMP, DATE, DECIMAL, etc.) |
| `data` | array | Result rows as a 2D array of strings where each inner array is a row of column values |
| `totalRows` | number | Total number of rows in the result |
| `truncated` | boolean | Whether the result set was truncated due to row\_limit or byte\_limit |
### Databricks List Warehouses [#databricks-list-warehouses]
List all SQL warehouses in a Databricks workspace including their size, state, and type. Use this to discover the warehouse ID needed for Execute SQL.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) |
| `apiKey` | string | Yes | Databricks Personal Access Token |
#### Output [#output-2]
| Parameter | Type | Description |
| --------------------------- | ------- | ----------------------------------------------------------------------- |
| `warehouses` | array | List of SQL warehouses in the workspace |
| ↳ `warehouseId` | string | Unique warehouse identifier |
| ↳ `name` | string | Warehouse display name |
| ↳ `clusterSize` | string | Warehouse size (e.g., 2X-Small, Small, Medium, Large) |
| ↳ `state` | string | Current state (STARTING, RUNNING, STOPPING, STOPPED, DELETING, DELETED) |
| ↳ `warehouseType` | string | Warehouse type (CLASSIC, PRO) |
| ↳ `creatorName` | string | Email of the warehouse creator |
| ↳ `autoStopMinutes` | number | Minutes of inactivity before auto-stop (0 = disabled) |
| ↳ `numClusters` | number | Current number of running clusters |
| ↳ `minNumClusters` | number | Minimum cluster count for scaling |
| ↳ `maxNumClusters` | number | Maximum cluster count for scaling |
| ↳ `numActiveSessions` | number | Number of active sessions |
| ↳ `enableServerlessCompute` | boolean | Whether serverless compute is enabled |
### Databricks List Jobs [#databricks-list-jobs]
List all jobs in a Databricks workspace with optional filtering by name.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | ------------------------------------------------------------------- |
| `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) |
| `apiKey` | string | Yes | Databricks Personal Access Token |
| `limit` | number | No | Maximum number of jobs to return (range 1-100, default 20) |
| `offset` | number | No | Offset for pagination |
| `name` | string | No | Filter jobs by exact name (case-insensitive) |
| `expandTasks` | boolean | No | Include task and cluster details in the response (max 100 elements) |
#### Output [#output-3]
| Parameter | Type | Description |
| --------------------- | ------- | ---------------------------------------------- |
| `jobs` | array | List of jobs in the workspace |
| ↳ `jobId` | number | Unique job identifier |
| ↳ `name` | string | Job name |
| ↳ `createdTime` | number | Job creation timestamp (epoch ms) |
| ↳ `creatorUserName` | string | Email of the job creator |
| ↳ `maxConcurrentRuns` | number | Maximum number of concurrent runs |
| ↳ `format` | string | Job format (SINGLE\_TASK or MULTI\_TASK) |
| `hasMore` | boolean | Whether more jobs are available for pagination |
| `nextPageToken` | string | Token for fetching the next page of results |
### Databricks Get Job [#databricks-get-job]
Get the full definition and settings of a single Databricks job by its job ID.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) |
| `apiKey` | string | Yes | Databricks Personal Access Token |
| `jobId` | number | Yes | The canonical identifier of the job to retrieve |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------------- | ------ | ----------------------------------------------------------------------------------- |
| `jobId` | number | The job ID |
| `name` | string | Job name |
| `creatorUserName` | string | Email of the job creator |
| `runAsUserName` | string | User the job runs as |
| `createdTime` | number | Job creation timestamp (epoch ms) |
| `format` | string | Job format (SINGLE\_TASK or MULTI\_TASK) |
| `maxConcurrentRuns` | number | Maximum number of concurrent runs |
| `timeoutSeconds` | number | Job-level timeout in seconds (0 or null means no timeout) |
| `schedule` | object | Cron schedule configuration (quartz\_cron\_expression, timezone\_id, pause\_status) |
| `tags` | object | Key-value tags applied to the job |
| `tasks` | array | Task definitions for the job (empty for single-task jobs) |
### Databricks Run Job [#databricks-run-job]
Trigger an existing Databricks job to run immediately with optional job-level or notebook parameters.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ------------------------------------------------------------------------ |
| `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) |
| `apiKey` | string | Yes | Databricks Personal Access Token |
| `jobId` | number | Yes | The ID of the job to trigger |
| `jobParameters` | string | No | Job-level parameter overrides as a JSON object (e.g., \{"key": "value"}) |
| `notebookParams` | string | No | Notebook task parameters as a JSON object (e.g., \{"param1": "value1"}) |
| `idempotencyToken` | string | No | Idempotency token to prevent duplicate runs (max 64 characters) |
#### Output [#output-5]
| Parameter | Type | Description |
| ------------- | ------ | --------------------------------------------------------- |
| `runId` | number | The globally unique ID of the triggered run |
| `numberInJob` | number | The sequence number of this run among all runs of the job |
### Databricks Get Run [#databricks-get-run]
Get the status, timing, and details of a Databricks job run by its run ID.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ----------------------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) |
| `apiKey` | string | Yes | Databricks Personal Access Token |
| `runId` | number | Yes | The canonical identifier of the run |
| `includeHistory` | boolean | No | Include repair history in the response |
| `includeResolvedValues` | boolean | No | Include resolved parameter values in the response |
#### Output [#output-6]
| Parameter | Type | Description |
| --------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------- |
| `runId` | number | The run ID |
| `jobId` | number | The job ID this run belongs to |
| `runName` | string | Name of the run |
| `runType` | string | Type of run (JOB\_RUN, WORKFLOW\_RUN, SUBMIT\_RUN) |
| `attemptNumber` | number | Retry attempt number (0 for initial attempt) |
| `state` | object | Run state information |
| ↳ `lifeCycleState` | string | Lifecycle state (QUEUED, PENDING, RUNNING, TERMINATING, TERMINATED, SKIPPED, INTERNAL\_ERROR, BLOCKED, WAITING\_FOR\_RETRY) |
| ↳ `resultState` | string | Result state (SUCCESS, FAILED, TIMEDOUT, CANCELED, SUCCESS\_WITH\_FAILURES, UPSTREAM\_FAILED, UPSTREAM\_CANCELED, EXCLUDED) |
| ↳ `stateMessage` | string | Descriptive message for the current state |
| ↳ `userCancelledOrTimedout` | boolean | Whether the run was cancelled by user or timed out |
| `startTime` | number | Run start timestamp (epoch ms) |
| `endTime` | number | Run end timestamp (epoch ms, 0 if still running) |
| `setupDuration` | number | Cluster setup duration (ms) |
| `executionDuration` | number | Execution duration (ms) |
| `cleanupDuration` | number | Cleanup duration (ms) |
| `queueDuration` | number | Time spent in queue before execution (ms) |
| `runPageUrl` | string | URL to the run detail page in Databricks UI |
| `creatorUserName` | string | Email of the user who triggered the run |
### Databricks List Runs [#databricks-list-runs]
List job runs in a Databricks workspace with optional filtering by job, status, and time range.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| --------------- | ------- | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) |
| `apiKey` | string | Yes | Databricks Personal Access Token |
| `jobId` | number | No | Filter runs by job ID. Omit to list runs across all jobs |
| `activeOnly` | boolean | No | Only include active runs (PENDING, RUNNING, or TERMINATING) |
| `completedOnly` | boolean | No | Only include completed runs |
| `limit` | number | No | Maximum number of runs to return (range 1-24, default 20) |
| `offset` | number | No | Offset for pagination |
| `runType` | string | No | Filter by run type (JOB\_RUN, WORKFLOW\_RUN, SUBMIT\_RUN) |
| `startTimeFrom` | number | No | Filter runs started at or after this timestamp (epoch ms) |
| `startTimeTo` | number | No | Filter runs started at or before this timestamp (epoch ms) |
#### Output [#output-7]
| Parameter | Type | Description |
| --------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------- |
| `runs` | array | List of job runs |
| ↳ `runId` | number | Unique run identifier |
| ↳ `jobId` | number | Job this run belongs to |
| ↳ `runName` | string | Run name |
| ↳ `runType` | string | Run type (JOB\_RUN, WORKFLOW\_RUN, SUBMIT\_RUN) |
| ↳ `state` | object | Run state information |
| ↳ `lifeCycleState` | string | Lifecycle state (QUEUED, PENDING, RUNNING, TERMINATING, TERMINATED, SKIPPED, INTERNAL\_ERROR, BLOCKED, WAITING\_FOR\_RETRY) |
| ↳ `resultState` | string | Result state (SUCCESS, FAILED, TIMEDOUT, CANCELED, SUCCESS\_WITH\_FAILURES, UPSTREAM\_FAILED, UPSTREAM\_CANCELED, EXCLUDED) |
| ↳ `stateMessage` | string | Descriptive state message |
| ↳ `userCancelledOrTimedout` | boolean | Whether the run was cancelled by user or timed out |
| ↳ `startTime` | number | Run start timestamp (epoch ms) |
| ↳ `endTime` | number | Run end timestamp (epoch ms) |
| `hasMore` | boolean | Whether more runs are available for pagination |
| `nextPageToken` | string | Token for fetching the next page of results |
### Databricks Cancel Run [#databricks-cancel-run]
Cancel a running or pending Databricks job run. Cancellation is asynchronous; poll the run status to confirm termination.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) |
| `apiKey` | string | Yes | Databricks Personal Access Token |
| `runId` | number | Yes | The canonical identifier of the run to cancel |
#### Output [#output-8]
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------- |
| `success` | boolean | Whether the cancel request was accepted |
### Databricks Get Run Output [#databricks-get-run-output]
Get the output of a completed Databricks job run, including notebook results, error messages, and logs. For multi-task jobs, use the task run ID (not the parent run ID).
#### Input [#input-9]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------------------------- |
| `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) |
| `apiKey` | string | Yes | Databricks Personal Access Token |
| `runId` | number | Yes | The run ID to get output for. For multi-task jobs, use the task run ID |
#### Output [#output-9]
| Parameter | Type | Description |
| ---------------- | ------- | ----------------------------------------------------------------------------- |
| `notebookOutput` | object | Notebook task output (from dbutils.notebook.exit()) |
| ↳ `result` | string | Value passed to dbutils.notebook.exit() (max 5 MB) |
| ↳ `truncated` | boolean | Whether the result was truncated |
| `error` | string | Error message if the run failed or output is unavailable |
| `errorTrace` | string | Error stack trace if available |
| `logs` | string | Log output (last 5 MB) from spark\_jar, spark\_python, or python\_wheel tasks |
| `logsTruncated` | boolean | Whether the log output was truncated |
### Databricks List Clusters [#databricks-list-clusters]
List all clusters in a Databricks workspace including their state, configuration, and resource details.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) |
| `apiKey` | string | Yes | Databricks Personal Access Token |
#### Output [#output-10]
| Parameter | Type | Description |
| -------------------------- | ------ | ----------------------------------------------------------------------------------------------- |
| `clusters` | array | List of clusters in the workspace |
| ↳ `clusterId` | string | Unique cluster identifier |
| ↳ `clusterName` | string | Cluster display name |
| ↳ `state` | string | Current state (PENDING, RUNNING, RESTARTING, RESIZING, TERMINATING, TERMINATED, ERROR, UNKNOWN) |
| ↳ `stateMessage` | string | Human-readable state description |
| ↳ `creatorUserName` | string | Email of the cluster creator |
| ↳ `sparkVersion` | string | Spark runtime version (e.g., 13.3.x-scala2.12) |
| ↳ `nodeTypeId` | string | Worker node type identifier |
| ↳ `driverNodeTypeId` | string | Driver node type identifier |
| ↳ `numWorkers` | number | Number of worker nodes (for fixed-size clusters) |
| ↳ `autoscale` | object | Autoscaling configuration (null for fixed-size clusters) |
| ↳ `minWorkers` | number | Minimum number of workers |
| ↳ `maxWorkers` | number | Maximum number of workers |
| ↳ `clusterSource` | string | Origin (API, UI, JOB, MODELS, PIPELINE, PIPELINE\_MAINTENANCE, SQL) |
| ↳ `autoterminationMinutes` | number | Minutes of inactivity before auto-termination (0 = disabled) |
| ↳ `startTime` | number | Cluster start timestamp (epoch ms) |
### Databricks Get Cluster [#databricks-get-cluster]
Get the state, configuration, and resource details of a single Databricks cluster by its cluster ID.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------------- |
| `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) |
| `apiKey` | string | Yes | Databricks Personal Access Token |
| `clusterId` | string | Yes | The ID of the cluster to retrieve |
#### Output [#output-11]
| Parameter | Type | Description |
| -------------------------- | ------ | ----------------------------------------------------------------------------------------------- |
| `cluster` | object | Cluster detail |
| ↳ `clusterId` | string | Unique cluster identifier |
| ↳ `clusterName` | string | Cluster display name |
| ↳ `state` | string | Current state (PENDING, RUNNING, RESTARTING, RESIZING, TERMINATING, TERMINATED, ERROR, UNKNOWN) |
| ↳ `stateMessage` | string | Human-readable state description |
| ↳ `creatorUserName` | string | Email of the cluster creator |
| ↳ `sparkVersion` | string | Spark runtime version (e.g., 13.3.x-scala2.12) |
| ↳ `nodeTypeId` | string | Worker node type identifier |
| ↳ `driverNodeTypeId` | string | Driver node type identifier |
| ↳ `numWorkers` | number | Number of worker nodes (for fixed-size clusters) |
| ↳ `autoscale` | object | Autoscaling configuration (null for fixed-size clusters) |
| ↳ `minWorkers` | number | Minimum number of workers |
| ↳ `maxWorkers` | number | Maximum number of workers |
| ↳ `clusterSource` | string | Origin (API, UI, JOB, MODELS, PIPELINE, PIPELINE\_MAINTENANCE, SQL) |
| ↳ `autoterminationMinutes` | number | Minutes of inactivity before auto-termination (0 = disabled) |
| ↳ `startTime` | number | Cluster start timestamp (epoch ms) |
---
# Datadog (/integrations/datadog)
{/* MANUAL-CONTENT-START:intro */}
[Datadog](https://datadoghq.com/) is a comprehensive monitoring and analytics platform for infrastructure, applications, logs, and more. It enables organizations to gain real-time visibility into the health and performance of systems, detect anomalies, and automate incident response.
With Datadog, you can:
* **Monitor metrics**: Collect, visualize, and analyze metrics from servers, cloud services, and custom applications.
* **Query time series data**: Run advanced queries on performance metrics for trend analysis and reporting.
* **Manage monitors and events**: Set up monitors to detect issues, trigger alerts, and create events for observability.
* **Handle downtimes**: Schedule and programmatically manage planned downtimes to suppress alerts during maintenance.
* **Analyze logs and traces** *(with additional setup in Datadog)*: Centralize and inspect logs or distributed traces for deeper troubleshooting.
Sim’s Datadog integration lets your agents automate these operations and interact with your Datadog account programmatically. Use it to submit custom metrics, query timeseries data, manage monitors, create events, and streamline your monitoring workflows directly within Sim automations.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Datadog monitoring into workflows. Submit metrics, manage monitors, query logs, create events, handle downtimes, and more.
## Actions [#actions]
### Datadog Submit Metrics [#datadog-submit-metrics]
Submit custom metrics to Datadog. Use for tracking application performance, business metrics, or custom monitoring data.
#### Input [#input]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `series` | string | Yes | JSON array of metric series to submit. Each series should include metric name, type (gauge/rate/count), points (timestamp/value pairs), and optional tags. |
| `apiKey` | string | Yes | Datadog API key |
| `site` | string | No | Datadog site/region (default: datadoghq.com) |
#### Output [#output]
| Parameter | Type | Description |
| --------- | ------- | ----------------------------------------------- |
| `success` | boolean | Whether the metrics were submitted successfully |
| `errors` | array | Any errors that occurred during submission |
### Datadog Query Timeseries [#datadog-query-timeseries]
Query metric timeseries data from Datadog. Use for analyzing trends, creating reports, or retrieving metric values.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `query` | string | Yes | Datadog metrics query (e.g., "avg:system.cpu.user\{\*}", "sum:nginx.requests\{env:prod}.as\_count()") |
| `from` | number | Yes | Start time as Unix timestamp in seconds (e.g., 1705320000) |
| `to` | number | Yes | End time as Unix timestamp in seconds (e.g., 1705323600) |
| `apiKey` | string | Yes | Datadog API key |
| `applicationKey` | string | Yes | Datadog Application key |
| `site` | string | No | Datadog site/region (default: datadoghq.com) |
#### Output [#output-1]
| Parameter | Type | Description |
| --------- | ------ | ---------------------------------------------------------------- |
| `series` | array | Array of timeseries data with metric name, tags, and data points |
| `status` | string | Query status |
### Datadog Create Event [#datadog-create-event]
Post an event to the Datadog event stream. Use for deployment notifications, alerts, or any significant occurrences.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ----------------------------------------------------------------------------------------------- |
| `title` | string | Yes | Event title |
| `text` | string | Yes | Event body/description. Supports markdown. |
| `alertType` | string | No | Alert type: error, warning, info, success, user\_update, recommendation, or snapshot |
| `priority` | string | No | Event priority: normal or low |
| `host` | string | No | Host name to associate with this event (e.g., "web-server-01", "prod-api-1") |
| `tags` | string | No | Comma-separated list of tags (e.g., "env:production,service:api", "team:backend,priority:high") |
| `aggregationKey` | string | No | Key to aggregate events together |
| `sourceTypeName` | string | No | Source type name for the event |
| `dateHappened` | number | No | Unix timestamp in seconds when the event occurred (e.g., 1705320000, defaults to now) |
| `apiKey` | string | Yes | Datadog API key |
| `site` | string | No | Datadog site/region (default: datadoghq.com) |
#### Output [#output-2]
| Parameter | Type | Description |
| ----------------- | ------ | ---------------------------------- |
| `event` | object | The created event details |
| ↳ `id` | number | Event ID |
| ↳ `title` | string | Event title |
| ↳ `text` | string | Event text |
| ↳ `date_happened` | number | Unix timestamp when event occurred |
| ↳ `priority` | string | Event priority |
| ↳ `alert_type` | string | Alert type |
| ↳ `host` | string | Associated host |
| ↳ `tags` | array | Event tags |
| ↳ `url` | string | URL to view the event in Datadog |
### Datadog Create Monitor [#datadog-create-monitor]
Create a new monitor/alert in Datadog. Monitors can track metrics, service checks, events, and more.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `name` | string | Yes | Monitor name |
| `type` | string | Yes | Monitor type: metric alert, service check, event alert, process alert, log alert, query alert, composite, synthetics alert, slo alert |
| `query` | string | Yes | Monitor query (e.g., "avg(last\_5m):avg:system.cpu.idle\{\*} \< 20", "logs("status:error").index("main").rollup("count").last("5m") > 100") |
| `message` | string | No | Message to include with notifications. Can include @-mentions and markdown. |
| `tags` | string | No | Comma-separated list of tags |
| `priority` | number | No | Monitor priority (1-5, where 1 is highest) |
| `options` | string | No | JSON string of monitor options (thresholds, notify\_no\_data, renotify\_interval, etc.) |
| `apiKey` | string | Yes | Datadog API key |
| `applicationKey` | string | Yes | Datadog Application key |
| `site` | string | No | Datadog site/region (default: datadoghq.com) |
#### Output [#output-3]
| Parameter | Type | Description |
| ----------------- | ------ | --------------------------- |
| `monitor` | object | The created monitor details |
| ↳ `id` | number | Monitor ID |
| ↳ `name` | string | Monitor name |
| ↳ `type` | string | Monitor type |
| ↳ `query` | string | Monitor query |
| ↳ `message` | string | Notification message |
| ↳ `tags` | array | Monitor tags |
| ↳ `priority` | number | Monitor priority |
| ↳ `overall_state` | string | Current monitor state |
| ↳ `created` | string | Creation timestamp |
| ↳ `modified` | string | Last modification timestamp |
### Datadog Get Monitor [#datadog-get-monitor]
Retrieve details of a specific monitor by ID.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | ------------------------------------------------------------------------------------- |
| `monitorId` | string | Yes | The ID of the monitor to retrieve (e.g., "12345678") |
| `groupStates` | string | No | Comma-separated group states to include (e.g., "alert,warn", "alert,warn,no data,ok") |
| `withDowntimes` | boolean | No | Include downtime data with the monitor |
| `apiKey` | string | Yes | Datadog API key |
| `applicationKey` | string | Yes | Datadog Application key |
| `site` | string | No | Datadog site/region (default: datadoghq.com) |
#### Output [#output-4]
| Parameter | Type | Description |
| ----------------- | ------ | --------------------------- |
| `monitor` | object | The monitor details |
| ↳ `id` | number | Monitor ID |
| ↳ `name` | string | Monitor name |
| ↳ `type` | string | Monitor type |
| ↳ `query` | string | Monitor query |
| ↳ `message` | string | Notification message |
| ↳ `tags` | array | Monitor tags |
| ↳ `priority` | number | Monitor priority |
| ↳ `overall_state` | string | Current monitor state |
| ↳ `created` | string | Creation timestamp |
| ↳ `modified` | string | Last modification timestamp |
### Datadog List Monitors [#datadog-list-monitors]
List all monitors in Datadog with optional filtering by name, tags, or state.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | --------------------------------------------------------------------------------------- |
| `groupStates` | string | No | Comma-separated group states to filter by (e.g., "alert,warn", "alert,warn,no data,ok") |
| `name` | string | No | Filter monitors by name with partial match (e.g., "CPU", "Production") |
| `tags` | string | No | Comma-separated list of tags to filter by (e.g., "env:prod,team:backend") |
| `monitorTags` | string | No | Comma-separated list of monitor tags to filter by (e.g., "service:api,priority:high") |
| `withDowntimes` | boolean | No | Include downtime data with monitors |
| `page` | number | No | Page number for pagination (0-indexed, e.g., 0, 1, 2) |
| `pageSize` | number | No | Number of monitors per page (e.g., 50, max: 1000) |
| `apiKey` | string | Yes | Datadog API key |
| `applicationKey` | string | Yes | Datadog Application key |
| `site` | string | No | Datadog site/region (default: datadoghq.com) |
#### Output [#output-5]
| Parameter | Type | Description |
| ----------------- | ------ | ---------------- |
| `monitors` | array | List of monitors |
| ↳ `id` | number | Monitor ID |
| ↳ `name` | string | Monitor name |
| ↳ `type` | string | Monitor type |
| ↳ `query` | string | Monitor query |
| ↳ `overall_state` | string | Current state |
| ↳ `tags` | array | Tags |
### Datadog Mute Monitor [#datadog-mute-monitor]
Mute a monitor to temporarily suppress notifications.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ |
| `monitorId` | string | Yes | The ID of the monitor to mute (e.g., "12345678") |
| `scope` | string | No | Scope to mute (e.g., "host:myhost", "env:prod"). If not specified, mutes all scopes. |
| `end` | number | No | Unix timestamp in seconds when the mute should end (e.g., 1705323600). If not specified, mutes indefinitely. |
| `apiKey` | string | Yes | Datadog API key |
| `applicationKey` | string | Yes | Datadog Application key |
| `site` | string | No | Datadog site/region (default: datadoghq.com) |
#### Output [#output-6]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------------ |
| `success` | boolean | Whether the monitor was successfully muted |
### Datadog Query Logs [#datadog-query-logs]
Search and retrieve logs from Datadog. Use for troubleshooting, analysis, or monitoring.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------- |
| `query` | string | Yes | Log search query using Datadog query syntax (e.g., "service:web-app status:error", "host:prod-\* @http.status\_code:500") |
| `from` | string | Yes | Start time in ISO-8601 format or relative time (e.g., "now-1h", "now-15m", "2024-01-15T10:00:00Z") |
| `to` | string | Yes | End time in ISO-8601 format or relative time (e.g., "now", "now-5m", "2024-01-15T12:00:00Z") |
| `limit` | number | No | Maximum number of logs to return (e.g., 50, 100, max: 1000) |
| `sort` | string | No | Sort order: "timestamp" for oldest first, "-timestamp" for newest first |
| `indexes` | string | No | Comma-separated list of log indexes to search |
| `apiKey` | string | Yes | Datadog API key |
| `applicationKey` | string | Yes | Datadog Application key |
| `site` | string | No | Datadog site/region (default: datadoghq.com) |
#### Output [#output-7]
| Parameter | Type | Description |
| ------------- | ------ | --------------------- |
| `logs` | array | List of log entries |
| ↳ `id` | string | Log ID |
| ↳ `content` | object | Log content |
| ↳ `timestamp` | string | Log timestamp |
| ↳ `host` | string | Host name |
| ↳ `service` | string | Service name |
| ↳ `message` | string | Log message |
| ↳ `status` | string | Log status/level |
| `nextLogId` | string | Cursor for pagination |
### Datadog Send Logs [#datadog-send-logs]
Send log entries to Datadog for centralized logging and analysis.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- |
| `logs` | string | Yes | JSON array of log entries. Each entry should have message and optionally ddsource, ddtags, hostname, service. |
| `apiKey` | string | Yes | Datadog API key |
| `site` | string | No | Datadog site/region (default: datadoghq.com) |
#### Output [#output-8]
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------- |
| `success` | boolean | Whether the logs were sent successfully |
### Datadog Create Downtime [#datadog-create-downtime]
Schedule a downtime to suppress monitor notifications during maintenance windows.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ------------------------------- | ------- | -------- | ----------------------------------------------------------------------------------- |
| `scope` | string | Yes | Scope to apply downtime to (e.g., "host:myhost", "env:production", or "\*" for all) |
| `message` | string | No | Message to display during downtime |
| `start` | number | No | Unix timestamp for downtime start in seconds (e.g., 1705320000, defaults to now) |
| `end` | number | No | Unix timestamp for downtime end in seconds (e.g., 1705323600) |
| `timezone` | string | No | Timezone for the downtime (e.g., "America/New\_York", "UTC", "Europe/London") |
| `monitorId` | string | No | Specific monitor ID to mute (e.g., "12345678") |
| `monitorTags` | string | No | Comma-separated monitor tags to match (e.g., "team:backend,priority:high") |
| `muteFirstRecoveryNotification` | boolean | No | Mute the first recovery notification |
| `apiKey` | string | Yes | Datadog API key |
| `applicationKey` | string | Yes | Datadog Application key |
| `site` | string | No | Datadog site/region (default: datadoghq.com) |
#### Output [#output-9]
| Parameter | Type | Description |
| ----------- | ------- | ------------------------------------ |
| `downtime` | object | The created downtime details |
| ↳ `id` | number | Downtime ID |
| ↳ `scope` | array | Downtime scope |
| ↳ `message` | string | Downtime message |
| ↳ `start` | number | Start time (Unix timestamp) |
| ↳ `end` | number | End time (Unix timestamp) |
| ↳ `active` | boolean | Whether downtime is currently active |
### Datadog List Downtimes [#datadog-list-downtimes]
List all scheduled downtimes in Datadog.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | -------------------------------------------- |
| `currentOnly` | boolean | No | Only return currently active downtimes |
| `monitorId` | string | No | Filter by monitor ID (e.g., "12345678") |
| `apiKey` | string | Yes | Datadog API key |
| `applicationKey` | string | Yes | Datadog Application key |
| `site` | string | No | Datadog site/region (default: datadoghq.com) |
#### Output [#output-10]
| Parameter | Type | Description |
| ----------- | ------- | ------------------------------------ |
| `downtimes` | array | List of downtimes |
| ↳ `id` | number | Downtime ID |
| ↳ `scope` | array | Downtime scope |
| ↳ `message` | string | Downtime message |
| ↳ `start` | number | Start time (Unix timestamp) |
| ↳ `end` | number | End time (Unix timestamp) |
| ↳ `active` | boolean | Whether downtime is currently active |
### Datadog Cancel Downtime [#datadog-cancel-downtime]
Cancel a scheduled downtime.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------- |
| `downtimeId` | string | Yes | The ID of the downtime to cancel (e.g., "abc123def456") |
| `apiKey` | string | Yes | Datadog API key |
| `applicationKey` | string | Yes | Datadog Application key |
| `site` | string | No | Datadog site/region (default: datadoghq.com) |
#### Output [#output-11]
| Parameter | Type | Description |
| --------- | ------- | ---------------------------------------------- |
| `success` | boolean | Whether the downtime was successfully canceled |
---
# Datagma (/integrations/datagma)
{/* MANUAL-CONTENT-START:intro */}
[Datagma](https://datagma.com/) is a B2B data enrichment platform for finding verified work emails, direct mobile numbers, and detailed person and company profiles from minimal input such as a name, company domain, or LinkedIn URL.
With Datagma, you can:
* **Find verified work emails:** Resolve a verified professional email from a person's full name and their company name or domain.
* **Enrich person profiles:** Pull job title, seniority, location, and social profiles from an email or LinkedIn URL.
* **Enrich company data:** Retrieve firmographics such as size, industry, and location from a domain or company name.
* **Find mobile phone numbers:** Look up direct dial mobile numbers from a LinkedIn profile.
* **Check your credit balance:** Monitor remaining Datagma credits before running large enrichment jobs.
In Sim, the Datagma integration lets your agents enrich contacts and companies, find and verify emails, and look up phone numbers directly inside a workflow — automating lead generation, CRM hygiene, and outreach prep without leaving Sim.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Datagma to find verified work emails from a name and company, enrich person profiles via email or LinkedIn URL, enrich company data from a domain or name, look up mobile phone numbers from LinkedIn, and check your credit balance.
## Actions [#actions]
### Datagma Find Email [#datagma-find-email]
Find a verified work email from a person's full name and company. Uses 1 credit when a verified email is found.
#### Input [#input]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------------------------------------------------------------------ |
| `fullName` | string | Yes | Person's full name (e.g., 'John Doe') |
| `company` | string | Yes | Company name or domain (e.g., 'Stripe' or 'stripe.com') |
| `linkedInSlug` | string | No | LinkedIn company URL slug to improve match accuracy by 20%+ |
| `findEmailV2Step` | number | No | Lookup depth: 3 = full email (default), 2 = domain only |
| `findEmailV2Country` | string | No | User's location to improve accuracy (e.g., 'General', 'Japan', 'France') |
| `apiKey` | string | Yes | Datagma API key |
#### Output [#output]
| Parameter | Type | Description |
| ------------- | ------- | ------------------------------------------------ |
| `email` | string | Verified work email address |
| `emailStatus` | string | Email verification status (e.g., valid, invalid) |
| `emailDomain` | string | Email domain |
| `mxfound` | boolean | Whether MX records were found |
| `smtpCheck` | boolean | Whether SMTP validation succeeded |
| `catchAll` | boolean | Whether the domain is catch-all |
### Datagma Enrich Person [#datagma-enrich-person]
Enrich a person's profile using their email, LinkedIn URL, or full name and company. Returns job title, company, location, and social data. Uses 2 credits per match; add 30 credits when a phone number is found.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | ------------------------------------------------------------------------------------ |
| `data` | string | Yes | Email address, LinkedIn URL, or full name (use companyKeyword when providing a name) |
| `companyKeyword` | string | No | Company name or keyword to disambiguate when data is a full name |
| `countryCode` | string | No | Two-letter country code to improve match accuracy (e.g., 'US', 'GB') |
| `personFull` | boolean | No | Include education and work history in the response |
| `phoneFull` | boolean | No | Attempt to find a mobile phone number (costs 30 additional credits if found) |
| `apiKey` | string | Yes | Datagma API key |
#### Output [#output-1]
| Parameter | Type | Description |
| ----------------------- | ------ | ------------------------------------------- |
| `name` | string | Full name |
| `firstName` | string | First name |
| `lastName` | string | Last name |
| `email` | string | Work email address |
| `emailStatus` | string | Email verification status |
| `jobTitle` | string | Current job title |
| `company` | string | Current company name |
| `linkedInUrl` | string | LinkedIn profile URL |
| `location` | string | Location string |
| `country` | string | Country |
| `region` | string | Region/state |
| `city` | string | City |
| `extractedRole` | string | Extracted role category |
| `extractedSeniority` | string | Extracted seniority level |
| `twitter` | string | Twitter handle |
| `phone` | string | Mobile phone number |
| `personConfidenceScore` | number | Confidence score for the person match (0–1) |
### Datagma Enrich Company [#datagma-enrich-company]
Enrich a company profile using a domain, company name, or SIREN number (France). Returns size, industry, revenue, and description. Uses 2 credits per match.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | ----------------------------------------------------------------------------------- |
| `data` | string | Yes | Company domain (e.g., 'stripe.com'), company name, or French SIREN number to enrich |
| `companyPremium` | boolean | No | Include LinkedIn company data in the response |
| `companyFull` | boolean | No | Include financial information in the response |
| `apiKey` | string | Yes | Datagma API key |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------ |
| `name` | string | Company name |
| `website` | string | Company website |
| `industries` | string | Industry classification |
| `companySize` | string | Employee headcount range |
| `type` | string | Company type (e.g., Private, Public) |
| `founded` | string | Year founded |
| `shortDescription` | string | Short company description |
| `revenueRange` | string | Estimated annual revenue range |
| `headquarters` | string | Headquarters location |
### Datagma Find Phone [#datagma-find-phone]
Find a mobile phone number from a person's LinkedIn URL. Optionally supply an email to improve match accuracy. Uses 30 credits when a number is found.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ |
| `username` | string | Yes | LinkedIn URL of the person (e.g., '[https://linkedin.com/in/johndoe'\\](https://linkedin.com/in/johndoe'\\)) |
| `email` | string | No | Email address to improve phone match accuracy |
| `minimumMatch` | number | No | Minimum match confidence threshold (0–1; default 1 for highest precision) |
| `apiKey` | string | Yes | Datagma API key |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------- | ------- | ---------------------------------------- |
| `phone` | string | Mobile phone number |
| `countryCode` | string | Country code prefix (e.g., +1) |
| `isWhatsapp` | boolean | Whether the number is linked to WhatsApp |
### Datagma Get Credits [#datagma-get-credits]
Check remaining credit balance on a Datagma account. Free — no credits consumed.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------- |
| `apiKey` | string | Yes | Datagma API key |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ------ | ------------------------- |
| `credits` | number | Remaining Datagma credits |
---
# Daytona (/integrations/daytona)
{/* MANUAL-CONTENT-START:intro */}
[Daytona](https://www.daytona.io/) is secure, elastic infrastructure for running AI-generated code. Daytona provides isolated sandboxes that spin up in milliseconds, giving your agents a safe place to execute shell commands, run code, work with files, and clone repositories — without ever touching your own machines.
**Why Daytona?**
* **Built for AI-generated code:** Sandboxes are fully isolated runtimes, so untrusted or generated code can run safely with no risk to your infrastructure.
* **Fast, elastic sandboxes:** Create a sandbox in under a couple hundred milliseconds, use it for one task or keep it alive across a whole session, and let auto-stop and auto-delete intervals clean up after you.
* **Complete toolbox:** Execute shell commands, run Python, JavaScript, or TypeScript with a built-in code interpreter, transfer files in and out, and clone Git repositories — all through one API.
* **Programmatic lifecycle control:** Create, list, start, stop, and delete sandboxes on demand, with snapshots, regions, resource sizing, environment variables, and labels.
**Using Daytona in Sim**
Sim's Daytona integration connects your workflows to Daytona with an API key. Twelve operations cover the full sandbox lifecycle and toolbox: create, list, get, start, stop, and delete sandboxes; run code and execute commands inside them; upload, download, and list files; and clone Git repositories.
**Key benefits of using Daytona in Sim:**
* **Safe code interpreter for agents:** Let an agent write Python, JavaScript, or TypeScript and execute it in an isolated sandbox, then use the output downstream in your workflow.
* **Real file handling:** Upload workflow files directly into a sandbox, process them with code or commands, and download the results as files other blocks can consume.
* **Repository automation:** Clone a repository into a sandbox, run installs, builds, or tests, and report the results — perfect for CI-style checks and repo health monitoring.
* **Cost-aware lifecycle:** Create sandboxes on demand, stop or delete them when work finishes, and use auto-stop intervals so idle sandboxes never run up your bill.
Whether you're building an AI code interpreter, validating generated code before it ships, analyzing data files in a clean environment, or automating repository checks, Daytona in Sim gives your agents real compute with strong isolation. Configure your API key, pick an operation, and start running code.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Daytona into your workflow to run AI-generated code in secure, isolated sandboxes. Create and manage sandboxes, execute shell commands, run Python, JavaScript, or TypeScript code, transfer files, and clone Git repositories.
## Actions [#actions]
### Daytona Create Sandbox [#daytona-create-sandbox]
Create a new Daytona sandbox for running AI-generated code in isolation
#### Input [#input]
| Parameter | Type | Required | Description |
| --------------------- | ------- | -------- | ---------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Daytona API key |
| `snapshot` | string | No | ID or name of the snapshot to create the sandbox from (uses default if empty) |
| `name` | string | No | Name for the sandbox (defaults to the sandbox ID) |
| `target` | string | No | Region where the sandbox will be created (e.g., us, eu) |
| `user` | string | No | User associated with the sandbox |
| `env` | json | No | Environment variables to set in the sandbox as key-value pairs |
| `labels` | json | No | Labels to attach to the sandbox as key-value pairs |
| `cpu` | number | No | CPU cores to allocate to the sandbox |
| `memory` | number | No | Memory to allocate to the sandbox in GB |
| `disk` | number | No | Disk space to allocate to the sandbox in GB |
| `autoStopInterval` | number | No | Auto-stop interval in minutes (0 disables auto-stop) |
| `autoArchiveInterval` | number | No | Auto-archive interval in minutes (0 uses the maximum interval) |
| `autoDeleteInterval` | number | No | Auto-delete interval in minutes (negative disables, 0 deletes immediately on stop) |
| `public` | boolean | No | Whether the sandbox HTTP preview is publicly accessible |
#### Output [#output]
| Parameter | Type | Description |
| --------- | ---- | ------------------- |
| `sandbox` | json | The created sandbox |
### Daytona List Sandboxes [#daytona-list-sandboxes]
List Daytona sandboxes in the organization
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------------- |
| `apiKey` | string | Yes | Daytona API key |
| `limit` | number | No | Maximum number of sandboxes to return (1-200) |
| `name` | string | No | Filter sandboxes by name prefix (case-insensitive) |
| `labels` | json | No | Filter sandboxes by labels as key-value pairs |
| `cursor` | string | No | Pagination cursor from a previous response |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------ | ------ | ----------------------------------- |
| `sandboxes` | array | Sandboxes in the organization |
| `nextCursor` | string | Cursor for the next page of results |
### Daytona Get Sandbox [#daytona-get-sandbox]
Get details of a Daytona sandbox
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------- |
| `apiKey` | string | Yes | Daytona API key |
| `sandboxId` | string | Yes | ID or name of the sandbox |
#### Output [#output-2]
| Parameter | Type | Description |
| --------- | ---- | ------------------- |
| `sandbox` | json | The sandbox details |
### Daytona Start Sandbox [#daytona-start-sandbox]
Start a stopped Daytona sandbox
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------- |
| `apiKey` | string | Yes | Daytona API key |
| `sandboxId` | string | Yes | ID or name of the sandbox |
#### Output [#output-3]
| Parameter | Type | Description |
| --------- | ---- | ------------------- |
| `sandbox` | json | The started sandbox |
### Daytona Stop Sandbox [#daytona-stop-sandbox]
Stop a running Daytona sandbox
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------- |
| `apiKey` | string | Yes | Daytona API key |
| `sandboxId` | string | Yes | ID or name of the sandbox |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ---- | ------------------- |
| `sandbox` | json | The stopped sandbox |
### Daytona Delete Sandbox [#daytona-delete-sandbox]
Delete a Daytona sandbox
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------- |
| `apiKey` | string | Yes | Daytona API key |
| `sandboxId` | string | Yes | ID or name of the sandbox |
#### Output [#output-5]
| Parameter | Type | Description |
| --------- | ---- | ------------------- |
| `sandbox` | json | The deleted sandbox |
### Daytona Execute Command [#daytona-execute-command]
Execute a shell command inside a Daytona sandbox
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Daytona API key |
| `sandboxId` | string | Yes | ID of the sandbox to execute the command in |
| `command` | string | Yes | Shell command to execute |
| `cwd` | string | No | Working directory for the command (defaults to the sandbox working directory) |
| `env` | json | No | Environment variables to set for the command as key-value pairs |
| `timeout` | number | No | Timeout in seconds (defaults to 10 seconds) |
#### Output [#output-6]
| Parameter | Type | Description |
| ---------- | ------ | ---------------------------------------------------------- |
| `exitCode` | number | Exit code of the command (-1 if missing from the response) |
| `result` | string | Combined stdout/stderr output of the command |
### Daytona Run Code [#daytona-run-code]
Run Python, JavaScript, or TypeScript code inside a Daytona sandbox
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------- |
| `apiKey` | string | Yes | Daytona API key |
| `sandboxId` | string | Yes | ID of the sandbox to run the code in |
| `code` | string | Yes | Code to run |
| `language` | string | Yes | Language of the code: python, javascript, or typescript |
| `env` | json | No | Environment variables to set for the run as key-value pairs |
| `timeout` | number | No | Timeout in seconds (defaults to 10 seconds) |
#### Output [#output-7]
| Parameter | Type | Description |
| ----------- | ------ | ----------------------------------------------------------- |
| `exitCode` | number | Exit code of the code run (-1 if missing from the response) |
| `result` | string | Combined stdout/stderr output of the code run |
| `artifacts` | json | Artifacts produced by the run (e.g., matplotlib charts) |
### Daytona Upload File [#daytona-upload-file]
Upload a file to a Daytona sandbox
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | -------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Daytona API key |
| `sandboxId` | string | Yes | ID of the sandbox to upload the file to |
| `destinationPath` | string | Yes | Destination path in the sandbox (a trailing slash uploads into that directory using the file name) |
| `file` | file | No | The file to upload |
| `fileContent` | string | No | Legacy: base64 encoded file content |
| `fileName` | string | No | Optional file name override |
#### Output [#output-8]
| Parameter | Type | Description |
| -------------- | ------ | ---------------------------------------- |
| `uploadedPath` | string | Path of the uploaded file in the sandbox |
| `name` | string | Name of the uploaded file |
| `size` | number | Size of the uploaded file in bytes |
### Daytona Download File [#daytona-download-file]
Download a file from a Daytona sandbox
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------- |
| `apiKey` | string | Yes | Daytona API key |
| `sandboxId` | string | Yes | ID of the sandbox to download the file from |
| `filePath` | string | Yes | Path of the file in the sandbox |
#### Output [#output-9]
| Parameter | Type | Description |
| ---------- | ------ | ----------------------------------------- |
| `file` | file | Downloaded file stored in execution files |
| `name` | string | Name of the downloaded file |
| `mimeType` | string | MIME type of the downloaded file |
| `size` | number | Size of the downloaded file in bytes |
### Daytona List Files [#daytona-list-files]
List files in a directory of a Daytona sandbox
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------ |
| `apiKey` | string | Yes | Daytona API key |
| `sandboxId` | string | Yes | ID of the sandbox to list files in |
| `path` | string | No | Directory path to list (defaults to the sandbox working directory) |
#### Output [#output-10]
| Parameter | Type | Description |
| --------------- | ------- | --------------------------------------- |
| `files` | array | Files and directories at the given path |
| ↳ `name` | string | File or directory name |
| ↳ `isDir` | boolean | Whether the entry is a directory |
| ↳ `size` | number | Size in bytes |
| ↳ `mode` | string | File mode string |
| ↳ `permissions` | string | Permission string |
| ↳ `owner` | string | Owning user |
| ↳ `group` | string | Owning group |
| ↳ `modifiedAt` | string | Last modification timestamp |
### Daytona Git Clone [#daytona-git-clone]
Clone a Git repository into a Daytona sandbox
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------- |
| `apiKey` | string | Yes | Daytona API key |
| `sandboxId` | string | Yes | ID of the sandbox to clone the repository into |
| `url` | string | Yes | URL of the Git repository to clone |
| `path` | string | Yes | Path in the sandbox to clone the repository into |
| `branch` | string | No | Branch to clone (defaults to the default branch) |
| `commitId` | string | No | Specific commit to check out after cloning |
| `username` | string | No | Username for authenticating to private repositories |
| `password` | string | No | Password or personal access token for private repositories |
#### Output [#output-11]
| Parameter | Type | Description |
| ----------- | ------ | ----------------------------------- |
| `repoUrl` | string | URL of the cloned repository |
| `clonePath` | string | Path the repository was cloned into |
---
# Deployments (/integrations/deployments)
{/* MANUAL-CONTENT-START:intro */}
Deployments is Sim's built-in system for taking a workflow's draft state live for API execution and managing its version history. Every deploy creates a new version, and past versions stay available for review or rollback.
* **Deploy and undeploy**: Push the current draft live as a new version, or take a live workflow offline and remove its triggers, webhooks, and schedules
* **Promote or roll back**: Make any past version the live one without creating a new version, including re-deploying an undeployed workflow at a known-good version
* **Inspect version history**: List every deployment version with its metadata, or fetch the full workflow state snapshot for a specific version
In Sim, the Deployments block allows your agents to deploy and undeploy workflows, promote a specific version to live for rollbacks, list all deployment versions of a workflow, and retrieve the deployed state snapshot of any past version—all programmatically as part of another workflow.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Deploy, undeploy, and roll back workflows in the current workspace. Promote a previous deployment version to live, list every version, or fetch the deployed workflow state for a specific version.
## Actions [#actions]
### Deploy Workflow [#deploy-workflow]
Deploy a workflow’s current draft state, creating a new deployment version and making it live for API execution. Requires admin permission on the workflow’s workspace.
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------ |
| `workflowId` | string | Yes | ID of the workflow to deploy |
| `name` | string | No | Optional label for the new deployment version |
| `description` | string | No | Optional summary of what changed in this version |
#### Output [#output]
| Parameter | Type | Description |
| ------------ | ------- | -------------------------------------------------------------------- |
| `workflowId` | string | ID of the deployed workflow |
| `isDeployed` | boolean | Whether the workflow is now deployed |
| `deployedAt` | string | ISO 8601 timestamp of the deployment (null if unavailable) |
| `version` | number | The deployment version that is now active |
| `warnings` | array | Non-fatal warnings (e.g. trigger or schedule sync still in progress) |
### Undeploy Workflow [#undeploy-workflow]
Take a deployed workflow offline. API execution stops and schedules, webhooks, and other deployment side effects are removed. Requires admin permission on the workflow’s workspace.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------ |
| `workflowId` | string | Yes | ID of the workflow to undeploy |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------ | ------- | ----------------------------------------------------------------------- |
| `workflowId` | string | ID of the undeployed workflow |
| `isDeployed` | boolean | Whether the workflow is still deployed (false) |
| `deployedAt` | string | Always null after an undeploy |
| `warnings` | array | Non-fatal warnings (e.g. trigger or schedule cleanup still in progress) |
### Promote Version to Live [#promote-version-to-live]
Make a specific deployment version the live one without creating a new version — the same operation as Promote to live in the deploy modal. Useful for rolling back to a known-good version. Also works on an undeployed workflow: it re-deploys the workflow live at that version. Requires admin permission on the workflow’s workspace.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------ |
| `workflowId` | string | Yes | ID of the workflow |
| `version` | number | Yes | The deployment version number to promote to live |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------ | ------- | -------------------------------------------------------------------- |
| `workflowId` | string | ID of the workflow |
| `isDeployed` | boolean | Whether the workflow is now deployed |
| `deployedAt` | string | ISO 8601 timestamp of the active deployment (null if unavailable) |
| `version` | number | The deployment version that is now live |
| `warnings` | array | Non-fatal warnings (e.g. trigger or schedule sync still in progress) |
### List Deployment Versions [#list-deployment-versions]
List every deployment version of a workflow, newest first, including which version is currently live.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------ |
| `workflowId` | string | Yes | ID of the workflow |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------ | ------ | ------------------------------------------------------------------------------------------------------------------ |
| `workflowId` | string | ID of the workflow |
| `versions` | array | Deployment versions, newest first (id, version, name, description, isActive, createdAt, createdBy, deployedByName) |
### Get Deployment Version [#get-deployment-version]
Fetch a single deployment version of a workflow, including its metadata and the full workflow state snapshot that was deployed.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | -------------------------------------- |
| `workflowId` | string | Yes | ID of the workflow |
| `version` | number | Yes | The deployment version number to fetch |
#### Output [#output-4]
| Parameter | Type | Description |
| --------------- | ------- | ----------------------------------------------------------------------------- |
| `workflowId` | string | ID of the workflow |
| `version` | number | The deployment version number |
| `name` | string | Version label |
| `description` | string | Version description |
| `isActive` | boolean | Whether this version is currently live |
| `createdAt` | string | When this version was deployed (ISO 8601) |
| `deployedState` | json | The full workflow state snapshot (blocks, edges, loops, parallels, variables) |
---
# Devin (/integrations/devin)
{/* MANUAL-CONTENT-START:intro */}
[Devin](https://devin.ai/) is an autonomous AI software engineer by Cognition that can independently write, run, debug, and deploy code.
With Devin, you can:
* **Automate coding tasks**: Assign software engineering tasks and let Devin autonomously write, test, and iterate on code
* **Manage sessions**: Create, monitor, and interact with Devin sessions to track progress on assigned tasks
* **Guide active work**: Send messages to running sessions to provide additional context, redirect efforts, or answer questions
* **Retrieve structured output**: Poll completed sessions for pull requests, structured results, and detailed status
* **Control costs**: Set ACU (Autonomous Compute Unit) limits to cap spending on long-running tasks
* **Standardize workflows**: Use playbook IDs to apply repeatable task patterns across sessions
In Sim, the Devin integration enables your agents to programmatically manage Devin sessions as part of their workflows:
* **Create sessions**: Kick off new Devin sessions with a prompt describing the task, optional playbook, ACU limits, and tags
* **Get session details**: Retrieve the full state of a session including status, pull requests, structured output, and resource consumption
* **List sessions**: Query all sessions in your organization with optional pagination
* **Send messages**: Communicate with active or suspended sessions to provide guidance, and automatically resume suspended sessions
This allows for powerful automation scenarios such as triggering code generation from upstream events, polling for completion before consuming results, orchestrating multi-step development pipelines, and integrating Devin's output into broader agent workflows.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Devin into your workflow. Create sessions to assign coding tasks, send messages to guide active sessions, and retrieve session status and results. Devin autonomously writes, runs, and tests code.
## Actions [#actions]
### Devin Create Session [#devin-create-session]
Create a new Devin session with a prompt. Devin will autonomously work on the task described in the prompt.
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ----------------------------------------------------------- |
| `apiKey` | string | Yes | Devin API key (service user credential starting with cog\_) |
| `orgId` | string | Yes | Devin organization ID (prefixed with org-) |
| `prompt` | string | Yes | The task prompt for Devin to work on |
| `playbookId` | string | No | Optional playbook ID to guide the session |
| `maxAcuLimit` | number | No | Maximum ACU limit for the session |
| `tags` | string | No | Comma-separated tags for the session |
#### Output [#output]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------------------------------------------------------------- |
| `sessionId` | string | Unique identifier for the session |
| `url` | string | URL to view the session in the Devin UI |
| `status` | string | Session status (new, claimed, running, exit, error, suspended, resuming) |
| `statusDetail` | string | Detailed status (working, waiting\_for\_user, waiting\_for\_approval, finished, inactivity, etc.) |
| `title` | string | Session title |
| `createdAt` | number | Unix timestamp when the session was created |
| `updatedAt` | number | Unix timestamp when the session was last updated |
| `acusConsumed` | number | ACUs consumed by the session |
| `tags` | json | Tags associated with the session (array of strings) |
| `pullRequests` | json | Pull requests created during the session (\[\{pr\_url, pr\_state}]) |
| `structuredOutput` | json | Structured output from the session |
| `playbookId` | string | Associated playbook ID |
| `isArchived` | boolean | Whether the session is archived |
### Devin Get Session [#devin-get-session]
Retrieve details of an existing Devin session including status, tags, pull requests, and structured output.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------- |
| `apiKey` | string | Yes | Devin API key (service user credential starting with cog\_) |
| `orgId` | string | Yes | Devin organization ID (prefixed with org-) |
| `sessionId` | string | Yes | The session ID to retrieve |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------------------------------------------------------------- |
| `sessionId` | string | Unique identifier for the session |
| `url` | string | URL to view the session in the Devin UI |
| `status` | string | Session status (new, claimed, running, exit, error, suspended, resuming) |
| `statusDetail` | string | Detailed status (working, waiting\_for\_user, waiting\_for\_approval, finished, inactivity, etc.) |
| `title` | string | Session title |
| `createdAt` | number | Unix timestamp when the session was created |
| `updatedAt` | number | Unix timestamp when the session was last updated |
| `acusConsumed` | number | ACUs consumed by the session |
| `tags` | json | Tags associated with the session (array of strings) |
| `pullRequests` | json | Pull requests created during the session (\[\{pr\_url, pr\_state}]) |
| `structuredOutput` | json | Structured output from the session |
| `playbookId` | string | Associated playbook ID |
| `isArchived` | boolean | Whether the session is archived |
### Devin List Sessions [#devin-list-sessions]
List Devin sessions in the organization. Returns up to 100 sessions by default.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Devin API key (service user credential starting with cog\_) |
| `orgId` | string | Yes | Devin organization ID (prefixed with org-) |
| `limit` | number | No | Maximum number of sessions to return (1-200, default: 100) |
| `after` | string | No | Pagination cursor (endCursor from a previous response) to fetch the next page |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------------------------------------------------- |
| `sessions` | array | List of Devin sessions |
| ↳ `sessionId` | string | Unique identifier for the session |
| ↳ `url` | string | URL to view the session |
| ↳ `status` | string | Session status |
| ↳ `statusDetail` | string | Detailed status |
| ↳ `title` | string | Session title |
| ↳ `createdAt` | number | Creation timestamp (Unix) |
| ↳ `updatedAt` | number | Last updated timestamp (Unix) |
| ↳ `tags` | json | Session tags (array of strings) |
| ↳ `acusConsumed` | number | ACUs consumed by the session |
| ↳ `pullRequests` | json | Pull requests created during the session (\[\{pr\_url, pr\_state}]) |
| ↳ `playbookId` | string | Associated playbook ID |
| ↳ `isArchived` | boolean | Whether the session is archived |
| `endCursor` | string | Pagination cursor for the next page, or null if last page |
| `hasNextPage` | boolean | Whether more sessions are available |
| `total` | number | Total number of sessions, if provided |
### Devin Send Message [#devin-send-message]
Send a message to a Devin session. If the session is suspended, it will be automatically resumed. Returns the updated session state.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------- |
| `apiKey` | string | Yes | Devin API key (service user credential starting with cog\_) |
| `orgId` | string | Yes | Devin organization ID (prefixed with org-) |
| `sessionId` | string | Yes | The session ID to send the message to |
| `message` | string | Yes | The message to send to Devin |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------------------------------------------------------------- |
| `sessionId` | string | Unique identifier for the session |
| `url` | string | URL to view the session in the Devin UI |
| `status` | string | Session status (new, claimed, running, exit, error, suspended, resuming) |
| `statusDetail` | string | Detailed status (working, waiting\_for\_user, waiting\_for\_approval, finished, inactivity, etc.) |
| `title` | string | Session title |
| `createdAt` | number | Unix timestamp when the session was created |
| `updatedAt` | number | Unix timestamp when the session was last updated |
| `acusConsumed` | number | ACUs consumed by the session |
| `tags` | json | Tags associated with the session (array of strings) |
| `pullRequests` | json | Pull requests created during the session (\[\{pr\_url, pr\_state}]) |
| `structuredOutput` | json | Structured output from the session |
| `playbookId` | string | Associated playbook ID |
| `isArchived` | boolean | Whether the session is archived |
### Devin List Session Messages [#devin-list-session-messages]
List the messages exchanged in a Devin session, including messages from both the user and Devin.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Devin API key (service user credential starting with cog\_) |
| `orgId` | string | Yes | Devin organization ID (prefixed with org-) |
| `sessionId` | string | Yes | The session ID to list messages for |
| `limit` | number | No | Maximum number of messages to return (1-200, default: 100) |
| `after` | string | No | Pagination cursor (endCursor from a previous response) to fetch the next page |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------- | ------- | --------------------------------------------------------- |
| `messages` | array | Messages exchanged in the session |
| ↳ `eventId` | string | Unique identifier for the message event |
| ↳ `source` | string | Origin of the message (devin or user) |
| ↳ `message` | string | The message content |
| ↳ `createdAt` | number | Unix timestamp when the message was created |
| `endCursor` | string | Pagination cursor for the next page, or null if last page |
| `hasNextPage` | boolean | Whether more messages are available |
| `total` | number | Total number of messages, if provided |
### Devin List Session Attachments [#devin-list-session-attachments]
List the files uploaded to or produced by a Devin session.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------- |
| `apiKey` | string | Yes | Devin API key (service user credential starting with cog\_) |
| `orgId` | string | Yes | Devin organization ID (prefixed with org-) |
| `sessionId` | string | Yes | The session ID to list attachments for |
#### Output [#output-5]
| Parameter | Type | Description |
| ---------------- | ------ | ---------------------------------------- |
| `attachments` | array | Attachments associated with the session |
| ↳ `attachmentId` | string | Unique identifier for the attachment |
| ↳ `name` | string | Attachment file name |
| ↳ `url` | string | URL to download the attachment |
| ↳ `source` | string | Origin of the attachment (devin or user) |
| ↳ `contentType` | string | MIME type of the attachment |
### Devin Get Session Tags [#devin-get-session-tags]
Retrieve the tags currently applied to a Devin session.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------- |
| `apiKey` | string | Yes | Devin API key (service user credential starting with cog\_) |
| `orgId` | string | Yes | Devin organization ID (prefixed with org-) |
| `sessionId` | string | Yes | The session ID to retrieve tags for |
#### Output [#output-6]
| Parameter | Type | Description |
| --------- | ---- | ---------------------------------------------- |
| `tags` | json | Tags applied to the session (array of strings) |
### Devin Append Session Tags [#devin-append-session-tags]
Add tags to a Devin session without removing existing tags (max 50 tags total).
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | -------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Devin API key (service user credential starting with cog\_) |
| `orgId` | string | Yes | Devin organization ID (prefixed with org-) |
| `sessionId` | string | Yes | The session ID to add tags to |
| `tags` | string | Yes | Tags to append to the session (comma-separated string or array of strings) |
#### Output [#output-7]
| Parameter | Type | Description |
| --------- | ---- | ------------------------------------------------------ |
| `tags` | json | Updated list of tags on the session (array of strings) |
### Devin Replace Session Tags [#devin-replace-session-tags]
Replace all tags on a Devin session with a new set of tags (max 50 tags).
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Devin API key (service user credential starting with cog\_) |
| `orgId` | string | Yes | Devin organization ID (prefixed with org-) |
| `sessionId` | string | Yes | The session ID to replace tags on |
| `tags` | string | Yes | Tags that will overwrite the existing tags (comma-separated string or array of strings) |
#### Output [#output-8]
| Parameter | Type | Description |
| --------- | ---- | ------------------------------------------------------ |
| `tags` | json | Updated list of tags on the session (array of strings) |
### Devin Archive Session [#devin-archive-session]
Archive a Devin session. Archived sessions can still be viewed but cannot be modified or resumed.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------- |
| `apiKey` | string | Yes | Devin API key (service user credential starting with cog\_) |
| `orgId` | string | Yes | Devin organization ID (prefixed with org-) |
| `sessionId` | string | Yes | The session ID to archive |
#### Output [#output-9]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------------------------------------------------------------- |
| `sessionId` | string | Unique identifier for the session |
| `url` | string | URL to view the session in the Devin UI |
| `status` | string | Session status (new, claimed, running, exit, error, suspended, resuming) |
| `statusDetail` | string | Detailed status (working, waiting\_for\_user, waiting\_for\_approval, finished, inactivity, etc.) |
| `title` | string | Session title |
| `createdAt` | number | Unix timestamp when the session was created |
| `updatedAt` | number | Unix timestamp when the session was last updated |
| `acusConsumed` | number | ACUs consumed by the session |
| `tags` | json | Tags associated with the session (array of strings) |
| `pullRequests` | json | Pull requests created during the session (\[\{pr\_url, pr\_state}]) |
| `structuredOutput` | json | Structured output from the session |
| `playbookId` | string | Associated playbook ID |
| `isArchived` | boolean | Whether the session is archived |
### Devin Terminate Session [#devin-terminate-session]
Terminate a Devin session. Optionally archive the session instead of permanently terminating it.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ----------- | ------- | -------- | -------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Devin API key (service user credential starting with cog\_) |
| `orgId` | string | Yes | Devin organization ID (prefixed with org-) |
| `sessionId` | string | Yes | The session ID to terminate |
| `archive` | boolean | No | Archive the session instead of permanently terminating it (default: false) |
#### Output [#output-10]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------------------------------------------------------------- |
| `sessionId` | string | Unique identifier for the session |
| `url` | string | URL to view the session in the Devin UI |
| `status` | string | Session status (new, claimed, running, exit, error, suspended, resuming) |
| `statusDetail` | string | Detailed status (working, waiting\_for\_user, waiting\_for\_approval, finished, inactivity, etc.) |
| `title` | string | Session title |
| `createdAt` | number | Unix timestamp when the session was created |
| `updatedAt` | number | Unix timestamp when the session was last updated |
| `acusConsumed` | number | ACUs consumed by the session |
| `tags` | json | Tags associated with the session (array of strings) |
| `pullRequests` | json | Pull requests created during the session (\[\{pr\_url, pr\_state}]) |
| `structuredOutput` | json | Structured output from the session |
| `playbookId` | string | Associated playbook ID |
| `isArchived` | boolean | Whether the session is archived |
---
# Discord (/integrations/discord)
{/* MANUAL-CONTENT-START:intro */}
[Discord](https://discord.com) is a powerful communication platform that allows you to connect with friends, communities, and teams. It offers a range of features for team collaboration, including text channels, voice channels, and video calls.
With a Discord account or bot, you can:
* **Send messages**: Send messages to a specific channel
* **Get messages**: Get messages from a specific channel
* **Get server**: Get information about a specific server
* **Get user**: Get information about a specific user
In Sim, the Discord integration enables your agents to access and leverage your organization's Discord servers. Agents can retrieve information from Discord channels, search for specific users, get server information, and send messages. This allows your workflows to integrate with your Discord communities, automate notifications, and create interactive experiences.
> **Important:** To read message content, your Discord bot needs the "Message Content Intent" enabled in the Discord Developer Portal. Without this permission, you'll still receive message metadata but the content field will appear empty.
Discord components in Sim use efficient lazy loading, only fetching data when needed to minimize API calls and prevent rate limiting. Token refreshing happens automatically in the background to maintain your connection.
### Setting Up Your Discord Bot [#setting-up-your-discord-bot]
1. Go to the [Discord Developer Portal](https://discord.com/developers/applications)
2. Create a new application and navigate to the "Bot" tab
3. Create a bot and copy your bot token
4. Under "Privileged Gateway Intents", enable the **Message Content Intent** to read message content
5. Invite your bot to your servers with appropriate permissions
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Comprehensive Discord integration: messages, threads, channels, roles, members, invites, and webhooks.
## Actions [#actions]
### Discord Send Message [#discord-send-message]
Send a message to a Discord channel
#### Input [#input]
| Parameter | Type | Required | Description |
| ----------- | ------- | -------- | ----------------------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `channelId` | string | Yes | The Discord channel ID to send the message to, e.g., 123456789012345678 |
| `content` | string | No | The text content of the message |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
| `files` | file\[] | No | Files to attach to the message |
#### Output [#output]
| Parameter | Type | Description |
| -------------------- | ------- | --------------------------------- |
| `message` | string | Success or error message |
| `files` | file\[] | Files attached to the message |
| `data` | object | Discord message data |
| ↳ `id` | string | Message ID |
| ↳ `content` | string | Message content |
| ↳ `channel_id` | string | Channel ID where message was sent |
| ↳ `author` | object | Message author information |
| ↳ `id` | string | Author user ID |
| ↳ `username` | string | Author username |
| ↳ `avatar` | string | Author avatar hash |
| ↳ `bot` | boolean | Whether author is a bot |
| ↳ `timestamp` | string | Message timestamp |
| ↳ `edited_timestamp` | string | Message edited timestamp |
| ↳ `embeds` | array | Message embeds |
| ↳ `attachments` | array | Message attachments |
| ↳ `mentions` | array | User mentions in message |
| ↳ `mention_roles` | array | Role mentions in message |
| ↳ `mention_everyone` | boolean | Whether message mentions everyone |
### Discord Get Messages [#discord-get-messages]
Retrieve messages from a Discord channel
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | -------------------------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `channelId` | string | Yes | The Discord channel ID to retrieve messages from, e.g., 123456789012345678 |
| `limit` | number | No | Maximum number of messages to retrieve (default: 10, max: 100) |
#### Output [#output-1]
| Parameter | Type | Description |
| -------------------- | ------- | -------------------------------------------- |
| `message` | string | Success or error message |
| `data` | object | Container for messages data |
| ↳ `messages` | array | Array of Discord messages with full metadata |
| ↳ `id` | string | Message ID |
| ↳ `content` | string | Message content |
| ↳ `channel_id` | string | Channel ID |
| ↳ `author` | object | Message author information |
| ↳ `id` | string | Author user ID |
| ↳ `username` | string | Author username |
| ↳ `avatar` | string | Author avatar hash |
| ↳ `bot` | boolean | Whether author is a bot |
| ↳ `timestamp` | string | Message timestamp |
| ↳ `edited_timestamp` | string | Message edited timestamp |
| ↳ `embeds` | array | Message embeds |
| ↳ `attachments` | array | Message attachments |
| ↳ `mentions` | array | User mentions in message |
| ↳ `mention_roles` | array | Role mentions in message |
| ↳ `mention_everyone` | boolean | Whether message mentions everyone |
| ↳ `channel_id` | string | Channel ID |
### Discord Get Server [#discord-get-server]
Retrieve information about a Discord server (guild)
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------------------------ | ------ | ---------------------------------- |
| `message` | string | Success or error message |
| `data` | object | Discord server (guild) information |
| ↳ `id` | string | Server ID |
| ↳ `name` | string | Server name |
| ↳ `icon` | string | Server icon hash |
| ↳ `description` | string | Server description |
| ↳ `owner_id` | string | Server owner user ID |
| ↳ `roles` | array | Server roles |
| ↳ `approximate_member_count` | number | Approximate total member count |
| ↳ `approximate_presence_count` | number | Approximate online member count |
### Discord Get User [#discord-get-user]
Retrieve information about a Discord user
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------- |
| `botToken` | string | Yes | Discord bot token for authentication |
| `userId` | string | Yes | The Discord user ID, e.g., 123456789012345678 |
#### Output [#output-3]
| Parameter | Type | Description |
| ----------------- | ------- | ----------------------------------- |
| `message` | string | Success or error message |
| `data` | object | Discord user information |
| ↳ `id` | string | User ID |
| ↳ `username` | string | Username |
| ↳ `discriminator` | string | User discriminator (4-digit number) |
| ↳ `avatar` | string | User avatar hash |
| ↳ `bot` | boolean | Whether user is a bot |
| ↳ `system` | boolean | Whether user is a system user |
| ↳ `email` | string | User email (if available) |
| ↳ `verified` | boolean | Whether user email is verified |
### Discord Edit Message [#discord-edit-message]
Edit an existing message in a Discord channel
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `channelId` | string | Yes | The Discord channel ID containing the message, e.g., 123456789012345678 |
| `messageId` | string | Yes | The ID of the message to edit, e.g., 123456789012345678 |
| `content` | string | No | The new text content for the message |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
#### Output [#output-4]
| Parameter | Type | Description |
| -------------------- | ------ | ---------------------------- |
| `message` | string | Success or error message |
| `data` | object | Updated Discord message data |
| ↳ `id` | string | Message ID |
| ↳ `content` | string | Updated message content |
| ↳ `channel_id` | string | Channel ID |
| ↳ `edited_timestamp` | string | Message edited timestamp |
### Discord Delete Message [#discord-delete-message]
Delete a message from a Discord channel
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `channelId` | string | Yes | The Discord channel ID containing the message, e.g., 123456789012345678 |
| `messageId` | string | Yes | The ID of the message to delete, e.g., 123456789012345678 |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
#### Output [#output-5]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Success or error message |
### Discord Bulk Delete Messages [#discord-bulk-delete-messages]
Delete 2-100 messages from a Discord channel in a single request
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ----------------------------------------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `channelId` | string | Yes | The Discord channel ID to delete messages from, e.g., 123456789012345678 |
| `messageIds` | json | Yes | Array of 2-100 message IDs to delete. Messages older than 2 weeks cannot be bulk deleted. |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
#### Output [#output-6]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Success or error message |
### Discord Add Reaction [#discord-add-reaction]
Add a reaction emoji to a Discord message
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `channelId` | string | Yes | The Discord channel ID containing the message, e.g., 123456789012345678 |
| `messageId` | string | Yes | The ID of the message to react to, e.g., 123456789012345678 |
| `emoji` | string | Yes | The emoji to react with (unicode emoji or custom emoji in name:id format) |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
#### Output [#output-7]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Success or error message |
### Discord Remove Reaction [#discord-remove-reaction]
Remove a reaction from a Discord message
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `channelId` | string | Yes | The Discord channel ID containing the message, e.g., 123456789012345678 |
| `messageId` | string | Yes | The ID of the message with the reaction, e.g., 123456789012345678 |
| `emoji` | string | Yes | The emoji to remove (unicode emoji or custom emoji in name:id format) |
| `userId` | string | No | The user ID whose reaction to remove (omit to remove bot's own reaction), e.g., 123456789012345678 |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
#### Output [#output-8]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Success or error message |
### Discord Pin Message [#discord-pin-message]
Pin a message in a Discord channel
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `channelId` | string | Yes | The Discord channel ID containing the message, e.g., 123456789012345678 |
| `messageId` | string | Yes | The ID of the message to pin, e.g., 123456789012345678 |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
#### Output [#output-9]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Success or error message |
### Discord Unpin Message [#discord-unpin-message]
Unpin a message in a Discord channel
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `channelId` | string | Yes | The Discord channel ID containing the message, e.g., 123456789012345678 |
| `messageId` | string | Yes | The ID of the message to unpin, e.g., 123456789012345678 |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
#### Output [#output-10]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Success or error message |
### Discord Get Pinned Messages [#discord-get-pinned-messages]
Retrieve all pinned messages in a Discord channel
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `channelId` | string | Yes | The Discord channel ID to retrieve pinned messages from, e.g., 123456789012345678 |
| `limit` | number | No | Maximum number of pins to return per page (1-50). Defaults to 50. |
| `before` | string | No | Return pins created before this ISO8601 timestamp, for paging past the first 50 results |
#### Output [#output-11]
| Parameter | Type | Description |
| -------------- | ------- | --------------------------------------------------- |
| `message` | string | Success or error message |
| `data` | array | Array of pinned Discord messages |
| ↳ `id` | string | Message ID |
| ↳ `content` | string | Message content |
| ↳ `channel_id` | string | Channel ID |
| ↳ `timestamp` | string | Message timestamp |
| ↳ `pinned_at` | string | When the message was pinned |
| ↳ `author` | object | Message author information |
| ↳ `id` | string | Author user ID |
| ↳ `username` | string | Author username |
| `hasMore` | boolean | Whether more pinned messages exist beyond this page |
### Discord Create Thread [#discord-create-thread]
Create a thread in a Discord channel
#### Input [#input-12]
| Parameter | Type | Required | Description |
| --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `channelId` | string | Yes | The Discord channel ID to create the thread in, e.g., 123456789012345678 |
| `name` | string | Yes | The name of the thread (1-100 characters) |
| `messageId` | string | No | The message ID to create a thread from (if creating from existing message), e.g., 123456789012345678 |
| `autoArchiveDuration` | number | No | Duration in minutes to auto-archive the thread (60, 1440, 4320, 10080) |
| `isPublic` | boolean | No | Whether the standalone thread is public (visible to everyone in the channel) or private. Ignored when creating a thread from an existing message, which always inherits the parent channel visibility. Defaults to public if omitted. |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
#### Output [#output-12]
| Parameter | Type | Description |
| ------------- | ------ | ------------------------ |
| `message` | string | Success or error message |
| `data` | object | Created thread data |
| ↳ `id` | string | Thread ID |
| ↳ `name` | string | Thread name |
| ↳ `type` | number | Thread channel type |
| ↳ `guild_id` | string | Server ID |
| ↳ `parent_id` | string | Parent channel ID |
### Discord Join Thread [#discord-join-thread]
Join a thread in Discord
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `threadId` | string | Yes | The thread ID to join, e.g., 123456789012345678 |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
#### Output [#output-13]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Success or error message |
### Discord Leave Thread [#discord-leave-thread]
Leave a thread in Discord
#### Input [#input-14]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `threadId` | string | Yes | The thread ID to leave, e.g., 123456789012345678 |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
#### Output [#output-14]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Success or error message |
### Discord Archive Thread [#discord-archive-thread]
Archive or unarchive a thread in Discord
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ------------------------------------------------------------ |
| `botToken` | string | Yes | The bot token for authentication |
| `threadId` | string | Yes | The thread ID to archive/unarchive, e.g., 123456789012345678 |
| `archived` | boolean | Yes | Whether to archive (true) or unarchive (false) the thread |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
#### Output [#output-15]
| Parameter | Type | Description |
| ------------ | ------- | -------------------------- |
| `message` | string | Success or error message |
| `data` | object | Updated thread data |
| ↳ `id` | string | Thread ID |
| ↳ `archived` | boolean | Whether thread is archived |
### Discord Create Channel [#discord-create-channel]
Create a new channel in a Discord server
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
| `name` | string | Yes | The name of the channel (1-100 characters) |
| `type` | number | No | Channel type (0=text, 2=voice, 4=category, 5=announcement, 13=stage) |
| `topic` | string | No | Channel topic (0-1024 characters) |
| `parentId` | string | No | Parent category ID for the channel, e.g., 123456789012345678 |
#### Output [#output-16]
| Parameter | Type | Description |
| ------------ | ------ | ------------------------ |
| `message` | string | Success or error message |
| `data` | object | Created channel data |
| ↳ `id` | string | Channel ID |
| ↳ `name` | string | Channel name |
| ↳ `type` | number | Channel type |
| ↳ `guild_id` | string | Server ID |
### Discord Update Channel [#discord-update-channel]
Update a Discord channel
#### Input [#input-17]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `channelId` | string | Yes | The Discord channel ID to update, e.g., 123456789012345678 |
| `name` | string | No | The new name for the channel |
| `topic` | string | No | The new topic for the channel |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
#### Output [#output-17]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Success or error message |
| `data` | object | Updated channel data |
| ↳ `id` | string | Channel ID |
| ↳ `name` | string | Channel name |
| ↳ `type` | number | Channel type |
| ↳ `topic` | string | Channel topic |
### Discord Delete Channel [#discord-delete-channel]
Delete a Discord channel
#### Input [#input-18]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `channelId` | string | Yes | The Discord channel ID to delete, e.g., 123456789012345678 |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
#### Output [#output-18]
| Parameter | Type | Description |
| ------------ | ------ | ------------------------------------------- |
| `message` | string | Success or error message |
| `data` | object | The deleted channel, as returned by Discord |
| ↳ `id` | string | Channel ID |
| ↳ `name` | string | Channel name |
| ↳ `type` | number | Channel type |
| ↳ `guild_id` | string | Server ID |
### Discord Get Channel [#discord-get-channel]
Get information about a Discord channel
#### Input [#input-19]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------ |
| `botToken` | string | Yes | The bot token for authentication |
| `channelId` | string | Yes | The Discord channel ID to retrieve, e.g., 123456789012345678 |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
#### Output [#output-19]
| Parameter | Type | Description |
| ------------ | ------ | ------------------------ |
| `message` | string | Success or error message |
| `data` | object | Channel data |
| ↳ `id` | string | Channel ID |
| ↳ `name` | string | Channel name |
| ↳ `type` | number | Channel type |
| ↳ `topic` | string | Channel topic |
| ↳ `guild_id` | string | Server ID |
### Discord List Channels [#discord-list-channels]
List all channels in a Discord server
#### Input [#input-20]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
#### Output [#output-20]
| Parameter | Type | Description |
| ------------- | ------ | --------------------------------------- |
| `message` | string | Success or error message |
| `data` | array | Array of Discord channels in the server |
| ↳ `id` | string | Channel ID |
| ↳ `name` | string | Channel name |
| ↳ `type` | number | Channel type |
| ↳ `topic` | string | Channel topic |
| ↳ `parent_id` | string | Parent category ID |
| ↳ `position` | number | Sort position within the channel list |
### Discord Create Role [#discord-create-role]
Create a new role in a Discord server
#### Input [#input-21]
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | -------------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
| `name` | string | Yes | The name of the role |
| `color` | number | No | RGB color value as integer (e.g., 0xFF0000 for red) |
| `hoist` | boolean | No | Whether to display role members separately from online members |
| `mentionable` | boolean | No | Whether the role can be mentioned |
#### Output [#output-21]
| Parameter | Type | Description |
| --------------- | ------- | --------------------------- |
| `message` | string | Success or error message |
| `data` | object | Created role data |
| ↳ `id` | string | Role ID |
| ↳ `name` | string | Role name |
| ↳ `color` | number | Role color |
| ↳ `hoist` | boolean | Whether role is hoisted |
| ↳ `mentionable` | boolean | Whether role is mentionable |
### Discord Update Role [#discord-update-role]
Update a role in a Discord server
#### Input [#input-22]
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | ---------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
| `roleId` | string | Yes | The role ID to update, e.g., 123456789012345678 |
| `name` | string | No | The new name for the role |
| `color` | number | No | RGB color value as integer |
| `hoist` | boolean | No | Whether to display role members separately |
| `mentionable` | boolean | No | Whether the role can be mentioned |
#### Output [#output-22]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Success or error message |
| `data` | object | Updated role data |
| ↳ `id` | string | Role ID |
| ↳ `name` | string | Role name |
| ↳ `color` | number | Role color |
### Discord Delete Role [#discord-delete-role]
Delete a role from a Discord server
#### Input [#input-23]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
| `roleId` | string | Yes | The role ID to delete, e.g., 123456789012345678 |
#### Output [#output-23]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Success or error message |
### Discord Assign Role [#discord-assign-role]
Assign a role to a member in a Discord server
#### Input [#input-24]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
| `userId` | string | Yes | The user ID to assign the role to, e.g., 123456789012345678 |
| `roleId` | string | Yes | The role ID to assign, e.g., 123456789012345678 |
#### Output [#output-24]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Success or error message |
### Discord Remove Role [#discord-remove-role]
Remove a role from a member in a Discord server
#### Input [#input-25]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
| `userId` | string | Yes | The user ID to remove the role from, e.g., 123456789012345678 |
| `roleId` | string | Yes | The role ID to remove, e.g., 123456789012345678 |
#### Output [#output-25]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Success or error message |
### Discord List Roles [#discord-list-roles]
List all roles in a Discord server
#### Input [#input-26]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
#### Output [#output-26]
| Parameter | Type | Description |
| --------------- | ------- | ------------------------------------ |
| `message` | string | Success or error message |
| `data` | array | Array of Discord roles in the server |
| ↳ `id` | string | Role ID |
| ↳ `name` | string | Role name |
| ↳ `color` | number | Role color |
| ↳ `hoist` | boolean | Whether role is hoisted |
| ↳ `position` | number | Role position in the hierarchy |
| ↳ `mentionable` | boolean | Whether role is mentionable |
### Discord Kick Member [#discord-kick-member]
Kick a member from a Discord server
#### Input [#input-27]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
| `userId` | string | Yes | The user ID to kick, e.g., 123456789012345678 |
| `reason` | string | No | Reason for kicking the member |
#### Output [#output-27]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Success or error message |
### Discord Ban Member [#discord-ban-member]
Ban a member from a Discord server
#### Input [#input-28]
| Parameter | Type | Required | Description |
| ---------------------- | ------ | -------- | ---------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
| `userId` | string | Yes | The user ID to ban, e.g., 123456789012345678 |
| `reason` | string | No | Reason for banning the member |
| `deleteMessageSeconds` | number | No | Seconds of message history to delete, 0-604800 (7 days) |
#### Output [#output-28]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Success or error message |
### Discord Unban Member [#discord-unban-member]
Unban a member from a Discord server
#### Input [#input-29]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
| `userId` | string | Yes | The user ID to unban, e.g., 123456789012345678 |
| `reason` | string | No | Reason for unbanning the member |
#### Output [#output-29]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Success or error message |
### Discord Get Member [#discord-get-member]
Get information about a member in a Discord server
#### Input [#input-30]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
| `userId` | string | Yes | The user ID to retrieve, e.g., 123456789012345678 |
#### Output [#output-30]
| Parameter | Type | Description |
| ------------- | ------ | ------------------------ |
| `message` | string | Success or error message |
| `data` | object | Member data |
| ↳ `user` | object | User information |
| ↳ `id` | string | User ID |
| ↳ `username` | string | Username |
| ↳ `avatar` | string | Avatar hash |
| ↳ `nick` | string | Server nickname |
| ↳ `roles` | array | Array of role IDs |
| ↳ `joined_at` | string | When the member joined |
### Discord Update Member [#discord-update-member]
Update a member in a Discord server (e.g., change nickname)
#### Input [#input-31]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ---------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
| `userId` | string | Yes | The user ID to update, e.g., 123456789012345678 |
| `nick` | string | No | New nickname for the member (null to remove) |
| `mute` | boolean | No | Whether to mute the member in voice channels |
| `deaf` | boolean | No | Whether to deafen the member in voice channels |
#### Output [#output-31]
| Parameter | Type | Description |
| --------- | ------- | ------------------------ |
| `message` | string | Success or error message |
| `data` | object | Updated member data |
| ↳ `nick` | string | Server nickname |
| ↳ `mute` | boolean | Voice mute status |
| ↳ `deaf` | boolean | Voice deaf status |
### Discord Create Invite [#discord-create-invite]
Create an invite link for a Discord channel
#### Input [#input-32]
| Parameter | Type | Required | Description |
| ----------- | ------- | -------- | ------------------------------------------------------------------------ |
| `botToken` | string | Yes | The bot token for authentication |
| `channelId` | string | Yes | The Discord channel ID to create an invite for, e.g., 123456789012345678 |
| `maxAge` | number | No | Duration of invite in seconds (0 = never expires, default 86400) |
| `maxUses` | number | No | Max number of uses (0 = unlimited, default 0) |
| `temporary` | boolean | No | Whether invite grants temporary membership |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
#### Output [#output-32]
| Parameter | Type | Description |
| ------------- | ------- | ------------------------ |
| `message` | string | Success or error message |
| `data` | object | Created invite data |
| ↳ `code` | string | Invite code |
| ↳ `url` | string | Full invite URL |
| ↳ `max_age` | number | Max age in seconds |
| ↳ `max_uses` | number | Max uses |
| ↳ `temporary` | boolean | Whether temporary |
### Discord Get Invite [#discord-get-invite]
Get information about a Discord invite
#### Input [#input-33]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ---------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `inviteCode` | string | Yes | The invite code to retrieve |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
#### Output [#output-33]
| Parameter | Type | Description |
| ------------------------------ | ------ | ------------------------ |
| `message` | string | Success or error message |
| `data` | object | Invite data |
| ↳ `code` | string | Invite code |
| ↳ `guild` | object | Server information |
| ↳ `channel` | object | Channel information |
| ↳ `approximate_member_count` | number | Approximate member count |
| ↳ `approximate_presence_count` | number | Approximate online count |
### Discord Delete Invite [#discord-delete-invite]
Delete a Discord invite
#### Input [#input-34]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ---------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `inviteCode` | string | Yes | The invite code to delete |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
#### Output [#output-34]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Success or error message |
### Discord Create Webhook [#discord-create-webhook]
Create a webhook in a Discord channel
#### Input [#input-35]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `channelId` | string | Yes | The Discord channel ID to create the webhook in, e.g., 123456789012345678 |
| `name` | string | Yes | Name of the webhook (1-80 characters) |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
#### Output [#output-35]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------ |
| `message` | string | Success or error message |
| `data` | object | Created webhook data |
| ↳ `id` | string | Webhook ID |
| ↳ `name` | string | Webhook name |
| ↳ `token` | string | Webhook token |
| ↳ `url` | string | Webhook URL |
| ↳ `channel_id` | string | Channel ID |
### Discord Execute Webhook [#discord-execute-webhook]
Execute a Discord webhook to send a message
#### Input [#input-36]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------- |
| `webhookId` | string | Yes | The webhook ID, e.g., 123456789012345678 |
| `webhookToken` | string | Yes | The webhook token |
| `content` | string | Yes | The message content to send |
| `username` | string | No | Override the default username of the webhook |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
#### Output [#output-36]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------ |
| `message` | string | Success or error message |
| `data` | object | Message sent via webhook |
| ↳ `id` | string | Message ID |
| ↳ `content` | string | Message content |
| ↳ `channel_id` | string | Channel ID |
| ↳ `timestamp` | string | Message timestamp |
### Discord Get Webhook [#discord-get-webhook]
Get information about a Discord webhook
#### Input [#input-37]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `webhookId` | string | Yes | The webhook ID to retrieve, e.g., 123456789012345678 |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
#### Output [#output-37]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------ |
| `message` | string | Success or error message |
| `data` | object | Webhook data |
| ↳ `id` | string | Webhook ID |
| ↳ `name` | string | Webhook name |
| ↳ `channel_id` | string | Channel ID |
| ↳ `guild_id` | string | Server ID |
| ↳ `token` | string | Webhook token |
### Discord Delete Webhook [#discord-delete-webhook]
Delete a Discord webhook
#### Input [#input-38]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------- |
| `botToken` | string | Yes | The bot token for authentication |
| `webhookId` | string | Yes | The webhook ID to delete, e.g., 123456789012345678 |
| `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 |
#### Output [#output-38]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Success or error message |
---
# DocuSign (/integrations/docusign)
{/* MANUAL-CONTENT-START:intro */}
[DocuSign](https://www.docusign.com) is the world's leading e-signature platform, enabling businesses to send, sign, and manage agreements digitally. With its powerful eSignature REST API, DocuSign supports the full document lifecycle from creation through completion.
With the DocuSign integration in Sim, you can:
* **Send envelopes**: Create and send documents for e-signature with custom recipients and signing tabs
* **Use templates**: Send envelopes from pre-configured DocuSign templates with role assignments
* **Track status**: Get envelope details including signing progress, timestamps, and recipient status
* **List envelopes**: Search and filter envelopes by date range, status, and text
* **Download documents**: Retrieve signed documents as base64-encoded files
* **Manage recipients**: View signer and CC recipient details and signing status
* **Void envelopes**: Cancel in-progress envelopes with a reason
In Sim, the DocuSign integration enables your agents to automate document workflows end-to-end. Agents can generate agreements, send them for signature, monitor completion, and retrieve signed copies—powering contract management, HR onboarding, sales closings, and compliance processes.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Create and send envelopes for e-signature, use templates, check signing status, download signed documents, and manage recipients with DocuSign.
## Actions [#actions]
### Send DocuSign Envelope [#send-docusign-envelope]
Create and send a DocuSign envelope with a document for e-signature
#### Input [#input]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `emailSubject` | string | Yes | Email subject for the envelope |
| `emailBody` | string | No | Email body message |
| `signerEmail` | string | Yes | Email address of the signer |
| `signerName` | string | Yes | Full name of the signer |
| `ccEmail` | string | No | Email address of carbon copy recipient |
| `ccName` | string | No | Full name of carbon copy recipient |
| `file` | file | No | Document file to send for signature |
| `status` | string | No | Envelope status: "sent" to send immediately, "created" for draft (default: "sent") |
#### Output [#output]
| Parameter | Type | Description |
| ---------------- | ------ | ---------------------- |
| `envelopeId` | string | Created envelope ID |
| `status` | string | Envelope status |
| `statusDateTime` | string | Status change datetime |
| `uri` | string | Envelope URI |
### Send from DocuSign Template [#send-from-docusign-template]
Create and send a DocuSign envelope using a pre-built template
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `templateId` | string | Yes | DocuSign template ID to use |
| `emailSubject` | string | No | Override email subject (uses template default if not set) |
| `emailBody` | string | No | Override email body message |
| `templateRoles` | string | Yes | JSON array of template roles, e.g. \[\{"roleName":"Signer","name":"John","email":"[john@example.com](mailto:john@example.com)"}] |
| `status` | string | No | Envelope status: "sent" to send immediately, "created" for draft (default: "sent") |
#### Output [#output-1]
| Parameter | Type | Description |
| ---------------- | ------ | ---------------------- |
| `envelopeId` | string | Created envelope ID |
| `status` | string | Envelope status |
| `statusDateTime` | string | Status change datetime |
| `uri` | string | Envelope URI |
### Get DocuSign Envelope [#get-docusign-envelope]
Get the details and status of a DocuSign envelope
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | --------------------------- |
| `envelopeId` | string | Yes | The envelope ID to retrieve |
#### Output [#output-2]
| Parameter | Type | Description |
| ----------------------- | ------ | ----------------------------------------------------------------------- |
| `envelopeId` | string | Envelope ID |
| `status` | string | Envelope status (created, sent, delivered, completed, declined, voided) |
| `emailSubject` | string | Email subject line |
| `sentDateTime` | string | When the envelope was sent |
| `completedDateTime` | string | When all recipients completed signing |
| `createdDateTime` | string | When the envelope was created |
| `statusChangedDateTime` | string | When the status last changed |
| `voidedReason` | string | Reason the envelope was voided |
| `signerCount` | number | Number of signers |
| `documentCount` | number | Number of documents |
### List DocuSign Envelopes [#list-docusign-envelopes]
List envelopes from your DocuSign account with optional filters
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ----------------------------------------------------------------------- |
| `fromDate` | string | No | Start date filter (ISO 8601). Defaults to 30 days ago |
| `toDate` | string | No | End date filter (ISO 8601) |
| `envelopeStatus` | string | No | Filter by status: created, sent, delivered, completed, declined, voided |
| `searchText` | string | No | Search text to filter envelopes |
| `count` | string | No | Maximum number of envelopes to return (default: 25) |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------------------- | ------ | ----------------------------------------------------------------------- |
| `envelopes` | array | Array of DocuSign envelopes |
| ↳ `envelopeId` | string | Unique envelope identifier |
| ↳ `status` | string | Envelope status (created, sent, delivered, completed, declined, voided) |
| ↳ `emailSubject` | string | Email subject line |
| ↳ `sentDateTime` | string | ISO 8601 datetime when envelope was sent |
| ↳ `completedDateTime` | string | ISO 8601 datetime when envelope was completed |
| ↳ `createdDateTime` | string | ISO 8601 datetime when envelope was created |
| ↳ `statusChangedDateTime` | string | ISO 8601 datetime of last status change |
| `totalSetSize` | number | Total number of matching envelopes |
| `resultSetSize` | number | Number of envelopes returned in this response |
### Void DocuSign Envelope [#void-docusign-envelope]
Void (cancel) a sent DocuSign envelope that has not yet been completed
#### Input [#input-4]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------- |
| `envelopeId` | string | Yes | The envelope ID to void |
| `voidedReason` | string | Yes | Reason for voiding the envelope |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------ | ------ | ------------------------ |
| `envelopeId` | string | Voided envelope ID |
| `status` | string | Envelope status (voided) |
### Download DocuSign Document [#download-docusign-document]
Download a signed document from a completed DocuSign envelope
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ---------------------------------------------------------------------------------------------- |
| `envelopeId` | string | Yes | The envelope ID containing the document |
| `documentId` | string | No | Specific document ID to download, or "combined" for all documents merged (default: "combined") |
#### Output [#output-5]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------------------------------------ |
| `file` | file | Stored downloaded document file |
| `base64Content` | string | Deprecated legacy inline content. New downloads return file. |
| `mimeType` | string | MIME type of the document |
| `fileName` | string | Original file name |
### List DocuSign Templates [#list-docusign-templates]
List available templates in your DocuSign account
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | --------------------------------------- |
| `searchText` | string | No | Search text to filter templates by name |
| `count` | string | No | Maximum number of templates to return |
#### Output [#output-6]
| Parameter | Type | Description |
| ---------------- | ------- | --------------------------------------------- |
| `templates` | array | Array of DocuSign templates |
| ↳ `templateId` | string | Template identifier |
| ↳ `name` | string | Template name |
| ↳ `description` | string | Template description |
| ↳ `shared` | boolean | Whether template is shared |
| ↳ `created` | string | ISO 8601 creation date |
| ↳ `lastModified` | string | ISO 8601 last modified date |
| `totalSetSize` | number | Total number of matching templates |
| `resultSetSize` | number | Number of templates returned in this response |
### List DocuSign Recipients [#list-docusign-recipients]
Get the recipient status details for a DocuSign envelope
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------- |
| `envelopeId` | string | Yes | The envelope ID to get recipients for |
#### Output [#output-7]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------------------------------------- |
| `signers` | array | Array of DocuSign recipients |
| ↳ `recipientId` | string | Recipient identifier |
| ↳ `name` | string | Recipient name |
| ↳ `email` | string | Recipient email address |
| ↳ `status` | string | Recipient signing status (sent, delivered, completed, declined) |
| ↳ `signedDateTime` | string | ISO 8601 datetime when recipient signed |
| ↳ `deliveredDateTime` | string | ISO 8601 datetime when delivered to recipient |
| `carbonCopies` | array | Array of carbon copy recipients |
| ↳ `recipientId` | string | Recipient ID |
| ↳ `name` | string | Recipient name |
| ↳ `email` | string | Recipient email |
| ↳ `status` | string | Recipient status |
---
# Downdetector (/integrations/downdetector)
{/* MANUAL-CONTENT-START:intro */}
[Downdetector](https://downdetector.com/) is an outage-tracking service that aggregates user-submitted reports to detect and visualize real-time service disruptions for thousands of companies. The Downdetector Enterprise API exposes this data programmatically for monitoring and alerting.
With Downdetector, you can:
* **Search and identify companies**: Look up monitored companies by name, slug, country, or category to get their ids and status page URLs
* **Check current status and trends**: Read a company's cached status, 24h report statistics, and baseline to judge whether current activity is abnormal
* **Inspect problem indicators**: See which specific issues (e.g. "Login", "App crashing") are being reported and in what proportion
* **Track incidents and events**: Pull incident timelines, published events, and attribution data (internal vs. external cause, user impact) for outages
In Sim, the Downdetector integration allows your agents to search for monitored companies, check their current status and baseline reports, retrieve near-real-time report counts and problem indicators, and pull incident, event, and attribution data — all programmatically through API calls. This enables your agents to power outage alerts, monitoring dashboards, and automated incident summaries that stay current with service disruptions across the companies and regions Downdetector tracks.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Track real-time service outages with the Downdetector Enterprise API. Search monitored companies, read their current status and report trends, inspect problem indicators, and pull incident timelines to power outage alerts and dashboards. Requires a Downdetector Enterprise API plan.
## Actions [#actions]
### Downdetector Search Companies [#downdetector-search-companies]
Search Downdetector for monitored companies by name, slug, country, or category. Returns matching companies with their ids and slugs, which you can use with the other Downdetector operations.
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ----------------------------------------------------------------------------- |
| `name` | string | No | Company name to filter on (partial, case-insensitive match). Example: "slack" |
| `country` | string | No | ISO-2 country code to filter on. Example: "US" |
| `slug` | string | No | Exact company slug to filter on. Example: "optimum-cablevision" |
| `categoryId` | number | No | Category id to filter on |
| `page` | number | No | 1-indexed page number for paginated results (default 1) |
| `pageSize` | number | No | Number of results per page, between 10 and 100 (default 25) |
| `apiKey` | string | Yes | Downdetector API Bearer token |
#### Output [#output]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------- |
| `companies` | array | List of companies matching the search |
| ↳ `id` | number | Company id |
| ↳ `name` | string | Company name |
| ↳ `slug` | string | Company slug |
| ↳ `url` | string | Company status page URL |
| ↳ `countryIso` | string | ISO-2 country code |
| ↳ `categoryId` | number | Category id |
### Downdetector Get Company [#downdetector-get-company]
Get details for a Downdetector company by id, including its current status, 24h report statistics, baseline, and available problem indicators.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- |
| `companyId` | string | Yes | The Downdetector company id |
| `fields` | string | No | Comma-separated list of fields to return (defaults to a rich set including status, stats\_24, and baseline) |
| `apiKey` | string | Yes | Downdetector API Bearer token |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------------- | ------ | ------------------------------------------------------------ |
| `company` | object | Company details |
| ↳ `id` | number | Company id |
| ↳ `name` | string | Company name |
| ↳ `slug` | string | Company slug |
| ↳ `url` | string | Company status page URL |
| ↳ `status` | string | Cached current status (success, warning, or danger) |
| ↳ `categoryId` | number | Category id |
| ↳ `countryIso` | string | ISO-2 country code |
| ↳ `siteId` | number | Site id |
| ↳ `baselineCurrent` | number | The current considered average reports at this point in time |
| ↳ `stats24` | array | Reports over the last 24h in 15-minute buckets |
| ↳ `baseline` | array | Averaged baseline values per 15m over 24h |
| ↳ `indicators` | array | List of available problem indicators |
| ↳ `description` | string | Company description |
### Downdetector Get Company Status [#downdetector-get-company-status]
Get the current detected status for a Downdetector company. Returns "success" (no problems), "warning", or "danger" (likely outage).
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------- |
| `companyId` | string | Yes | The Downdetector company id |
| `threshold` | number | No | If set, returns "danger" when the current report count is above this threshold, otherwise "success" |
| `apiKey` | string | Yes | Downdetector API Bearer token |
#### Output [#output-2]
| Parameter | Type | Description |
| --------- | ------ | ------------------------------------------------- |
| `status` | string | Current status: "success", "warning", or "danger" |
### Downdetector Get Company Baseline [#downdetector-get-company-baseline]
Get the current baseline report value for a Downdetector company. This is the expected average number of reports for the current period, used to judge whether current reports are abnormal.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------- |
| `companyId` | string | Yes | The Downdetector company id |
| `apiKey` | string | Yes | Downdetector API Bearer token |
#### Output [#output-3]
| Parameter | Type | Description |
| ---------- | ------ | --------------------------------------------------------------- |
| `baseline` | number | The current baseline (expected average reports) for this period |
### Downdetector Get Company Last 15 Minutes [#downdetector-get-company-last-15-minutes]
Get the number of outage reports for a Downdetector company over the last 15 minutes. A convenient near-real-time signal for threshold-based alerting.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------- |
| `companyId` | string | Yes | The Downdetector company id |
| `apiKey` | string | Yes | Downdetector API Bearer token |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ------ | ------------------------------------------ |
| `count` | number | Number of reports over the last 15 minutes |
### Downdetector Get Company Indicators [#downdetector-get-company-indicators]
Get the problem indicators (e.g. "App crashing", "Login", "Server connection") reported for a Downdetector company over a time period, with the report counts and percentages for each.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------- |
| `companyId` | string | Yes | The Downdetector company id |
| `startdate` | string | No | ISO 8601 start of the time range (only works together with enddate) |
| `enddate` | string | No | ISO 8601 end of the time range (only works together with startdate) |
| `apiKey` | string | Yes | Downdetector API Bearer token |
#### Output [#output-5]
| Parameter | Type | Description |
| -------------- | ------ | --------------------------------------------- |
| `indicators` | array | Reported problem indicators with their counts |
| ↳ `slug` | string | Indicator slug |
| ↳ `indicator` | string | Human-readable indicator label |
| ↳ `key` | string | Indicator key |
| ↳ `amount` | number | Number of reports for this indicator |
| ↳ `percentage` | number | Share of total reports (percentage) |
### Downdetector Get Reports [#downdetector-get-reports]
Get the number of outage reports over time for one or more company slugs, bucketed by interval. Useful for plotting report trends or detecting spikes. Defaults to the last 24 hours.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------- |
| `slugs` | string | Yes | Comma-separated company slug(s) to report on. Example: "slack,zoom" |
| `startdate` | string | No | ISO 8601 start of the time range (only works together with enddate) |
| `enddate` | string | No | ISO 8601 end of the time range (only works together with startdate) |
| `interval` | string | No | Bucket interval, e.g. "15m", "1h", "1d" (default "15m") |
| `apiKey` | string | Yes | Downdetector API Bearer token |
#### Output [#output-6]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------------- |
| `reports` | array | Report counts bucketed by interval |
| ↳ `pointInTime` | string | Start of the time bucket (ISO 8601) |
| ↳ `total` | number | Total number of reports in the bucket |
| ↳ `indicators` | number | Number of indicator reports |
| ↳ `other` | number | Number of reports from other sources |
### Downdetector Get Company Incidents [#downdetector-get-company-incidents]
Get the list of incidents (outages) for a Downdetector company. Defaults to the last 24 hours unless a date range is provided.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | ------------------------------------------------------------------- |
| `companyId` | string | Yes | The Downdetector company id |
| `onlyActive` | boolean | No | When true, only the currently active incident is returned |
| `startdate` | string | No | ISO 8601 start of the time range (only works together with enddate) |
| `enddate` | string | No | ISO 8601 end of the time range (only works together with startdate) |
| `page` | number | No | Requested page number (1-indexed) |
| `pageSize` | number | No | Number of results per page, between 10 and 100 |
| `apiKey` | string | Yes | Downdetector API Bearer token |
#### Output [#output-7]
| Parameter | Type | Description |
| ----------- | ----- | --------------------------------- |
| `incidents` | array | List of incidents for the company |
### Downdetector Get Company Attribution [#downdetector-get-company-attribution]
Get the incident attribution for a Downdetector company while it is in an outage state — whether the issue is internal (isolated) or external (a dependency), the estimated user impact, and the related incident. Requires Incident Attribution access.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------- |
| `companyId` | string | Yes | The Downdetector company id |
| `apiKey` | string | Yes | Downdetector API Bearer token |
#### Output [#output-8]
| Parameter | Type | Description |
| --------------------------- | ------ | --------------------------------------------------------------------- |
| `attribution` | object | Incident attribution detail |
| ↳ `attribution` | number | Attribution enum (0 N/A, 1 undetermined, 2 external, 3 internal) |
| ↳ `attributionCalculatedAt` | string | ISO 8601 timestamp when attribution was calculated |
| ↳ `userImpact` | number | User impact enum (0 low, 1 medium, 2 high, 3 very high) |
| ↳ `userImpactCalculatedAt` | string | ISO 8601 timestamp when user impact was calculated |
| ↳ `reason` | number | Reason enum explaining how the attribution value was calculated (0-7) |
| ↳ `dangerDurationS` | number | Duration of the current danger (outage) state in seconds |
| ↳ `incidentId` | number | Id of the related incident (null when attribution is N/A) |
| ↳ `incidentCreatedAt` | string | ISO 8601 timestamp when the related incident was created |
### Downdetector Get Company Events [#downdetector-get-company-events]
Get the published events (such as detected outages) for a Downdetector company, including the measured vs expected report volume for each event.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------- |
| `companyId` | string | Yes | The Downdetector company id |
| `startdate` | string | No | ISO 8601 start of the time range (only works together with enddate) |
| `enddate` | string | No | ISO 8601 end of the time range (only works together with startdate) |
| `page` | number | No | Requested page number (1-indexed) |
| `pageSize` | number | No | Number of results per page, between 10 and 100 |
| `apiKey` | string | Yes | Downdetector API Bearer token |
#### Output [#output-9]
| Parameter | Type | Description |
| --------------- | ------- | ------------------------------------------------------- |
| `events` | array | List of events for the company |
| ↳ `id` | number | Event id |
| ↳ `title` | string | Localized event title |
| ↳ `body` | string | Localized event body |
| ↳ `companyId` | number | Id of the impacted company |
| ↳ `createdAt` | string | ISO 8601 creation timestamp |
| ↳ `publishAt` | string | ISO 8601 publish timestamp |
| ↳ `isActive` | boolean | Whether the event is ongoing |
| ↳ `measurement` | object | Measured vs expected report volume for the event window |
| ↳ `startedOn` | string | Measurement window start (ISO 8601) |
| ↳ `endedOn` | string | Measurement window end (ISO 8601) |
| ↳ `expected` | number | Expected reports based on historic data |
| ↳ `actual` | number | Actual reports in the window |
### Downdetector Get Site Companies [#downdetector-get-site-companies]
List the companies monitored on a Downdetector site, including each company’s current status. Useful for discovering the companies available on a regional status page.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------------------------------------- |
| `siteId` | string | Yes | The Downdetector site id |
| `fields` | string | No | Comma-separated company fields to return (defaults to id, name, slug, status) |
| `page` | string | No | Opaque page token from a previous response (X-Page-Next) for the next page |
| `pageSize` | number | No | Number of results per page, between 10 and 100 |
| `apiKey` | string | Yes | Downdetector API Bearer token |
#### Output [#output-10]
| Parameter | Type | Description |
| -------------- | ------ | --------------------------------------------------- |
| `companies` | array | List of companies on the site |
| ↳ `id` | number | Company id |
| ↳ `name` | string | Company name |
| ↳ `slug` | string | Company slug |
| ↳ `url` | string | Company status page URL |
| ↳ `status` | string | Cached current status (success, warning, or danger) |
| ↳ `countryIso` | string | ISO-2 country code |
| ↳ `categoryId` | number | Category id |
### Downdetector Get Provider [#downdetector-get-provider]
Get details for a Downdetector provider (ISP or network operator) by id, such as its name and Downdetector id.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ----------------------------- |
| `providerId` | string | Yes | The Downdetector provider id |
| `apiKey` | string | Yes | Downdetector API Bearer token |
#### Output [#output-11]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------------- |
| `provider` | object | Provider details |
| ↳ `id` | number | Provider id |
| ↳ `name` | string | Provider name |
| ↳ `downdetectorId` | number | Downdetector internal provider id |
### Downdetector List Incidents [#downdetector-list-incidents]
List all incidents (outages) across every company that were active in the chosen time period, or in the last 24 hours if no date range is provided.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | ------------------------------------------------------------------- |
| `onlyActive` | boolean | No | When true, only currently active incidents are returned |
| `startdate` | string | No | ISO 8601 start of the time range (only works together with enddate) |
| `enddate` | string | No | ISO 8601 end of the time range (only works together with startdate) |
| `page` | number | No | Requested page number (1-indexed) |
| `pageSize` | number | No | Number of results per page, between 10 and 100 |
| `apiKey` | string | Yes | Downdetector API Bearer token |
#### Output [#output-12]
| Parameter | Type | Description |
| ----------- | ----- | -------------------------------------- |
| `incidents` | array | List of incidents across all companies |
### Downdetector List Categories [#downdetector-list-categories]
List all Downdetector categories (e.g. "Telecom", "Gaming", "Social Media"). Use the returned category id to filter company searches.
#### Input [#input-13]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------- |
| `apiKey` | string | Yes | Downdetector API Bearer token |
#### Output [#output-13]
| Parameter | Type | Description |
| ------------ | ------ | ------------------------------- |
| `categories` | array | List of Downdetector categories |
| ↳ `id` | number | Category id |
| ↳ `name` | string | Category name |
| ↳ `slug` | string | Category slug |
### Downdetector List Sites [#downdetector-list-sites]
List all available Downdetector sites (regional status-page domains). Each site groups the companies monitored for a given country/region.
#### Input [#input-14]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------- |
| `apiKey` | string | Yes | Downdetector API Bearer token |
#### Output [#output-14]
| Parameter | Type | Description |
| ------------- | ------ | -------------------------- |
| `sites` | array | List of Downdetector sites |
| ↳ `id` | number | Site id |
| ↳ `name` | string | Site name |
| ↳ `domain` | string | Site domain |
| ↳ `countryId` | number | Country id for the site |
---
# Dropbox (/integrations/dropbox)
{/* MANUAL-CONTENT-START:intro */}
[Dropbox](https://dropbox.com/) is a popular cloud storage and collaboration platform that enables individuals and teams to securely store, access, and share files from anywhere. Dropbox is designed for easy file management, syncing, and powerful collaboration, whether you're working solo or with a group.
With Dropbox in Sim, you can:
* **Upload and download files**: Seamlessly upload any file to your Dropbox or retrieve content on demand
* **List folder contents**: Browse the files and folders within any Dropbox directory
* **Create new folders**: Organize your files by programmatically creating new folders in your Dropbox
* **Search files and folders**: Locate documents, images, or other items by name or content
* **Generate shared links**: Quickly create shareable public or private links for files and folders
* **Manage files**: Move, delete, or rename files and folders as part of automated workflows
These capabilities allow your Sim agents to automate Dropbox operations directly within your workflows — from backing up important files to distributing content and maintaining organized folders. Use Dropbox as both a source and destination for files, enabling seamless cloud storage management as part of your business processes.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Dropbox into your workflow for file management, sharing, and collaboration. Upload files, download content, create folders, manage shared links, and more.
## Actions [#actions]
### Dropbox Upload File [#dropbox-upload-file]
Upload a file to Dropbox
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | ------------------------------------------------------------------------------- |
| `path` | string | Yes | The path in Dropbox where the file should be saved (e.g., /folder/document.pdf) |
| `file` | file | No | The file to upload (UserFile object) |
| `fileContent` | string | No | Legacy: base64 encoded file content |
| `fileName` | string | No | Optional filename (used if path is a folder) |
| `mode` | string | No | Write mode: add (default) or overwrite |
| `autorename` | boolean | No | If true, rename the file if there is a conflict |
| `mute` | boolean | No | If true, don't notify the user about this upload |
#### Output [#output]
| Parameter | Type | Description |
| ------------------- | ------ | ------------------------------ |
| `file` | object | The uploaded file metadata |
| ↳ `id` | string | Unique identifier for the file |
| ↳ `name` | string | Name of the file |
| ↳ `path_display` | string | Display path of the file |
| ↳ `path_lower` | string | Lowercase path of the file |
| ↳ `size` | number | Size of the file in bytes |
| ↳ `client_modified` | string | Client modification time |
| ↳ `server_modified` | string | Server modification time |
| ↳ `rev` | string | Revision identifier |
| ↳ `content_hash` | string | Content hash for the file |
### Dropbox Download File [#dropbox-download-file]
Download a file from Dropbox with metadata and content
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------- |
| `path` | string | Yes | The path of the file to download (e.g., /folder/document.pdf) |
#### Output [#output-1]
| Parameter | Type | Description |
| --------------- | ------ | --------------------------------------------------------- |
| `file` | file | Downloaded file stored in execution files |
| `metadata` | json | The file metadata |
| `temporaryLink` | string | Temporary link to download the file (valid for \~4 hours) |
| `content` | string | Base64 encoded file content (if fetched) |
### Dropbox List Folder [#dropbox-list-folder]
List the contents of a folder in Dropbox
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | -------------------------------------------------- |
| `path` | string | Yes | The path of the folder to list (use "" for root) |
| `recursive` | boolean | No | If true, list contents recursively |
| `includeDeleted` | boolean | No | If true, include deleted files/folders |
| `includeMediaInfo` | boolean | No | If true, include media info for photos/videos |
| `limit` | number | No | Maximum number of results to return (default: 500) |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------------------------ |
| `entries` | array | List of files and folders in the directory |
| ↳ `id` | string | Unique identifier |
| ↳ `name` | string | Name of the file/folder |
| ↳ `path_display` | string | Display path |
| ↳ `size` | number | Size in bytes (files only) |
| `cursor` | string | Cursor for pagination |
| `hasMore` | boolean | Whether there are more results |
### Dropbox Create Folder [#dropbox-create-folder]
Create a new folder in Dropbox
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | --------------------------------------------------------------- |
| `path` | string | Yes | The path where the folder should be created (e.g., /new-folder) |
| `autorename` | boolean | No | If true, rename the folder if there is a conflict |
#### Output [#output-3]
| Parameter | Type | Description |
| ---------------- | ------ | -------------------------------- |
| `folder` | object | The created folder metadata |
| ↳ `id` | string | Unique identifier for the folder |
| ↳ `name` | string | Name of the folder |
| ↳ `path_display` | string | Display path of the folder |
| ↳ `path_lower` | string | Lowercase path of the folder |
### Dropbox Delete [#dropbox-delete]
Delete a file or folder in Dropbox (moves to trash)
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------- |
| `path` | string | Yes | The path of the file or folder to delete |
#### Output [#output-4]
| Parameter | Type | Description |
| ---------------- | ------- | ----------------------------------- |
| `metadata` | object | Metadata of the deleted item |
| ↳ `name` | string | Name of the deleted item |
| ↳ `path_display` | string | Display path |
| `deleted` | boolean | Whether the deletion was successful |
### Dropbox Copy [#dropbox-copy]
Copy a file or folder in Dropbox
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | -------------------------------------------------------------- |
| `fromPath` | string | Yes | The source path of the file or folder to copy |
| `toPath` | string | Yes | The destination path for the copied file or folder |
| `autorename` | boolean | No | If true, rename the file if there is a conflict at destination |
#### Output [#output-5]
| Parameter | Type | Description |
| ---------------- | ------ | --------------------------- |
| `metadata` | object | Metadata of the copied item |
| ↳ `id` | string | Unique identifier |
| ↳ `name` | string | Name of the copied item |
| ↳ `path_display` | string | Display path |
| ↳ `size` | number | Size in bytes (files only) |
### Dropbox Move [#dropbox-move]
Move or rename a file or folder in Dropbox
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | -------------------------------------------------------------- |
| `fromPath` | string | Yes | The source path of the file or folder to move |
| `toPath` | string | Yes | The destination path for the moved file or folder |
| `autorename` | boolean | No | If true, rename the file if there is a conflict at destination |
#### Output [#output-6]
| Parameter | Type | Description |
| ---------------- | ------ | -------------------------- |
| `metadata` | object | Metadata of the moved item |
| ↳ `id` | string | Unique identifier |
| ↳ `name` | string | Name of the moved item |
| ↳ `path_display` | string | Display path |
| ↳ `size` | number | Size in bytes (files only) |
### Dropbox Get Metadata [#dropbox-get-metadata]
Get metadata for a file or folder in Dropbox
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | -------------------------------------------------- |
| `path` | string | Yes | The path of the file or folder to get metadata for |
| `includeMediaInfo` | boolean | No | If true, include media info for photos/videos |
| `includeDeleted` | boolean | No | If true, include deleted files in results |
#### Output [#output-7]
| Parameter | Type | Description |
| ------------------- | ------ | ------------------------------------- |
| `metadata` | object | Metadata for the file or folder |
| ↳ `id` | string | Unique identifier |
| ↳ `name` | string | Name of the item |
| ↳ `path_display` | string | Display path |
| ↳ `path_lower` | string | Lowercase path |
| ↳ `size` | number | Size in bytes (files only) |
| ↳ `client_modified` | string | Client modification time (files only) |
| ↳ `server_modified` | string | Server modification time (files only) |
| ↳ `rev` | string | Revision identifier (files only) |
| ↳ `content_hash` | string | Content hash (files only) |
### Dropbox Create Shared Link [#dropbox-create-shared-link]
Create a shareable link for a file or folder in Dropbox
#### Input [#input-8]
| Parameter | Type | Required | Description |
| --------------------- | ------ | -------- | --------------------------------------------------------------- |
| `path` | string | Yes | The path of the file or folder to share |
| `requestedVisibility` | string | No | Visibility: public, team\_only, or password |
| `linkPassword` | string | No | Password for the shared link (only if visibility is password) |
| `expires` | string | No | Expiration date in ISO 8601 format (e.g., 2025-12-31T23:59:59Z) |
#### Output [#output-8]
| Parameter | Type | Description |
| -------------------- | ------ | --------------------------------- |
| `sharedLink` | object | The created shared link |
| ↳ `url` | string | The shared link URL |
| ↳ `name` | string | Name of the shared item |
| ↳ `path_lower` | string | Lowercase path of the shared item |
| ↳ `expires` | string | Expiration date if set |
| ↳ `link_permissions` | object | Permissions for the shared link |
### Dropbox List Shared Links [#dropbox-list-shared-links]
List shared links for a path, or for the entire account if no path is given
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | ------------------------------------------------------------------------ |
| `path` | string | No | Path to list shared links for. If omitted, lists all shared links. |
| `directOnly` | boolean | No | If true, only return links directly to the path, not parent folder links |
| `cursor` | string | No | Cursor from a previous call to fetch the next page of results |
#### Output [#output-9]
| Parameter | Type | Description |
| -------------- | ------- | ----------------------------------------------------------- |
| `links` | array | Shared links applicable to the path argument |
| ↳ `url` | string | The shared link URL |
| ↳ `name` | string | Name of the shared item |
| ↳ `path_lower` | string | Lowercase path of the shared item |
| ↳ `expires` | string | Expiration date if set |
| `hasMore` | boolean | Whether there are more results |
| `cursor` | string | Cursor for pagination (only returned when no path is given) |
### Dropbox Search [#dropbox-search]
Search for files and folders in Dropbox
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------- |
| `query` | string | Yes | The search query |
| `path` | string | No | Dropbox folder path to limit search scope (e.g., /folder/subfolder) |
| `fileExtensions` | string | No | Comma-separated list of file extensions to filter by (e.g., pdf,xlsx) |
| `maxResults` | number | No | Maximum number of results to return (default: 100) |
#### Output [#output-10]
| Parameter | Type | Description |
| -------------- | ------- | ----------------------------------------- |
| `matches` | array | Search results |
| ↳ `match_type` | object | Type of match: filename, content, or both |
| ↳ `metadata` | object | File or folder metadata |
| `hasMore` | boolean | Whether there are more results |
| `cursor` | string | Cursor for pagination |
### Dropbox List Revisions [#dropbox-list-revisions]
List the revision history for a file in Dropbox (files only, not folders)
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------- |
| `path` | string | Yes | The path of the file to list revisions for |
| `limit` | number | No | Maximum number of revisions to return, 1-100 (default: 10) |
| `beforeRev` | string | No | Only return revisions before this one. Pass the rev of the last revision from a previous call to fetch the next page. |
#### Output [#output-11]
| Parameter | Type | Description |
| ------------------- | ------- | ---------------------------------------------------------------------- |
| `entries` | array | The revisions for the file, most recent first |
| ↳ `id` | string | Unique identifier for this revision |
| ↳ `name` | string | Name of the file |
| ↳ `path_display` | string | Display path |
| ↳ `rev` | string | Revision identifier, pass to Restore |
| ↳ `size` | number | Size of this revision in bytes |
| ↳ `server_modified` | string | Server modification time |
| `isDeleted` | boolean | Whether the file identified by the latest revision is deleted or moved |
| `hasMore` | boolean | Whether there are more revisions available |
### Dropbox Restore [#dropbox-restore]
Restore a specific revision of a file to the given path
#### Input [#input-12]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------------------- |
| `path` | string | Yes | The path to save the restored file to |
| `rev` | string | Yes | The revision identifier to restore (from Dropbox List Revisions) |
#### Output [#output-12]
| Parameter | Type | Description |
| ------------------- | ------ | ---------------------------------------- |
| `metadata` | object | Metadata of the restored file |
| ↳ `id` | string | Unique identifier for the file |
| ↳ `name` | string | Name of the file |
| ↳ `path_display` | string | Display path of the file |
| ↳ `path_lower` | string | Lowercase path of the file |
| ↳ `size` | number | Size of the file in bytes |
| ↳ `rev` | string | Revision identifier of the restored file |
| ↳ `server_modified` | string | Server modification time |
---
# Dropcontact (/integrations/dropcontact)
{/* MANUAL-CONTENT-START:intro */}
[Dropcontact](https://www.dropcontact.com/) is a GDPR-compliant B2B enrichment service that verifies and completes contact data without relying on a static database — it computes and double-checks each result on demand.
With Dropcontact, you can:
* **Verify and enrich contacts:** Submit a name, company, website, or LinkedIn URL and receive a verified professional email, phone number, company firmographics, and LinkedIn profile.
* **Get deliverable emails only:** Dropcontact validates every email it returns, so credits are charged only when a verified address is found.
* **Handle async enrichment cleanly:** Requests are processed asynchronously and Sim polls until the result is ready, so your workflow waits for a complete answer.
In Sim, the Dropcontact integration lets your agents enrich and verify B2B contacts inside a workflow — keeping your CRM accurate and your outreach lists clean without manual lookups.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Use Dropcontact to verify and enrich B2B contacts. Submit a contact with their name, company, website, or LinkedIn URL and receive a verified professional email, phone number, company firmographics, and LinkedIn profile. Enrichment is async: Dropcontact processes the request, then Sim polls until the result is ready. Credits are only charged when a verified email is returned.
## Actions [#actions]
### Dropcontact Enrich Contact [#dropcontact-enrich-contact]
Enrich a contact with verified B2B email, phone, company data, and LinkedIn info via Dropcontact. Submits an async enrichment request, then polls until the result is ready (up to 2 minutes). Charges 1 credit only when a verified email is returned. Provide at least one of: email, first\_name+last\_name+company, full\_name+company, or linkedin URL.
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | --------------------------------------------------- |
| `apiKey` | string | Yes | Dropcontact API key (X-Access-Token) |
| `email` | string | No | Email address of the contact to enrich |
| `first_name` | string | No | First name of the contact |
| `last_name` | string | No | Last name of the contact |
| `full_name` | string | No | Full name (alternative to first\_name + last\_name) |
| `company` | string | No | Company name |
| `website` | string | No | Company website (e.g. acme.com) |
| `num_siren` | string | No | French company SIREN number |
| `phone` | string | No | Phone number |
| `linkedin` | string | No | LinkedIn profile URL |
| `country` | string | No | Country code (ISO 3166-1 alpha-2, e.g. "US", "FR") |
| `siren` | boolean | No | Include SIREN/SIRET enrichment (France only) |
| `language` | string | No | Language for returned data (e.g. "en", "fr") |
#### Output [#output]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------------------------------- |
| `request_id` | string | Dropcontact async request ID |
| `email_found` | boolean | Whether a verified email was found |
| `email` | string | Primary verified email address |
| `emails` | array | All email addresses returned (each with email and qualification) |
| ↳ `email` | string | Email address |
| ↳ `qualification` | string | Email qualification (e.g. nominative\@pro) |
| `qualification` | string | Primary email qualification (e.g. nominative\@pro, catch\_all\@pro) |
| `first_name` | string | First name |
| `last_name` | string | Last name |
| `full_name` | string | Full name |
| `civility` | string | Civility (Mr, Mrs, etc.) |
| `phone` | string | Phone number |
| `mobile_phone` | string | Mobile phone number |
| `company` | string | Company name |
| `website` | string | Company website |
| `company_linkedin` | string | Company LinkedIn URL |
| `linkedin` | string | Personal LinkedIn URL |
| `country` | string | Country code (ISO 3166-1 alpha-2) |
| `siren` | string | French SIREN number |
| `siret` | string | French SIRET number |
| `siret_address` | string | SIRET registered address |
| `siret_zip` | string | SIRET registered postal code |
| `siret_city` | string | SIRET registered city |
| `vat` | string | VAT number |
| `nb_employees` | string | Employee count range |
| `employee_count` | number | Exact employee count (Growth plan and above) |
| `naf5_code` | string | NAF/APE code (France) |
| `naf5_des` | string | NAF/APE code description (France) |
| `industry` | string | Industry classification |
| `job` | string | Job title |
| `job_level` | string | Job seniority level (e.g. C-level, Director) |
| `job_function` | string | Job function (e.g. Sales, Engineering) |
| `company_turnover` | string | Company revenue/turnover range |
| `company_results` | string | Company net results |
---
# DSPy (/integrations/dspy)
{/* MANUAL-CONTENT-START:intro */}
[DSPy](https://github.com/stanford-oval/dspy) is an open-source framework for programming—rather than prompting—language models. DSPy enables you to build interpretable and modular LLM-powered agents using Python functions, structured modules, and declarative signatures, making it easy to compose, debug, and reliably deploy language model applications.
With DSPy in Sim, you can:
* **Run custom predictions**: Connect your self-hosted DSPy server and invoke prediction endpoints for a variety of natural language tasks.
* **Chain of Thought and ReAct reasoning**: Leverage advanced DSPy modules for step-by-step reasoning, multi-turn dialogs, and action-observation loops.
* **Integrate with your workflows**: Automate LLM predictions and reasoning as part of any Sim automation or agent routine.
* **Provide custom endpoints and context**: Flexibly call your own DSPy-powered APIs with custom authentication, endpoints, input fields, and context.
These features let your Sim agents access modular, interpretable LLM-based programs for tasks like question answering, document analysis, decision support, and more—where you remain in control of the model, data, and logic.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate with your self-hosted DSPy programs for LLM-powered predictions. Supports Predict, Chain of Thought, and ReAct agents. DSPy is the framework for programming—not prompting—language models.
## Actions [#actions]
### DSPy Predict [#dspy-predict]
Run a prediction using a self-hosted DSPy program endpoint
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------- |
| `baseUrl` | string | Yes | Base URL of the DSPy server (e.g., [https://your-dspy-server.com\\](https://your-dspy-server.com\\)) |
| `apiKey` | string | No | API key for authentication (if required by your server) |
| `endpoint` | string | No | API endpoint path (defaults to /predict) |
| `input` | string | Yes | The input text to send to the DSPy program |
| `inputField` | string | No | Name of the input field expected by the DSPy program (defaults to "text") |
| `context` | string | No | Additional context to provide to the DSPy program |
| `additionalInputs` | json | No | Additional key-value pairs to include in the request body |
#### Output [#output]
| Parameter | Type | Description |
| ----------- | ------ | --------------------------------------------------------------- |
| `answer` | string | The main output/answer from the DSPy program |
| `reasoning` | string | The reasoning or rationale behind the answer (if available) |
| `status` | string | Response status from the DSPy server (success or error) |
| `rawOutput` | json | The complete raw output from the DSPy program (result.toDict()) |
### DSPy Chain of Thought [#dspy-chain-of-thought]
Run a Chain of Thought prediction using a self-hosted DSPy ChainOfThought program endpoint
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- |
| `baseUrl` | string | Yes | Base URL of the DSPy server (e.g., [https://your-dspy-server.com\\](https://your-dspy-server.com\\)) |
| `apiKey` | string | No | API key for authentication (if required by your server) |
| `endpoint` | string | No | API endpoint path (defaults to /predict) |
| `question` | string | Yes | The question to answer using chain of thought reasoning |
| `context` | string | No | Additional context to provide for answering the question |
#### Output [#output-1]
| Parameter | Type | Description |
| ----------- | ------ | --------------------------------------------------------------- |
| `answer` | string | The answer generated through chain of thought reasoning |
| `reasoning` | string | The step-by-step reasoning that led to the answer |
| `status` | string | Response status from the DSPy server (success or error) |
| `rawOutput` | json | The complete raw output from the DSPy program (result.toDict()) |
### DSPy ReAct [#dspy-react]
Run a ReAct agent using a self-hosted DSPy ReAct program endpoint for multi-step reasoning and action
#### Input [#input-2]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- |
| `baseUrl` | string | Yes | Base URL of the DSPy server (e.g., [https://your-dspy-server.com\\](https://your-dspy-server.com\\)) |
| `apiKey` | string | No | API key for authentication (if required by your server) |
| `endpoint` | string | No | API endpoint path (defaults to /predict) |
| `task` | string | Yes | The task or question for the ReAct agent to work on |
| `context` | string | No | Additional context to provide for the task |
| `maxIterations` | number | No | Maximum number of reasoning iterations (defaults to server setting) |
#### Output [#output-2]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------------------------------------------ |
| `answer` | string | The final answer or result from the ReAct agent |
| `reasoning` | string | The overall reasoning summary from the agent |
| `trajectory` | array | The step-by-step trajectory of thoughts, actions, and observations |
| ↳ `thought` | string | The reasoning thought at this step |
| ↳ `toolName` | string | The name of the tool/action called |
| ↳ `toolArgs` | json | Arguments passed to the tool |
| ↳ `observation` | string | The observation/result from the tool execution |
| `status` | string | Response status from the DSPy server (success or error) |
| `rawOutput` | json | The complete raw output from the DSPy program (result.toDict()) |
---
# Dub (/integrations/dub)
{/* MANUAL-CONTENT-START:intro */}
[Dub](https://dub.co/) is an open-source link management platform for modern marketing teams. It provides powerful short link creation, analytics, and tracking capabilities with enterprise-grade infrastructure.
With the Dub integration in Sim, you can:
* **Create short links**: Generate branded short links with custom domains, slugs, and UTM parameters
* **Upsert links**: Create or update links idempotently by destination URL
* **Retrieve link info**: Look up link details by ID, external ID, or domain + key combination
* **Update links**: Modify destination URLs, metadata, UTM parameters, and link settings
* **Delete links**: Remove short links by ID or external ID
* **List links**: Search and filter links with pagination, sorting, and tag filtering
* **Get analytics**: Retrieve click, lead, and sales analytics with grouping by time, geography, device, browser, referer, and more
In Sim, the Dub integration enables your agents to manage short links and track their performance programmatically. Use it to create trackable links as part of marketing workflows, monitor link engagement, and make data-driven decisions based on click analytics and conversion metrics.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Create, manage, and track short links with Dub. Supports custom domains, UTM parameters, link analytics, and more.
## Actions [#actions]
### Dub Create Link [#dub-create-link]
Create a new short link with Dub. Supports custom domains, slugs, UTM parameters, and more.
#### Input [#input]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | ------------------------------------------------------------------- |
| `apiKey` | string | Yes | Dub API key |
| `url` | string | Yes | The destination URL of the short link |
| `domain` | string | No | Custom domain for the short link (defaults to dub.sh) |
| `key` | string | No | Custom slug for the short link (randomly generated if not provided) |
| `externalId` | string | No | External ID for the link in your database |
| `tenantId` | string | No | Tenant ID for grouping links created on behalf of a customer/tenant |
| `folderId` | string | No | Folder ID to organize the link into |
| `trackConversion` | boolean | No | Whether to track conversions (leads/sales) for the short link |
| `tagIds` | string | No | Comma-separated tag IDs to assign to the link |
| `comments` | string | No | Comments for the short link |
| `expiresAt` | string | No | Expiration date in ISO 8601 format |
| `password` | string | No | Password to protect the short link |
| `rewrite` | boolean | No | Whether to enable link cloaking |
| `archived` | boolean | No | Whether to archive the link |
| `title` | string | No | Custom OG title for the link preview |
| `description` | string | No | Custom OG description for the link preview |
| `utm_source` | string | No | UTM source parameter |
| `utm_medium` | string | No | UTM medium parameter |
| `utm_campaign` | string | No | UTM campaign parameter |
| `utm_term` | string | No | UTM term parameter |
| `utm_content` | string | No | UTM content parameter |
#### Output [#output]
| Parameter | Type | Description |
| ----------------- | ------- | ------------------------------------------- |
| `id` | string | Unique ID of the created link |
| `domain` | string | Domain of the short link |
| `key` | string | Slug of the short link |
| `url` | string | Destination URL |
| `shortLink` | string | Full short link URL |
| `qrCode` | string | QR code URL for the short link |
| `archived` | boolean | Whether the link is archived |
| `externalId` | string | External ID |
| `title` | string | OG title |
| `description` | string | OG description |
| `tags` | json | Tags assigned to the link (id, name, color) |
| `folderId` | string | Folder the link is organized into |
| `tenantId` | string | Tenant ID associated with the link |
| `trackConversion` | boolean | Whether conversion tracking is enabled |
| `clicks` | number | Number of clicks |
| `leads` | number | Number of leads |
| `conversions` | number | Number of conversions |
| `sales` | number | Number of sales |
| `saleAmount` | number | Total sale amount in cents |
| `lastClicked` | string | Last clicked timestamp |
| `createdAt` | string | Creation timestamp |
| `updatedAt` | string | Last update timestamp |
| `utm_source` | string | UTM source parameter |
| `utm_medium` | string | UTM medium parameter |
| `utm_campaign` | string | UTM campaign parameter |
| `utm_term` | string | UTM term parameter |
| `utm_content` | string | UTM content parameter |
### Dub Upsert Link [#dub-upsert-link]
Create or update a short link by its URL. If a link with the same URL already exists, update it. Otherwise, create a new link.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | ------------------------------------------------------------------- |
| `apiKey` | string | Yes | Dub API key |
| `url` | string | Yes | The destination URL of the short link |
| `domain` | string | No | Custom domain for the short link (defaults to dub.sh) |
| `key` | string | No | Custom slug for the short link (randomly generated if not provided) |
| `externalId` | string | No | External ID for the link in your database |
| `tenantId` | string | No | Tenant ID for grouping links created on behalf of a customer/tenant |
| `folderId` | string | No | Folder ID to organize the link into |
| `trackConversion` | boolean | No | Whether to track conversions (leads/sales) for the short link |
| `tagIds` | string | No | Comma-separated tag IDs to assign to the link |
| `comments` | string | No | Comments for the short link |
| `expiresAt` | string | No | Expiration date in ISO 8601 format |
| `password` | string | No | Password to protect the short link |
| `rewrite` | boolean | No | Whether to enable link cloaking |
| `archived` | boolean | No | Whether to archive the link |
| `title` | string | No | Custom OG title for the link preview |
| `description` | string | No | Custom OG description for the link preview |
| `utm_source` | string | No | UTM source parameter |
| `utm_medium` | string | No | UTM medium parameter |
| `utm_campaign` | string | No | UTM campaign parameter |
| `utm_term` | string | No | UTM term parameter |
| `utm_content` | string | No | UTM content parameter |
#### Output [#output-1]
| Parameter | Type | Description |
| ----------------- | ------- | ------------------------------------------- |
| `id` | string | Unique ID of the link |
| `domain` | string | Domain of the short link |
| `key` | string | Slug of the short link |
| `url` | string | Destination URL |
| `shortLink` | string | Full short link URL |
| `qrCode` | string | QR code URL for the short link |
| `archived` | boolean | Whether the link is archived |
| `externalId` | string | External ID |
| `title` | string | OG title |
| `description` | string | OG description |
| `tags` | json | Tags assigned to the link (id, name, color) |
| `folderId` | string | Folder the link is organized into |
| `tenantId` | string | Tenant ID associated with the link |
| `trackConversion` | boolean | Whether conversion tracking is enabled |
| `clicks` | number | Number of clicks |
| `leads` | number | Number of leads |
| `conversions` | number | Number of conversions |
| `sales` | number | Number of sales |
| `saleAmount` | number | Total sale amount in cents |
| `lastClicked` | string | Last clicked timestamp |
| `createdAt` | string | Creation timestamp |
| `updatedAt` | string | Last update timestamp |
| `utm_source` | string | UTM source parameter |
| `utm_medium` | string | UTM medium parameter |
| `utm_campaign` | string | UTM campaign parameter |
| `utm_term` | string | UTM term parameter |
| `utm_content` | string | UTM content parameter |
### Dub Get Link [#dub-get-link]
Retrieve information about a short link by its link ID, external ID, or domain + key combination.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | -------------------------------------------- |
| `apiKey` | string | Yes | Dub API key |
| `linkId` | string | No | The unique ID of the short link |
| `externalId` | string | No | The external ID of the link in your database |
| `domain` | string | No | The domain of the link (use with key) |
| `key` | string | No | The slug of the link (use with domain) |
#### Output [#output-2]
| Parameter | Type | Description |
| ----------------- | ------- | ------------------------------------------- |
| `id` | string | Unique ID of the link |
| `domain` | string | Domain of the short link |
| `key` | string | Slug of the short link |
| `url` | string | Destination URL |
| `shortLink` | string | Full short link URL |
| `qrCode` | string | QR code URL for the short link |
| `archived` | boolean | Whether the link is archived |
| `externalId` | string | External ID |
| `title` | string | OG title |
| `description` | string | OG description |
| `tags` | json | Tags assigned to the link (id, name, color) |
| `folderId` | string | Folder the link is organized into |
| `tenantId` | string | Tenant ID associated with the link |
| `trackConversion` | boolean | Whether conversion tracking is enabled |
| `clicks` | number | Number of clicks |
| `leads` | number | Number of leads |
| `conversions` | number | Number of conversions |
| `sales` | number | Number of sales |
| `saleAmount` | number | Total sale amount in cents |
| `lastClicked` | string | Last clicked timestamp |
| `createdAt` | string | Creation timestamp |
| `updatedAt` | string | Last update timestamp |
| `utm_source` | string | UTM source parameter |
| `utm_medium` | string | UTM medium parameter |
| `utm_campaign` | string | UTM campaign parameter |
| `utm_term` | string | UTM term parameter |
| `utm_content` | string | UTM content parameter |
### Dub Update Link [#dub-update-link]
Update an existing short link. You can modify the destination URL, slug, metadata, UTM parameters, and more.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | ------------------------------------------------------------------- |
| `apiKey` | string | Yes | Dub API key |
| `linkId` | string | Yes | The link ID or external ID prefixed with ext\_ |
| `url` | string | No | New destination URL |
| `domain` | string | No | New custom domain |
| `key` | string | No | New custom slug |
| `title` | string | No | Custom OG title |
| `description` | string | No | Custom OG description |
| `externalId` | string | No | External ID for the link |
| `tenantId` | string | No | Tenant ID for grouping links created on behalf of a customer/tenant |
| `folderId` | string | No | Folder ID to organize the link into |
| `trackConversion` | boolean | No | Whether to track conversions (leads/sales) for the short link |
| `tagIds` | string | No | Comma-separated tag IDs |
| `comments` | string | No | Comments for the short link |
| `expiresAt` | string | No | Expiration date in ISO 8601 format |
| `password` | string | No | Password to protect the link |
| `rewrite` | boolean | No | Whether to enable link cloaking |
| `archived` | boolean | No | Whether to archive the link |
| `utm_source` | string | No | UTM source parameter |
| `utm_medium` | string | No | UTM medium parameter |
| `utm_campaign` | string | No | UTM campaign parameter |
| `utm_term` | string | No | UTM term parameter |
| `utm_content` | string | No | UTM content parameter |
#### Output [#output-3]
| Parameter | Type | Description |
| ----------------- | ------- | ------------------------------------------- |
| `id` | string | Unique ID of the updated link |
| `domain` | string | Domain of the short link |
| `key` | string | Slug of the short link |
| `url` | string | Destination URL |
| `shortLink` | string | Full short link URL |
| `qrCode` | string | QR code URL for the short link |
| `archived` | boolean | Whether the link is archived |
| `externalId` | string | External ID |
| `title` | string | OG title |
| `description` | string | OG description |
| `tags` | json | Tags assigned to the link (id, name, color) |
| `folderId` | string | Folder the link is organized into |
| `tenantId` | string | Tenant ID associated with the link |
| `trackConversion` | boolean | Whether conversion tracking is enabled |
| `clicks` | number | Number of clicks |
| `leads` | number | Number of leads |
| `conversions` | number | Number of conversions |
| `sales` | number | Number of sales |
| `saleAmount` | number | Total sale amount in cents |
| `lastClicked` | string | Last clicked timestamp |
| `createdAt` | string | Creation timestamp |
| `updatedAt` | string | Last update timestamp |
| `utm_source` | string | UTM source parameter |
| `utm_medium` | string | UTM medium parameter |
| `utm_campaign` | string | UTM campaign parameter |
| `utm_term` | string | UTM term parameter |
| `utm_content` | string | UTM content parameter |
### Dub Delete Link [#dub-delete-link]
Delete a short link by its link ID or external ID (prefixed with ext\_).
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------- |
| `apiKey` | string | Yes | Dub API key |
| `linkId` | string | Yes | The link ID or external ID prefixed with ext\_ |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ------ | ---------------------- |
| `id` | string | ID of the deleted link |
### Dub List Links [#dub-list-links]
Retrieve a paginated list of short links for the authenticated workspace. Supports filtering by domain, search query, tags, and sorting.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| --------------- | ------- | -------- | ---------------------------------------------------------------------- |
| `apiKey` | string | Yes | Dub API key |
| `domain` | string | No | Filter by domain |
| `search` | string | No | Search query matched against the short link slug and destination URL |
| `tagIds` | string | No | Comma-separated tag IDs to filter by |
| `tenantId` | string | No | Filter by tenant ID |
| `folderId` | string | No | Filter by folder ID |
| `showArchived` | boolean | No | Whether to include archived links (defaults to false) |
| `page` | number | No | Page number (deprecated by Dub in favor of startingAfter/endingBefore) |
| `pageSize` | number | No | Number of links per page (default: 100, max: 100) |
| `startingAfter` | string | No | Cursor: fetch results after this link ID |
| `endingBefore` | string | No | Cursor: fetch results before this link ID |
#### Output [#output-5]
| Parameter | Type | Description |
| --------- | ------ | -------------------------------------------------------------------------------- |
| `links` | json | Array of link objects (id, domain, key, url, shortLink, clicks, tags, createdAt) |
| `count` | number | Number of links returned |
### Dub Count Links [#dub-count-links]
Retrieve the number of short links for the authenticated workspace, optionally filtered and grouped by domain, tag, user, or folder.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| -------------- | ------- | -------- | -------------------------------------------------------------------- |
| `apiKey` | string | Yes | Dub API key |
| `domain` | string | No | Filter by domain |
| `search` | string | No | Search query matched against the short link slug and destination URL |
| `tagIds` | string | No | Comma-separated tag IDs to filter by |
| `tagNames` | string | No | Comma-separated tag names to filter by (case-insensitive) |
| `folderId` | string | No | Filter by folder ID |
| `showArchived` | boolean | No | Whether to include archived links (defaults to false) |
| `groupBy` | string | No | Group counts by: domain, tagId, userId, or folderId |
#### Output [#output-6]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------------------------------------------- |
| `count` | number | Total number of links matching the filters |
| `groups` | json | Per-group counts when groupBy is set (e.g. \[\{ domain, count }]) |
### Dub Bulk Create Links [#dub-bulk-create-links]
Create up to 100 short links in a single request. Returns the created links alongside any per-link errors.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Dub API key |
| `links` | json | Yes | JSON array of link objects to create. Each object requires a "url" and may include domain, key, tagIds, and other link fields (max 100). |
#### Output [#output-7]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------------------------------------------------- |
| `created` | json | Array of successfully created link objects |
| `errors` | json | Array of per-link errors (\{ link, error, code }) for links that failed |
| `count` | number | Number of links successfully created |
### Dub Bulk Update Links [#dub-bulk-update-links]
Apply the same set of field updates to up to 100 links at once, selected by link IDs or external IDs.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Dub API key |
| `linkIds` | string | No | Comma-separated link IDs to update (max 100, takes precedence over externalIds) |
| `externalIds` | string | No | Comma-separated external IDs to update (max 100) |
| `data` | json | Yes | JSON object of fields to apply to every selected link (e.g. \{ "archived": true, "tagIds": \["..."] }) |
#### Output [#output-8]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------- |
| `updated` | json | Array of updated link objects |
| `count` | number | Number of links updated |
### Dub Bulk Delete Links [#dub-bulk-delete-links]
Delete up to 100 short links in a single request by their link IDs. Non-existing IDs are ignored.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------- |
| `apiKey` | string | Yes | Dub API key |
| `linkIds` | string | Yes | Comma-separated link IDs to delete (max 100) |
#### Output [#output-9]
| Parameter | Type | Description |
| -------------- | ------ | --------------------------------- |
| `deletedCount` | number | Number of links that were deleted |
### Dub Get Analytics [#dub-get-analytics]
Retrieve analytics for links including clicks, leads, and sales. Supports filtering by link, time range, and grouping by various dimensions.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Dub API key |
| `event` | string | No | Event type: clicks (default), leads, sales, or composite |
| `groupBy` | string | No | Group results by: count (default), timeseries, countries, cities, devices, browsers, os, referers, top\_links, top\_urls |
| `linkId` | string | No | Filter by link ID |
| `externalId` | string | No | Filter by external ID (prefix with ext\_) |
| `domain` | string | No | Filter by domain |
| `interval` | string | No | Time interval: 24h (default), 7d, 30d, 90d, 1y, mtd, qtd, ytd, or all |
| `start` | string | No | Start date/time in ISO 8601 format (overrides interval) |
| `end` | string | No | End date/time in ISO 8601 format (defaults to now) |
| `country` | string | No | Filter by country (ISO 3166-1 alpha-2 code) |
| `timezone` | string | No | IANA timezone for timeseries data (defaults to UTC) |
#### Output [#output-10]
| Parameter | Type | Description |
| ------------ | ------ | ------------------------------------------------------------- |
| `clicks` | number | Total number of clicks |
| `leads` | number | Total number of leads |
| `sales` | number | Total number of sales |
| `saleAmount` | number | Total sale amount in cents |
| `data` | json | Grouped analytics data (timeseries, countries, devices, etc.) |
### Dub List Events [#dub-list-events]
Retrieve a paginated stream of individual click, lead, and sale events for links, with filtering by link, time range, and location.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | --------------------------------------------------------------------- |
| `apiKey` | string | Yes | Dub API key |
| `event` | string | No | Event type: clicks (default), leads, or sales |
| `linkId` | string | No | Filter by link ID |
| `externalId` | string | No | Filter by external ID (prefix with ext\_) |
| `domain` | string | No | Filter by domain |
| `interval` | string | No | Time interval: 24h (default), 7d, 30d, 90d, 1y, mtd, qtd, ytd, or all |
| `start` | string | No | Start date/time in ISO 8601 format (overrides interval) |
| `end` | string | No | End date/time in ISO 8601 format (defaults to now) |
| `country` | string | No | Filter by country (ISO 3166-1 alpha-2 code) |
| `timezone` | string | No | IANA timezone for event timestamps (defaults to UTC) |
| `page` | number | No | Page number (default: 1) |
| `limit` | number | No | Number of events per page (default: 100, max: 1000) |
| `sortOrder` | string | No | Sort order: desc (default) or asc |
#### Output [#output-11]
| Parameter | Type | Description |
| --------- | ------ | ---------------------------------------------------------------------------------------------- |
| `events` | json | Array of event objects (event, timestamp, click, link, and customer/sale data when applicable) |
| `count` | number | Number of events returned |
### Dub Get QR Code [#dub-get-qr-code]
Generate a customizable QR code (PNG) for a short link, with control over size, error correction, colors, and margin.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ----------------------------------------------------------------------- |
| `apiKey` | string | Yes | Dub API key |
| `url` | string | Yes | The short link URL to encode in the QR code |
| `logo` | string | No | URL of a custom logo to embed in the QR code (requires a paid Dub plan) |
| `size` | number | No | QR code size in pixels (default: 600) |
| `level` | string | No | Error correction level: L (default), M, Q, or H |
| `fgColor` | string | No | Foreground color in hex (default: #000000) |
| `bgColor` | string | No | Background color in hex (default: #FFFFFF) |
| `hideLogo` | boolean | No | Whether to hide the logo in the center of the QR code (default: false) |
| `margin` | number | No | Margin (quiet zone) around the QR code (default: 2) |
#### Output [#output-12]
| Parameter | Type | Description |
| --------- | ------ | ------------------------------------------------- |
| `file` | file | Generated QR code image stored in execution files |
| `content` | string | Base64-encoded PNG image data |
### Dub List Domains [#dub-list-domains]
Retrieve the custom domains registered in the workspace, so links can be created against the right domain.
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ------------------------------------------------------- |
| `apiKey` | string | Yes | Dub API key |
| `archived` | boolean | No | Whether to include archived domains (defaults to false) |
| `search` | string | No | Search by domain name |
| `page` | number | No | Page number (default: 1) |
| `pageSize` | number | No | Number of domains per page (default: 50, max: 50) |
#### Output [#output-13]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------------------------------------- |
| `domains` | json | Array of domain objects (slug, verified, primary, archived) |
| `count` | number | Number of domains returned |
### Dub List Tags [#dub-list-tags]
Retrieve the tags defined in the workspace, so the right tag IDs can be assigned to links.
#### Input [#input-14]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------ |
| `apiKey` | string | Yes | Dub API key |
| `search` | string | No | Search by tag name |
| `sortBy` | string | No | Field to sort by: name (default) or createdAt |
| `sortOrder` | string | No | Sort order: asc (default) or desc |
| `page` | number | No | Page number (default: 1) |
| `pageSize` | number | No | Number of tags per page (default: 100, max: 100) |
#### Output [#output-14]
| Parameter | Type | Description |
| --------- | ------ | -------------------------------------- |
| `tags` | json | Array of tag objects (id, name, color) |
| `count` | number | Number of tags returned |
### Dub Create Tag [#dub-create-tag]
Create a new tag in the workspace for organizing and filtering short links.
#### Input [#input-15]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Dub API key |
| `name` | string | Yes | The name of the tag to create (1-50 characters) |
| `color` | string | No | Tag color: red, yellow, green, blue, purple, brown, gray, or pink (random if omitted) |
#### Output [#output-15]
| Parameter | Type | Description |
| --------- | ------ | ---------------------------- |
| `id` | string | Unique ID of the created tag |
| `name` | string | Name of the tag |
| `color` | string | Color assigned to the tag |
### Dub List Folders [#dub-list-folders]
Retrieve the folders defined in the workspace, so the right folder ID can be used to organize links.
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------- |
| `apiKey` | string | Yes | Dub API key |
| `search` | string | No | Search by folder name |
| `page` | number | No | Page number (default: 1) |
| `pageSize` | number | No | Number of folders per page (default: 50, max: 50) |
#### Output [#output-16]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------------------------- |
| `folders` | json | Array of folder objects (id, name, accessLevel) |
| `count` | number | Number of folders returned |
---
# DuckDuckGo (/integrations/duckduckgo)
{/* MANUAL-CONTENT-START:intro */}
[DuckDuckGo](https://duckduckgo.com/) is a privacy-focused web search engine that delivers instant answers, abstracts, related topics, and more — without tracking you or your searches. DuckDuckGo makes it easy to find information without any user profiling or targeted ads.
With DuckDuckGo in Sim, you can:
* **Search the web**: Instantly find answers, facts, and overviews for a given search query
* **Get direct answers**: Retrieve specific responses for calculations, conversions, or factual queries
* **Access abstracts**: Receive short summaries or descriptions for your search topics
* **Fetch related topics**: Discover links and references relevant to your search
* **Filter output**: Optionally remove HTML or skip disambiguation for cleaner results
These features enable your Sim agents to automate access to fresh web knowledge — from surfacing facts in a workflow, to enriching documents and analysis with up-to-date information. Because DuckDuckGo’s Instant Answers API is open and does not require an API key, it’s simple and privacy-safe to integrate into your automated business processes.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Search the web using DuckDuckGo Instant Answers API. Returns instant answers, abstracts, related topics, and more. Free to use without an API key.
## Actions [#actions]
### DuckDuckGo Search [#duckduckgo-search]
Search the web using DuckDuckGo Instant Answers API. Returns instant answers, abstracts, and related topics for your query. Free to use without an API key.
#### Input [#input]
| Parameter | Type | Required | Description |
| -------------- | ------- | -------- | ------------------------------------------------ |
| `query` | string | Yes | The search query to execute |
| `noHtml` | boolean | No | Remove HTML from text in results (default: true) |
| `skipDisambig` | boolean | No | Skip disambiguation results (default: false) |
#### Output [#output]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------------------------------------------- |
| `heading` | string | The heading/title of the instant answer |
| `abstract` | string | A short abstract summary of the topic |
| `abstractText` | string | Plain text version of the abstract |
| `abstractSource` | string | The source of the abstract (e.g., Wikipedia) |
| `abstractURL` | string | URL to the source of the abstract |
| `definition` | string | Dictionary-style definition if available |
| `definitionSource` | string | The source of the definition |
| `definitionURL` | string | URL to the source of the definition |
| `image` | string | URL to an image related to the topic |
| `answer` | string | Direct answer if available (e.g., for calculations) |
| `answerType` | string | Type of the answer (e.g., calc, ip, etc.) |
| `type` | string | Response type: A (article), D (disambiguation), C (category), N (name), E (exclusive) |
| `redirect` | string | !bang redirect URL, populated only for bang queries |
| `relatedTopics` | array | Array of related topics with URLs and descriptions |
| ↳ `FirstURL` | string | URL to the related topic |
| ↳ `Text` | string | Description of the related topic |
| ↳ `Result` | string | HTML result snippet |
| `results` | array | Array of external link results |
| ↳ `FirstURL` | string | URL of the result |
| ↳ `Text` | string | Description of the result |
| ↳ `Result` | string | HTML result snippet |
---
# Amazon DynamoDB (/integrations/dynamodb)
{/* MANUAL-CONTENT-START:intro */}
[Amazon DynamoDB](https://aws.amazon.com/dynamodb/) is a fully managed NoSQL database service offered by AWS that provides fast and predictable performance with seamless scalability. DynamoDB lets you store and retrieve any amount of data and serves any level of request traffic, without the need for you to manage hardware or infrastructure.
With DynamoDB, you can:
* **Get items**: Look up items in your tables using primary keys
* **Put items**: Add or replace items in your tables
* **Query items**: Retrieve multiple items using queries across indexes
* **Scan tables**: Read all or part of the data in a table
* **Update items**: Modify specific attributes of existing items
* **Delete items**: Remove records from your tables
In Sim, the DynamoDB integration enables your agents to securely access and manipulate DynamoDB tables using AWS credentials. Supported operations include:
* **Get**: Retrieve an item by its key
* **Put**: Insert or overwrite items
* **Query**: Run queries using key conditions and filters
* **Scan**: Read multiple items by scanning the table or index
* **Update**: Change specific attributes of one or more items
* **Delete**: Remove an item from a table
This integration empowers Sim agents to automate data management tasks within your DynamoDB tables programmatically, so you can build workflows that manage, modify, and retrieve scalable NoSQL data without manual effort or server management.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Amazon DynamoDB into workflows. Supports Get, Put, Query, Scan, Update, Delete, and Introspect operations on DynamoDB tables.
## Actions [#actions]
### DynamoDB Get [#dynamodb-get]
Get an item from a DynamoDB table by primary key
#### Input [#input]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `tableName` | string | Yes | DynamoDB table name (e.g., "Users", "Orders") |
| `key` | json | Yes | Primary key of the item to retrieve (e.g., \{"pk": "USER#123"} or \{"pk": "ORDER#456", "sk": "ITEM#789"}) |
| `consistentRead` | boolean | No | Use strongly consistent read |
#### Output [#output]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
| `item` | json | Retrieved item |
### DynamoDB Put [#dynamodb-put]
Put an item into a DynamoDB table
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `tableName` | string | Yes | DynamoDB table name (e.g., "Users", "Orders") |
| `item` | json | Yes | Item to put into the table (e.g., \{"pk": "USER#123", "name": "John", "email": "[john@example.com](mailto:john@example.com)"}) |
| `conditionExpression` | string | No | Condition that must be met for the put to succeed (e.g., "attribute\_not\_exists(pk)" to prevent overwrites) |
| `expressionAttributeNames` | json | No | Attribute name mappings for reserved words used in conditionExpression (e.g., \{"#name": "name"}) |
| `expressionAttributeValues` | json | No | Expression attribute values used in conditionExpression (e.g., \{":expected": "value"}) |
#### Output [#output-1]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
| `item` | json | Created item |
### DynamoDB Query [#dynamodb-query]
Query items from a DynamoDB table using key conditions
#### Input [#input-2]
| Parameter | Type | Required | Description |
| --------------------------- | ------- | -------- | -------------------------------------------------------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `tableName` | string | Yes | DynamoDB table name (e.g., "Users", "Orders") |
| `keyConditionExpression` | string | Yes | Key condition expression (e.g., "pk = :pk" or "pk = :pk AND sk BEGINS\_WITH :prefix") |
| `filterExpression` | string | No | Filter expression for results (e.g., "age > :minAge AND #status = :status") |
| `expressionAttributeNames` | json | No | Attribute name mappings for reserved words (e.g., \{"#status": "status"}) |
| `expressionAttributeValues` | json | No | Expression attribute values (e.g., \{":pk": "USER#123", ":minAge": 18}) |
| `indexName` | string | No | Secondary index name to query (e.g., "GSI1", "email-index") |
| `limit` | number | No | Maximum number of items to return (e.g., 10, 50, 100) |
| `exclusiveStartKey` | json | No | Pagination token from a previous query's lastEvaluatedKey to continue fetching results |
| `scanIndexForward` | boolean | No | Sort order for the sort key: true for ascending (default), false for descending |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------------------------------------- |
| `message` | string | Operation status message |
| `items` | array | Array of items returned |
| `count` | number | Number of items returned |
| `lastEvaluatedKey` | json | Pagination token to pass as exclusiveStartKey to fetch the next page of results |
### DynamoDB Scan [#dynamodb-scan]
Scan all items in a DynamoDB table
#### Input [#input-3]
| Parameter | Type | Required | Description |
| --------------------------- | ------ | -------- | ------------------------------------------------------------------------------------------ |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `tableName` | string | Yes | DynamoDB table name (e.g., "Users", "Orders") |
| `filterExpression` | string | No | Filter expression for results (e.g., "age > :minAge AND #status = :status") |
| `projectionExpression` | string | No | Attributes to retrieve (e.g., "pk, sk, #name, email") |
| `expressionAttributeNames` | json | No | Attribute name mappings for reserved words (e.g., \{"#name": "name", "#status": "status"}) |
| `expressionAttributeValues` | json | No | Expression attribute values (e.g., \{":minAge": 18, ":status": "active"}) |
| `limit` | number | No | Maximum number of items to return (e.g., 10, 50, 100) |
| `exclusiveStartKey` | json | No | Pagination token from a previous scan's lastEvaluatedKey to continue fetching results |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------------------------------------- |
| `message` | string | Operation status message |
| `items` | array | Array of items returned |
| `count` | number | Number of items returned |
| `lastEvaluatedKey` | json | Pagination token to pass as exclusiveStartKey to fetch the next page of results |
### DynamoDB Update [#dynamodb-update]
Update an item in a DynamoDB table
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `tableName` | string | Yes | DynamoDB table name (e.g., "Users", "Orders") |
| `key` | json | Yes | Primary key of the item to update (e.g., \{"pk": "USER#123"} or \{"pk": "ORDER#456", "sk": "ITEM#789"}) |
| `updateExpression` | string | Yes | Update expression (e.g., "SET #name = :name, age = :age" or "SET #count = #count + :inc") |
| `expressionAttributeNames` | json | No | Attribute name mappings for reserved words (e.g., \{"#name": "name", "#count": "count"}) |
| `expressionAttributeValues` | json | No | Expression attribute values (e.g., \{":name": "John", ":age": 30, ":inc": 1}) |
| `conditionExpression` | string | No | Condition that must be met for the update to succeed (e.g., "attribute\_exists(pk)" or "version = :expectedVersion") |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ------ | -------------------------------- |
| `message` | string | Operation status message |
| `item` | json | Updated item with all attributes |
### DynamoDB Delete [#dynamodb-delete]
Delete an item from a DynamoDB table
#### Input [#input-5]
| Parameter | Type | Required | Description |
| --------------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `tableName` | string | Yes | DynamoDB table name (e.g., "Users", "Orders") |
| `key` | json | Yes | Primary key of the item to delete (e.g., \{"pk": "USER#123"} or \{"pk": "ORDER#456", "sk": "ITEM#789"}) |
| `conditionExpression` | string | No | Condition that must be met for the delete to succeed (e.g., "attribute\_exists(pk)") |
| `expressionAttributeNames` | json | No | Attribute name mappings for reserved words used in conditionExpression (e.g., \{"#status": "status"}) |
| `expressionAttributeValues` | json | No | Expression attribute values used in conditionExpression (e.g., \{":status": "active"}) |
#### Output [#output-5]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### DynamoDB Introspect [#dynamodb-introspect]
Introspect DynamoDB to list tables or get detailed schema information for a specific table
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `tableName` | string | No | Optional table name to get detailed schema (e.g., "Users", "Orders"). If not provided, lists all tables. |
#### Output [#output-6]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------------------ |
| `message` | string | Operation status message |
| `tables` | array | List of table names in the region |
| `tableDetails` | json | Detailed schema information for a specific table |
---
# Dynatrace (/integrations/dynatrace)
{/* MANUAL-CONTENT-START:intro */}
[Dynatrace](https://www.dynatrace.com/) is an observability platform that monitors applications, infrastructure, and user experience from a single agent. Its Davis AI correlates signals across the stack into **problems** — a single incident with a root cause, an impact assessment, and the affected entities attached — instead of a stream of disconnected alerts.
**What you can reach from Sim**
* **Problems** — list and inspect Davis problems, read their root cause and affected entities, close them, and manage their comments.
* **Metrics** — query time series with a metric selector, discover which metrics exist, read a metric's descriptor, and push your own data points.
* **Entities** — list and inspect monitored hosts, services, applications, and Kubernetes workloads, and enumerate the entity types available for building selectors.
* **Tags** — read, add, and remove the custom tags that drive selectors, management zones, and alerting.
* **Events** — read deployments, availability changes, and annotations, and ingest your own.
* **Logs** — search log records and ingest new ones.
* **SLOs** — read, create, update, and delete service-level objectives, with their attainment, error budget, and burn rate.
* **Application Security** — list and inspect vulnerabilities with risk assessment and remediation guidance, walk their remediation items, mute and unmute them singly or in bulk, and review the runtime attacks that exploited them.
* **Settings** — browse schemas and read, create, update, and delete settings objects. This is how maintenance windows, alerting profiles, management zones, and anomaly-detection thresholds are configured.
* **Synthetic** — list monitors, trigger an on-demand batch execution, and poll the batch for its result.
* **Audit log** — read who changed which configuration, and when.
**Setup**
You need two values: your **environment URL** and an **access token**.
The environment URL is the base address of your Dynatrace environment, without the API path:
| Deployment | Environment URL |
| -------------------------------- | ----------------------------------------- |
| SaaS | `https://abc12345.live.dynatrace.com` |
| Managed / environment ActiveGate | `https://your-activegate:9999/e/abc12345` |
Create the token under **Access tokens** in Dynatrace, and grant only the scopes for the operations you plan to call. Each action's `apiToken` description names the scope it needs:
| Area | Read | Write |
| ----------------- | ----------------------------------------------- | --------------------------- |
| Problems | `problems.read` | `problems.write` |
| Metrics | `metrics.read` | `metrics.ingest` |
| Entities and tags | `entities.read` | `entities.write` |
| Events | `events.read` | `events.ingest` |
| Logs | `logs.read` | `logs.ingest` |
| SLOs | `slo.read` | `slo.write` |
| Vulnerabilities | `securityProblems.read` | `securityProblems.write` |
| Attacks | `attacks.read` | — |
| Settings | `settings.read` | `settings.write` |
| Synthetic | `syntheticExecutions.read`, `ReadSyntheticData` | `syntheticExecutions.write` |
| Audit log | `auditLogs.read` | — |
Note that **Synthetic monitors are the one part of this integration on Environment API v1** — Sim handles the path difference, but the token scopes differ from the v2 endpoints.
**Selectors**
Most read operations are scoped by a selector rather than by fixed filter fields. Criteria are comma-separated, and every criterion matched must hold:
```
entitySelector: type("HOST"),tag("env:prod")
problemSelector: status("open"),severityLevel("AVAILABILITY")
metricSelector: builtin:host.cpu.usage:splitBy("dt.entity.host"):avg:names
securityProblemSelector: status("OPEN"),riskLevel("CRITICAL")
```
Every selector field in the block has a wand — describe what you want in plain language and Sim writes the selector for you.
**Settings objects**
Most Dynatrace configuration is a *settings object*: a JSON `value` whose shape is defined by a *schema* such as `builtin:alerting.maintenance-window`. There is no fixed structure Sim can validate for you, so the reliable way to write one is to read an existing object of the same schema first and mirror its `value`. Get Settings Object also returns an `updateToken` — pass it back on update or delete and the call fails rather than overwriting a change someone else made in the meantime.
**Pagination**
List operations return a `nextPageKey` (a `nextSliceKey` for log search). Feed it back into the next call to read the following page. Dynatrace encodes the original filters into the cursor, so Sim sends the cursor alone and ignores the other filters on that call — which is what the API requires.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Dynatrace into workflows. Investigate and close Davis problems, query metrics and monitored entities, search and ingest logs, push deployment events, manage SLOs and their burn rates, triage and mute Application Security vulnerabilities, review runtime attacks, tag entities, manage settings objects such as maintenance windows and alerting profiles, run synthetic monitors on demand, and read the audit log.
## Actions [#actions]
### Dynatrace List Problems [#dynatrace-list-problems]
List Davis-detected problems in a Dynatrace environment, filtered by timeframe, problem selector, or entity selector.
#### Input [#input]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the problems.read scope |
| `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression such as now-1d. Defaults to now-2h |
| `to` | string | No | End of the timeframe in the same formats as From. Defaults to now |
| `problemSelector` | string | No | Problem selector, e.g. status("open"),severityLevel("AVAILABILITY"),impactLevel("SERVICES") |
| `entitySelector` | string | No | Entity selector scoping the result, e.g. type("HOST"),tag("env:prod") |
| `sort` | string | No | Sort order: status, startTime, or relevance, each optionally prefixed with + or - (e.g. -startTime) |
| `fields` | string | No | Comma-separated optional properties to include: evidenceDetails, impactAnalysis, recentComments |
| `pageSize` | number | No | Problems per page (max 500, default 50) |
| `nextPageKey` | string | No | Cursor for the next page. All other filters are ignored when it is set |
#### Output [#output]
| Parameter | Type | Description |
| ---------- | ----- | ----------------- |
| `problems` | array | Matching problems |
### Dynatrace Get Problem [#dynatrace-get-problem]
Get the full details of a single Dynatrace problem, including root cause, affected entities, and optionally its evidence and impact analysis.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the problems.read scope |
| `problemId` | string | Yes | ID of the problem (e.g., -1234567890123456789\_1700000000000V2) |
| `fields` | string | No | Comma-separated optional properties to include. Defaults to all of them: evidenceDetails, impactAnalysis, recentComments |
#### Output [#output-1]
| Parameter | Type | Description |
| --------- | ------ | --------------------- |
| `problem` | object | The requested problem |
### Dynatrace Close Problem [#dynatrace-close-problem]
Close a Dynatrace problem and record the closing comment.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the problems.write scope |
| `problemId` | string | Yes | ID of the problem to close |
| `message` | string | Yes | Text of the closing comment |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------------- | ------- | --------------------------------------------------------- |
| `problemId` | string | ID of the closed problem |
| `closeTimestamp` | number | Timestamp when closing was triggered, in UTC milliseconds |
| `closing` | boolean | Whether the problem is in the process of being closed |
| `comment` | object | The closing comment that was recorded |
### Dynatrace List Problem Comments [#dynatrace-list-problem-comments]
List the comments recorded on a Dynatrace problem.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the problems.read scope |
| `problemId` | string | Yes | ID of the problem whose comments should be listed |
| `pageSize` | number | No | Comments per page (max 500, default 10) |
| `nextPageKey` | string | No | Cursor for the next page. Page size is ignored when it is set |
#### Output [#output-3]
| Parameter | Type | Description |
| ---------- | ----- | ----------------------- |
| `comments` | array | Comments on the problem |
### Dynatrace Add Problem Comment [#dynatrace-add-problem-comment]
Add a comment to a Dynatrace problem.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the problems.write scope |
| `problemId` | string | Yes | ID of the problem to comment on |
| `message` | string | Yes | Text of the comment |
| `context` | string | No | Context of the comment, shown alongside the author (e.g., the source system) |
#### Output [#output-4]
| Parameter | Type | Description |
| ----------- | ------ | ------------------------------------------ |
| `problemId` | string | ID of the problem the comment was added to |
| `message` | string | Text of the comment that was added |
| `context` | string | Context of the comment |
### Dynatrace Query Metrics [#dynatrace-query-metrics]
Read metric data points from Dynatrace using a metric selector, with optional entity and management-zone scoping.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the metrics.read scope |
| `metricSelector` | string | Yes | Metric selector, up to 10 metrics comma-separated, with optional transformations after a colon (e.g. builtin:host.cpu.usage:avg:names) |
| `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression such as now-2h. Defaults to now-2h |
| `to` | string | No | End of the timeframe in the same formats as From. Defaults to now |
| `resolution` | string | No | Number of data points (default 120), a timespan such as 10m or 3w, or Inf for a single aggregated value |
| `entitySelector` | string | No | Entity selector scoping the query, e.g. type("HOST"),tag("env:prod") |
| `mzSelector` | string | No | Management zone selector, e.g. mzName("Production") |
#### Output [#output-5]
| Parameter | Type | Description |
| -------------------------- | ------ | ---------------------------------------------------- |
| `result` | array | One entry per queried metric |
| ↳ `metricId` | string | Metric key including transformations |
| ↳ `dataPointCountRatio` | number | Queried data points relative to the query limit |
| ↳ `dimensionCountRatio` | number | Queried dimension tuples relative to the query limit |
| ↳ `appliedOptionalFilters` | array | Optional filters Dynatrace applied to the query |
| ↳ `dql` | json | DQL translation of the query, when available |
| ↳ `status` | string | Whether the translation succeeded |
| ↳ `query` | string | The equivalent DQL query |
| ↳ `warnings` | array | Warnings for this metric |
| ↳ `data` | array | Series of the metric, one per dimension tuple |
| ↳ `dimensions` | array | Dimension values of the series |
| ↳ `dimensionMap` | json | Dimension values keyed by dimension key |
| ↳ `timestamps` | array | Timestamps in UTC milliseconds, one per value |
| ↳ `values` | array | Metric values. Null where no data exists |
| `resolution` | string | Resolution Dynatrace actually used |
### Dynatrace List Metrics [#dynatrace-list-metrics]
Discover the metrics available in a Dynatrace environment, filtered by metric selector, free text, or metadata.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the metrics.read scope |
| `metricSelector` | string | No | Metric selector, supporting wildcards (e.g. builtin:host.cpu.\*) |
| `text` | string | No | Free-text search across metric display names and descriptions |
| `fields` | string | No | Comma-separated descriptor properties. Prefix with + to add a non-default property and - to drop a default one; metricId is always returned (e.g. +aggregationTypes,-description) |
| `writtenSince` | string | No | Only metrics written since this point, as UTC milliseconds, ISO 8601, or a relative expression such as now-7d |
| `writtenSinceMode` | string | No | INCLUDE (default) keeps metrics written since Written Since; EXCLUDE keeps the ones not written since then |
| `metadataSelector` | string | No | Metadata selector, e.g. unit("Percent"),tags("dashboard") |
| `pageSize` | number | No | Metrics per page (max 500, default 100) |
| `nextPageKey` | string | No | Cursor for the next page. All other filters are ignored when it is set |
#### Output [#output-6]
| Parameter | Type | Description |
| --------- | ----- | --------------------------- |
| `metrics` | array | Matching metric descriptors |
### Dynatrace Get Metric Descriptor [#dynatrace-get-metric-descriptor]
Get the descriptor of a single Dynatrace metric — its unit, dimensions, supported aggregations, and transformations.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the metrics.read scope |
| `metricKey` | string | Yes | Metric key, optionally followed by transformation operators separated by a colon (e.g. builtin:host.cpu.usage) |
#### Output [#output-7]
| Parameter | Type | Description |
| --------- | ------ | ------------------------------- |
| `metric` | object | The requested metric descriptor |
### Dynatrace Ingest Metrics [#dynatrace-ingest-metrics]
Push custom metric data points into Dynatrace using the metric line protocol, one data point per line.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the metrics.ingest scope |
| `payload` | string | Yes | Metric line protocol payload, one data point per line, max 1 MB (e.g. cpu.temperature,dt.entity.host=HOST-06F288EE2A930951,cpu=1 55) |
#### Output [#output-8]
| Parameter | Type | Description |
| --------------------- | ------ | ------------------------------------------------------------- |
| `linesOk` | number | Number of accepted data points |
| `linesInvalid` | number | Number of rejected data points |
| `ingestError` | json | Details of the invalid lines |
| ↳ `code` | number | Error code |
| ↳ `message` | string | Error message |
| ↳ `invalidLines` | array | The rejected lines |
| ↳ `line` | number | Line number in the payload |
| ↳ `error` | string | Why the line was rejected |
| `warnings` | json | Warnings raised during ingestion, such as changed metric keys |
| ↳ `message` | string | Warning message |
| ↳ `changedMetricKeys` | array | Lines whose metric key Dynatrace rewrote |
| ↳ `line` | number | Line number in the payload |
| ↳ `warning` | string | What was changed |
### Dynatrace List Entities [#dynatrace-list-entities]
List monitored entities — hosts, services, applications, Kubernetes workloads — matching an entity selector.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the entities.read scope |
| `entitySelector` | string | Yes | Entity selector defining the scope, e.g. type("HOST"),tag("env:prod") or entityId("HOST-06F288EE2A930951") |
| `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression such as now-3d. Defaults to now-3d |
| `to` | string | No | End of the timeframe in the same formats as From. Defaults to now |
| `fields` | string | No | Comma-separated additional entity properties to include (e.g. +lastSeenTms,+properties.BITNESS,+tags) |
| `sort` | string | No | Sort by display name: +displayName ascending or -displayName descending |
| `pageSize` | number | No | Entities per page (default 50) |
| `nextPageKey` | string | No | Cursor for the next page. All other filters are ignored when it is set |
#### Output [#output-9]
| Parameter | Type | Description |
| ---------- | ----- | --------------------------- |
| `entities` | array | Matching monitored entities |
### Dynatrace Get Entity [#dynatrace-get-entity]
Get the properties, tags, management zones, and relationships of a single monitored entity.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the entities.read scope |
| `entityId` | string | Yes | ID of the entity (e.g., HOST-06F288EE2A930951) |
| `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression such as now-3d. Defaults to now-3d |
| `to` | string | No | End of the timeframe in the same formats as From. Defaults to now |
| `fields` | string | No | Comma-separated additional entity properties to include (e.g. +lastSeenTms,+properties.BITNESS) |
#### Output [#output-10]
| Parameter | Type | Description |
| --------- | ------ | ------------------------------ |
| `entity` | object | The requested monitored entity |
### Dynatrace List Entity Types [#dynatrace-list-entity-types]
List the monitored entity types available in the environment, with the properties and relationships each supports. Use it to build valid entity selectors.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the entities.read scope |
| `pageSize` | number | No | Entity types per page (max 500, default 50) |
| `nextPageKey` | string | No | Cursor for the next page. Page size is ignored when it is set |
#### Output [#output-11]
| Parameter | Type | Description |
| ----------------------- | ------- | --------------------------------------------------------------- |
| `types` | array | Available entity types |
| ↳ `type` | string | Entity type (e.g., HOST, SERVICE) |
| ↳ `displayName` | string | Display name of the type |
| ↳ `dimensionKey` | string | Metric dimension key of the type |
| ↳ `entityLimitExceeded` | boolean | Whether the environment exceeded the entity limit for this type |
| ↳ `fromRelationships` | array | Relationships originating at this type |
| ↳ `id` | string | Relationship ID |
| ↳ `toTypes` | array | Entity types the relationship points to |
| ↳ `toRelationships` | array | Relationships pointing at this type |
| ↳ `id` | string | Relationship ID |
| ↳ `fromTypes` | array | Entity types the relationship originates from |
### Dynatrace List Events [#dynatrace-list-events]
List events — deployments, availability changes, alerts, custom annotations — in a Dynatrace environment.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the events.read scope |
| `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression such as now-1d. Defaults to now-2h |
| `to` | string | No | End of the timeframe in the same formats as From. Defaults to now |
| `eventSelector` | string | No | Event selector, e.g. eventType("CUSTOM\_DEPLOYMENT"),status("OPEN"),correlationId("build-42") |
| `entitySelector` | string | No | Entity selector scoping the result, e.g. type("SERVICE"),tag("env:prod") |
| `pageSize` | number | No | Events per page (max 1000, default 100) |
| `nextPageKey` | string | No | Cursor for the next page. All other filters are ignored when it is set |
#### Output [#output-12]
| Parameter | Type | Description |
| --------- | ----- | --------------- |
| `events` | array | Matching events |
### Dynatrace Get Event [#dynatrace-get-event]
Get the full details of a single Dynatrace event.
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the events.read scope |
| `eventId` | string | Yes | ID of the event |
#### Output [#output-13]
| Parameter | Type | Description |
| --------- | ------ | ------------------- |
| `event` | object | The requested event |
### Dynatrace Ingest Event [#dynatrace-ingest-event]
Push an event into Dynatrace — a deployment marker, custom annotation, or custom alert — attached to the entities matched by an entity selector.
#### Input [#input-14]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the events.ingest scope |
| `eventType` | string | Yes | One of AVAILABILITY\_EVENT, CUSTOM\_ALERT, CUSTOM\_ANNOTATION, CUSTOM\_CONFIGURATION, CUSTOM\_DEPLOYMENT, CUSTOM\_INFO, ERROR\_EVENT, MARKED\_FOR\_TERMINATION, PERFORMANCE\_EVENT, RESOURCE\_CONTENTION\_EVENT, WARNING |
| `title` | string | Yes | Title of the event |
| `entitySelector` | string | No | Entity selector for the entities to attach the event to. Defaults to the environment entity |
| `startTime` | number | No | Event start in UTC milliseconds. Defaults to now |
| `endTime` | number | No | Event end in UTC milliseconds. Defaults to the start time plus the timeout |
| `eventTimeout` | number | No | Minutes the event stays open when no end time is given. Defaults to 15, capped at 360 |
| `properties` | json | No | Event properties as a key-value object. Max 100 entries, keys up to 100 and values up to 4096 characters |
#### Output [#output-14]
| Parameter | Type | Description |
| -------------------- | ------ | -------------------------------------------------------------------- |
| `reportCount` | number | Number of events Dynatrace reported |
| `eventIngestResults` | array | One result per ingested event |
| ↳ `correlationId` | string | Correlation ID of the ingested event |
| ↳ `status` | string | OK, INVALID\_ENTITY\_TYPE, INVALID\_METADATA, or INVALID\_TIMESTAMPS |
### Dynatrace Search Logs [#dynatrace-search-logs]
Search log records in Dynatrace by query and timeframe, for troubleshooting and incident analysis.
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the logs.read scope, or storage:logs:read and storage:buckets:read on Grail |
| `query` | string | No | Log search query, e.g. status="ERROR" AND dt.entity.host="HOST-06F288EE2A930951" |
| `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression such as now-1h. Defaults to now-2w |
| `to` | string | No | End of the timeframe in the same formats as From. Defaults to now |
| `sort` | string | No | Sort by field with a + or - prefix, e.g. -timestamp for newest first |
| `limit` | number | No | Number of log records to return (max 1000, default 1000) |
| `nextSliceKey` | string | No | Cursor for the next slice. All other filters are ignored when it is set |
#### Output [#output-15]
| Parameter | Type | Description |
| --------------------- | ------ | ----------------------------------------------------------- |
| `results` | array | Matching log records |
| ↳ `timestamp` | number | Log timestamp in UTC milliseconds |
| ↳ `status` | string | Log level: ERROR, WARN, INFO, NONE, or NOT\_APPLICABLE |
| ↳ `content` | string | Log message content |
| ↳ `eventType` | string | Event type of the record |
| ↳ `additionalColumns` | json | Additional log attributes keyed by column name |
| `sliceSize` | number | Number of records in this slice |
| `nextSliceKey` | string | Cursor for the next slice. Null when the result is complete |
| `warnings` | string | Warning raised while searching |
### Dynatrace Ingest Logs [#dynatrace-ingest-logs]
Push log events into Dynatrace. Accepts a single log event object or an array of them.
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the logs.ingest scope |
| `logs` | json | Yes | A log event object, or an array of them. Recognized keys are content, timestamp, and severity; any other key becomes a custom attribute (e.g. \[\{"content":"Deploy finished","severity":"info","service":"checkout"}]) |
#### Output [#output-16]
| Parameter | Type | Description |
| ------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `accepted` | boolean | True when Dynatrace accepted every log event (HTTP 204) |
| `statusCode` | number | HTTP status Dynatrace returned. 204 is full success, 200 is partial success |
| `details` | json | Partial-success body, present only when some events were rejected. The reference does not document its shape, so it is passed through as-is |
### Dynatrace List SLOs [#dynatrace-list-slos]
List service-level objectives with their current attainment, error budget, and burn rate.
#### Input [#input-17]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the slo.read scope |
| `sloSelector` | string | No | SLO selector, e.g. healthState("WARNING"),text("checkout"),problems("true"). Combine criteria with commas |
| `from` | string | No | Start of the evaluation timeframe as UTC milliseconds, ISO 8601, or a relative expression such as now-7d |
| `to` | string | No | End of the evaluation timeframe in the same formats as From. Defaults to now |
| `timeFrame` | string | No | CURRENT evaluates each SLO over its own timeframe; GTF evaluates over the From/To range |
| `sort` | string | No | Sort by name: name ascending or -name descending |
| `enabledSlos` | string | No | Filter by enabled state: true, false, or all |
| `evaluate` | boolean | No | Evaluate each SLO and include its calculated values |
| `showGlobalSlos` | boolean | No | Include SLOs that are not scoped to a management zone |
| `pageSize` | number | No | SLOs per page (max 10000, default 10) |
| `nextPageKey` | string | No | Cursor for the next page. All other filters are ignored when it is set |
#### Output [#output-17]
| Parameter | Type | Description |
| --------- | ----- | --------------------------------- |
| `slos` | array | Matching service-level objectives |
### Dynatrace Get SLO [#dynatrace-get-slo]
Get a single service-level objective with its evaluated attainment, error budget, and burn rate.
#### Input [#input-18]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the slo.read scope |
| `sloId` | string | Yes | ID of the SLO |
| `from` | string | No | Start of the evaluation timeframe as UTC milliseconds, ISO 8601, or a relative expression such as now-7d. Defaults to now-2w |
| `to` | string | No | End of the evaluation timeframe in the same formats as From. Defaults to now |
| `timeFrame` | string | No | CURRENT evaluates the SLO over its own timeframe; GTF evaluates over the From/To range |
#### Output [#output-18]
| Parameter | Type | Description |
| --------- | ------ | ------------------------------------- |
| `slo` | object | The requested service-level objective |
### Dynatrace List Security Problems [#dynatrace-list-security-problems]
List vulnerabilities detected by Dynatrace Application Security, filtered by risk level, status, CVE, or technology.
#### Input [#input-19]
| Parameter | Type | Required | Description |
| ------------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the securityProblems.read scope |
| `securityProblemSelector` | string | No | Security problem selector, e.g. status("OPEN"),riskLevel("CRITICAL"),technology("JAVA") |
| `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression such as now-7d. Defaults to now-30d |
| `to` | string | No | End of the timeframe in the same formats as From. Defaults to now |
| `fields` | string | No | Comma-separated optional properties to include: +riskAssessment, +managementZones, +codeLevelVulnerabilityDetails, +globalCounts |
| `sort` | string | No | Sort by a field with a + or - prefix, e.g. -riskAssessment.riskScore |
| `pageSize` | number | No | Security problems per page (max 500, default 100) |
| `nextPageKey` | string | No | Cursor for the next page. All other filters are ignored when it is set |
#### Output [#output-19]
| Parameter | Type | Description |
| ------------------ | ----- | -------------------------- |
| `securityProblems` | array | Matching security problems |
### Dynatrace Get Security Problem [#dynatrace-get-security-problem]
Get a single vulnerability with its description, remediation guidance, affected entities, and risk assessment.
#### Input [#input-20]
| Parameter | Type | Required | Description |
| ---------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the securityProblems.read scope |
| `securityProblemId` | string | Yes | ID of the security problem |
| `fields` | string | No | Comma-separated optional properties to include, each prefixed with +. Defaults to every detail property: +riskAssessment, +managementZones, +codeLevelVulnerabilityDetails, +globalCounts, +filteredCounts, +description, +remediationDescription, +events, +vulnerableComponents, +affectedEntities, +exposedEntities, +reachableDataAssets, +relatedEntities, +relatedContainerImages, +relatedAttacks, +entryPoints |
| `managementZoneFilter` | string | No | Restrict the counts to management zones, e.g. names("Production") |
| `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression such as now-24h. Defaults to the last 24 hours |
#### Output [#output-20]
| Parameter | Type | Description |
| ----------------- | ------ | ------------------------------ |
| `securityProblem` | object | The requested security problem |
### Dynatrace Get Audit Logs [#dynatrace-get-audit-logs]
Read the Dynatrace audit log — who changed which configuration, when, and whether it succeeded.
#### Input [#input-21]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the auditLogs.read scope |
| `filter` | string | No | Audit log filter, e.g. eventType("UPDATE"),user("[someone@example.com](mailto:someone@example.com)"),category("CONFIG") |
| `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression such as now-1d. Defaults to now-2w |
| `to` | string | No | End of the timeframe in the same formats as From. Defaults to now |
| `sort` | string | No | timestamp for oldest first, or -timestamp for newest first (default) |
| `pageSize` | number | No | Entries per page (max 5000, default 1000) |
| `nextPageKey` | string | No | Cursor for the next page. All other filters are ignored when it is set |
#### Output [#output-21]
| Parameter | Type | Description |
| ------------------------- | ------- | --------------------------------------------------------------------------------------------------------- |
| `auditLogs` | array | Matching audit log entries |
| ↳ `logId` | string | Audit log entry ID |
| ↳ `eventType` | string | Type of the audited change |
| ↳ `category` | string | Category of the audited change |
| ↳ `entityId` | string | ID of the changed entity |
| ↳ `environmentId` | string | Environment the change happened in |
| ↳ `user` | string | User or token that made the change |
| ↳ `userType` | string | Type of the acting user |
| ↳ `userOrigin` | string | Origin of the request |
| ↳ `timestamp` | number | Change timestamp in UTC milliseconds |
| ↳ `success` | boolean | Whether the change succeeded |
| ↳ `message` | string | Description of the change |
| ↳ `patch` | json | JSON patch describing the change. Its shape follows whatever settings object was edited, so it is dynamic |
| ↳ `settingsSchemaId` | string | Settings schema ID (dt.settings.schema\_id) |
| ↳ `settingsScopeId` | string | Settings scope ID (dt.settings.scope\_id) |
| ↳ `settingsKey` | string | Settings key (dt.settings.key) |
| ↳ `settingsObjectId` | string | Settings object ID (dt.settings.object\_id) |
| ↳ `settingsObjectSummary` | string | Settings object summary (dt.settings.object\_summary) |
| ↳ `settingsScopeName` | string | Settings scope name (dt.settings.scope\_name) |
### Dynatrace Mute Security Problem [#dynatrace-mute-security-problem]
Mute a single Dynatrace vulnerability with a reason, for triaging false positives or accepted risk.
#### Input [#input-22]
| Parameter | Type | Required | Description |
| ------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the securityProblems.write scope |
| `securityProblemId` | string | Yes | ID of the security problem to mute |
| `reason` | string | Yes | One of CONFIGURATION\_NOT\_AFFECTED, FALSE\_POSITIVE, IGNORE, OTHER, VULNERABLE\_CODE\_NOT\_IN\_USE |
| `comment` | string | No | Explanation recorded alongside the mute |
#### Output [#output-22]
| Parameter | Type | Description |
| ------------------- | ------- | --------------------------------------------------------------------- |
| `securityProblemId` | string | ID of the muted security problem |
| `reason` | string | Reason recorded for the mute |
| `comment` | string | Comment recorded for the mute |
| `alreadyInState` | boolean | True when Dynatrace reported the problem was already muted (HTTP 204) |
### Dynatrace Unmute Security Problem [#dynatrace-unmute-security-problem]
Unmute a single Dynatrace vulnerability, returning it to the active triage queue.
#### Input [#input-23]
| Parameter | Type | Required | Description |
| ------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the securityProblems.write scope |
| `securityProblemId` | string | Yes | ID of the security problem to unmute |
| `reason` | string | Yes | Reason for unmuting. AFFECTED is the only value the API accepts |
| `comment` | string | No | Explanation recorded alongside the unmute |
#### Output [#output-23]
| Parameter | Type | Description |
| ------------------- | ------- | ----------------------------------------------------------------------- |
| `securityProblemId` | string | ID of the unmuted security problem |
| `reason` | string | Reason recorded for the unmute |
| `comment` | string | Comment recorded for the unmute |
| `alreadyInState` | boolean | True when Dynatrace reported the problem was already unmuted (HTTP 204) |
### Dynatrace Mute Security Problems [#dynatrace-mute-security-problems]
Mute several Dynatrace vulnerabilities at once with a shared reason, for bulk triage.
#### Input [#input-24]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the securityProblems.write scope |
| `securityProblemIds` | string | Yes | Security problem IDs to mute, comma-separated or as a JSON array |
| `reason` | string | Yes | One of CONFIGURATION\_NOT\_AFFECTED, FALSE\_POSITIVE, IGNORE, OTHER, VULNERABLE\_CODE\_NOT\_IN\_USE |
| `comment` | string | No | Explanation recorded against every muted problem |
#### Output [#output-24]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------------------------------- |
| `changedCount` | number | How many problems actually changed state, excluding those already muted |
### Dynatrace Unmute Security Problems [#dynatrace-unmute-security-problems]
Unmute several Dynatrace vulnerabilities at once, returning them to active triage.
#### Input [#input-25]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the securityProblems.write scope |
| `securityProblemIds` | string | Yes | Security problem IDs to unmute, comma-separated or as a JSON array |
| `reason` | string | Yes | Reason for unmuting. AFFECTED is the only value the API accepts |
| `comment` | string | No | Explanation recorded against every unmuted problem |
#### Output [#output-25]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------------------------------------------- |
| `changedCount` | number | How many problems actually changed state, excluding those already unmuted |
### Dynatrace List Remediation Items [#dynatrace-list-remediation-items]
List the remediation items of a third-party vulnerability — the components to upgrade, their affected entities, and their mute state.
#### Input [#input-26]
| Parameter | Type | Required | Description |
| ------------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the securityProblems.read scope |
| `securityProblemId` | string | Yes | ID of the third-party security problem |
| `remediationItemSelector` | string | No | Remediation item selector, e.g. vulnerabilityState("VULNERABLE"),muted("false"),exposure("PUBLIC\_NETWORK") |
#### Output [#output-26]
| Parameter | Type | Description |
| ------------------ | ----- | ---------------------------------------------------------------------------- |
| `remediationItems` | array | Remediation items of the vulnerability. This endpoint returns no total count |
### Dynatrace List Attacks [#dynatrace-list-attacks]
List runtime attacks Dynatrace Application Protection detected — injection attempts, their source, and whether they were blocked.
#### Input [#input-27]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the attacks.read scope |
| `attackSelector` | string | No | Attack selector, e.g. state("EXPLOITED"),attackType("SQL\_INJECTION"),technology("JAVA") |
| `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression such as now-7d. Defaults to now-30d |
| `to` | string | No | End of the timeframe in the same formats as From. Defaults to now |
| `fields` | string | No | Comma-separated optional properties to include: +attackTarget, +request, +entrypoint, +vulnerability, +securityProblem, +attacker, +managementZones, +affectedEntities |
| `sort` | string | No | Sort by displayId, displayName, attackType, state, sourceIp, requestPath, or timestamp with a + or - prefix |
| `pageSize` | number | No | Attacks per page (max 500, default 100) |
| `nextPageKey` | string | No | Cursor for the next page. All other filters are ignored when it is set |
#### Output [#output-27]
| Parameter | Type | Description |
| --------- | ----- | ---------------- |
| `attacks` | array | Matching attacks |
### Dynatrace Get Attack [#dynatrace-get-attack]
Get a single attack with its entry point, payload, attacker, and the vulnerability it exploited.
#### Input [#input-28]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the attacks.read scope |
| `attackId` | string | Yes | ID of the attack |
| `fields` | string | No | Comma-separated optional properties to include, each prefixed with +. Defaults to all of them: +attackTarget, +request, +entrypoint, +vulnerability, +securityProblem, +attacker, +managementZones |
#### Output [#output-28]
| Parameter | Type | Description |
| --------- | ------ | -------------------- |
| `attack` | object | The requested attack |
### Dynatrace List Tags [#dynatrace-list-tags]
List the custom tags applied to the monitored entities an entity selector matches.
#### Input [#input-29]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the entities.read scope |
| `entitySelector` | string | Yes | Entity selector for the entities to read tags from, e.g. type("HOST") |
| `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression. Defaults to now-24h |
| `to` | string | No | End of the timeframe in the same formats as From. Defaults to now |
#### Output [#output-29]
| Parameter | Type | Description |
| --------- | ----- | ----------------------------------- |
| `tags` | array | Custom tags on the matched entities |
### Dynatrace Add Tags [#dynatrace-add-tags]
Add custom tags to every monitored entity an entity selector matches. Tags drive selectors, management zones, and alerting.
#### Input [#input-30]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the entities.write scope |
| `entitySelector` | string | Yes | Entity selector for the entities to tag, e.g. type("HOST"),tag("env:staging") |
| `tags` | json | Yes | Tags to add, as an array of objects with a key and an optional value (e.g. \[\{"key":"owner","value":"platform"},\{"key":"reviewed"}]) |
| `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression. Defaults to now-24h |
| `to` | string | No | End of the timeframe in the same formats as From. Defaults to now |
#### Output [#output-30]
| Parameter | Type | Description |
| ---------------------- | ------ | ------------------------------------------------------ |
| `appliedTags` | array | Tags that were applied |
| `matchedEntitiesCount` | number | How many entities the selector matched and were tagged |
### Dynatrace Delete Tag [#dynatrace-delete-tag]
Remove a custom tag from every monitored entity an entity selector matches. Deletes one key-value pair, or every tag with the key.
#### Input [#input-31]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the entities.write scope |
| `entitySelector` | string | Yes | Entity selector for the entities to untag, e.g. type("HOST"),tag("owner:old") |
| `key` | string | Yes | Key of the tag to delete |
| `value` | string | No | Value of the tag to delete. Omit it and set Delete All With Key to remove every value of the key |
| `deleteAllWithKey` | boolean | No | Delete every tag carrying the key, regardless of value |
| `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression. Defaults to now-24h |
| `to` | string | No | End of the timeframe in the same formats as From. Defaults to now |
#### Output [#output-31]
| Parameter | Type | Description |
| ---------------------- | ------ | ------------------------------------------------------------------- |
| `matchedEntitiesCount` | number | How many entities the selector matched and had the tag removed from |
### Dynatrace List Settings Schemas [#dynatrace-list-settings-schemas]
List the settings schemas available in the environment. Use it to find the schema ID for a configuration type such as builtin:alerting.profile.
#### Input [#input-32]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the settings.read scope |
| `fields` | string | No | Comma-separated fields to include: schemaId, displayName, maturity, latestSchemaVersion, multiObject, ordered, ownerBasedAccessControl |
#### Output [#output-32]
| Parameter | Type | Description |
| --------- | ----- | -------------------------- |
| `schemas` | array | Available settings schemas |
### Dynatrace List Settings Objects [#dynatrace-list-settings-objects]
List settings objects — the configuration behind maintenance windows, alerting profiles, management zones, and anomaly detection.
#### Input [#input-33]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the settings.read scope |
| `schemaIds` | string | No | Comma-separated schema IDs, e.g. builtin:alerting.profile |
| `scopes` | string | No | Comma-separated scopes, e.g. environment or HOST-06F288EE2A930951 |
| `externalIds` | string | No | Comma-separated external IDs |
| `fields` | string | No | Comma-separated fields to include: objectId, value, schemaId, schemaVersion, scope, author, modified, updateToken, created, externalId, summary, searchSummary |
| `filter` | string | No | Filter expression over created, modified, createdBy, modifiedBy, or value |
| `sort` | string | No | Sort expression, e.g. -modified |
| `pageSize` | number | No | Objects per page (max 500, default 100) |
| `nextPageKey` | string | No | Cursor for the next page. All other filters are ignored when it is set |
#### Output [#output-33]
| Parameter | Type | Description |
| --------- | ----- | ------------------------- |
| `items` | array | Matching settings objects |
### Dynatrace Get Settings Object [#dynatrace-get-settings-object]
Get a single settings object with its value and its update token. Read it before updating so the token can guard against a concurrent change.
#### Input [#input-34]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the settings.read scope |
| `objectId` | string | Yes | ID of the settings object |
#### Output [#output-34]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------- |
| `object` | object | The requested settings object |
### Dynatrace Create Settings Object [#dynatrace-create-settings-object]
Create a settings object — a maintenance window, alerting profile, management zone, or any other schema-backed configuration.
#### Input [#input-35]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the settings.write scope |
| `schemaId` | string | Yes | Schema of the object to create, e.g. builtin:alerting.maintenance-window. List Settings Schemas returns the available IDs |
| `scope` | string | Yes | Scope the object applies to, e.g. environment or an entity ID such as HOST-06F288EE2A930951 |
| `value` | json | Yes | The configuration itself. Its shape is defined by the schema — read an existing object of the same schema to see the expected fields |
| `schemaVersion` | string | No | Schema version to validate against. Defaults to the latest |
| `externalId` | string | No | External ID to correlate the object with a system outside Dynatrace |
| `validateOnly` | boolean | No | Validate the payload without creating anything |
#### Output [#output-35]
| Parameter | Type | Description |
| ------------------------ | ------ | ------------------------------------------------------------------------------------------------ |
| `results` | array | One result per submitted object |
| ↳ `code` | number | Per-object HTTP status |
| ↳ `objectId` | string | ID of the created object |
| ↳ `writeError` | json | Validation error for this object, when it failed |
| ↳ `code` | number | Error code |
| ↳ `message` | string | Error message |
| ↳ `constraintViolations` | array | Which part of the value failed validation |
| ↳ `location` | string | Where the violation was found |
| ↳ `message` | string | What is wrong |
| ↳ `parameterLocation` | string | HEADER, PATH, PAYLOAD\_BODY, or QUERY |
| ↳ `path` | string | Path to the offending field |
| ↳ `invalidValue` | json | The value that was rejected. Mirrors the submitted schema-defined value, so the shape is dynamic |
| `objectId` | string | ID of the created object, lifted from the first result |
### Dynatrace Update Settings Object [#dynatrace-update-settings-object]
Update an existing settings object. Pass the update token from Get Settings Object to fail rather than overwrite a concurrent change.
#### Input [#input-36]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the settings.write scope |
| `objectId` | string | Yes | ID of the settings object to update |
| `value` | json | Yes | The full replacement configuration. Its shape is defined by the object schema — this replaces the value rather than merging into it |
| `schemaVersion` | string | No | Schema version to validate against |
| `updateToken` | string | No | Token from Get Settings Object. When set, the update fails if the object changed in the meantime. Omit it to overwrite unconditionally |
| `validateOnly` | boolean | No | Validate the payload without saving anything |
#### Output [#output-36]
| Parameter | Type | Description |
| ---------- | ------ | ---------------------------------------- |
| `objectId` | string | ID of the updated object |
| `code` | number | Status Dynatrace reported for the update |
### Dynatrace Delete Settings Object [#dynatrace-delete-settings-object]
Delete a settings object. Dynatrace cannot undo this.
#### Input [#input-37]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the settings.write scope |
| `objectId` | string | Yes | ID of the settings object to delete |
| `updateToken` | string | No | Token from Get Settings Object. When set, the delete fails if the object changed in the meantime |
#### Output [#output-37]
| Parameter | Type | Description |
| ---------- | ------- | -------------------------------------------- |
| `objectId` | string | ID of the deleted settings object |
| `deleted` | boolean | Always true — a failed delete raises instead |
### Dynatrace List Synthetic Monitors [#dynatrace-list-synthetic-monitors]
List synthetic monitors and their IDs. Use it to find the monitor IDs to feed into an on-demand execution.
#### Input [#input-38]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with one of ReadSyntheticData, DataExport, or ExternalSyntheticIntegration |
| `type` | string | No | Filter by monitor type: BROWSER or HTTP |
| `enabled` | boolean | No | Filter to enabled (true) or disabled (false) monitors |
| `location` | string | No | Filter to monitors assigned to a synthetic location |
| `tag` | string | No | Filter by tag. Comma-separate to require several tags |
| `managementZone` | number | No | Filter to monitors in a management zone, by numeric zone ID |
#### Output [#output-38]
| Parameter | Type | Description |
| ---------- | ----- | --------------------------- |
| `monitors` | array | Matching synthetic monitors |
### Dynatrace Execute Synthetic Monitors [#dynatrace-execute-synthetic-monitors]
Trigger an on-demand batch execution of synthetic monitors, for gating a deploy on a smoke test. Returns a batch ID to poll.
#### Input [#input-39]
| Parameter | Type | Required | Description |
| -------------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with syntheticExecutions.write or ExternalSyntheticIntegration |
| `monitors` | json | Yes | Monitors to run, as an array of objects with monitorId and optional locations and executionCount (e.g. \[\{"monitorId":"SYNTHETIC\_TEST-123","executionCount":1}]). Execution count caps at 10 |
| `processingMode` | string | No | STANDARD, DISABLE\_PROBLEM\_DETECTION, or EXECUTIONS\_DETAILS\_ONLY |
| `failOnPerformanceIssue` | boolean | No | Treat a performance threshold breach as a failure |
| `stopOnProblem` | boolean | No | Stop the batch as soon as one monitor reports a problem |
| `takeScreenshotsOnSuccess` | boolean | No | Capture screenshots for successful browser executions too |
| `metadata` | json | No | Key-value metadata to attach to the batch, e.g. the release version. Max 64 pairs, 1024 characters each |
#### Output [#output-39]
| Parameter | Type | Description |
| --------------------------- | ------ | ------------------------------------------------- |
| `batchId` | string | ID of the batch, to poll with Get Synthetic Batch |
| `triggeredCount` | number | How many executions were triggered |
| `triggeringProblemsCount` | number | How many executions could not be triggered |
| `triggered` | array | Triggered executions, grouped by monitor |
| ↳ `monitorId` | string | Monitor that was triggered |
| ↳ `executions` | array | One entry per location the monitor ran from |
| ↳ `executionId` | string | Execution ID |
| ↳ `locationId` | string | Location the execution ran from |
| `triggeringProblemsDetails` | array | Why each untriggered execution failed to start |
| ↳ `cause` | string | Why the execution could not be triggered |
| ↳ `details` | string | Detail behind the cause |
| ↳ `entityId` | string | Entity the problem relates to |
| ↳ `executionId` | string | Execution ID, when one was assigned |
| ↳ `locationId` | string | Location the execution targeted |
### Dynatrace Get Synthetic Batch [#dynatrace-get-synthetic-batch]
Get the status and failures of an on-demand synthetic batch execution. Poll it after triggering to gate a deploy on the result.
#### Input [#input-40]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with syntheticExecutions.read, ReadSyntheticData, or ExternalSyntheticIntegration |
| `batchId` | string | Yes | Batch ID returned by Execute Synthetic Monitors |
#### Output [#output-40]
| Parameter | Type | Description |
| ------------------------- | ------ | ---------------------------------------------------------------------------------------------------------- |
| `batchId` | string | ID of the batch |
| `batchStatus` | string | RUNNING, SUCCESS, FAILED, FAILED\_TO\_EXECUTE, or NOT\_TRIGGERED |
| `executedCount` | number | Executions completed |
| `failedCount` | number | Executions that failed |
| `failedToExecuteCount` | number | Executions that never ran |
| `triggeredCount` | number | Executions triggered |
| `triggeringProblemsCount` | number | Executions that could not be triggered |
| `failedExecutions` | array | Executions that ran and failed |
| ↳ `errorCode` | string | Error code Dynatrace reported |
| ↳ `executionId` | string | Execution ID |
| ↳ `executionStage` | string | DATA\_RETRIEVED, EXECUTED, NOT\_TRIGGERED, TIMED\_OUT, TRIGGERED, or WAITING |
| ↳ `executionTimestamp` | number | Execution time in UTC ms |
| ↳ `failureMessage` | string | Why the execution failed |
| ↳ `locationId` | string | Location the execution ran from |
| ↳ `monitorId` | string | Monitor that was executed |
| `failedToExecute` | array | Executions that never started |
| ↳ `errorCode` | string | Error code Dynatrace reported |
| ↳ `executionId` | string | Execution ID |
| ↳ `executionStage` | string | DATA\_RETRIEVED, EXECUTED, NOT\_TRIGGERED, TIMED\_OUT, TRIGGERED, or WAITING |
| ↳ `executionTimestamp` | number | Execution time in UTC ms |
| ↳ `failureMessage` | string | Why the execution failed |
| ↳ `locationId` | string | Location the execution ran from |
| ↳ `monitorId` | string | Monitor that was executed |
| `triggeringProblems` | array | Reasons executions could not be triggered |
| ↳ `cause` | string | Why the execution could not be triggered |
| ↳ `details` | string | Detail behind the cause |
| ↳ `entityId` | string | Entity the problem relates to |
| ↳ `executionId` | string | Execution ID, when one was assigned |
| ↳ `locationId` | string | Location the execution targeted |
| `metadata` | json | Key-value metadata supplied when the batch was triggered. Keys are caller-defined, so the shape is dynamic |
| `userId` | string | Who triggered the batch |
### Dynatrace Get Problem Comment [#dynatrace-get-problem-comment]
Get a single comment on a Dynatrace problem.
#### Input [#input-41]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the problems.read scope |
| `problemId` | string | Yes | ID of the problem the comment belongs to |
| `commentId` | string | Yes | ID of the comment |
#### Output [#output-41]
| Parameter | Type | Description |
| --------- | ------ | --------------------- |
| `comment` | object | The requested comment |
### Dynatrace Update Problem Comment [#dynatrace-update-problem-comment]
Replace the text of an existing comment on a Dynatrace problem.
#### Input [#input-42]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the problems.write scope |
| `problemId` | string | Yes | ID of the problem the comment belongs to |
| `commentId` | string | Yes | ID of the comment to update |
| `message` | string | Yes | Replacement text of the comment |
| `context` | string | No | Context of the comment, shown alongside the author |
#### Output [#output-42]
| Parameter | Type | Description |
| ----------- | ------ | ---------------------------- |
| `problemId` | string | ID of the problem |
| `commentId` | string | ID of the updated comment |
| `message` | string | Text the comment now carries |
| `context` | string | Context of the comment |
### Dynatrace Delete Problem Comment [#dynatrace-delete-problem-comment]
Delete a comment from a Dynatrace problem.
#### Input [#input-43]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the problems.write scope |
| `problemId` | string | Yes | ID of the problem the comment belongs to |
| `commentId` | string | Yes | ID of the comment to delete |
#### Output [#output-43]
| Parameter | Type | Description |
| ----------- | ------- | -------------------------------------------- |
| `problemId` | string | ID of the problem |
| `commentId` | string | ID of the deleted comment |
| `deleted` | boolean | Always true — a failed delete raises instead |
### Dynatrace Create SLO [#dynatrace-create-slo]
Create a service-level objective from a metric expression, target, and evaluation timeframe.
#### Input [#input-44]
| Parameter | Type | Required | Description |
| ------------------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the slo.write scope |
| `name` | string | Yes | Name of the SLO |
| `target` | number | Yes | Target success rate as a percentage, e.g. 99.5 |
| `warning` | number | Yes | Warning threshold as a percentage. Must sit above the target, e.g. 99.8 |
| `timeframe` | string | Yes | Evaluation timeframe in Dynatrace notation, e.g. -1d, -1w, or now-30d |
| `evaluationType` | string | Yes | Evaluation type. AGGREGATE is the only value the API accepts |
| `description` | string | No | Description of the SLO |
| `enabled` | boolean | No | Whether the SLO is evaluated. Dynatrace defaults it to false |
| `filter` | string | No | Entity filter scoping the SLO, e.g. type("SERVICE"),tag("env:prod") |
| `metricExpression` | string | No | Metric expression the SLO evaluates, e.g. (100)\*(builtin:service.errors.total.successCount:splitBy())/(builtin:service.requestCount.total:splitBy()) |
| `metricName` | string | No | Display name for the SLO metric |
| `burnRateVisualizationEnabled` | boolean | No | Show the error-budget burn rate on the SLO |
| `fastBurnThreshold` | number | No | Burn rate above which the SLO is considered fast-burning |
#### Output [#output-44]
| Parameter | Type | Description |
| --------- | ------ | ---------------------------------------------------- |
| `sloId` | string | ID of the created SLO, read from the Location header |
| `name` | string | Name the SLO was created with |
### Dynatrace Update SLO [#dynatrace-update-slo]
Update an existing service-level objective. Every field is replaced, so send the complete definition.
#### Input [#input-45]
| Parameter | Type | Required | Description |
| ------------------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the slo.write scope |
| `sloId` | string | Yes | ID of the SLO to update |
| `name` | string | Yes | Name of the SLO |
| `target` | number | Yes | Target success rate as a percentage, e.g. 99.5 |
| `warning` | number | Yes | Warning threshold as a percentage. Must sit above the target, e.g. 99.8 |
| `timeframe` | string | Yes | Evaluation timeframe in Dynatrace notation, e.g. -1d, -1w, or now-30d |
| `evaluationType` | string | Yes | Evaluation type. AGGREGATE is the only value the API accepts |
| `description` | string | No | Description of the SLO |
| `enabled` | boolean | No | Whether the SLO is evaluated. Dynatrace defaults it to false |
| `filter` | string | No | Entity filter scoping the SLO, e.g. type("SERVICE"),tag("env:prod") |
| `metricExpression` | string | No | Metric expression the SLO evaluates, e.g. (100)\*(builtin:service.errors.total.successCount:splitBy())/(builtin:service.requestCount.total:splitBy()) |
| `metricName` | string | No | Display name for the SLO metric |
| `burnRateVisualizationEnabled` | boolean | No | Show the error-budget burn rate on the SLO |
| `fastBurnThreshold` | number | No | Burn rate above which the SLO is considered fast-burning |
#### Output [#output-45]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `sloId` | string | ID of the updated SLO |
| `name` | string | Name the SLO now carries |
### Dynatrace Delete SLO [#dynatrace-delete-slo]
Delete a service-level objective.
#### Input [#input-46]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) |
| `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the slo.write scope |
| `sloId` | string | Yes | ID of the SLO to delete |
#### Output [#output-46]
| Parameter | Type | Description |
| --------- | ------- | -------------------------------------------- |
| `sloId` | string | ID of the deleted SLO |
| `deleted` | boolean | Always true — a failed delete raises instead |
---
# Elasticsearch (/integrations/elasticsearch)
{/* MANUAL-CONTENT-START:intro */}
[Elasticsearch](https://www.elastic.co/elasticsearch/) is a powerful distributed search and analytics engine that enables you to index, search, and analyze large volumes of data in real time. It’s widely used for powering search features, log and event data analytics, observability, and more.
With Elasticsearch in Sim, you gain programmatic access to core Elasticsearch capabilities, including:
* **Search documents**: Perform advanced searches on structured or unstructured text using Query DSL, with support for sorting, pagination, and field selection.
* **Index documents**: Add new documents or update existing ones in any Elasticsearch index for immediate retrieval and analysis.
* **Get, update, or delete documents**: Retrieve, modify, or remove specific documents by ID.
* **Bulk operations**: Execute multiple indexing or update actions in a single request for high-throughput data processing.
* **Manage indexes**: Create, delete, or get details about indexes as part of your workflow automation.
* **Cluster monitoring**: Check the health and stats of your Elasticsearch deployment.
Sim's Elasticsearch tools work with both self-hosted and Elastic Cloud environments. Integrate Elasticsearch into your agent workflows to automate data ingestion, search across vast datasets, run reporting, or build custom search-powered applications – all without manual intervention.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Elasticsearch into workflows for powerful search, indexing, and data management. Supports document CRUD operations, advanced search queries, bulk operations, index management, and cluster monitoring. Works with both self-hosted and Elastic Cloud deployments.
## Actions [#actions]
### Elasticsearch Search [#elasticsearch-search]
Search documents in Elasticsearch using Query DSL. Returns matching documents with scores and metadata.
#### Input [#input]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------- |
| `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud |
| `host` | string | No | Elasticsearch host URL (for self-hosted) |
| `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) |
| `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth |
| `apiKey` | string | No | Elasticsearch API key |
| `username` | string | No | Username for basic auth |
| `password` | string | No | Password for basic auth |
| `index` | string | Yes | Index name to search (e.g., "products", "logs-2024") |
| `query` | string | No | Query DSL as JSON string. Example: \{"match":\{"title":"search term"}} or \{"bool":\{"must":\[...]}} |
| `from` | number | No | Starting offset for pagination (e.g., 0, 10, 20). Default: 0 |
| `size` | number | No | Number of results to return (e.g., 10, 25, 100). Default: 10 |
| `sort` | string | No | Sort specification as JSON string. Example: \[\{"created\_at":"desc"}] or \[\{"\_score":"desc"},\{"name":"asc"}] |
| `sourceIncludes` | string | No | Comma-separated list of fields to include in \_source |
| `sourceExcludes` | string | No | Comma-separated list of fields to exclude from \_source |
| `trackTotalHits` | boolean | No | Track accurate total hit count (default: true) |
#### Output [#output]
| Parameter | Type | Description |
| -------------- | ------- | ------------------------------------------------------ |
| `took` | number | Time in milliseconds the search took |
| `timed_out` | boolean | Whether the search timed out |
| `hits` | object | Search results with total count and matching documents |
| `aggregations` | json | Aggregation results if any |
### Elasticsearch Index Document [#elasticsearch-index-document]
Index (create or update) a document in Elasticsearch.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------- |
| `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud |
| `host` | string | No | Elasticsearch host URL (for self-hosted) |
| `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) |
| `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth |
| `apiKey` | string | No | Elasticsearch API key |
| `username` | string | No | Username for basic auth |
| `password` | string | No | Password for basic auth |
| `index` | string | Yes | Target index name (e.g., "products", "logs-2024") |
| `documentId` | string | No | Document ID (e.g., "abc123", "user\_456"). Auto-generated if not provided |
| `document` | string | Yes | Document body as JSON string |
| `refresh` | string | No | Refresh policy: true, false, or wait\_for |
#### Output [#output-1]
| Parameter | Type | Description |
| ---------- | ------ | ------------------------------------- |
| `_index` | string | Index where the document was stored |
| `_id` | string | Document ID |
| `_version` | number | Document version |
| `result` | string | Operation result (created or updated) |
### Elasticsearch Get Document [#elasticsearch-get-document]
Retrieve a document by ID from Elasticsearch.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ----------------------------------------------------- |
| `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud |
| `host` | string | No | Elasticsearch host URL (for self-hosted) |
| `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) |
| `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth |
| `apiKey` | string | No | Elasticsearch API key |
| `username` | string | No | Username for basic auth |
| `password` | string | No | Password for basic auth |
| `index` | string | Yes | Index name (e.g., "products", "logs-2024") |
| `documentId` | string | Yes | Document ID to retrieve (e.g., "abc123", "user\_456") |
| `sourceIncludes` | string | No | Comma-separated list of fields to include |
| `sourceExcludes` | string | No | Comma-separated list of fields to exclude |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------- | ------- | ------------------------------ |
| `_index` | string | Index name |
| `_id` | string | Document ID |
| `_version` | number | Document version |
| `found` | boolean | Whether the document was found |
| `_source` | json | Document content |
### Elasticsearch Update Document [#elasticsearch-update-document]
Partially update a document in Elasticsearch using doc merge.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | --------------------------------------------------- |
| `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud |
| `host` | string | No | Elasticsearch host URL (for self-hosted) |
| `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) |
| `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth |
| `apiKey` | string | No | Elasticsearch API key |
| `username` | string | No | Username for basic auth |
| `password` | string | No | Password for basic auth |
| `index` | string | Yes | Index name (e.g., "products", "logs-2024") |
| `documentId` | string | Yes | Document ID to update (e.g., "abc123", "user\_456") |
| `document` | string | Yes | Partial document to merge as JSON string |
| `retryOnConflict` | number | No | Number of retries on version conflict |
#### Output [#output-3]
| Parameter | Type | Description |
| ---------- | ------ | ---------------------------------- |
| `_index` | string | Index name |
| `_id` | string | Document ID |
| `_version` | number | New document version |
| `result` | string | Operation result (updated or noop) |
### Elasticsearch Delete Document [#elasticsearch-delete-document]
Delete a document from Elasticsearch by ID.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------- |
| `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud |
| `host` | string | No | Elasticsearch host URL (for self-hosted) |
| `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) |
| `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth |
| `apiKey` | string | No | Elasticsearch API key |
| `username` | string | No | Username for basic auth |
| `password` | string | No | Password for basic auth |
| `index` | string | Yes | Index name (e.g., "products", "logs-2024") |
| `documentId` | string | Yes | Document ID to delete (e.g., "abc123", "user\_456") |
| `refresh` | string | No | Refresh policy: true, false, or wait\_for |
#### Output [#output-4]
| Parameter | Type | Description |
| ---------- | ------ | ---------------------------------------- |
| `_index` | string | Index name |
| `_id` | string | Document ID |
| `_version` | number | Document version |
| `result` | string | Operation result (deleted or not\_found) |
### Elasticsearch Bulk Operations [#elasticsearch-bulk-operations]
Perform multiple index, create, delete, or update operations in a single request for high performance.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud |
| `host` | string | No | Elasticsearch host URL (for self-hosted) |
| `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) |
| `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth |
| `apiKey` | string | No | Elasticsearch API key |
| `username` | string | No | Username for basic auth |
| `password` | string | No | Password for basic auth |
| `index` | string | No | Default index for operations (e.g., "products", "logs-2024") |
| `operations` | string | Yes | Bulk operations as NDJSON string. Each operation is two lines: action metadata and optional document. Example: \{"index":\{"\_index":"products","\_id":"1"}}\n\{"name":"Widget"}\n |
| `refresh` | string | No | Refresh policy: true, false, or wait\_for |
#### Output [#output-5]
| Parameter | Type | Description |
| --------- | ------- | -------------------------------------------- |
| `took` | number | Time in milliseconds the bulk operation took |
| `errors` | boolean | Whether any operation had an error |
| `items` | array | Results for each operation |
### Elasticsearch Count [#elasticsearch-count]
Count documents matching a query in Elasticsearch.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud |
| `host` | string | No | Elasticsearch host URL (for self-hosted) |
| `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) |
| `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth |
| `apiKey` | string | No | Elasticsearch API key |
| `username` | string | No | Username for basic auth |
| `password` | string | No | Password for basic auth |
| `index` | string | Yes | Index name to count documents in (e.g., "products", "logs-2024") |
| `query` | string | No | Query DSL to filter documents (JSON string). Example: \{"match":\{"status":"active"}} |
#### Output [#output-6]
| Parameter | Type | Description |
| --------- | ------ | -------------------------------------- |
| `count` | number | Number of documents matching the query |
| `_shards` | object | Shard statistics |
### Elasticsearch Create Index [#elasticsearch-create-index]
Create a new index with optional settings and mappings.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ---------------------------------------------------- |
| `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud |
| `host` | string | No | Elasticsearch host URL (for self-hosted) |
| `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) |
| `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth |
| `apiKey` | string | No | Elasticsearch API key |
| `username` | string | No | Username for basic auth |
| `password` | string | No | Password for basic auth |
| `index` | string | Yes | Index name to create (e.g., "products", "logs-2024") |
| `settings` | string | No | Index settings as JSON string |
| `mappings` | string | No | Index mappings as JSON string |
#### Output [#output-7]
| Parameter | Type | Description |
| --------------------- | ------- | ------------------------------------ |
| `acknowledged` | boolean | Whether the request was acknowledged |
| `shards_acknowledged` | boolean | Whether the shards were acknowledged |
| `index` | string | Created index name |
### Elasticsearch Delete Index [#elasticsearch-delete-index]
Delete an index and all its documents. This operation is irreversible.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ---------------------------------------------------- |
| `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud |
| `host` | string | No | Elasticsearch host URL (for self-hosted) |
| `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) |
| `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth |
| `apiKey` | string | No | Elasticsearch API key |
| `username` | string | No | Username for basic auth |
| `password` | string | No | Password for basic auth |
| `index` | string | Yes | Index name to delete (e.g., "products", "logs-2024") |
#### Output [#output-8]
| Parameter | Type | Description |
| -------------- | ------- | ------------------------------------- |
| `acknowledged` | boolean | Whether the deletion was acknowledged |
### Elasticsearch Get Index [#elasticsearch-get-index]
Retrieve index information including settings, mappings, and aliases.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------- |
| `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud |
| `host` | string | No | Elasticsearch host URL (for self-hosted) |
| `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) |
| `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth |
| `apiKey` | string | No | Elasticsearch API key |
| `username` | string | No | Username for basic auth |
| `password` | string | No | Password for basic auth |
| `index` | string | Yes | Index name to retrieve info for (e.g., "products", "logs-2024") |
#### Output [#output-9]
| Parameter | Type | Description |
| --------- | ---- | ----------------------------------------------------------- |
| `index` | json | Index information including aliases, mappings, and settings |
### Elasticsearch Cluster Health [#elasticsearch-cluster-health]
Get the health status of the Elasticsearch cluster.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------- |
| `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud |
| `host` | string | No | Elasticsearch host URL (for self-hosted) |
| `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) |
| `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth |
| `apiKey` | string | No | Elasticsearch API key |
| `username` | string | No | Username for basic auth |
| `password` | string | No | Password for basic auth |
| `waitForStatus` | string | No | Wait until cluster reaches this status: green, yellow, or red |
| `timeout` | string | No | Timeout for the wait operation (e.g., 30s, 1m) |
#### Output [#output-10]
| Parameter | Type | Description |
| ---------------------- | ------ | -------------------------------------------- |
| `cluster_name` | string | Name of the cluster |
| `status` | string | Cluster health status: green, yellow, or red |
| `number_of_nodes` | number | Total number of nodes in the cluster |
| `number_of_data_nodes` | number | Number of data nodes |
| `active_shards` | number | Number of active shards |
| `unassigned_shards` | number | Number of unassigned shards |
### Elasticsearch Cluster Stats [#elasticsearch-cluster-stats]
Get comprehensive statistics about the Elasticsearch cluster.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ---------------------------------------------- |
| `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud |
| `host` | string | No | Elasticsearch host URL (for self-hosted) |
| `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) |
| `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth |
| `apiKey` | string | No | Elasticsearch API key |
| `username` | string | No | Username for basic auth |
| `password` | string | No | Password for basic auth |
#### Output [#output-11]
| Parameter | Type | Description |
| -------------- | ------ | -------------------------------------------------------- |
| `cluster_name` | string | Name of the cluster |
| `status` | string | Cluster health status |
| `nodes` | object | Node statistics including count and versions |
| `indices` | object | Index statistics including document count and store size |
### Elasticsearch List Indices [#elasticsearch-list-indices]
List all indices in the Elasticsearch cluster with their health, status, and statistics.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ---------------------------------------------- |
| `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud |
| `host` | string | No | Elasticsearch host URL (for self-hosted) |
| `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) |
| `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth |
| `apiKey` | string | No | Elasticsearch API key |
| `username` | string | No | Username for basic auth |
| `password` | string | No | Password for basic auth |
#### Output [#output-12]
| Parameter | Type | Description |
| --------- | ------ | ---------------------------------- |
| `message` | string | Summary message about the indices |
| `indices` | json | Array of index information objects |
---
# ElevenLabs (/integrations/elevenlabs)
{/* MANUAL-CONTENT-START:intro */}
[ElevenLabs](https://elevenlabs.io/) is a state-of-the-art text-to-speech platform that creates incredibly natural and expressive AI voices. It offers some of the most realistic and emotionally nuanced synthetic voices available today, making it ideal for creating lifelike audio content.
With ElevenLabs, you can:
* **Generate natural-sounding speech**: Create audio that's nearly indistinguishable from human speech
* **Choose from diverse voice options**: Access a library of pre-made voices with different accents, tones, and characteristics
* **Clone voices**: Create custom voices based on audio samples (with proper permissions)
* **Control speech parameters**: Adjust stability, clarity, and emotional tone to fine-tune output
* **Add realistic emotions**: Incorporate natural-sounding emotions like happiness, sadness, or excitement
In Sim, the ElevenLabs integration enables your agents to convert text to lifelike speech, enhancing the interactivity and engagement of your applications. This is particularly valuable for creating voice assistants, generating audio content, developing accessible applications, or building conversational interfaces that feel more human. The integration allows you to seamlessly incorporate ElevenLabs' advanced speech synthesis capabilities into your agent workflows, bridging the gap between text-based AI and natural human communication.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate ElevenLabs into the workflow. Convert text to speech, generate sound effects, transform voices, isolate audio, and manage voices, models, and account settings.
## Actions [#actions]
### ElevenLabs TTS [#elevenlabs-tts]
Convert text to speech using ElevenLabs voices
#### Input [#input]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `text` | string | Yes | The text to convert to speech (e.g., "Hello, welcome to our service!") |
| `voiceId` | string | Yes | The ID of the voice to use (e.g., "21m00Tcm4TlvDq8ikWAM" for Rachel) |
| `modelId` | string | No | The ID of the model to use (e.g., "eleven\_multilingual\_v2", "eleven\_turbo\_v2"). Defaults to eleven\_monolingual\_v1 |
| `stability` | number | No | Voice stability setting from 0.0 to 1.0 (e.g., 0.5 for balanced, 0.75 for more stable). Higher values produce more consistent output |
| `similarityBoost` | number | No | Similarity boost setting from 0.0 to 1.0 (e.g., 0.75 for natural, 1.0 for maximum similarity). Higher values make the voice more similar to the original |
| `apiKey` | string | Yes | Your ElevenLabs API key |
#### Output [#output]
| Parameter | Type | Description |
| ----------- | ------ | ------------------------------ |
| `audioUrl` | string | The URL of the generated audio |
| `audioFile` | file | The generated audio file |
### ElevenLabs Sound Effects [#elevenlabs-sound-effects]
Generate a sound effect from a text prompt using ElevenLabs
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | --------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Your ElevenLabs API key |
| `text` | string | Yes | The prompt describing the sound effect (e.g., "thunder rumbling in the distance") |
| `modelId` | string | No | The model to use (defaults to eleven\_text\_to\_sound\_v2) |
| `durationSeconds` | number | No | Length of the sound in seconds (0.5-30). Omit to auto-determine |
| `promptInfluence` | number | No | How closely to follow the prompt from 0.0 to 1.0 (default 0.3) |
| `loop` | boolean | No | Whether to generate a seamlessly looping sound effect (default false) |
#### Output [#output-1]
| Parameter | Type | Description |
| ----------- | ------ | --------------------------------- |
| `audioUrl` | string | URL of the generated sound effect |
| `audioFile` | file | The generated sound effect file |
### ElevenLabs Speech to Speech [#elevenlabs-speech-to-speech]
Convert audio into a chosen ElevenLabs voice while preserving content and emotion
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ----------------------- | ------- | -------- | ------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Your ElevenLabs API key |
| `voiceId` | string | Yes | The ID of the target voice to convert the audio into |
| `audioFile` | file | Yes | The source audio file to convert (e.g., MP3, WAV, M4A) |
| `modelId` | string | No | The model to use (defaults to eleven\_english\_sts\_v2) |
| `removeBackgroundNoise` | boolean | No | Whether to isolate the voice and remove background noise (default false) |
#### Output [#output-2]
| Parameter | Type | Description |
| ----------- | ------ | -------------------------- |
| `audioUrl` | string | URL of the converted audio |
| `audioFile` | file | The converted audio file |
### ElevenLabs Audio Isolation [#elevenlabs-audio-isolation]
Remove background noise from an audio file, isolating the speech using ElevenLabs
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------- |
| `apiKey` | string | Yes | Your ElevenLabs API key |
| `audioFile` | file | Yes | The audio file to isolate speech from (e.g., MP3, WAV, M4A) |
#### Output [#output-3]
| Parameter | Type | Description |
| ----------- | ------ | ------------------------- |
| `audioUrl` | string | URL of the isolated audio |
| `audioFile` | file | The isolated audio file |
### ElevenLabs List Voices [#elevenlabs-list-voices]
List the voices available in your ElevenLabs account
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ---------------------------------------------------------------------- |
| `apiKey` | string | Yes | Your ElevenLabs API key |
| `search` | string | No | Search term to filter voices by name, description, labels, or category |
| `category` | string | No | Filter by category: premade, cloned, generated, or professional |
| `pageSize` | number | No | Number of voices to return (1-100, default 10) |
| `nextPageToken` | string | No | Page token from a previous response to fetch the next page of voices |
#### Output [#output-4]
| Parameter | Type | Description |
| --------------- | ------- | -------------------------------------------- |
| `voices` | array | List of voices |
| ↳ `voiceId` | string | Unique voice identifier |
| ↳ `name` | string | Voice name |
| ↳ `category` | string | Voice category |
| ↳ `description` | string | Voice description |
| ↳ `labels` | json | Voice labels (accent, gender, age, use case) |
| ↳ `previewUrl` | string | URL to a preview audio sample |
| ↳ `settings` | json | Default voice settings |
| `totalCount` | number | Total number of matching voices |
| `hasMore` | boolean | Whether more voices are available |
| `nextPageToken` | string | Token to fetch the next page |
### ElevenLabs Get Voice [#elevenlabs-get-voice]
Get metadata and settings for a specific ElevenLabs voice
#### Input [#input-5]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------------------------- |
| `apiKey` | string | Yes | Your ElevenLabs API key |
| `voiceId` | string | Yes | The ID of the voice to retrieve (e.g., "21m00Tcm4TlvDq8ikWAM") |
#### Output [#output-5]
| Parameter | Type | Description |
| ------------------------- | ------- | --------------------------------------------------------- |
| `voiceId` | string | Unique voice identifier |
| `name` | string | Voice name |
| `category` | string | Voice category |
| `description` | string | Voice description |
| `labels` | json | Voice labels (accent, gender, age, use case) |
| `previewUrl` | string | URL to a preview audio sample |
| `settings` | json | Default voice settings |
| `availableForTiers` | array | Subscription tiers the voice is available on |
| `highQualityBaseModelIds` | array | Model IDs that support high-quality output for this voice |
| `isOwner` | boolean | Whether the current user owns this voice |
### ElevenLabs Get Voice Settings [#elevenlabs-get-voice-settings]
Get the configured settings for a specific ElevenLabs voice
#### Input [#input-6]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------- |
| `apiKey` | string | Yes | Your ElevenLabs API key |
| `voiceId` | string | Yes | The ID of the voice whose settings to retrieve |
#### Output [#output-6]
| Parameter | Type | Description |
| ----------------- | ------- | -------------------------------- |
| `stability` | number | Voice stability (0.0-1.0) |
| `similarityBoost` | number | Similarity boost (0.0-1.0) |
| `style` | number | Style exaggeration (0.0-1.0) |
| `useSpeakerBoost` | boolean | Whether speaker boost is enabled |
| `speed` | number | Speech speed (1.0 = normal) |
### ElevenLabs Edit Voice Settings [#elevenlabs-edit-voice-settings]
Update the settings for a specific ElevenLabs voice
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | -------------------------------------------------------------------- |
| `apiKey` | string | Yes | Your ElevenLabs API key |
| `voiceId` | string | Yes | The ID of the voice to update |
| `stability` | number | No | Voice stability from 0.0 to 1.0 (default 0.5) |
| `similarityBoost` | number | No | Similarity boost from 0.0 to 1.0 (default 0.75) |
| `style` | number | No | Style exaggeration from 0.0 to 1.0 (default 0) |
| `useSpeakerBoost` | boolean | No | Whether to enhance similarity to the original speaker (default true) |
| `speed` | number | No | Speech speed where 1.0 is normal (default 1.0) |
#### Output [#output-7]
| Parameter | Type | Description |
| --------- | ------ | --------------------------------- |
| `status` | string | Request outcome ("ok" on success) |
### ElevenLabs List Models [#elevenlabs-list-models]
List the models available in ElevenLabs
#### Input [#input-8]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------- |
| `apiKey` | string | Yes | Your ElevenLabs API key |
#### Output [#output-8]
| Parameter | Type | Description |
| ------------------------ | ------- | -------------------------------- |
| `models` | array | List of available models |
| ↳ `modelId` | string | Unique model identifier |
| ↳ `name` | string | Model name |
| ↳ `description` | string | Model description |
| ↳ `canDoTextToSpeech` | boolean | Supports text-to-speech |
| ↳ `canDoVoiceConversion` | boolean | Supports voice conversion |
| ↳ `canUseStyle` | boolean | Supports the style parameter |
| ↳ `canUseSpeakerBoost` | boolean | Supports speaker boost |
| ↳ `languages` | array | Languages supported by the model |
| ↳ `languageId` | string | Language code |
| ↳ `name` | string | Language name |
### ElevenLabs Get User [#elevenlabs-get-user]
Get account and subscription information for the ElevenLabs user
#### Input [#input-9]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------- |
| `apiKey` | string | Yes | Your ElevenLabs API key |
#### Output [#output-9]
| Parameter | Type | Description |
| ------------------------------- | ------- | ---------------------------------------------- |
| `userId` | string | Unique user identifier |
| `isNewUser` | boolean | Whether the user is new |
| `subscription` | object | Subscription and usage details |
| ↳ `tier` | string | Subscription tier |
| ↳ `characterCount` | number | Characters used this period |
| ↳ `characterLimit` | number | Character quota for this period |
| ↳ `canExtendCharacterLimit` | boolean | Whether the character limit can be extended |
| ↳ `status` | string | Subscription status |
| ↳ `nextCharacterCountResetUnix` | number | Unix timestamp when the character count resets |
---
# Email Bison (/integrations/emailbison)
{/* MANUAL-CONTENT-START:intro */}
[Email Bison](https://emailbison.com/) is a cold email outreach and deliverability platform for managing leads, sending sequences, and tracking campaign performance.
With Email Bison, you can:
* **Manage leads**: Create, update, retrieve, and tag leads, and track their engagement across campaigns
* **Run campaigns**: Create campaigns, attach leads, and pause, resume, or archive them as needed
* **Track replies**: List and filter incoming replies by status, folder, campaign, sender, lead, or tag
* **React to events**: Trigger workflows on first email sent, interested replies, unsubscribes, bounces, opens, and sender account changes
In Sim, the Email Bison integration allows your agents to create and update leads, list and filter leads/campaigns/replies, attach leads to campaigns, manage campaign status, and organize leads with tags — all programmatically through API calls. Combined with Email Bison triggers, agents can also react in real time to events like a contact being emailed, replying, marking interest, unsubscribing, or an email bouncing, making it possible to automate outbound outreach workflows end to end.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Email Bison into workflows. Create and update leads, manage campaigns, attach leads to campaigns, list replies, and organize leads with tags.
## Actions [#actions]
### Email Bison List Leads [#email-bison-list-leads]
Retrieves leads from Email Bison with optional search and tag filters.
#### Input [#input]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------- |
| `search` | string | No | Search term for filtering leads |
| `campaignStatus` | string | No | Lead campaign status filter: in\_sequence, sequence\_finished, sequence\_stopped, never\_contacted, or replied |
| `tagIds` | array | No | Tag IDs to include |
| `excludedTagIds` | array | No | Tag IDs to exclude |
| `withoutTags` | boolean | No | Only return leads without tags |
#### Output [#output]
| Parameter | Type | Description |
| ------------ | ------- | ---------------------------- |
| `leads` | array | List of leads |
| `campaigns` | array | List of campaigns |
| `replies` | array | List of replies |
| `tags` | array | List of tags |
| `count` | number | Number of returned records |
| `id` | number | Record ID |
| `uuid` | string | Record UUID |
| `name` | string | Campaign or tag name |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `email` | string | Lead email address |
| `status` | string | Record status |
| `success` | boolean | Whether the action succeeded |
| `message` | string | Action message |
### Email Bison Get Lead [#email-bison-get-lead]
Retrieves a lead by Email Bison lead ID or email address.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------ |
| `leadId` | string | Yes | Lead ID or email address |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------ | ------- | ---------------------------- |
| `leads` | array | List of leads |
| `campaigns` | array | List of campaigns |
| `replies` | array | List of replies |
| `tags` | array | List of tags |
| `count` | number | Number of returned records |
| `id` | number | Record ID |
| `uuid` | string | Record UUID |
| `name` | string | Campaign or tag name |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `email` | string | Lead email address |
| `status` | string | Record status |
| `success` | boolean | Whether the action succeeded |
| `message` | string | Action message |
### Email Bison Create Lead [#email-bison-create-lead]
Creates a single lead in Email Bison.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------- |
| `firstName` | string | Yes | Lead first name |
| `lastName` | string | Yes | Lead last name |
| `email` | string | Yes | Lead email address |
| `title` | string | No | Lead job title |
| `company` | string | No | Lead company |
| `notes` | string | No | Additional notes about the lead |
| `customVariables` | array | No | Custom variables to store on the lead |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------ | ------- | ---------------------------- |
| `leads` | array | List of leads |
| `campaigns` | array | List of campaigns |
| `replies` | array | List of replies |
| `tags` | array | List of tags |
| `count` | number | Number of returned records |
| `id` | number | Record ID |
| `uuid` | string | Record UUID |
| `name` | string | Campaign or tag name |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `email` | string | Lead email address |
| `status` | string | Record status |
| `success` | boolean | Whether the action succeeded |
| `message` | string | Action message |
### Email Bison Update Lead [#email-bison-update-lead]
Updates an existing Email Bison lead. Fields omitted from a PUT update may be cleared by Email Bison.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------- |
| `leadId` | string | Yes | Lead ID or email address |
| `firstName` | string | Yes | Lead first name |
| `lastName` | string | Yes | Lead last name |
| `email` | string | Yes | Lead email address |
| `title` | string | No | Lead job title |
| `company` | string | No | Lead company |
| `notes` | string | No | Additional notes about the lead |
| `customVariables` | array | No | Custom variables to store on the lead |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------ | ------- | ---------------------------- |
| `leads` | array | List of leads |
| `campaigns` | array | List of campaigns |
| `replies` | array | List of replies |
| `tags` | array | List of tags |
| `count` | number | Number of returned records |
| `id` | number | Record ID |
| `uuid` | string | Record UUID |
| `name` | string | Campaign or tag name |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `email` | string | Lead email address |
| `status` | string | Record status |
| `success` | boolean | Whether the action succeeded |
| `message` | string | Action message |
### Email Bison List Campaigns [#email-bison-list-campaigns]
Retrieves Email Bison campaigns.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------ | ------- | ---------------------------- |
| `leads` | array | List of leads |
| `campaigns` | array | List of campaigns |
| `replies` | array | List of replies |
| `tags` | array | List of tags |
| `count` | number | Number of returned records |
| `id` | number | Record ID |
| `uuid` | string | Record UUID |
| `name` | string | Campaign or tag name |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `email` | string | Lead email address |
| `status` | string | Record status |
| `success` | boolean | Whether the action succeeded |
| `message` | string | Action message |
### Email Bison Create Campaign [#email-bison-create-campaign]
Creates a new Email Bison campaign.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------ |
| `name` | string | Yes | Campaign name |
| `campaignType` | string | No | Campaign type: outbound or reply\_followup |
#### Output [#output-5]
| Parameter | Type | Description |
| ------------ | ------- | ---------------------------- |
| `leads` | array | List of leads |
| `campaigns` | array | List of campaigns |
| `replies` | array | List of replies |
| `tags` | array | List of tags |
| `count` | number | Number of returned records |
| `id` | number | Record ID |
| `uuid` | string | Record UUID |
| `name` | string | Campaign or tag name |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `email` | string | Lead email address |
| `status` | string | Record status |
| `success` | boolean | Whether the action succeeded |
| `message` | string | Action message |
### Email Bison Update Campaign [#email-bison-update-campaign]
Updates Email Bison campaign settings.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| --------------------------- | ------- | -------- | ------------------------------------------------ |
| `campaignId` | number | Yes | Campaign ID |
| `name` | string | No | Campaign name |
| `maxEmailsPerDay` | number | No | Maximum emails per day |
| `maxNewLeadsPerDay` | number | No | Maximum new leads per day |
| `plainText` | boolean | No | Send plain text emails |
| `openTracking` | boolean | No | Enable open tracking |
| `reputationBuilding` | boolean | No | Enable reputation building |
| `canUnsubscribe` | boolean | No | Enable unsubscribe link |
| `includeAutoRepliesInStats` | boolean | No | Include auto replies in campaign stats |
| `sequencePrioritization` | string | No | Sequence prioritization: followups or new\_leads |
#### Output [#output-6]
| Parameter | Type | Description |
| ------------ | ------- | ---------------------------- |
| `leads` | array | List of leads |
| `campaigns` | array | List of campaigns |
| `replies` | array | List of replies |
| `tags` | array | List of tags |
| `count` | number | Number of returned records |
| `id` | number | Record ID |
| `uuid` | string | Record UUID |
| `name` | string | Campaign or tag name |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `email` | string | Lead email address |
| `status` | string | Record status |
| `success` | boolean | Whether the action succeeded |
| `message` | string | Action message |
### Email Bison Update Campaign Status [#email-bison-update-campaign-status]
Pauses, resumes, or archives an Email Bison campaign.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ---------------------------------------- |
| `campaignId` | number | Yes | Campaign ID |
| `action` | string | Yes | Status action: pause, resume, or archive |
#### Output [#output-7]
| Parameter | Type | Description |
| ------------ | ------- | ---------------------------- |
| `leads` | array | List of leads |
| `campaigns` | array | List of campaigns |
| `replies` | array | List of replies |
| `tags` | array | List of tags |
| `count` | number | Number of returned records |
| `id` | number | Record ID |
| `uuid` | string | Record UUID |
| `name` | string | Campaign or tag name |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `email` | string | Lead email address |
| `status` | string | Record status |
| `success` | boolean | Whether the action succeeded |
| `message` | string | Action message |
### Email Bison Attach Leads to Campaign [#email-bison-attach-leads-to-campaign]
Adds existing Email Bison leads to a campaign.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ---------------------- | ------- | -------- | ------------------------------------------------------ |
| `campaignId` | number | Yes | Campaign ID |
| `leadIds` | array | Yes | Lead IDs to add to the campaign |
| `allowParallelSending` | boolean | No | Force add leads already in sequence in other campaigns |
#### Output [#output-8]
| Parameter | Type | Description |
| ------------ | ------- | ---------------------------- |
| `leads` | array | List of leads |
| `campaigns` | array | List of campaigns |
| `replies` | array | List of replies |
| `tags` | array | List of tags |
| `count` | number | Number of returned records |
| `id` | number | Record ID |
| `uuid` | string | Record UUID |
| `name` | string | Campaign or tag name |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `email` | string | Lead email address |
| `status` | string | Record status |
| `success` | boolean | Whether the action succeeded |
| `message` | string | Action message |
### Email Bison List Replies [#email-bison-list-replies]
Retrieves Email Bison replies with optional status, folder, campaign, sender, lead, and tag filters.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| --------------- | ------- | -------- | -------------------------------------------------------------------- |
| `search` | string | No | Search term for replies |
| `status` | string | No | Reply status: interested, automated\_reply, or not\_automated\_reply |
| `folder` | string | No | Reply folder: inbox, sent, spam, bounced, or all |
| `read` | boolean | No | Filter by read state |
| `campaignId` | number | No | Campaign ID |
| `senderEmailId` | number | No | Sender email ID |
| `leadId` | number | No | Lead ID |
| `tagIds` | array | No | Tag IDs to filter replies by |
#### Output [#output-9]
| Parameter | Type | Description |
| ------------ | ------- | ---------------------------- |
| `leads` | array | List of leads |
| `campaigns` | array | List of campaigns |
| `replies` | array | List of replies |
| `tags` | array | List of tags |
| `count` | number | Number of returned records |
| `id` | number | Record ID |
| `uuid` | string | Record UUID |
| `name` | string | Campaign or tag name |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `email` | string | Lead email address |
| `status` | string | Record status |
| `success` | boolean | Whether the action succeeded |
| `message` | string | Action message |
### Email Bison List Tags [#email-bison-list-tags]
Retrieves all Email Bison tags for the authenticated workspace.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
#### Output [#output-10]
| Parameter | Type | Description |
| ------------ | ------- | ---------------------------- |
| `leads` | array | List of leads |
| `campaigns` | array | List of campaigns |
| `replies` | array | List of replies |
| `tags` | array | List of tags |
| `count` | number | Number of returned records |
| `id` | number | Record ID |
| `uuid` | string | Record UUID |
| `name` | string | Campaign or tag name |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `email` | string | Lead email address |
| `status` | string | Record status |
| `success` | boolean | Whether the action succeeded |
| `message` | string | Action message |
### Email Bison Create Tag [#email-bison-create-tag]
Creates a new Email Bison tag.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------- |
| `name` | string | Yes | Tag name |
#### Output [#output-11]
| Parameter | Type | Description |
| ------------ | ------- | ---------------------------- |
| `leads` | array | List of leads |
| `campaigns` | array | List of campaigns |
| `replies` | array | List of replies |
| `tags` | array | List of tags |
| `count` | number | Number of returned records |
| `id` | number | Record ID |
| `uuid` | string | Record UUID |
| `name` | string | Campaign or tag name |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `email` | string | Lead email address |
| `status` | string | Record status |
| `success` | boolean | Whether the action succeeded |
| `message` | string | Action message |
### Email Bison Attach Tags to Leads [#email-bison-attach-tags-to-leads]
Attaches Email Bison tags to one or more leads.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| -------------- | ------- | -------- | ----------------------------------------- |
| `tagIds` | array | Yes | Tag IDs to attach |
| `leadIds` | array | Yes | Lead IDs to tag |
| `skipWebhooks` | boolean | No | Skip Email Bison webhooks for this action |
#### Output [#output-12]
| Parameter | Type | Description |
| ------------ | ------- | ---------------------------- |
| `leads` | array | List of leads |
| `campaigns` | array | List of campaigns |
| `replies` | array | List of replies |
| `tags` | array | List of tags |
| `count` | number | Number of returned records |
| `id` | number | Record ID |
| `uuid` | string | Record UUID |
| `name` | string | Campaign or tag name |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `email` | string | Lead email address |
| `status` | string | Record status |
| `success` | boolean | Whether the action succeeded |
| `message` | string | Action message |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
### Email Bison Contact First Emailed [#email-bison-contact-first-emailed]
Trigger when a contact receives their first campaign email in Email Bison
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------ |
| `apiKey` | string | Yes | API Key |
| `apiBaseUrl` | string | Yes | Instance URL |
#### Output [#output-13]
| Parameter | Type | Description |
| ------------------------- | ------ | --------------------------------------- |
| `eventType` | string | Email Bison webhook event type |
| `eventName` | string | Human-readable Email Bison event name |
| `instanceUrl` | string | Email Bison instance URL |
| `workspaceId` | number | Email Bison workspace ID |
| `workspaceName` | string | Email Bison workspace name |
| `event` | json | Raw Email Bison event metadata object |
| `data` | json | Raw Email Bison event data object |
| `scheduledEmail` | object | scheduledEmail output from the tool |
| ↳ `id` | number | Scheduled email ID |
| ↳ `lead_id` | number | Lead ID |
| ↳ `sequence_step_id` | number | Sequence step ID |
| ↳ `sequence_step_order` | number | Sequence step order |
| ↳ `sequence_step_variant` | number | Sequence step variant |
| ↳ `email_subject` | string | Email subject |
| ↳ `email_body` | string | Email body HTML |
| ↳ `status` | string | Scheduled email status |
| ↳ `scheduled_date_est` | string | Scheduled date in EST |
| ↳ `scheduled_date_local` | string | Scheduled date in local timezone |
| ↳ `local_timezone` | string | Scheduled email local timezone |
| ↳ `sent_at` | string | Email sent timestamp |
| ↳ `opens` | number | Open count |
| ↳ `replies` | number | Reply count |
| ↳ `unique_opens` | number | Unique open count |
| ↳ `unique_replies` | number | Unique reply count |
| ↳ `interested` | string | Interested status |
| ↳ `raw_message_id` | string | Raw email message ID |
| `campaignEvent` | object | campaignEvent output from the tool |
| ↳ `id` | number | Campaign event ID |
| ↳ `event_type` | string | Campaign event type |
| ↳ `created_at_local` | string | Campaign event local creation timestamp |
| ↳ `local_timezone` | string | Campaign event local timezone |
| ↳ `created_at` | string | Campaign event creation timestamp |
| `lead` | object | lead output from the tool |
| ↳ `id` | number | Lead ID |
| ↳ `email` | string | Lead email address |
| ↳ `first_name` | string | Lead first name |
| ↳ `last_name` | string | Lead last name |
| ↳ `status` | string | Lead status |
| ↳ `title` | string | Lead title |
| ↳ `company` | string | Lead company |
| ↳ `custom_variables` | json | Lead custom variables |
| ↳ `emails_sent` | number | Lead emails sent count |
| ↳ `opens` | number | Lead open count |
| ↳ `unique_opens` | number | Lead unique open count |
| ↳ `replies` | number | Lead reply count |
| ↳ `unique_replies` | number | Lead unique reply count |
| ↳ `bounces` | number | Lead bounce count |
| `campaign` | object | campaign output from the tool |
| ↳ `id` | number | Campaign ID |
| ↳ `name` | string | Campaign name |
| `senderEmail` | object | senderEmail output from the tool |
| ↳ `id` | number | Sender email ID |
| ↳ `name` | string | Sender email name |
| ↳ `email` | string | Sender email address |
| ↳ `status` | string | Sender email status |
| ↳ `account_type` | string | Sender email connection type |
| ↳ `daily_limit` | number | Sender email daily limit |
| ↳ `emails_sent` | number | Sender email sent count |
| ↳ `replied` | number | Sender email replied count |
| ↳ `opened` | number | Sender email opened count |
| ↳ `unsubscribed` | number | Sender email unsubscribed count |
| ↳ `bounced` | number | Sender email bounced count |
| ↳ `unique_replies` | number | Sender email unique reply count |
| ↳ `unique_opens` | number | Sender email unique open count |
| ↳ `total_leads_contacted` | number | Sender email total leads contacted |
| ↳ `interested` | number | Sender email interested count |
| ↳ `created_at` | string | Sender email creation timestamp |
| ↳ `updated_at` | string | Sender email update timestamp |
***
### Email Bison Contact Interested [#email-bison-contact-interested]
Trigger when a reply is marked interested in Email Bison
#### Configuration [#configuration-1]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------ |
| `apiKey` | string | Yes | API Key |
| `apiBaseUrl` | string | Yes | Instance URL |
#### Output [#output-14]
| Parameter | Type | Description |
| ---------------------------- | ------- | --------------------------------------- |
| `eventType` | string | Email Bison webhook event type |
| `eventName` | string | Human-readable Email Bison event name |
| `instanceUrl` | string | Email Bison instance URL |
| `workspaceId` | number | Email Bison workspace ID |
| `workspaceName` | string | Email Bison workspace name |
| `event` | json | Raw Email Bison event metadata object |
| `data` | json | Raw Email Bison event data object |
| `reply` | object | reply output from the tool |
| ↳ `id` | number | Reply ID |
| ↳ `uuid` | string | Reply UUID |
| ↳ `email_subject` | string | Reply email subject |
| ↳ `interested` | boolean | Whether the reply is marked interested |
| ↳ `automated_reply` | boolean | Whether the reply is automated |
| ↳ `html_body` | string | Reply HTML body |
| ↳ `text_body` | string | Reply plain text body |
| ↳ `raw_body` | string | Raw MIME reply body |
| ↳ `headers` | string | Encoded raw email headers |
| ↳ `date_received` | string | Reply received timestamp |
| ↳ `from_name` | string | Reply sender name |
| ↳ `from_email_address` | string | Reply sender email address |
| ↳ `primary_to_email_address` | string | Primary recipient email address |
| ↳ `to` | json | Reply To recipients |
| ↳ `cc` | json | Reply CC recipients |
| ↳ `bcc` | json | Reply BCC recipients |
| ↳ `parent_id` | number | Parent reply ID |
| ↳ `reply_type` | string | Reply type |
| ↳ `folder` | string | Reply folder |
| ↳ `raw_message_id` | string | Raw email message ID |
| ↳ `created_at` | string | Reply creation timestamp |
| ↳ `updated_at` | string | Reply update timestamp |
| ↳ `attachments` | json | Reply attachments |
| `campaignEvent` | object | campaignEvent output from the tool |
| ↳ `id` | number | Campaign event ID |
| ↳ `event_type` | string | Campaign event type |
| ↳ `created_at_local` | string | Campaign event local creation timestamp |
| ↳ `local_timezone` | string | Campaign event local timezone |
| ↳ `created_at` | string | Campaign event creation timestamp |
| `lead` | object | lead output from the tool |
| ↳ `id` | number | Lead ID |
| ↳ `email` | string | Lead email address |
| ↳ `first_name` | string | Lead first name |
| ↳ `last_name` | string | Lead last name |
| ↳ `status` | string | Lead status |
| ↳ `title` | string | Lead title |
| ↳ `company` | string | Lead company |
| ↳ `custom_variables` | json | Lead custom variables |
| ↳ `emails_sent` | number | Lead emails sent count |
| ↳ `opens` | number | Lead open count |
| ↳ `unique_opens` | number | Lead unique open count |
| ↳ `replies` | number | Lead reply count |
| ↳ `unique_replies` | number | Lead unique reply count |
| ↳ `bounces` | number | Lead bounce count |
| `campaign` | object | campaign output from the tool |
| ↳ `id` | number | Campaign ID |
| ↳ `name` | string | Campaign name |
| `scheduledEmail` | object | scheduledEmail output from the tool |
| ↳ `id` | number | Scheduled email ID |
| ↳ `sequence_step_id` | number | Sequence step ID |
| ↳ `sequence_step_order` | number | Sequence step order |
| ↳ `sequence_step_variant` | number | Sequence step variant |
| ↳ `status` | string | Scheduled email status |
| ↳ `scheduled_date_est` | string | Scheduled date in EST |
| ↳ `scheduled_date_local` | string | Scheduled date in local timezone |
| ↳ `local_timezone` | string | Scheduled email local timezone |
| ↳ `sent_at` | string | Email sent timestamp |
| ↳ `opens` | number | Open count |
| ↳ `replies` | number | Reply count |
| ↳ `unique_opens` | number | Unique open count |
| ↳ `unique_replies` | number | Unique reply count |
| ↳ `interested` | string | Interested status |
| ↳ `raw_message_id` | string | Raw email message ID |
| `senderEmail` | object | senderEmail output from the tool |
| ↳ `id` | number | Sender email ID |
| ↳ `name` | string | Sender email name |
| ↳ `email` | string | Sender email address |
| ↳ `status` | string | Sender email status |
| ↳ `account_type` | string | Sender email connection type |
| ↳ `daily_limit` | number | Sender email daily limit |
| ↳ `emails_sent` | number | Sender email sent count |
| ↳ `replied` | number | Sender email replied count |
| ↳ `opened` | number | Sender email opened count |
| ↳ `unsubscribed` | number | Sender email unsubscribed count |
| ↳ `bounced` | number | Sender email bounced count |
| ↳ `unique_replies` | number | Sender email unique reply count |
| ↳ `unique_opens` | number | Sender email unique open count |
| ↳ `total_leads_contacted` | number | Sender email total leads contacted |
| ↳ `interested` | number | Sender email interested count |
| ↳ `created_at` | string | Sender email creation timestamp |
| ↳ `updated_at` | string | Sender email update timestamp |
***
### Email Bison Contact Replied [#email-bison-contact-replied]
Trigger when a campaign lead replies in Email Bison
#### Configuration [#configuration-2]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------ |
| `apiKey` | string | Yes | API Key |
| `apiBaseUrl` | string | Yes | Instance URL |
#### Output [#output-15]
| Parameter | Type | Description |
| ---------------------------- | ------- | --------------------------------------- |
| `eventType` | string | Email Bison webhook event type |
| `eventName` | string | Human-readable Email Bison event name |
| `instanceUrl` | string | Email Bison instance URL |
| `workspaceId` | number | Email Bison workspace ID |
| `workspaceName` | string | Email Bison workspace name |
| `event` | json | Raw Email Bison event metadata object |
| `data` | json | Raw Email Bison event data object |
| `reply` | object | reply output from the tool |
| ↳ `id` | number | Reply ID |
| ↳ `uuid` | string | Reply UUID |
| ↳ `email_subject` | string | Reply email subject |
| ↳ `interested` | boolean | Whether the reply is marked interested |
| ↳ `automated_reply` | boolean | Whether the reply is automated |
| ↳ `html_body` | string | Reply HTML body |
| ↳ `text_body` | string | Reply plain text body |
| ↳ `raw_body` | string | Raw MIME reply body |
| ↳ `headers` | string | Encoded raw email headers |
| ↳ `date_received` | string | Reply received timestamp |
| ↳ `from_name` | string | Reply sender name |
| ↳ `from_email_address` | string | Reply sender email address |
| ↳ `primary_to_email_address` | string | Primary recipient email address |
| ↳ `to` | json | Reply To recipients |
| ↳ `cc` | json | Reply CC recipients |
| ↳ `bcc` | json | Reply BCC recipients |
| ↳ `parent_id` | number | Parent reply ID |
| ↳ `reply_type` | string | Reply type |
| ↳ `folder` | string | Reply folder |
| ↳ `raw_message_id` | string | Raw email message ID |
| ↳ `created_at` | string | Reply creation timestamp |
| ↳ `updated_at` | string | Reply update timestamp |
| ↳ `attachments` | json | Reply attachments |
| `campaignEvent` | object | campaignEvent output from the tool |
| ↳ `id` | number | Campaign event ID |
| ↳ `event_type` | string | Campaign event type |
| ↳ `created_at_local` | string | Campaign event local creation timestamp |
| ↳ `local_timezone` | string | Campaign event local timezone |
| ↳ `created_at` | string | Campaign event creation timestamp |
| `lead` | object | lead output from the tool |
| ↳ `id` | number | Lead ID |
| ↳ `email` | string | Lead email address |
| ↳ `first_name` | string | Lead first name |
| ↳ `last_name` | string | Lead last name |
| ↳ `status` | string | Lead status |
| ↳ `title` | string | Lead title |
| ↳ `company` | string | Lead company |
| ↳ `custom_variables` | json | Lead custom variables |
| ↳ `emails_sent` | number | Lead emails sent count |
| ↳ `opens` | number | Lead open count |
| ↳ `unique_opens` | number | Lead unique open count |
| ↳ `replies` | number | Lead reply count |
| ↳ `unique_replies` | number | Lead unique reply count |
| ↳ `bounces` | number | Lead bounce count |
| `campaign` | object | campaign output from the tool |
| ↳ `id` | number | Campaign ID |
| ↳ `name` | string | Campaign name |
| `scheduledEmail` | object | scheduledEmail output from the tool |
| ↳ `id` | number | Scheduled email ID |
| ↳ `sequence_step_id` | number | Sequence step ID |
| ↳ `sequence_step_order` | number | Sequence step order |
| ↳ `sequence_step_variant` | number | Sequence step variant |
| ↳ `status` | string | Scheduled email status |
| ↳ `scheduled_date_est` | string | Scheduled date in EST |
| ↳ `scheduled_date_local` | string | Scheduled date in local timezone |
| ↳ `local_timezone` | string | Scheduled email local timezone |
| ↳ `sent_at` | string | Email sent timestamp |
| ↳ `opens` | number | Open count |
| ↳ `replies` | number | Reply count |
| ↳ `unique_opens` | number | Unique open count |
| ↳ `unique_replies` | number | Unique reply count |
| ↳ `interested` | string | Interested status |
| ↳ `raw_message_id` | string | Raw email message ID |
| `senderEmail` | object | senderEmail output from the tool |
| ↳ `id` | number | Sender email ID |
| ↳ `name` | string | Sender email name |
| ↳ `email` | string | Sender email address |
| ↳ `status` | string | Sender email status |
| ↳ `account_type` | string | Sender email connection type |
| ↳ `daily_limit` | number | Sender email daily limit |
| ↳ `emails_sent` | number | Sender email sent count |
| ↳ `replied` | number | Sender email replied count |
| ↳ `opened` | number | Sender email opened count |
| ↳ `unsubscribed` | number | Sender email unsubscribed count |
| ↳ `bounced` | number | Sender email bounced count |
| ↳ `unique_replies` | number | Sender email unique reply count |
| ↳ `unique_opens` | number | Sender email unique open count |
| ↳ `total_leads_contacted` | number | Sender email total leads contacted |
| ↳ `interested` | number | Sender email interested count |
| ↳ `created_at` | string | Sender email creation timestamp |
| ↳ `updated_at` | string | Sender email update timestamp |
***
### Email Bison Contact Unsubscribed [#email-bison-contact-unsubscribed]
Trigger when a contact unsubscribes in Email Bison
#### Configuration [#configuration-3]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------ |
| `apiKey` | string | Yes | API Key |
| `apiBaseUrl` | string | Yes | Instance URL |
#### Output [#output-16]
| Parameter | Type | Description |
| ------------------------- | ------ | --------------------------------------- |
| `eventType` | string | Email Bison webhook event type |
| `eventName` | string | Human-readable Email Bison event name |
| `instanceUrl` | string | Email Bison instance URL |
| `workspaceId` | number | Email Bison workspace ID |
| `workspaceName` | string | Email Bison workspace name |
| `event` | json | Raw Email Bison event metadata object |
| `data` | json | Raw Email Bison event data object |
| `scheduledEmail` | object | scheduledEmail output from the tool |
| ↳ `id` | number | Scheduled email ID |
| ↳ `lead_id` | number | Lead ID |
| ↳ `sequence_step_id` | number | Sequence step ID |
| ↳ `sequence_step_order` | number | Sequence step order |
| ↳ `sequence_step_variant` | number | Sequence step variant |
| ↳ `email_subject` | string | Email subject |
| ↳ `email_body` | string | Email body HTML |
| ↳ `status` | string | Scheduled email status |
| ↳ `scheduled_date_est` | string | Scheduled date in EST |
| ↳ `scheduled_date_local` | string | Scheduled date in local timezone |
| ↳ `local_timezone` | string | Scheduled email local timezone |
| ↳ `sent_at` | string | Email sent timestamp |
| ↳ `opens` | number | Open count |
| ↳ `replies` | number | Reply count |
| ↳ `unique_opens` | number | Unique open count |
| ↳ `unique_replies` | number | Unique reply count |
| ↳ `interested` | string | Interested status |
| ↳ `raw_message_id` | string | Raw email message ID |
| `campaignEvent` | object | campaignEvent output from the tool |
| ↳ `id` | number | Campaign event ID |
| ↳ `event_type` | string | Campaign event type |
| ↳ `created_at_local` | string | Campaign event local creation timestamp |
| ↳ `local_timezone` | string | Campaign event local timezone |
| ↳ `created_at` | string | Campaign event creation timestamp |
| `lead` | object | lead output from the tool |
| ↳ `id` | number | Lead ID |
| ↳ `email` | string | Lead email address |
| ↳ `first_name` | string | Lead first name |
| ↳ `last_name` | string | Lead last name |
| ↳ `status` | string | Lead status |
| ↳ `title` | string | Lead title |
| ↳ `company` | string | Lead company |
| ↳ `custom_variables` | json | Lead custom variables |
| ↳ `emails_sent` | number | Lead emails sent count |
| ↳ `opens` | number | Lead open count |
| ↳ `unique_opens` | number | Lead unique open count |
| ↳ `replies` | number | Lead reply count |
| ↳ `unique_replies` | number | Lead unique reply count |
| ↳ `bounces` | number | Lead bounce count |
| `campaign` | object | campaign output from the tool |
| ↳ `id` | number | Campaign ID |
| ↳ `name` | string | Campaign name |
| `senderEmail` | object | senderEmail output from the tool |
| ↳ `id` | number | Sender email ID |
| ↳ `name` | string | Sender email name |
| ↳ `email` | string | Sender email address |
| ↳ `status` | string | Sender email status |
| ↳ `account_type` | string | Sender email connection type |
| ↳ `daily_limit` | number | Sender email daily limit |
| ↳ `emails_sent` | number | Sender email sent count |
| ↳ `replied` | number | Sender email replied count |
| ↳ `opened` | number | Sender email opened count |
| ↳ `unsubscribed` | number | Sender email unsubscribed count |
| ↳ `bounced` | number | Sender email bounced count |
| ↳ `unique_replies` | number | Sender email unique reply count |
| ↳ `unique_opens` | number | Sender email unique open count |
| ↳ `total_leads_contacted` | number | Sender email total leads contacted |
| ↳ `interested` | number | Sender email interested count |
| ↳ `created_at` | string | Sender email creation timestamp |
| ↳ `updated_at` | string | Sender email update timestamp |
***
### Email Bison Email Account Added [#email-bison-email-account-added]
Trigger when a sender email account is added to Email Bison
#### Configuration [#configuration-4]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------ |
| `apiKey` | string | Yes | API Key |
| `apiBaseUrl` | string | Yes | Instance URL |
#### Output [#output-17]
| Parameter | Type | Description |
| ------------------------- | ------ | ------------------------------------- |
| `eventType` | string | Email Bison webhook event type |
| `eventName` | string | Human-readable Email Bison event name |
| `instanceUrl` | string | Email Bison instance URL |
| `workspaceId` | number | Email Bison workspace ID |
| `workspaceName` | string | Email Bison workspace name |
| `event` | json | Raw Email Bison event metadata object |
| `data` | json | Raw Email Bison event data object |
| `senderEmail` | object | senderEmail output from the tool |
| ↳ `id` | number | Sender email ID |
| ↳ `name` | string | Sender email name |
| ↳ `email` | string | Sender email address |
| ↳ `status` | string | Sender email status |
| ↳ `account_type` | string | Sender email connection type |
| ↳ `daily_limit` | number | Sender email daily limit |
| ↳ `emails_sent` | number | Sender email sent count |
| ↳ `replied` | number | Sender email replied count |
| ↳ `opened` | number | Sender email opened count |
| ↳ `unsubscribed` | number | Sender email unsubscribed count |
| ↳ `bounced` | number | Sender email bounced count |
| ↳ `unique_replies` | number | Sender email unique reply count |
| ↳ `unique_opens` | number | Sender email unique open count |
| ↳ `total_leads_contacted` | number | Sender email total leads contacted |
| ↳ `interested` | number | Sender email interested count |
| ↳ `created_at` | string | Sender email creation timestamp |
| ↳ `updated_at` | string | Sender email update timestamp |
***
### Email Bison Email Account Disconnected [#email-bison-email-account-disconnected]
Trigger when a sender email account disconnects in Email Bison
#### Configuration [#configuration-5]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------ |
| `apiKey` | string | Yes | API Key |
| `apiBaseUrl` | string | Yes | Instance URL |
#### Output [#output-18]
| Parameter | Type | Description |
| ------------------------- | ------ | ------------------------------------- |
| `eventType` | string | Email Bison webhook event type |
| `eventName` | string | Human-readable Email Bison event name |
| `instanceUrl` | string | Email Bison instance URL |
| `workspaceId` | number | Email Bison workspace ID |
| `workspaceName` | string | Email Bison workspace name |
| `event` | json | Raw Email Bison event metadata object |
| `data` | json | Raw Email Bison event data object |
| `senderEmail` | object | senderEmail output from the tool |
| ↳ `id` | number | Sender email ID |
| ↳ `name` | string | Sender email name |
| ↳ `email` | string | Sender email address |
| ↳ `status` | string | Sender email status |
| ↳ `account_type` | string | Sender email connection type |
| ↳ `daily_limit` | number | Sender email daily limit |
| ↳ `emails_sent` | number | Sender email sent count |
| ↳ `replied` | number | Sender email replied count |
| ↳ `opened` | number | Sender email opened count |
| ↳ `unsubscribed` | number | Sender email unsubscribed count |
| ↳ `bounced` | number | Sender email bounced count |
| ↳ `unique_replies` | number | Sender email unique reply count |
| ↳ `unique_opens` | number | Sender email unique open count |
| ↳ `total_leads_contacted` | number | Sender email total leads contacted |
| ↳ `interested` | number | Sender email interested count |
| ↳ `created_at` | string | Sender email creation timestamp |
| ↳ `updated_at` | string | Sender email update timestamp |
***
### Email Bison Email Account Reconnected [#email-bison-email-account-reconnected]
Trigger when a sender email account reconnects in Email Bison
#### Configuration [#configuration-6]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------ |
| `apiKey` | string | Yes | API Key |
| `apiBaseUrl` | string | Yes | Instance URL |
#### Output [#output-19]
| Parameter | Type | Description |
| ------------------------- | ------ | ------------------------------------- |
| `eventType` | string | Email Bison webhook event type |
| `eventName` | string | Human-readable Email Bison event name |
| `instanceUrl` | string | Email Bison instance URL |
| `workspaceId` | number | Email Bison workspace ID |
| `workspaceName` | string | Email Bison workspace name |
| `event` | json | Raw Email Bison event metadata object |
| `data` | json | Raw Email Bison event data object |
| `senderEmail` | object | senderEmail output from the tool |
| ↳ `id` | number | Sender email ID |
| ↳ `name` | string | Sender email name |
| ↳ `email` | string | Sender email address |
| ↳ `status` | string | Sender email status |
| ↳ `account_type` | string | Sender email connection type |
| ↳ `daily_limit` | number | Sender email daily limit |
| ↳ `emails_sent` | number | Sender email sent count |
| ↳ `replied` | number | Sender email replied count |
| ↳ `opened` | number | Sender email opened count |
| ↳ `unsubscribed` | number | Sender email unsubscribed count |
| ↳ `bounced` | number | Sender email bounced count |
| ↳ `unique_replies` | number | Sender email unique reply count |
| ↳ `unique_opens` | number | Sender email unique open count |
| ↳ `total_leads_contacted` | number | Sender email total leads contacted |
| ↳ `interested` | number | Sender email interested count |
| ↳ `created_at` | string | Sender email creation timestamp |
| ↳ `updated_at` | string | Sender email update timestamp |
***
### Email Bison Email Account Removed [#email-bison-email-account-removed]
Trigger when a sender email account is removed from Email Bison
#### Configuration [#configuration-7]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------ |
| `apiKey` | string | Yes | API Key |
| `apiBaseUrl` | string | Yes | Instance URL |
#### Output [#output-20]
| Parameter | Type | Description |
| ------------------------- | ------ | ------------------------------------- |
| `eventType` | string | Email Bison webhook event type |
| `eventName` | string | Human-readable Email Bison event name |
| `instanceUrl` | string | Email Bison instance URL |
| `workspaceId` | number | Email Bison workspace ID |
| `workspaceName` | string | Email Bison workspace name |
| `event` | json | Raw Email Bison event metadata object |
| `data` | json | Raw Email Bison event data object |
| `senderEmail` | object | senderEmail output from the tool |
| ↳ `id` | number | Sender email ID |
| ↳ `name` | string | Sender email name |
| ↳ `email` | string | Sender email address |
| ↳ `status` | string | Sender email status |
| ↳ `account_type` | string | Sender email connection type |
| ↳ `daily_limit` | number | Sender email daily limit |
| ↳ `emails_sent` | number | Sender email sent count |
| ↳ `replied` | number | Sender email replied count |
| ↳ `opened` | number | Sender email opened count |
| ↳ `unsubscribed` | number | Sender email unsubscribed count |
| ↳ `bounced` | number | Sender email bounced count |
| ↳ `unique_replies` | number | Sender email unique reply count |
| ↳ `unique_opens` | number | Sender email unique open count |
| ↳ `total_leads_contacted` | number | Sender email total leads contacted |
| ↳ `interested` | number | Sender email interested count |
| ↳ `created_at` | string | Sender email creation timestamp |
| ↳ `updated_at` | string | Sender email update timestamp |
***
### Email Bison Email Bounced [#email-bison-email-bounced]
Trigger when an Email Bison campaign email bounces
#### Configuration [#configuration-8]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------ |
| `apiKey` | string | Yes | API Key |
| `apiBaseUrl` | string | Yes | Instance URL |
#### Output [#output-21]
| Parameter | Type | Description |
| ---------------------------- | ------- | --------------------------------------- |
| `eventType` | string | Email Bison webhook event type |
| `eventName` | string | Human-readable Email Bison event name |
| `instanceUrl` | string | Email Bison instance URL |
| `workspaceId` | number | Email Bison workspace ID |
| `workspaceName` | string | Email Bison workspace name |
| `event` | json | Raw Email Bison event metadata object |
| `data` | json | Raw Email Bison event data object |
| `reply` | object | reply output from the tool |
| ↳ `id` | number | Reply ID |
| ↳ `uuid` | string | Reply UUID |
| ↳ `email_subject` | string | Reply email subject |
| ↳ `interested` | boolean | Whether the reply is marked interested |
| ↳ `automated_reply` | boolean | Whether the reply is automated |
| ↳ `html_body` | string | Reply HTML body |
| ↳ `text_body` | string | Reply plain text body |
| ↳ `raw_body` | string | Raw MIME reply body |
| ↳ `headers` | string | Encoded raw email headers |
| ↳ `date_received` | string | Reply received timestamp |
| ↳ `from_name` | string | Reply sender name |
| ↳ `from_email_address` | string | Reply sender email address |
| ↳ `primary_to_email_address` | string | Primary recipient email address |
| ↳ `to` | json | Reply To recipients |
| ↳ `cc` | json | Reply CC recipients |
| ↳ `bcc` | json | Reply BCC recipients |
| ↳ `parent_id` | number | Parent reply ID |
| ↳ `reply_type` | string | Reply type |
| ↳ `folder` | string | Reply folder |
| ↳ `raw_message_id` | string | Raw email message ID |
| ↳ `created_at` | string | Reply creation timestamp |
| ↳ `updated_at` | string | Reply update timestamp |
| ↳ `attachments` | json | Reply attachments |
| `campaignEvent` | object | campaignEvent output from the tool |
| ↳ `id` | number | Campaign event ID |
| ↳ `event_type` | string | Campaign event type |
| ↳ `created_at_local` | string | Campaign event local creation timestamp |
| ↳ `local_timezone` | string | Campaign event local timezone |
| ↳ `created_at` | string | Campaign event creation timestamp |
| `lead` | object | lead output from the tool |
| ↳ `id` | number | Lead ID |
| ↳ `email` | string | Lead email address |
| ↳ `first_name` | string | Lead first name |
| ↳ `last_name` | string | Lead last name |
| ↳ `status` | string | Lead status |
| ↳ `title` | string | Lead title |
| ↳ `company` | string | Lead company |
| ↳ `custom_variables` | json | Lead custom variables |
| ↳ `emails_sent` | number | Lead emails sent count |
| ↳ `opens` | number | Lead open count |
| ↳ `unique_opens` | number | Lead unique open count |
| ↳ `replies` | number | Lead reply count |
| ↳ `unique_replies` | number | Lead unique reply count |
| ↳ `bounces` | number | Lead bounce count |
| `campaign` | object | campaign output from the tool |
| ↳ `id` | number | Campaign ID |
| ↳ `name` | string | Campaign name |
| `scheduledEmail` | object | scheduledEmail output from the tool |
| ↳ `id` | number | Scheduled email ID |
| ↳ `sequence_step_id` | number | Sequence step ID |
| ↳ `sequence_step_order` | number | Sequence step order |
| ↳ `sequence_step_variant` | number | Sequence step variant |
| ↳ `status` | string | Scheduled email status |
| ↳ `scheduled_date_est` | string | Scheduled date in EST |
| ↳ `scheduled_date_local` | string | Scheduled date in local timezone |
| ↳ `local_timezone` | string | Scheduled email local timezone |
| ↳ `sent_at` | string | Email sent timestamp |
| ↳ `opens` | number | Open count |
| ↳ `replies` | number | Reply count |
| ↳ `unique_opens` | number | Unique open count |
| ↳ `unique_replies` | number | Unique reply count |
| ↳ `interested` | string | Interested status |
| ↳ `raw_message_id` | string | Raw email message ID |
| `senderEmail` | object | senderEmail output from the tool |
| ↳ `id` | number | Sender email ID |
| ↳ `name` | string | Sender email name |
| ↳ `email` | string | Sender email address |
| ↳ `status` | string | Sender email status |
| ↳ `account_type` | string | Sender email connection type |
| ↳ `daily_limit` | number | Sender email daily limit |
| ↳ `emails_sent` | number | Sender email sent count |
| ↳ `replied` | number | Sender email replied count |
| ↳ `opened` | number | Sender email opened count |
| ↳ `unsubscribed` | number | Sender email unsubscribed count |
| ↳ `bounced` | number | Sender email bounced count |
| ↳ `unique_replies` | number | Sender email unique reply count |
| ↳ `unique_opens` | number | Sender email unique open count |
| ↳ `total_leads_contacted` | number | Sender email total leads contacted |
| ↳ `interested` | number | Sender email interested count |
| ↳ `created_at` | string | Sender email creation timestamp |
| ↳ `updated_at` | string | Sender email update timestamp |
***
### Email Bison Email Opened [#email-bison-email-opened]
Trigger when an Email Bison campaign email is opened
#### Configuration [#configuration-9]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------ |
| `apiKey` | string | Yes | API Key |
| `apiBaseUrl` | string | Yes | Instance URL |
#### Output [#output-22]
| Parameter | Type | Description |
| ------------------------- | ------ | --------------------------------------- |
| `eventType` | string | Email Bison webhook event type |
| `eventName` | string | Human-readable Email Bison event name |
| `instanceUrl` | string | Email Bison instance URL |
| `workspaceId` | number | Email Bison workspace ID |
| `workspaceName` | string | Email Bison workspace name |
| `event` | json | Raw Email Bison event metadata object |
| `data` | json | Raw Email Bison event data object |
| `scheduledEmail` | object | scheduledEmail output from the tool |
| ↳ `id` | number | Scheduled email ID |
| ↳ `lead_id` | number | Lead ID |
| ↳ `sequence_step_id` | number | Sequence step ID |
| ↳ `sequence_step_order` | number | Sequence step order |
| ↳ `sequence_step_variant` | number | Sequence step variant |
| ↳ `email_subject` | string | Email subject |
| ↳ `email_body` | string | Email body HTML |
| ↳ `status` | string | Scheduled email status |
| ↳ `scheduled_date_est` | string | Scheduled date in EST |
| ↳ `scheduled_date_local` | string | Scheduled date in local timezone |
| ↳ `local_timezone` | string | Scheduled email local timezone |
| ↳ `sent_at` | string | Email sent timestamp |
| ↳ `opens` | number | Open count |
| ↳ `replies` | number | Reply count |
| ↳ `unique_opens` | number | Unique open count |
| ↳ `unique_replies` | number | Unique reply count |
| ↳ `interested` | string | Interested status |
| ↳ `raw_message_id` | string | Raw email message ID |
| `campaignEvent` | object | campaignEvent output from the tool |
| ↳ `id` | number | Campaign event ID |
| ↳ `event_type` | string | Campaign event type |
| ↳ `created_at_local` | string | Campaign event local creation timestamp |
| ↳ `local_timezone` | string | Campaign event local timezone |
| ↳ `created_at` | string | Campaign event creation timestamp |
| `lead` | object | lead output from the tool |
| ↳ `id` | number | Lead ID |
| ↳ `email` | string | Lead email address |
| ↳ `first_name` | string | Lead first name |
| ↳ `last_name` | string | Lead last name |
| ↳ `status` | string | Lead status |
| ↳ `title` | string | Lead title |
| ↳ `company` | string | Lead company |
| ↳ `custom_variables` | json | Lead custom variables |
| ↳ `emails_sent` | number | Lead emails sent count |
| ↳ `opens` | number | Lead open count |
| ↳ `unique_opens` | number | Lead unique open count |
| ↳ `replies` | number | Lead reply count |
| ↳ `unique_replies` | number | Lead unique reply count |
| ↳ `bounces` | number | Lead bounce count |
| `campaign` | object | campaign output from the tool |
| ↳ `id` | number | Campaign ID |
| ↳ `name` | string | Campaign name |
| `senderEmail` | object | senderEmail output from the tool |
| ↳ `id` | number | Sender email ID |
| ↳ `name` | string | Sender email name |
| ↳ `email` | string | Sender email address |
| ↳ `status` | string | Sender email status |
| ↳ `account_type` | string | Sender email connection type |
| ↳ `daily_limit` | number | Sender email daily limit |
| ↳ `emails_sent` | number | Sender email sent count |
| ↳ `replied` | number | Sender email replied count |
| ↳ `opened` | number | Sender email opened count |
| ↳ `unsubscribed` | number | Sender email unsubscribed count |
| ↳ `bounced` | number | Sender email bounced count |
| ↳ `unique_replies` | number | Sender email unique reply count |
| ↳ `unique_opens` | number | Sender email unique open count |
| ↳ `total_leads_contacted` | number | Sender email total leads contacted |
| ↳ `interested` | number | Sender email interested count |
| ↳ `created_at` | string | Sender email creation timestamp |
| ↳ `updated_at` | string | Sender email update timestamp |
***
### Email Bison Email Sent [#email-bison-email-sent]
Trigger when a campaign email is sent in Email Bison
#### Configuration [#configuration-10]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------ |
| `apiKey` | string | Yes | API Key |
| `apiBaseUrl` | string | Yes | Instance URL |
#### Output [#output-23]
| Parameter | Type | Description |
| ------------------------- | ------ | --------------------------------------- |
| `eventType` | string | Email Bison webhook event type |
| `eventName` | string | Human-readable Email Bison event name |
| `instanceUrl` | string | Email Bison instance URL |
| `workspaceId` | number | Email Bison workspace ID |
| `workspaceName` | string | Email Bison workspace name |
| `event` | json | Raw Email Bison event metadata object |
| `data` | json | Raw Email Bison event data object |
| `scheduledEmail` | object | scheduledEmail output from the tool |
| ↳ `id` | number | Scheduled email ID |
| ↳ `lead_id` | number | Lead ID |
| ↳ `sequence_step_id` | number | Sequence step ID |
| ↳ `sequence_step_order` | number | Sequence step order |
| ↳ `sequence_step_variant` | number | Sequence step variant |
| ↳ `email_subject` | string | Email subject |
| ↳ `email_body` | string | Email body HTML |
| ↳ `status` | string | Scheduled email status |
| ↳ `scheduled_date_est` | string | Scheduled date in EST |
| ↳ `scheduled_date_local` | string | Scheduled date in local timezone |
| ↳ `local_timezone` | string | Scheduled email local timezone |
| ↳ `sent_at` | string | Email sent timestamp |
| ↳ `opens` | number | Open count |
| ↳ `replies` | number | Reply count |
| ↳ `unique_opens` | number | Unique open count |
| ↳ `unique_replies` | number | Unique reply count |
| ↳ `interested` | string | Interested status |
| ↳ `raw_message_id` | string | Raw email message ID |
| `campaignEvent` | object | campaignEvent output from the tool |
| ↳ `id` | number | Campaign event ID |
| ↳ `event_type` | string | Campaign event type |
| ↳ `created_at_local` | string | Campaign event local creation timestamp |
| ↳ `local_timezone` | string | Campaign event local timezone |
| ↳ `created_at` | string | Campaign event creation timestamp |
| `lead` | object | lead output from the tool |
| ↳ `id` | number | Lead ID |
| ↳ `email` | string | Lead email address |
| ↳ `first_name` | string | Lead first name |
| ↳ `last_name` | string | Lead last name |
| ↳ `status` | string | Lead status |
| ↳ `title` | string | Lead title |
| ↳ `company` | string | Lead company |
| ↳ `custom_variables` | json | Lead custom variables |
| ↳ `emails_sent` | number | Lead emails sent count |
| ↳ `opens` | number | Lead open count |
| ↳ `unique_opens` | number | Lead unique open count |
| ↳ `replies` | number | Lead reply count |
| ↳ `unique_replies` | number | Lead unique reply count |
| ↳ `bounces` | number | Lead bounce count |
| `campaign` | object | campaign output from the tool |
| ↳ `id` | number | Campaign ID |
| ↳ `name` | string | Campaign name |
| `senderEmail` | object | senderEmail output from the tool |
| ↳ `id` | number | Sender email ID |
| ↳ `name` | string | Sender email name |
| ↳ `email` | string | Sender email address |
| ↳ `status` | string | Sender email status |
| ↳ `account_type` | string | Sender email connection type |
| ↳ `daily_limit` | number | Sender email daily limit |
| ↳ `emails_sent` | number | Sender email sent count |
| ↳ `replied` | number | Sender email replied count |
| ↳ `opened` | number | Sender email opened count |
| ↳ `unsubscribed` | number | Sender email unsubscribed count |
| ↳ `bounced` | number | Sender email bounced count |
| ↳ `unique_replies` | number | Sender email unique reply count |
| ↳ `unique_opens` | number | Sender email unique open count |
| ↳ `total_leads_contacted` | number | Sender email total leads contacted |
| ↳ `interested` | number | Sender email interested count |
| ↳ `created_at` | string | Sender email creation timestamp |
| ↳ `updated_at` | string | Sender email update timestamp |
***
### Email Bison Manual Email Sent [#email-bison-manual-email-sent]
Trigger when a manual email is sent in Email Bison
#### Configuration [#configuration-11]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------ |
| `apiKey` | string | Yes | API Key |
| `apiBaseUrl` | string | Yes | Instance URL |
#### Output [#output-24]
| Parameter | Type | Description |
| ---------------------------- | ------- | -------------------------------------- |
| `eventType` | string | Email Bison webhook event type |
| `eventName` | string | Human-readable Email Bison event name |
| `instanceUrl` | string | Email Bison instance URL |
| `workspaceId` | number | Email Bison workspace ID |
| `workspaceName` | string | Email Bison workspace name |
| `event` | json | Raw Email Bison event metadata object |
| `data` | json | Raw Email Bison event data object |
| `reply` | object | reply output from the tool |
| ↳ `id` | number | Reply ID |
| ↳ `email_subject` | string | Reply email subject |
| ↳ `interested` | boolean | Whether the reply is marked interested |
| ↳ `automated_reply` | boolean | Whether the reply is automated |
| ↳ `html_body` | string | Reply HTML body |
| ↳ `text_body` | string | Reply plain text body |
| ↳ `raw_body` | string | Raw MIME reply body |
| ↳ `headers` | string | Encoded raw email headers |
| ↳ `date_received` | string | Reply received timestamp |
| ↳ `reply_type` | string | Reply type |
| ↳ `from_name` | string | Reply sender name |
| ↳ `from_email_address` | string | Reply sender email address |
| ↳ `primary_to_email_address` | string | Primary recipient email address |
| ↳ `to` | json | Reply To recipients |
| ↳ `cc` | json | Reply CC recipients |
| ↳ `bcc` | json | Reply BCC recipients |
| ↳ `parent_id` | json | Parent reply ID |
| ↳ `folder` | string | Reply folder |
| ↳ `raw_message_id` | string | Raw email message ID |
| ↳ `created_at` | string | Reply creation timestamp |
| ↳ `updated_at` | string | Reply update timestamp |
| ↳ `attachments` | json | Reply attachments |
| `lead` | object | lead output from the tool |
| ↳ `id` | number | Lead ID |
| ↳ `email` | string | Lead email address |
| ↳ `first_name` | string | Lead first name |
| ↳ `last_name` | string | Lead last name |
| ↳ `status` | string | Lead status |
| ↳ `title` | string | Lead title |
| ↳ `company` | string | Lead company |
| ↳ `custom_variables` | json | Lead custom variables |
| ↳ `emails_sent` | number | Lead emails sent count |
| ↳ `opens` | number | Lead open count |
| ↳ `unique_opens` | number | Lead unique open count |
| ↳ `replies` | number | Lead reply count |
| ↳ `unique_replies` | number | Lead unique reply count |
| ↳ `bounces` | number | Lead bounce count |
| `campaign` | object | campaign output from the tool |
| ↳ `id` | number | Campaign ID |
| ↳ `name` | string | Campaign name |
| `scheduledEmail` | object | scheduledEmail output from the tool |
| ↳ `id` | number | Scheduled email ID |
| ↳ `sequence_step_id` | number | Sequence step ID |
| ↳ `sequence_step_order` | number | Sequence step order |
| ↳ `sequence_step_variant` | number | Sequence step variant |
| ↳ `status` | string | Scheduled email status |
| ↳ `scheduled_date_est` | string | Scheduled date in EST |
| ↳ `scheduled_date_local` | string | Scheduled date in local timezone |
| ↳ `local_timezone` | string | Scheduled email local timezone |
| ↳ `sent_at` | string | Email sent timestamp |
| ↳ `opens` | number | Open count |
| ↳ `replies` | number | Reply count |
| ↳ `unique_opens` | number | Unique open count |
| ↳ `unique_replies` | number | Unique reply count |
| ↳ `interested` | json | Interested status |
| ↳ `raw_message_id` | string | Raw email message ID |
| `senderEmail` | object | senderEmail output from the tool |
| ↳ `id` | number | Sender email ID |
| ↳ `name` | string | Sender email name |
| ↳ `email` | string | Sender email address |
| ↳ `status` | string | Sender email status |
| ↳ `account_type` | string | Sender email connection type |
| ↳ `daily_limit` | number | Sender email daily limit |
| ↳ `emails_sent` | number | Sender email sent count |
| ↳ `replied` | number | Sender email replied count |
| ↳ `opened` | number | Sender email opened count |
| ↳ `unsubscribed` | number | Sender email unsubscribed count |
| ↳ `bounced` | number | Sender email bounced count |
| ↳ `unique_replies` | number | Sender email unique reply count |
| ↳ `unique_opens` | number | Sender email unique open count |
| ↳ `total_leads_contacted` | number | Sender email total leads contacted |
| ↳ `interested` | number | Sender email interested count |
| ↳ `created_at` | string | Sender email creation timestamp |
| ↳ `updated_at` | string | Sender email update timestamp |
***
### Email Bison Tag Attached [#email-bison-tag-attached]
Trigger when a custom tag is attached to a taggable in Email Bison
#### Configuration [#configuration-12]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------ |
| `apiKey` | string | Yes | API Key |
| `apiBaseUrl` | string | Yes | Instance URL |
#### Output [#output-25]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------------- |
| `eventType` | string | Email Bison webhook event type |
| `eventName` | string | Human-readable Email Bison event name |
| `instanceUrl` | string | Email Bison instance URL |
| `workspaceId` | number | Email Bison workspace ID |
| `workspaceName` | string | Email Bison workspace name |
| `event` | json | Raw Email Bison event metadata object |
| `data` | json | Raw Email Bison event data object |
| `tagId` | number | Email Bison tag ID |
| `tagName` | string | Email Bison tag name |
| `taggableId` | number | ID of the tagged resource |
| `taggableType` | string | Type of the tagged resource |
***
### Email Bison Tag Removed [#email-bison-tag-removed]
Trigger when a custom tag is removed from a taggable in Email Bison
#### Configuration [#configuration-13]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------ |
| `apiKey` | string | Yes | API Key |
| `apiBaseUrl` | string | Yes | Instance URL |
#### Output [#output-26]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------------- |
| `eventType` | string | Email Bison webhook event type |
| `eventName` | string | Human-readable Email Bison event name |
| `instanceUrl` | string | Email Bison instance URL |
| `workspaceId` | number | Email Bison workspace ID |
| `workspaceName` | string | Email Bison workspace name |
| `event` | json | Raw Email Bison event metadata object |
| `data` | json | Raw Email Bison event data object |
| `tagId` | number | Email Bison tag ID |
| `tagName` | string | Email Bison tag name |
| `taggableId` | number | ID of the tagged resource |
| `taggableType` | string | Type of the tagged resource |
***
### Email Bison Untracked Reply Received [#email-bison-untracked-reply-received]
Trigger when Email Bison receives a reply not tied to a scheduled campaign email
#### Configuration [#configuration-14]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------ |
| `apiKey` | string | Yes | API Key |
| `apiBaseUrl` | string | Yes | Instance URL |
#### Output [#output-27]
| Parameter | Type | Description |
| ---------------------------- | ------- | -------------------------------------- |
| `eventType` | string | Email Bison webhook event type |
| `eventName` | string | Human-readable Email Bison event name |
| `instanceUrl` | string | Email Bison instance URL |
| `workspaceId` | number | Email Bison workspace ID |
| `workspaceName` | string | Email Bison workspace name |
| `event` | json | Raw Email Bison event metadata object |
| `data` | json | Raw Email Bison event data object |
| `reply` | object | reply output from the tool |
| ↳ `id` | number | Reply ID |
| ↳ `uuid` | string | Reply UUID |
| ↳ `email_subject` | string | Reply email subject |
| ↳ `interested` | boolean | Whether the reply is marked interested |
| ↳ `automated_reply` | boolean | Whether the reply is automated |
| ↳ `html_body` | string | Reply HTML body |
| ↳ `text_body` | string | Reply plain text body |
| ↳ `raw_body` | string | Raw MIME reply body |
| ↳ `headers` | string | Encoded raw email headers |
| ↳ `date_received` | string | Reply received timestamp |
| ↳ `from_name` | string | Reply sender name |
| ↳ `from_email_address` | string | Reply sender email address |
| ↳ `primary_to_email_address` | string | Primary recipient email address |
| ↳ `to` | json | Reply To recipients |
| ↳ `cc` | json | Reply CC recipients |
| ↳ `bcc` | json | Reply BCC recipients |
| ↳ `parent_id` | number | Parent reply ID |
| ↳ `reply_type` | string | Reply type |
| ↳ `folder` | string | Reply folder |
| ↳ `raw_message_id` | string | Raw email message ID |
| ↳ `created_at` | string | Reply creation timestamp |
| ↳ `updated_at` | string | Reply update timestamp |
| ↳ `attachments` | json | Reply attachments |
| `senderEmail` | object | senderEmail output from the tool |
| ↳ `id` | number | Sender email ID |
| ↳ `name` | string | Sender email name |
| ↳ `email` | string | Sender email address |
| ↳ `status` | string | Sender email status |
| ↳ `account_type` | string | Sender email connection type |
| ↳ `daily_limit` | number | Sender email daily limit |
| ↳ `emails_sent` | number | Sender email sent count |
| ↳ `replied` | number | Sender email replied count |
| ↳ `opened` | number | Sender email opened count |
| ↳ `unsubscribed` | number | Sender email unsubscribed count |
| ↳ `bounced` | number | Sender email bounced count |
| ↳ `unique_replies` | number | Sender email unique reply count |
| ↳ `unique_opens` | number | Sender email unique open count |
| ↳ `total_leads_contacted` | number | Sender email total leads contacted |
| ↳ `interested` | number | Sender email interested count |
| ↳ `created_at` | string | Sender email creation timestamp |
| ↳ `updated_at` | string | Sender email update timestamp |
***
### Email Bison Warmup Disabled Causing Bounces [#email-bison-warmup-disabled-causing-bounces]
Trigger when warmup is disabled for a sender email causing too many bounces
#### Configuration [#configuration-15]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------ |
| `apiKey` | string | Yes | API Key |
| `apiBaseUrl` | string | Yes | Instance URL |
#### Output [#output-28]
| Parameter | Type | Description |
| ------------------------- | ------ | ------------------------------------- |
| `eventType` | string | Email Bison webhook event type |
| `eventName` | string | Human-readable Email Bison event name |
| `instanceUrl` | string | Email Bison instance URL |
| `workspaceId` | number | Email Bison workspace ID |
| `workspaceName` | string | Email Bison workspace name |
| `event` | json | Raw Email Bison event metadata object |
| `data` | json | Raw Email Bison event data object |
| `senderEmail` | object | senderEmail output from the tool |
| ↳ `id` | number | Sender email ID |
| ↳ `name` | string | Sender email name |
| ↳ `email` | string | Sender email address |
| ↳ `status` | string | Sender email status |
| ↳ `account_type` | string | Sender email connection type |
| ↳ `daily_limit` | number | Sender email daily limit |
| ↳ `emails_sent` | number | Sender email sent count |
| ↳ `replied` | number | Sender email replied count |
| ↳ `opened` | number | Sender email opened count |
| ↳ `unsubscribed` | number | Sender email unsubscribed count |
| ↳ `bounced` | number | Sender email bounced count |
| ↳ `unique_replies` | number | Sender email unique reply count |
| ↳ `unique_opens` | number | Sender email unique open count |
| ↳ `total_leads_contacted` | number | Sender email total leads contacted |
| ↳ `interested` | number | Sender email interested count |
| ↳ `created_at` | string | Sender email creation timestamp |
| ↳ `updated_at` | string | Sender email update timestamp |
***
### Email Bison Warmup Disabled Receiving Bounces [#email-bison-warmup-disabled-receiving-bounces]
Trigger when warmup is disabled for a sender email receiving too many bounces
#### Configuration [#configuration-16]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------ |
| `apiKey` | string | Yes | API Key |
| `apiBaseUrl` | string | Yes | Instance URL |
#### Output [#output-29]
| Parameter | Type | Description |
| ------------------------- | ------ | ------------------------------------- |
| `eventType` | string | Email Bison webhook event type |
| `eventName` | string | Human-readable Email Bison event name |
| `instanceUrl` | string | Email Bison instance URL |
| `workspaceId` | number | Email Bison workspace ID |
| `workspaceName` | string | Email Bison workspace name |
| `event` | json | Raw Email Bison event metadata object |
| `data` | json | Raw Email Bison event data object |
| `senderEmail` | object | senderEmail output from the tool |
| ↳ `id` | number | Sender email ID |
| ↳ `name` | string | Sender email name |
| ↳ `email` | string | Sender email address |
| ↳ `status` | string | Sender email status |
| ↳ `account_type` | string | Sender email connection type |
| ↳ `daily_limit` | number | Sender email daily limit |
| ↳ `emails_sent` | number | Sender email sent count |
| ↳ `replied` | number | Sender email replied count |
| ↳ `opened` | number | Sender email opened count |
| ↳ `unsubscribed` | number | Sender email unsubscribed count |
| ↳ `bounced` | number | Sender email bounced count |
| ↳ `unique_replies` | number | Sender email unique reply count |
| ↳ `unique_opens` | number | Sender email unique open count |
| ↳ `total_leads_contacted` | number | Sender email total leads contacted |
| ↳ `interested` | number | Sender email interested count |
| ↳ `created_at` | string | Sender email creation timestamp |
| ↳ `updated_at` | string | Sender email update timestamp |
---
# Embeddings (/integrations/embeddings)
{/* MANUAL-CONTENT-START:intro */}
An embedding turns a piece of text into a list of numbers that captures its meaning. Two texts that mean similar things get similar numbers, so you can compare meaning directly instead of matching keywords. That is what powers semantic search, grouping related items, and spotting near-duplicates that are worded differently.
The Embeddings block generates those numbers using OpenAI, Google Gemini, Cohere, or Mistral. Pick a provider, pick one of its models, pass in text, and get a vector back — one vector per input, in the order you supplied them. You can embed a single string or a list of strings in one call.
Models differ in what they are good at and what they cost. `text-embedding-3-small` is the cost-efficient general choice, `gemini-embedding-001` gives the highest retrieval quality, `embed-v4.0` handles multilingual content, and `codestral-embed` is tuned for source code. Some models also let you trade vector size against quality, and some accept a task type so the vector is conditioned for how it will be used — the block only offers those controls for the models that actually support them.
Two things worth knowing before you build on it. Vectors are only comparable when they come from the same model at the same size, so changing either means re-embedding everything you intend to compare. And input longer than the model's limit is shortened to fit rather than rejected, with a warning in the run, so chunk long documents yourself when the tail matters.
Sim's knowledge bases embed separately, at a fixed vector width and from a smaller set of models. This block is for embedding text yourself inside a workflow.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Turn text into embedding vectors for semantic search, clustering, and similarity. Supports OpenAI, OpenRouter, Google Gemini, Cohere, and Mistral embedding models.
## Actions [#actions]
### OpenAI Embeddings [#openai-embeddings]
Generate embeddings from text using OpenAI's embedding models
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `input` | string | Yes | Text to embed, or an array of texts to embed in one call |
| `model` | string | No | Embedding model to use |
| `taskType` | string | No | What the embedding is for, when the model supports task conditioning: document, query, similarity, classification, or clustering |
| `dimensions` | number | No | Output dimensions, when the model supports truncation. Defaults to native. |
| `apiKey` | string | Yes | API key for the selected embedding provider |
#### Output [#output]
| Parameter | Type | Description |
| ------------ | ------ | ----------------------------- |
| `embeddings` | json | Generated embeddings |
| `model` | string | Model used |
| `provider` | string | Provider used |
| `dimensions` | number | Dimensionality of each vector |
| `usage` | json | Token usage |
### OpenRouter Embeddings [#openrouter-embeddings]
Generate embeddings through OpenRouter
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `input` | string | Yes | Text to embed, or an array of texts to embed in one call |
| `model` | string | No | Embedding model to use |
| `taskType` | string | No | What the embedding is for, when the model supports task conditioning: document, query, similarity, classification, or clustering |
| `dimensions` | number | No | Output dimensions, when the model supports truncation. Defaults to native. |
| `apiKey` | string | Yes | API key for the selected embedding provider |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------ | ------ | ----------------------------- |
| `embeddings` | json | Generated embeddings |
| `model` | string | Model used |
| `provider` | string | Provider used |
| `dimensions` | number | Dimensionality of each vector |
| `usage` | json | Token usage |
### Gemini Embeddings [#gemini-embeddings]
Generate embeddings from text using Google's Gemini embedding models
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `input` | string | Yes | Text to embed, or an array of texts to embed in one call |
| `model` | string | No | Embedding model to use |
| `taskType` | string | No | What the embedding is for, when the model supports task conditioning: document, query, similarity, classification, or clustering |
| `dimensions` | number | No | Output dimensions, when the model supports truncation. Defaults to native. |
| `apiKey` | string | Yes | API key for the selected embedding provider |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------ | ------ | ----------------------------- |
| `embeddings` | json | Generated embeddings |
| `model` | string | Model used |
| `provider` | string | Provider used |
| `dimensions` | number | Dimensionality of each vector |
| `usage` | json | Token usage |
### Cohere Embeddings [#cohere-embeddings]
Generate embeddings from text using Cohere's embedding models
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `input` | string | Yes | Text to embed, or an array of texts to embed in one call |
| `model` | string | No | Embedding model to use |
| `taskType` | string | No | What the embedding is for, when the model supports task conditioning: document, query, similarity, classification, or clustering |
| `dimensions` | number | No | Output dimensions, when the model supports truncation. Defaults to native. |
| `apiKey` | string | Yes | API key for the selected embedding provider |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------ | ------ | ----------------------------- |
| `embeddings` | json | Generated embeddings |
| `model` | string | Model used |
| `provider` | string | Provider used |
| `dimensions` | number | Dimensionality of each vector |
| `usage` | json | Token usage |
### Mistral Embeddings [#mistral-embeddings]
Generate embeddings from text using Mistral's embedding models
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `input` | string | Yes | Text to embed, or an array of texts to embed in one call |
| `model` | string | No | Embedding model to use |
| `taskType` | string | No | What the embedding is for, when the model supports task conditioning: document, query, similarity, classification, or clustering |
| `dimensions` | number | No | Output dimensions, when the model supports truncation. Defaults to native. |
| `apiKey` | string | Yes | API key for the selected embedding provider |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------ | ------ | ----------------------------- |
| `embeddings` | json | Generated embeddings |
| `model` | string | Model used |
| `provider` | string | Provider used |
| `dimensions` | number | Dimensionality of each vector |
| `usage` | json | Token usage |
---
# Enrich (/integrations/enrich)
{/* MANUAL-CONTENT-START:intro */}
[Enrich.so](https://enrich.so/) delivers real-time, precision B2B data enrichment and LinkedIn intelligence. Its platform provides dynamic access to public and structured company, contact, and professional information, enabling teams to build richer profiles, improve lead quality, and drive more effective outreach.
With Enrich.so, you can:
* **Enrich contact and company profiles**: Instantly discover key data points for leads, prospects, and businesses using just an email or LinkedIn profile.
* **Verify email deliverability**: Check if emails are valid, deliverable, and safe to contact before sending.
* **Find work & personal emails**: Identify missing business emails from a LinkedIn profile or personal emails to expand your reach.
* **Reveal phone numbers and social profiles**: Surface additional communication channels for contacts through enrichment tools.
* **Analyze LinkedIn posts and engagement**: Extract insights on post reach, reactions, and audience from public LinkedIn content.
* **Conduct advanced people and company search**: Enable your agents to locate companies and professionals based on deep filters and real-time intelligence.
The Sim integration with Enrich.so empowers your agents and automations to instantly query, enrich, and validate B2B data, boosting productivity in workflows like sales prospecting, recruiting, marketing operations, and more. Combining Sim's orchestration capabilities with Enrich.so unlocks smarter, data-driven automation strategies powered by best-in-class B2B intelligence.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Access real-time B2B data intelligence with Enrich.so. Enrich profiles from email addresses, find work emails from LinkedIn, verify email deliverability, search for people and companies, and analyze LinkedIn post engagement.
## Actions [#actions]
### Enrich Check Credits [#enrich-check-credits]
Check your Enrich API credit usage and remaining balance.
#### Input [#input]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------- |
| `apiKey` | string | Yes | Enrich API key |
#### Output [#output]
| Parameter | Type | Description |
| ------------------ | ------ | -------------------------------------- |
| `totalCredits` | number | Total credits allocated to the account |
| `creditsUsed` | number | Credits consumed so far |
| `creditsRemaining` | number | Available credits remaining |
### Enrich Email to Profile [#enrich-email-to-profile]
Retrieve detailed LinkedIn profile information using an email address including work history, education, and skills.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | ------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Enrich API key |
| `email` | string | Yes | Email address to look up (e.g., [john.doe@company.com](mailto:john.doe@company.com)) |
| `inRealtime` | boolean | No | Set to true to retrieve fresh data, bypassing cached information |
#### Output [#output-1]
| Parameter | Type | Description |
| ----------------------------- | ------- | --------------------------------------------- |
| `displayName` | string | Full display name |
| `firstName` | string | First name |
| `lastName` | string | Last name |
| `headline` | string | Professional headline |
| `occupation` | string | Current occupation |
| `summary` | string | Profile summary |
| `location` | string | Location |
| `country` | string | Country |
| `linkedInUrl` | string | LinkedIn profile URL |
| `photoUrl` | string | Profile photo URL |
| `connectionCount` | number | Number of connections |
| `isConnectionCountObfuscated` | boolean | Whether connection count is obfuscated (500+) |
| `positionHistory` | array | Work experience history |
| ↳ `title` | string | Job title |
| ↳ `company` | string | Company name |
| ↳ `startDate` | string | Start date |
| ↳ `endDate` | string | End date |
| ↳ `location` | string | Location |
| `education` | array | Education history |
| ↳ `school` | string | School name |
| ↳ `degree` | string | Degree |
| ↳ `fieldOfStudy` | string | Field of study |
| ↳ `startDate` | string | Start date |
| ↳ `endDate` | string | End date |
| `certifications` | array | Professional certifications |
| ↳ `name` | string | Certification name |
| ↳ `authority` | string | Issuing authority |
| ↳ `url` | string | Certification URL |
| `skills` | array | List of skills |
| `languages` | array | List of languages |
| `locale` | string | Profile locale (e.g., en\_US) |
| `version` | number | Profile version number |
### Enrich Email to Person Lite [#enrich-email-to-person-lite]
Retrieve basic LinkedIn profile information from an email address. A lighter version with essential data only.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Enrich API key |
| `email` | string | Yes | Email address to look up (e.g., [john.doe@company.com](mailto:john.doe@company.com)) |
#### Output [#output-2]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------- |
| `name` | string | Full name |
| `firstName` | string | First name |
| `lastName` | string | Last name |
| `email` | string | Email address |
| `title` | string | Job title |
| `location` | string | Location |
| `company` | string | Current company |
| `companyLocation` | string | Company location |
| `companyLinkedIn` | string | Company LinkedIn URL |
| `profileId` | string | LinkedIn profile ID |
| `schoolName` | string | School name |
| `schoolUrl` | string | School URL |
| `linkedInUrl` | string | LinkedIn profile URL |
| `photoUrl` | string | Profile photo URL |
| `followerCount` | number | Number of followers |
| `connectionCount` | number | Number of connections |
| `languages` | array | Languages spoken |
| `projects` | array | Projects |
| `certifications` | array | Certifications |
| `volunteerExperience` | array | Volunteer experience |
### Enrich LinkedIn Profile [#enrich-linkedin-profile]
Enrich a LinkedIn profile URL with detailed information including positions, education, and social metrics.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------------- |
| `apiKey` | string | Yes | Enrich API key |
| `url` | string | Yes | LinkedIn profile URL (e.g., linkedin.com/in/williamhgates) |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------ |
| `profileId` | string | LinkedIn profile ID |
| `firstName` | string | First name |
| `lastName` | string | Last name |
| `subTitle` | string | Profile subtitle/headline |
| `profilePicture` | string | Profile picture URL |
| `backgroundImage` | string | Background image URL |
| `industry` | string | Industry |
| `location` | string | Location |
| `followersCount` | number | Number of followers |
| `connectionsCount` | number | Number of connections |
| `premium` | boolean | Whether the account is premium |
| `influencer` | boolean | Whether the account is an influencer |
| `positions` | array | Work positions |
| ↳ `title` | string | Job title |
| ↳ `company` | string | Company name |
| ↳ `companyLogo` | string | Company logo URL |
| ↳ `startDate` | string | Start date |
| ↳ `endDate` | string | End date |
| ↳ `location` | string | Location |
| `education` | array | Education history |
| ↳ `school` | string | School name |
| ↳ `degree` | string | Degree |
| ↳ `fieldOfStudy` | string | Field of study |
| ↳ `startDate` | string | Start date |
| ↳ `endDate` | string | End date |
| `websites` | array | Personal websites |
### Enrich Find Email [#enrich-find-email]
Find a person's work email address using their full name and company domain.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ----------------------------------- |
| `apiKey` | string | Yes | Enrich API key |
| `fullName` | string | Yes | Person's full name (e.g., John Doe) |
| `companyDomain` | string | Yes | Company domain (e.g., example.com) |
#### Output [#output-4]
| Parameter | Type | Description |
| ----------- | ------- | ------------------------------------- |
| `email` | string | Found email address |
| `firstName` | string | First name |
| `lastName` | string | Last name |
| `domain` | string | Company domain |
| `found` | boolean | Whether an email was found |
| `acceptAll` | boolean | Whether the domain accepts all emails |
### Enrich LinkedIn to Work Email [#enrich-linkedin-to-work-email]
Find a work email address from a LinkedIn profile URL.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Enrich API key |
| `linkedinProfile` | string | Yes | LinkedIn profile URL (e.g., [https://www.linkedin.com/in/williamhgates\\](https://www.linkedin.com/in/williamhgates\\)) |
#### Output [#output-5]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------------ |
| `email` | string | Found work email address |
| `found` | boolean | Whether an email was found |
| `status` | string | Request status (in\_progress or completed) |
### Enrich LinkedIn to Personal Email [#enrich-linkedin-to-personal-email]
Find personal email address from a LinkedIn profile URL.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ----------------------------------------------------- |
| `apiKey` | string | Yes | Enrich API key |
| `linkedinProfile` | string | Yes | LinkedIn profile URL (e.g., linkedin.com/in/username) |
#### Output [#output-6]
| Parameter | Type | Description |
| --------- | ------- | -------------------------- |
| `email` | string | Personal email address |
| `found` | boolean | Whether an email was found |
| `status` | string | Request status |
### Enrich Phone Finder [#enrich-phone-finder]
Find a phone number from a LinkedIn profile URL.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------------------------------------- |
| `apiKey` | string | Yes | Enrich API key |
| `linkedinProfile` | string | Yes | LinkedIn profile URL (e.g., linkedin.com/in/williamhgates) |
#### Output [#output-7]
| Parameter | Type | Description |
| -------------- | ------- | ------------------------------------------ |
| `profileUrl` | string | LinkedIn profile URL |
| `mobileNumber` | string | Found mobile phone number |
| `found` | boolean | Whether a phone number was found |
| `status` | string | Request status (in\_progress or completed) |
### Enrich Email to Phone [#enrich-email-to-phone]
Find a phone number associated with an email address.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Enrich API key |
| `email` | string | Yes | Email address to look up (e.g., [john.doe@example.com](mailto:john.doe@example.com)) |
#### Output [#output-8]
| Parameter | Type | Description |
| -------------- | ------- | ------------------------------------------ |
| `email` | string | Email address looked up |
| `mobileNumber` | string | Found mobile phone number |
| `found` | boolean | Whether a phone number was found |
| `status` | string | Request status (in\_progress or completed) |
### Enrich Verify Email [#enrich-verify-email]
Verify an email address for deliverability, including catch-all detection and provider identification.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Enrich API key |
| `email` | string | Yes | Email address to verify (e.g., [john.doe@example.com](mailto:john.doe@example.com)) |
#### Output [#output-9]
| Parameter | Type | Description |
| ----------------- | ------- | -------------------------------------------------------- |
| `email` | string | Email address verified |
| `status` | string | Verification status |
| `result` | string | Deliverability result (deliverable, undeliverable, etc.) |
| `confidenceScore` | number | Confidence score (0-100) |
| `smtpProvider` | string | Email service provider (e.g., Google, Microsoft) |
| `mailDisposable` | boolean | Whether the email is from a disposable provider |
| `mailAcceptAll` | boolean | Whether the domain is a catch-all domain |
| `free` | boolean | Whether the email uses a free email service |
### Enrich Disposable Email Check [#enrich-disposable-email-check]
Check if an email address is from a disposable or temporary email provider. Returns a score and validation details.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Enrich API key |
| `email` | string | Yes | Email address to check (e.g., [john.doe@example.com](mailto:john.doe@example.com)) |
#### Output [#output-10]
| Parameter | Type | Description |
| -------------- | ------- | --------------------------------------------- |
| `email` | string | Email address checked |
| `score` | number | Validation score (0-100) |
| `testsPassed` | string | Number of tests passed (e.g., "3/3") |
| `passed` | boolean | Whether the email passed all validation tests |
| `reason` | string | Reason for failure if email did not pass |
| `mailServerIp` | string | Mail server IP address |
| `mxRecords` | array | MX records for the domain |
| ↳ `host` | string | MX record host |
| ↳ `pref` | number | MX record preference |
### Enrich Email to IP [#enrich-email-to-ip]
Discover an IP address associated with an email address.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Enrich API key |
| `email` | string | Yes | Email address to look up (e.g., [john.doe@example.com](mailto:john.doe@example.com)) |
#### Output [#output-11]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------- |
| `email` | string | Email address looked up |
| `ip` | string | Associated IP address |
| `found` | boolean | Whether an IP address was found |
### Enrich IP to Company [#enrich-ip-to-company]
Identify a company from an IP address with detailed firmographic information.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------ |
| `apiKey` | string | Yes | Enrich API key |
| `ip` | string | Yes | IP address to look up (e.g., 86.92.60.221) |
#### Output [#output-12]
| Parameter | Type | Description |
| --------------- | ------ | -------------------- |
| `name` | string | Company name |
| `legalName` | string | Legal company name |
| `domain` | string | Primary domain |
| `domainAliases` | array | Domain aliases |
| `sector` | string | Business sector |
| `industry` | string | Industry |
| `phone` | string | Phone number |
| `employees` | number | Number of employees |
| `revenue` | string | Estimated revenue |
| `location` | json | Company location |
| ↳ `city` | string | City |
| ↳ `state` | string | State |
| ↳ `country` | string | Country |
| ↳ `timezone` | string | Timezone |
| `linkedInUrl` | string | LinkedIn company URL |
| `twitterUrl` | string | Twitter URL |
| `facebookUrl` | string | Facebook URL |
### Enrich Company Lookup [#enrich-company-lookup]
Look up comprehensive company information by name or domain including funding, location, and social profiles.
#### Input [#input-13]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------- |
| `apiKey` | string | Yes | Enrich API key |
| `name` | string | No | Company name (e.g., Google) |
| `domain` | string | No | Company domain (e.g., google.com) |
#### Output [#output-13]
| Parameter | Type | Description |
| --------------- | ------ | ---------------------------- |
| `name` | string | Company name |
| `universalName` | string | Universal company name |
| `companyId` | string | Company ID |
| `description` | string | Company description |
| `phone` | string | Phone number |
| `linkedInUrl` | string | LinkedIn company URL |
| `websiteUrl` | string | Company website |
| `followers` | number | Number of LinkedIn followers |
| `staffCount` | number | Number of employees |
| `foundedDate` | string | Date founded |
| `type` | string | Company type |
| `industries` | array | Industries |
| `specialties` | array | Company specialties |
| `headquarters` | json | Headquarters location |
| ↳ `city` | string | City |
| ↳ `country` | string | Country |
| ↳ `postalCode` | string | Postal code |
| ↳ `line1` | string | Address line 1 |
| `logo` | string | Company logo URL |
| `coverImage` | string | Cover image URL |
| `fundingRounds` | array | Funding history |
| ↳ `roundType` | string | Funding round type |
| ↳ `amount` | number | Amount raised |
| ↳ `currency` | string | Currency |
| ↳ `investors` | array | Investors |
### Enrich Company Funding [#enrich-company-funding]
Retrieve company funding history, traffic metrics, and executive information by domain.
#### Input [#input-14]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------- |
| `apiKey` | string | Yes | Enrich API key |
| `domain` | string | Yes | Company domain (e.g., example.com) |
#### Output [#output-14]
| Parameter | Type | Description |
| -------------------- | ------ | ---------------------------- |
| `legalName` | string | Legal company name |
| `employeeCount` | number | Number of employees |
| `headquarters` | string | Headquarters location |
| `industry` | string | Industry |
| `totalFundingRaised` | number | Total funding raised |
| `fundingRounds` | array | Funding rounds |
| ↳ `roundType` | string | Round type |
| ↳ `amount` | number | Amount raised |
| ↳ `date` | string | Date |
| ↳ `investors` | array | Investors |
| `monthlyVisits` | number | Monthly website visits |
| `trafficChange` | number | Traffic change percentage |
| `itSpending` | number | Estimated IT spending in USD |
| `executives` | array | Executive team |
| ↳ `name` | string | Name |
| ↳ `title` | string | Title |
### Enrich Company Revenue [#enrich-company-revenue]
Retrieve company revenue data, CEO information, and competitive analysis by domain.
#### Input [#input-15]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------ |
| `apiKey` | string | Yes | Enrich API key |
| `domain` | string | Yes | Company domain (e.g., clay.io) |
#### Output [#output-15]
| Parameter | Type | Description |
| ------------------ | ------ | ----------------------------- |
| `companyName` | string | Company name |
| `shortDescription` | string | Short company description |
| `fullSummary` | string | Full company summary |
| `revenue` | string | Company revenue |
| `revenueMin` | number | Minimum revenue estimate |
| `revenueMax` | number | Maximum revenue estimate |
| `employeeCount` | number | Number of employees |
| `founded` | string | Year founded |
| `ownership` | string | Ownership type |
| `status` | string | Company status (e.g., Active) |
| `website` | string | Company website URL |
| `ceo` | json | CEO information |
| ↳ `name` | string | CEO name |
| ↳ `designation` | string | CEO designation/title |
| ↳ `rating` | number | CEO rating |
| `socialLinks` | json | Social media links |
| ↳ `linkedIn` | string | LinkedIn URL |
| ↳ `twitter` | string | Twitter URL |
| ↳ `facebook` | string | Facebook URL |
| `totalFunding` | string | Total funding raised |
| `fundingRounds` | number | Number of funding rounds |
| `competitors` | array | Competitors |
| ↳ `name` | string | Competitor name |
| ↳ `revenue` | string | Revenue |
| ↳ `employeeCount` | number | Employee count |
| ↳ `headquarters` | string | Headquarters |
### Enrich Search People [#enrich-search-people]
Search for professionals by various criteria including name, title, skills, education, and company.
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | --------------------------------------------------- |
| `apiKey` | string | Yes | Enrich API key |
| `firstName` | string | No | First name |
| `lastName` | string | No | Last name |
| `summary` | string | No | Professional summary keywords |
| `subTitle` | string | No | Job title/subtitle |
| `locationCountry` | string | No | Country |
| `locationCity` | string | No | City |
| `locationState` | string | No | State/province |
| `influencer` | boolean | No | Filter for influencers only |
| `premium` | boolean | No | Filter for premium accounts only |
| `language` | string | No | Primary language |
| `industry` | string | No | Industry |
| `currentJobTitles` | json | No | Current job titles (array) |
| `pastJobTitles` | json | No | Past job titles (array) |
| `skills` | json | No | Skills to search for (array) |
| `schoolNames` | json | No | School names (array) |
| `certifications` | json | No | Certifications to filter by (array) |
| `degreeNames` | json | No | Degree names to filter by (array) |
| `studyFields` | json | No | Fields of study to filter by (array) |
| `currentCompanies` | json | No | Current company IDs to filter by (array of numbers) |
| `pastCompanies` | json | No | Past company IDs to filter by (array of numbers) |
| `currentPage` | number | No | Page number (default: 1) |
| `pageSize` | number | No | Results per page (default: 20) |
#### Output [#output-16]
| Parameter | Type | Description |
| ---------------------- | ------ | --------------------- |
| `currentPage` | number | Current page number |
| `totalPage` | number | Total number of pages |
| `pageSize` | number | Results per page |
| `profiles` | array | Search results |
| ↳ `profileIdentifier` | string | Profile ID |
| ↳ `givenName` | string | First name |
| ↳ `familyName` | string | Last name |
| ↳ `currentPosition` | string | Current job title |
| ↳ `profileImage` | string | Profile image URL |
| ↳ `externalProfileUrl` | string | LinkedIn URL |
| ↳ `city` | string | City |
| ↳ `country` | string | Country |
| ↳ `expertSkills` | array | Skills |
### Enrich Search Company [#enrich-search-company]
Search for companies by various criteria including name, industry, location, and size.
#### Input [#input-17]
| Parameter | Type | Required | Description |
| --------------------- | ------ | -------- | --------------------------------------- |
| `apiKey` | string | Yes | Enrich API key |
| `name` | string | No | Company name |
| `website` | string | No | Company website URL |
| `tagline` | string | No | Company tagline |
| `type` | string | No | Company type (e.g., Private, Public) |
| `description` | string | No | Company description keywords |
| `industries` | json | No | Industries to filter by (array) |
| `locationCountry` | string | No | Country |
| `locationCity` | string | No | City |
| `postalCode` | string | No | Postal code |
| `locationCountryList` | json | No | Multiple countries to filter by (array) |
| `locationCityList` | json | No | Multiple cities to filter by (array) |
| `specialities` | json | No | Company specialties (array) |
| `followers` | number | No | Minimum number of followers |
| `staffCount` | number | No | Maximum staff count |
| `staffCountMin` | number | No | Minimum staff count |
| `staffCountMax` | number | No | Maximum staff count |
| `currentPage` | number | No | Page number (default: 1) |
| `pageSize` | number | No | Results per page (default: 20) |
#### Output [#output-17]
| Parameter | Type | Description |
| ------------------- | ------ | --------------------- |
| `currentPage` | number | Current page number |
| `totalPage` | number | Total number of pages |
| `pageSize` | number | Results per page |
| `companies` | array | Search results |
| ↳ `companyName` | string | Company name |
| ↳ `tagline` | string | Company tagline |
| ↳ `webAddress` | string | Website URL |
| ↳ `industries` | array | Industries |
| ↳ `teamSize` | number | Team size |
| ↳ `linkedInProfile` | string | LinkedIn URL |
### Enrich Search Company Employees [#enrich-search-company-employees]
Search for employees within specific companies by location and job title.
#### Input [#input-18]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------- |
| `apiKey` | string | Yes | Enrich API key |
| `companyIds` | json | No | Array of company IDs to search within |
| `country` | string | No | Country filter (e.g., United States) |
| `city` | string | No | City filter (e.g., San Francisco) |
| `state` | string | No | State filter (e.g., California) |
| `jobTitles` | json | No | Job titles to filter by (array) |
| `page` | number | No | Page number (default: 1) |
| `pageSize` | number | No | Results per page (default: 10) |
#### Output [#output-18]
| Parameter | Type | Description |
| ---------------------- | ------ | -------------------------- |
| `currentPage` | number | Current page number |
| `totalPage` | number | Total number of pages |
| `pageSize` | number | Number of results per page |
| `profiles` | array | Employee profiles |
| ↳ `profileIdentifier` | string | Profile ID |
| ↳ `givenName` | string | First name |
| ↳ `familyName` | string | Last name |
| ↳ `currentPosition` | string | Current job title |
| ↳ `profileImage` | string | Profile image URL |
| ↳ `externalProfileUrl` | string | LinkedIn URL |
| ↳ `city` | string | City |
| ↳ `country` | string | Country |
| ↳ `expertSkills` | array | Skills |
### Enrich Search Similar Companies [#enrich-search-similar-companies]
Find companies similar to a given company by LinkedIn URL with filters for location and size.
#### Input [#input-19]
| Parameter | Type | Required | Description |
| ------------------- | ------ | -------- | -------------------------------------------------------- |
| `apiKey` | string | Yes | Enrich API key |
| `url` | string | Yes | LinkedIn company URL (e.g., linkedin.com/company/google) |
| `accountLocation` | json | No | Filter by locations (array of country names) |
| `employeeSizeType` | string | No | Employee size filter type (e.g., RANGE) |
| `employeeSizeRange` | json | No | Employee size ranges (array of \{start, end} objects) |
| `page` | number | No | Page number (default: 1) |
| `num` | number | No | Number of results per page |
#### Output [#output-19]
| Parameter | Type | Description |
| ------------------ | ------ | ----------------- |
| `companies` | array | Similar companies |
| ↳ `url` | string | LinkedIn URL |
| ↳ `name` | string | Company name |
| ↳ `universalName` | string | Universal name |
| ↳ `type` | string | Company type |
| ↳ `description` | string | Description |
| ↳ `phone` | string | Phone number |
| ↳ `website` | string | Website URL |
| ↳ `logo` | string | Logo URL |
| ↳ `foundedYear` | number | Year founded |
| ↳ `staffTotal` | number | Total staff |
| ↳ `industries` | array | Industries |
| ↳ `relevancyScore` | number | Relevancy score |
| ↳ `relevancyValue` | string | Relevancy value |
### Enrich Sales Pointer People [#enrich-sales-pointer-people]
Advanced people search with complex filters for location, company size, seniority, experience, and more.
#### Input [#input-20]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Enrich API key |
| `page` | number | Yes | Page number (starts at 1) |
| `filters` | json | Yes | Array of filter objects. Each filter has type (e.g., POSTAL\_CODE, COMPANY\_HEADCOUNT), values (array with id, text, selectionType: INCLUDED/EXCLUDED), and optional selectedSubFilter |
#### Output [#output-20]
| Parameter | Type | Description |
| ------------------ | ------ | -------------------- |
| `data` | array | People results |
| ↳ `name` | string | Full name |
| ↳ `summary` | string | Professional summary |
| ↳ `location` | string | Location |
| ↳ `profilePicture` | string | Profile picture URL |
| ↳ `linkedInUrn` | string | LinkedIn URN |
| ↳ `positions` | array | Work positions |
| ↳ `education` | array | Education |
| `pagination` | json | Pagination info |
| ↳ `totalCount` | number | Total results |
| ↳ `returnedCount` | number | Returned count |
| ↳ `start` | number | Start position |
| ↳ `limit` | number | Limit |
### Enrich Search Jobs [#enrich-search-jobs]
Search LinkedIn job postings by keywords with filters for location, job type, workplace type, experience level, and company.
#### Input [#input-21]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ---------------------------------------------------------------------- |
| `apiKey` | string | Yes | Enrich API key |
| `keywords` | string | Yes | Search keywords (e.g., "software engineer") |
| `location` | string | No | Location filter (e.g., London) |
| `jobTypes` | string | No | Comma-separated job types (e.g., "full time, part time") |
| `workplaceTypes` | string | No | Comma-separated workplace types (e.g., "on site, remote") |
| `experienceLevels` | string | No | Comma-separated experience levels (e.g., "internship, associate") |
| `companyIds` | string | No | Comma-separated LinkedIn company IDs to filter by (e.g., "2048, 3050") |
| `timePosted` | string | No | Time filter (e.g., past\_24hrs, past\_week, past\_month) |
| `start` | number | No | Number of records to skip for pagination (default: 0) |
#### Output [#output-21]
| Parameter | Type | Description |
| ------------------- | ------ | ----------------------------------------------- |
| `count` | number | Number of job postings returned |
| `jobs` | array | Job postings |
| ↳ `title` | string | Job title |
| ↳ `companyName` | string | Hiring company name |
| ↳ `companyLink` | string | Company LinkedIn URL |
| ↳ `companyLogo` | string | Company logo URL |
| ↳ `location` | string | Job location |
| ↳ `url` | string | Job posting URL |
| ↳ `postedDate` | string | Date the job was posted |
| ↳ `postedTimestamp` | string | Timestamp the job was posted |
| ↳ `hiringStatus` | string | Hiring status |
| ↳ `criteria` | object | Employment criteria (seniority, type, function) |
### Enrich Search Posts [#enrich-search-posts]
Search LinkedIn posts by keywords with date filtering.
#### Input [#input-22]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------- |
| `apiKey` | string | Yes | Enrich API key |
| `keywords` | string | Yes | Search keywords (e.g., "AI automation") |
| `datePosted` | string | No | Time filter (e.g., past\_week, past\_month) |
| `page` | number | No | Page number (default: 1) |
#### Output [#output-22]
| Parameter | Type | Description |
| ----------------- | ------ | ----------------------- |
| `count` | number | Total number of results |
| `posts` | array | Search results |
| ↳ `url` | string | Post URL |
| ↳ `postId` | string | Post ID |
| ↳ `author` | object | Author information |
| ↳ `name` | string | Author name |
| ↳ `headline` | string | Author headline |
| ↳ `linkedInUrl` | string | Author LinkedIn URL |
| ↳ `profileImage` | string | Author profile image |
| ↳ `timestamp` | string | Post timestamp |
| ↳ `textContent` | string | Post text content |
| ↳ `hashtags` | array | Hashtags |
| ↳ `mediaUrls` | array | Media URLs |
| ↳ `reactions` | number | Number of reactions |
| ↳ `commentsCount` | number | Number of comments |
### Enrich Get Post Details [#enrich-get-post-details]
Get detailed information about a LinkedIn post by URL.
#### Input [#input-23]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------- |
| `apiKey` | string | Yes | Enrich API key |
| `url` | string | Yes | LinkedIn post URL |
#### Output [#output-23]
| Parameter | Type | Description |
| ---------------- | ------ | -------------------- |
| `postId` | string | Post ID |
| `author` | json | Author information |
| ↳ `name` | string | Author name |
| ↳ `headline` | string | Author headline |
| ↳ `linkedInUrl` | string | Author LinkedIn URL |
| ↳ `profileImage` | string | Author profile image |
| `timestamp` | string | Post timestamp |
| `textContent` | string | Post text content |
| `hashtags` | array | Hashtags |
| `mediaUrls` | array | Media URLs |
| `reactions` | number | Number of reactions |
| `commentsCount` | number | Number of comments |
### Enrich Search Post Reactions [#enrich-search-post-reactions]
Get reactions on a LinkedIn post with filtering by reaction type.
#### Input [#input-24]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Enrich API key |
| `postUrn` | string | Yes | LinkedIn activity URN (e.g., urn:li:activity:7231931952839196672) |
| `reactionType` | string | Yes | Reaction type filter: all, like, love, celebrate, insightful, or funny (default: all) |
| `page` | number | Yes | Page number (starts at 1) |
#### Output [#output-24]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------- |
| `page` | number | Current page number |
| `totalPage` | number | Total number of pages |
| `count` | number | Number of reactions returned |
| `reactions` | array | Reactions |
| ↳ `reactionType` | string | Type of reaction |
| ↳ `reactor` | object | Person who reacted |
| ↳ `name` | string | Name |
| ↳ `subTitle` | string | Job title |
| ↳ `profileId` | string | Profile ID |
| ↳ `profilePicture` | string | Profile picture URL |
| ↳ `linkedInUrl` | string | LinkedIn URL |
### Enrich Search Post Reactions by URL [#enrich-search-post-reactions-by-url]
Get reactions on a LinkedIn post by its URL, filtered by reaction type.
#### Input [#input-25]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Enrich API key |
| `postUrl` | string | Yes | LinkedIn post URL (e.g., [https://www.linkedin.com/posts/...\\](https://www.linkedin.com/posts/...\\)) |
| `reactionType` | string | Yes | Reaction type filter: all, like, love, celebrate, insightful, or funny (default: all) |
| `page` | number | Yes | Page number (starts at 1) |
#### Output [#output-25]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------- |
| `page` | number | Current page number |
| `totalPage` | number | Total number of pages |
| `count` | number | Number of reactions returned |
| `reactions` | array | Reactions |
| ↳ `reactionType` | string | Type of reaction |
| ↳ `reactor` | object | Person who reacted |
| ↳ `name` | string | Name |
| ↳ `subTitle` | string | Job title |
| ↳ `profileId` | string | Profile ID |
| ↳ `profilePicture` | string | Profile picture URL |
| ↳ `linkedInUrl` | string | LinkedIn URL |
### Enrich Search Post Comments [#enrich-search-post-comments]
Get comments on a LinkedIn post.
#### Input [#input-26]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------------------------------------------- |
| `apiKey` | string | Yes | Enrich API key |
| `postUrn` | string | Yes | LinkedIn activity URN (e.g., urn:li:activity:7191163324208705536) |
| `page` | number | No | Page number (starts at 1, default: 1) |
#### Output [#output-26]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------- |
| `page` | number | Current page number |
| `totalPage` | number | Total number of pages |
| `count` | number | Number of comments returned |
| `comments` | array | Comments |
| ↳ `activityId` | string | Comment activity ID |
| ↳ `commentary` | string | Comment text |
| ↳ `linkedInUrl` | string | Link to comment |
| ↳ `commenter` | object | Commenter info |
| ↳ `profileId` | string | Profile ID |
| ↳ `firstName` | string | First name |
| ↳ `lastName` | string | Last name |
| ↳ `subTitle` | string | Subtitle/headline |
| ↳ `profilePicture` | string | Profile picture URL |
| ↳ `backgroundImage` | string | Background image URL |
| ↳ `entityUrn` | string | Entity URN |
| ↳ `objectUrn` | string | Object URN |
| ↳ `profileType` | string | Profile type |
| ↳ `reactionBreakdown` | object | Reactions on the comment |
| ↳ `likes` | number | Number of likes |
| ↳ `empathy` | number | Number of empathy reactions |
| ↳ `other` | number | Number of other reactions |
### Enrich Search Post Comments by URL [#enrich-search-post-comments-by-url]
Get comments on a LinkedIn post by its URL.
#### Input [#input-27]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Enrich API key |
| `postUrl` | string | Yes | LinkedIn post URL (e.g., [https://www.linkedin.com/posts/...\\](https://www.linkedin.com/posts/...\\)) |
| `page` | number | No | Page number (starts at 1, default: 1) |
#### Output [#output-27]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------- |
| `page` | number | Current page number |
| `totalPage` | number | Total number of pages |
| `count` | number | Number of comments returned |
| `comments` | array | Comments |
| ↳ `activityId` | string | Comment activity ID |
| ↳ `commentary` | string | Comment text |
| ↳ `linkedInUrl` | string | Link to comment |
| ↳ `commenter` | object | Commenter info |
| ↳ `profileId` | string | Profile ID |
| ↳ `firstName` | string | First name |
| ↳ `lastName` | string | Last name |
| ↳ `subTitle` | string | Subtitle/headline |
| ↳ `profilePicture` | string | Profile picture URL |
| ↳ `backgroundImage` | string | Background image URL |
| ↳ `entityUrn` | string | Entity URN |
| ↳ `objectUrn` | string | Object URN |
| ↳ `profileType` | string | Profile type |
| ↳ `reactionBreakdown` | object | Reactions on the comment |
| ↳ `likes` | number | Number of likes |
| ↳ `empathy` | number | Number of empathy reactions |
| ↳ `other` | number | Number of other reactions |
### Enrich Search People Activities [#enrich-search-people-activities]
Get a person's LinkedIn activities (posts, comments, or articles) by profile ID.
#### Input [#input-28]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------- |
| `apiKey` | string | Yes | Enrich API key |
| `profileId` | string | Yes | LinkedIn profile ID |
| `activityType` | string | Yes | Activity type: posts, comments, or articles |
| `paginationToken` | string | No | Pagination token for next page of results |
#### Output [#output-28]
| Parameter | Type | Description |
| --------------------- | ------ | ---------------------------- |
| `paginationToken` | string | Token for fetching next page |
| `activityType` | string | Type of activities returned |
| `activities` | array | Activities |
| ↳ `activityId` | string | Activity ID |
| ↳ `commentary` | string | Activity text content |
| ↳ `linkedInUrl` | string | Link to activity |
| ↳ `timeElapsed` | string | Time elapsed since activity |
| ↳ `numReactions` | number | Total number of reactions |
| ↳ `author` | object | Activity author info |
| ↳ `name` | string | Author name |
| ↳ `profileId` | string | Profile ID |
| ↳ `profilePicture` | string | Profile picture URL |
| ↳ `reactionBreakdown` | object | Reactions |
| ↳ `likes` | number | Likes |
| ↳ `empathy` | number | Empathy reactions |
| ↳ `other` | number | Other reactions |
| ↳ `attachments` | array | Attachment URLs |
### Enrich Search Company Activities [#enrich-search-company-activities]
Get a company's LinkedIn activities (posts, comments, or articles) by company ID.
#### Input [#input-29]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------- |
| `apiKey` | string | Yes | Enrich API key |
| `companyId` | string | Yes | LinkedIn company ID |
| `activityType` | string | Yes | Activity type: posts, comments, or articles |
| `paginationToken` | string | No | Pagination token for next page of results |
| `offset` | number | No | Number of records to skip (default: 0) |
#### Output [#output-29]
| Parameter | Type | Description |
| --------------------- | ------ | ---------------------------- |
| `paginationToken` | string | Token for fetching next page |
| `activityType` | string | Type of activities returned |
| `activities` | array | Activities |
| ↳ `activityId` | string | Activity ID |
| ↳ `commentary` | string | Activity text content |
| ↳ `linkedInUrl` | string | Link to activity |
| ↳ `timeElapsed` | string | Time elapsed since activity |
| ↳ `numReactions` | number | Total number of reactions |
| ↳ `author` | object | Activity author info |
| ↳ `name` | string | Author name |
| ↳ `profileId` | string | Profile ID |
| ↳ `profilePicture` | string | Profile picture URL |
| ↳ `reactionBreakdown` | object | Reactions |
| ↳ `likes` | number | Likes |
| ↳ `empathy` | number | Empathy reactions |
| ↳ `other` | number | Other reactions |
| ↳ `attachments` | array | Attachments |
### Enrich Reverse Hash Lookup [#enrich-reverse-hash-lookup]
Convert an MD5 email hash back to the original email address and display name.
#### Input [#input-30]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------- |
| `apiKey` | string | Yes | Enrich API key |
| `hash` | string | Yes | MD5 hash value to look up |
#### Output [#output-30]
| Parameter | Type | Description |
| ------------- | ------- | --------------------------------------- |
| `hash` | string | MD5 hash that was looked up |
| `email` | string | Original email address |
| `displayName` | string | Display name associated with the email |
| `found` | boolean | Whether an email was found for the hash |
### Enrich Search Logo [#enrich-search-logo]
Get a company logo image URL by domain.
#### Input [#input-31]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------- |
| `apiKey` | string | Yes | Enrich API key |
| `url` | string | Yes | Company domain (e.g., google.com) |
#### Output [#output-31]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------- |
| `logoUrl` | string | URL to fetch the company logo |
| `domain` | string | Domain that was looked up |
---
# Data Enrichment (/integrations/enrichment)
{/* MANUAL-CONTENT-START:intro */}
Data Enrichment is a built-in Sim block that looks up missing data — work email, phone number, company domain, company info, and more — from fields you map in from your workflow. It runs a registered enrichment (like "Work Email" or "Phone Number") against the same provider cascade used by table enrichments, trying multiple providers until one returns a match.
In Sim, the enrichment block allows your agents to fill in gaps in a record by supplying an enrichment id and a map of input values, then reading back whether a match was found and which provider (e.g. Hunter, People Data Labs) supplied the result. This lets workflows enrich leads or contacts inline — for example, taking a name and company and resolving a work email — without agents needing to call each provider's API directly.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Run a Sim enrichment to look up data — work email, phone number, company domain, company info, and more — from the fields you map in. Uses the same provider cascade as table enrichments.
## Actions [#actions]
### Run Enrichment [#run-enrichment]
Run a Sim enrichment (e.g. Work Email, Phone Number) and return its outputs
#### Input [#input]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------- |
| `enrichmentId` | string | Yes | Registry enrichment id (e.g. "work-email") |
| `inputs` | json | Yes | Map of the enrichment's input ids to values |
#### Output [#output]
| Parameter | Type | Description |
| ---------- | ------- | ---------------------------------------------------------------------- |
| `matched` | boolean | Whether the enrichment found a result |
| `provider` | string | Provider whose result was returned (e.g. "Hunter", "People Data Labs") |
---
# Enrow (/integrations/enrow)
{/* MANUAL-CONTENT-START:intro */}
[Enrow](https://enrow.io/) is a B2B email-finding and verification service built for high accuracy, using triple verification — including deterministic checks on catch-all domains — so results are deliverable without a separate verifier.
With Enrow, you can:
* **Find verified B2B emails:** Resolve a professional email address from a person's full name and their company name or domain.
* **Verify existing emails:** Check the deliverability and validity of an email, including reliable handling of catch-all domains.
In Sim, the Enrow integration lets your agents find and verify professional emails inside a workflow — powering accurate, high-deliverability outreach and clean contact lists without manual checks.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Enrow to find verified B2B email addresses from a full name and company, or verify the deliverability of an existing email. Enrow performs deterministic verifications including catch-all emails — no additional verifier needed.
## Actions [#actions]
### Enrow Find Email [#enrow-find-email]
Find a verified B2B email address from a full name and company domain or name. Uses the Enrow async finder — submits a search and polls until the result is ready. Costs 1 credit per valid email found. ([https://enrow.readme.io/reference/find-single-email](https://enrow.readme.io/reference/find-single-email))
#### Input [#input]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ---------------------------------------------------------------- |
| `apiKey` | string | Yes | Enrow API key |
| `fullname` | string | Yes | Full name of the person (e.g. "John Doe") |
| `company_domain` | string | No | Company domain (e.g. "apple.com"). Preferred over company\_name. |
| `company_name` | string | No | Company name (e.g. "Apple"). Used when domain is unavailable. |
#### Output [#output]
| Parameter | Type | Description |
| ---------------- | ------ | ------------------------------------------ |
| `id` | string | Enrow job identifier used for polling |
| `email` | string | Email address found or verified |
| `qualification` | string | Enrow quality result: "valid" or "invalid" |
| `fullname` | string | Full name of the person searched |
| `company_name` | string | Company name associated with the result |
| `company_domain` | string | Company domain associated with the result |
| `linkedin_url` | string | LinkedIn profile URL of the person |
### Enrow Verify Email [#enrow-verify-email]
Verify the deliverability of an email address using the Enrow async verifier. Submits a verification request and polls until the result is ready. Costs 0.25 credits per verification. ([https://enrow.readme.io/reference/verify-single-email](https://enrow.readme.io/reference/verify-single-email))
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Enrow API key |
| `email` | string | Yes | Email address to verify (e.g. "[john@example.com](mailto:john@example.com)") |
#### Output [#output-1]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------------------ |
| `id` | string | Enrow job identifier used for polling |
| `email` | string | Email address found or verified |
| `qualification` | string | Enrow quality result: "valid" or "invalid" |
---
# Evernote (/integrations/evernote)
{/* MANUAL-CONTENT-START:intro */}
[Evernote](https://evernote.com/) is a note-taking and organization platform that helps individuals and teams capture ideas, manage projects, and store information across devices. With notebooks, tags, and powerful search, Evernote serves as a central hub for knowledge management.
With the Sim Evernote integration, you can:
* **Create and update notes**: Programmatically create new notes with content and tags, or update existing notes in any notebook.
* **Search and retrieve notes**: Use Evernote's search grammar to find notes by keyword, tag, notebook, or other criteria, and retrieve full note content.
* **Organize with notebooks and tags**: Create notebooks and tags, list existing ones, and move or copy notes between notebooks.
* **Delete and manage notes**: Move notes to trash or copy them to different notebooks as part of automated workflows.
**How it works in Sim:**
Add an Evernote block to your workflow and select an operation (e.g., create note, search notes, list notebooks). Provide your Evernote developer token and any required parameters. The block calls the Evernote API and returns structured data you can pass to downstream blocks — for example, searching for meeting notes and sending summaries to Slack, or creating notes from AI-generated content.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate with Evernote to manage notes, notebooks, and tags. Create, read, update, copy, search, and delete notes. Create and list notebooks and tags.
## Actions [#actions]
### Evernote Copy Note [#evernote-copy-note]
Copy a note to another notebook in Evernote
#### Input [#input]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | -------------------------------- |
| `apiKey` | string | Yes | Evernote developer token |
| `noteGuid` | string | Yes | GUID of the note to copy |
| `toNotebookGuid` | string | Yes | GUID of the destination notebook |
#### Output [#output]
| Parameter | Type | Description |
| ---------------- | ------ | -------------------------------------- |
| `note` | object | The copied note metadata |
| ↳ `guid` | string | New note GUID |
| ↳ `title` | string | Note title |
| ↳ `notebookGuid` | string | GUID of the destination notebook |
| ↳ `created` | number | Creation timestamp in milliseconds |
| ↳ `updated` | number | Last updated timestamp in milliseconds |
### Evernote Create Note [#evernote-create-note]
Create a new note in Evernote
#### Input [#input-1]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Evernote developer token |
| `title` | string | Yes | Title of the note |
| `content` | string | Yes | Content of the note (plain text or ENML) |
| `notebookGuid` | string | No | GUID of the notebook to create the note in (defaults to default notebook) |
| `tagNames` | string | No | Comma-separated list of tag names to apply |
#### Output [#output-1]
| Parameter | Type | Description |
| ---------------- | ------ | -------------------------------------- |
| `note` | object | The created note |
| ↳ `guid` | string | Unique identifier of the note |
| ↳ `title` | string | Title of the note |
| ↳ `content` | string | ENML content of the note |
| ↳ `notebookGuid` | string | GUID of the containing notebook |
| ↳ `tagNames` | array | Tag names applied to the note |
| ↳ `created` | number | Creation timestamp in milliseconds |
| ↳ `updated` | number | Last updated timestamp in milliseconds |
### Evernote Create Notebook [#evernote-create-notebook]
Create a new notebook in Evernote
#### Input [#input-2]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------- |
| `apiKey` | string | Yes | Evernote developer token |
| `name` | string | Yes | Name for the new notebook |
| `stack` | string | No | Stack name to group the notebook under |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------------- | ------- | -------------------------------------- |
| `notebook` | object | The created notebook |
| ↳ `guid` | string | Notebook GUID |
| ↳ `name` | string | Notebook name |
| ↳ `defaultNotebook` | boolean | Whether this is the default notebook |
| ↳ `serviceCreated` | number | Creation timestamp in milliseconds |
| ↳ `serviceUpdated` | number | Last updated timestamp in milliseconds |
| ↳ `stack` | string | Notebook stack name |
### Evernote Create Tag [#evernote-create-tag]
Create a new tag in Evernote
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------ |
| `apiKey` | string | Yes | Evernote developer token |
| `name` | string | Yes | Name for the new tag |
| `parentGuid` | string | No | GUID of the parent tag for hierarchy |
#### Output [#output-3]
| Parameter | Type | Description |
| --------------------- | ------ | ---------------------- |
| `tag` | object | The created tag |
| ↳ `guid` | string | Tag GUID |
| ↳ `name` | string | Tag name |
| ↳ `parentGuid` | string | Parent tag GUID |
| ↳ `updateSequenceNum` | number | Update sequence number |
### Evernote Delete Note [#evernote-delete-note]
Move a note to the trash in Evernote
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------- |
| `apiKey` | string | Yes | Evernote developer token |
| `noteGuid` | string | Yes | GUID of the note to delete |
#### Output [#output-4]
| Parameter | Type | Description |
| ---------- | ------- | ----------------------------------------- |
| `success` | boolean | Whether the note was successfully deleted |
| `noteGuid` | string | GUID of the deleted note |
### Evernote Get Note [#evernote-get-note]
Retrieve a note from Evernote by its GUID
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | ----------------------------------------------- |
| `apiKey` | string | Yes | Evernote developer token |
| `noteGuid` | string | Yes | GUID of the note to retrieve |
| `withContent` | boolean | No | Whether to include note content (default: true) |
#### Output [#output-5]
| Parameter | Type | Description |
| ----------------- | ------- | ----------------------------------------- |
| `note` | object | The retrieved note |
| ↳ `guid` | string | Unique identifier of the note |
| ↳ `title` | string | Title of the note |
| ↳ `content` | string | ENML content of the note |
| ↳ `contentLength` | number | Length of the note content |
| ↳ `notebookGuid` | string | GUID of the containing notebook |
| ↳ `tagGuids` | array | GUIDs of tags on the note |
| ↳ `tagNames` | array | Names of tags on the note |
| ↳ `created` | number | Creation timestamp in milliseconds |
| ↳ `updated` | number | Last updated timestamp in milliseconds |
| ↳ `active` | boolean | Whether the note is active (not in trash) |
### Evernote Get Notebook [#evernote-get-notebook]
Retrieve a notebook from Evernote by its GUID
#### Input [#input-6]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | -------------------------------- |
| `apiKey` | string | Yes | Evernote developer token |
| `notebookGuid` | string | Yes | GUID of the notebook to retrieve |
#### Output [#output-6]
| Parameter | Type | Description |
| ------------------- | ------- | -------------------------------------- |
| `notebook` | object | The retrieved notebook |
| ↳ `guid` | string | Notebook GUID |
| ↳ `name` | string | Notebook name |
| ↳ `defaultNotebook` | boolean | Whether this is the default notebook |
| ↳ `serviceCreated` | number | Creation timestamp in milliseconds |
| ↳ `serviceUpdated` | number | Last updated timestamp in milliseconds |
| ↳ `stack` | string | Notebook stack name |
### Evernote List Notebooks [#evernote-list-notebooks]
List all notebooks in an Evernote account
#### Input [#input-7]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------ |
| `apiKey` | string | Yes | Evernote developer token |
#### Output [#output-7]
| Parameter | Type | Description |
| ----------- | ----- | ----------------- |
| `notebooks` | array | List of notebooks |
### Evernote List Tags [#evernote-list-tags]
List all tags in an Evernote account
#### Input [#input-8]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------ |
| `apiKey` | string | Yes | Evernote developer token |
#### Output [#output-8]
| Parameter | Type | Description |
| --------- | ----- | ------------ |
| `tags` | array | List of tags |
### Evernote Search Notes [#evernote-search-notes]
Search for notes in Evernote using the Evernote search grammar
#### Input [#input-9]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ----------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Evernote developer token |
| `query` | string | Yes | Search query using Evernote search grammar (e.g., "tag:work intitle:meeting") |
| `notebookGuid` | string | No | Restrict search to a specific notebook by GUID |
| `offset` | number | No | Starting index for results (default: 0) |
| `maxNotes` | number | No | Maximum number of notes to return (default: 25) |
#### Output [#output-9]
| Parameter | Type | Description |
| ------------ | ------ | ------------------------------ |
| `totalNotes` | number | Total number of matching notes |
| `notes` | array | List of matching note metadata |
### Evernote Update Note [#evernote-update-note]
Update an existing note in Evernote
#### Input [#input-10]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------- |
| `apiKey` | string | Yes | Evernote developer token |
| `noteGuid` | string | Yes | GUID of the note to update |
| `title` | string | No | New title for the note |
| `content` | string | No | New content for the note (plain text or ENML) |
| `notebookGuid` | string | No | GUID of the notebook to move the note to |
| `tagNames` | string | No | Comma-separated list of tag names (replaces existing tags) |
#### Output [#output-10]
| Parameter | Type | Description |
| ---------------- | ------ | -------------------------------------- |
| `note` | object | The updated note |
| ↳ `guid` | string | Unique identifier of the note |
| ↳ `title` | string | Title of the note |
| ↳ `content` | string | ENML content of the note |
| ↳ `notebookGuid` | string | GUID of the containing notebook |
| ↳ `tagNames` | array | Tag names on the note |
| ↳ `created` | number | Creation timestamp in milliseconds |
| ↳ `updated` | number | Last updated timestamp in milliseconds |
---
# Exa (/integrations/exa)
{/* MANUAL-CONTENT-START:intro */}
[Exa](https://exa.ai/) is an AI-powered search engine designed specifically for developers and researchers, providing highly relevant and up-to-date information from across the web. It combines advanced semantic search capabilities with AI understanding to deliver more accurate and contextually relevant results than traditional search engines.
With Exa, you can:
* **Search with natural language**: Find information using conversational queries and questions
* **Get precise results**: Receive highly relevant search results with semantic understanding
* **Access up-to-date information**: Retrieve current information from across the web
* **Find similar content**: Discover related resources based on content similarity
* **Extract webpage contents**: Retrieve and process the full text of web pages
* **Answer questions with citations**: Ask questions and receive direct answers with supporting sources
* **Run deep research**: Use Exa Agent for multi-step research, list building, and enrichment
* **Return structured data**: Supply a JSON schema and get typed fields back with field-level citations
In Sim, the Exa integration allows your agents to search the web for information, retrieve content from specific URLs, answer questions with citations, and run deep research with Exa Agent—all programmatically through API calls. This enables your agents to access real-time information from the internet, enhancing their ability to provide accurate, current, and relevant responses. The integration is particularly valuable for research tasks, information gathering, content discovery, and answering questions that require up-to-date information from across the web.
**Migration notes.** Exa has retired its standalone Research endpoint — use the **Agent** operation for deep research. Workflows still configured with the old Research operation are routed to Agent automatically. Exa has also deprecated **Find Similar Links** in favor of Search, and `livecrawl` in favor of `maxAgeHours`.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Exa into the workflow. Can search the web, get page contents, find similar links, answer a question with citations, and run deep research with Exa Agent.
## Actions [#actions]
### Exa Search [#exa-search]
Search the web using Exa AI. Returns relevant search results with titles, URLs, and text snippets.
#### Input [#input]
| Parameter | Type | Required | Description |
| -------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------ |
| `query` | string | Yes | The search query to execute |
| `numResults` | number | No | Number of results to return (1-100). Default: 10 |
| `type` | string | No | Search type: "instant", "fast", "auto", "deep-lite", "deep", or "deep-reasoning". Default: "auto" |
| `includeDomains` | string | No | Comma-separated list of domains to include in results (e.g., "github.com, stackoverflow\.com") |
| `excludeDomains` | string | No | Comma-separated list of domains to exclude from results (e.g., "reddit.com, pinterest.com") |
| `category` | string | No | Filter by category: company, publication, news, personal site, financial report, people |
| `text` | boolean | No | Include full text content in results (default: false) |
| `highlights` | boolean | No | Include highlighted snippets in results (default: false) |
| `summary` | boolean | No | Include AI-generated summaries in results (default: false) |
| `summaryQuery` | string | No | Query to focus the generated summaries on a specific question |
| `subpages` | number | No | Number of subpages to crawl per result (0-100). Default: 0 |
| `subpageTarget` | string | No | Comma-separated keywords to target specific subpages (e.g., "docs,pricing,about") |
| `extrasLinks` | number | No | Number of links to extract from each result page (0-1000). Default: 0 |
| `extrasImageLinks` | number | No | Number of image URLs to extract from each result page (0-1000). Default: 0 |
| `outputSchema` | json | No | JSON Schema describing a synthesized answer to build from the results. Returned in structuredOutput. |
| `systemPrompt` | string | No | Additional guidance for generating the synthesized output |
| `userLocation` | string | No | Two-letter ISO country code to localize results (e.g., "US") |
| `maxAgeHours` | number | No | Cache freshness in hours (-1 to 720). 0 always crawls live, -1 uses cache only. Cannot be combined with livecrawl. |
| `livecrawlTimeout` | number | No | Live crawl timeout in milliseconds (max 90000). Default: 10000 |
| `livecrawl` | string | No | Deprecated: use maxAgeHours instead. Live crawling mode: never, fallback, always, or preferred |
| `startPublishedDate` | string | No | Only include results published on or after this ISO 8601 date (e.g., "2024-01-01" or "2024-01-01T00:00:00.000Z") |
| `endPublishedDate` | string | No | Only include results published on or before this ISO 8601 date |
| `startCrawlDate` | string | No | Deprecated: use startPublishedDate. Only include results crawled on or after this ISO 8601 date |
| `endCrawlDate` | string | No | Deprecated: use endPublishedDate. Only include results crawled on or before this ISO 8601 date |
| `apiKey` | string | Yes | Exa AI API Key |
#### Output [#output]
| Parameter | Type | Description |
| ------------------- | ------ | ------------------------------------------------------------------- |
| `results` | array | Search results with titles, URLs, and text snippets |
| ↳ `id` | string | Result identifier, usable as an id on the Get Contents operation |
| ↳ `title` | string | The title of the search result |
| ↳ `url` | string | The URL of the search result |
| ↳ `publishedDate` | string | Date when the content was published |
| ↳ `author` | string | The author of the content |
| ↳ `summary` | string | A brief summary of the content |
| ↳ `favicon` | string | URL of the site's favicon |
| ↳ `image` | string | URL of a representative image from the page |
| ↳ `text` | string | Text snippet or full content from the page |
| ↳ `highlights` | array | Relevant snippets extracted from the page |
| ↳ `highlightScores` | array | Similarity score for each highlight |
| ↳ `subpages` | json | Crawled subpages of the result |
| ↳ `entities` | json | Structured entity data for company, people, and publication results |
| ↳ `extras` | json | Extracted links and image links when requested |
| ↳ `score` | number | Relevance score. Only returned by the legacy neural search type |
| `requestId` | string | Exa request identifier, useful for support |
| `structuredOutput` | json | Synthesized answer matching outputSchema, when one was supplied |
| `grounding` | json | Field-level citations backing the synthesized output |
### Exa Get Contents [#exa-get-contents]
Retrieve the contents of webpages using Exa AI. Returns the title, text content, and optional summaries for each URL.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------ |
| `urls` | string | No | Comma-separated list of URLs to retrieve content from (1-100). Provide either urls or ids, not both. |
| `ids` | string | No | Comma-separated list of result IDs from a prior Exa search (1-100). Provide either urls or ids, not both. |
| `text` | boolean | No | If true, returns full page text with default settings. If false, disables text return. |
| `summary` | boolean | No | Include an AI-generated summary of each page (default: false) |
| `summaryQuery` | string | No | Query to guide the summary generation |
| `subpages` | number | No | Number of subpages to crawl from the provided URLs (0-100) |
| `subpageTarget` | string | No | Comma-separated keywords to target specific subpages (e.g., "docs,tutorial,about") |
| `highlights` | boolean | No | Include highlighted snippets in results (default: false) |
| `extrasLinks` | number | No | Number of links to extract from each page (0-1000). Default: 0 |
| `extrasImageLinks` | number | No | Number of image URLs to extract from each page (0-1000). Default: 0 |
| `maxAgeHours` | number | No | Cache freshness in hours (-1 to 720). 0 always crawls live, -1 uses cache only. Cannot be combined with livecrawl. |
| `livecrawlTimeout` | number | No | Live crawl timeout in milliseconds (max 90000). Default: 10000 |
| `livecrawl` | string | No | Deprecated: use maxAgeHours instead. Live crawling mode: never, fallback, always, or preferred |
| `apiKey` | string | Yes | Exa AI API Key |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------------- | ------ | ------------------------------------------------------------------------------------- |
| `results` | array | Retrieved content from URLs with title, text, and summaries |
| ↳ `id` | string | Exa identifier for the retrieved document |
| ↳ `url` | string | The URL that content was retrieved from |
| ↳ `title` | string | The title of the webpage |
| ↳ `text` | string | The full text content of the webpage |
| ↳ `summary` | string | AI-generated summary of the webpage content |
| ↳ `highlights` | array | Relevant snippets extracted from the page |
| ↳ `highlightScores` | array | Similarity score for each highlight |
| ↳ `subpages` | json | Crawled subpages of the document |
| ↳ `entities` | json | Structured entity data for company, people, and publication pages |
| ↳ `extras` | json | Extracted links and image links when requested |
| `statuses` | json | Per-URL crawl outcome, showing which pages succeeded and whether they came from cache |
| `requestId` | string | Exa request identifier, useful for support |
### Exa Find Similar Links [#exa-find-similar-links]
Find webpages similar to a given URL using Exa AI. Deprecated by Exa in favor of Search — prefer Search for new workflows.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------ |
| `url` | string | Yes | The URL to find similar links for |
| `numResults` | number | No | Number of similar links to return (1-100). Default: 10 |
| `text` | boolean | No | Whether to include the full text of the similar pages |
| `includeDomains` | string | No | Comma-separated list of domains to include in results (e.g., "github.com, stackoverflow\.com") |
| `excludeDomains` | string | No | Comma-separated list of domains to exclude from results (e.g., "reddit.com, pinterest.com") |
| `excludeSourceDomain` | boolean | No | Exclude the source domain from results (default: false) |
| `category` | string | No | Filter by category: company, publication, news, personal site, financial report, people |
| `highlights` | boolean | No | Include highlighted snippets in results (default: false) |
| `summary` | boolean | No | Include AI-generated summaries in results (default: false) |
| `maxAgeHours` | number | No | Cache freshness in hours (-1 to 720). 0 always crawls live, -1 uses cache only. Cannot be combined with livecrawl. |
| `livecrawlTimeout` | number | No | Live crawl timeout in milliseconds (max 90000). Default: 10000 |
| `livecrawl` | string | No | Deprecated: use maxAgeHours instead. Live crawling mode: never, fallback, always, or preferred |
| `apiKey` | string | Yes | Exa AI API Key |
#### Output [#output-2]
| Parameter | Type | Description |
| -------------- | ------ | -------------------------------------------------------- |
| `similarLinks` | array | Similar links found with titles, URLs, and text snippets |
| ↳ `id` | string | Exa identifier for the similar page |
| ↳ `title` | string | The title of the similar webpage |
| ↳ `url` | string | The URL of the similar webpage |
| ↳ `text` | string | Text snippet or full content from the similar webpage |
| ↳ `summary` | string | AI-generated summary of the similar webpage |
| ↳ `highlights` | array | Relevant snippets extracted from the page |
| ↳ `score` | number | Similarity score indicating how similar the page is |
| `requestId` | string | Exa request identifier, useful for support |
### Exa Answer [#exa-answer]
Get an AI-generated answer to a question with citations from the web using Exa AI.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| -------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------- |
| `query` | string | Yes | The question to answer |
| `text` | boolean | No | Include the full page text of each cited source (default: false). This does not affect the answer itself. |
| `outputSchema` | json | No | JSON Schema describing the answer shape. When supplied, the answer is returned as a structured object instead of a string. |
| `apiKey` | string | Yes | Exa AI API Key |
#### Output [#output-3]
| Parameter | Type | Description |
| ----------------- | ------ | -------------------------------------------------------------------------------------------------------- |
| `answer` | json | AI-generated answer to the question. A string, or an object matching outputSchema when one was supplied. |
| `citations` | array | Sources and citations for the answer |
| ↳ `id` | string | Exa identifier for the cited source |
| ↳ `title` | string | The title of the cited source |
| ↳ `url` | string | The URL of the cited source |
| ↳ `text` | string | Full page text of the cited source, when text is enabled |
| ↳ `author` | string | The author of the cited source |
| ↳ `publishedDate` | string | Publication date of the cited source |
| `requestId` | string | Exa request identifier, useful for support |
### Exa Agent [#exa-agent]
Run a deep research task with Exa Agent. Handles multi-step list building, enrichment, and research, returning a written answer with field-level citations and optional structured output.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------------------------ |
| `query` | string | Yes | The research question or instructions for the agent |
| `effort` | string | No | Cost and depth tradeoff: minimal, low, medium, high, xhigh, or auto (default: auto) |
| `outputSchema` | json | No | JSON Schema describing the structured result to return. Returned in the structured output. |
| `systemPrompt` | string | No | Additional guidance for how the agent should behave or format its answer |
| `previousRunId` | string | No | ID of a completed agent run to continue from, for follow-up questions |
| `apiKey` | string | Yes | Exa AI API Key |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------ | ------ | ------------------------------------------------------------------------------------------------------------------- |
| `runId` | string | Identifier of the agent run, reusable as previousRunId |
| `status` | string | Final status of the agent run |
| `stopReason` | string | Why the agent stopped, such as schema\_satisfied |
| `text` | string | The written answer produced by the agent |
| `structured` | json | Structured result matching outputSchema, when one was supplied |
| `grounding` | json | Field-level citations backing the agent output |
| `research` | array | The agent answer in the shape the retired Research operation emitted, so workflows that reference it keep resolving |
---
# Extend (/integrations/extend)
{/* MANUAL-CONTENT-START:intro */}
[Extend](https://www.extend.ai/) is a document processing platform that uses AI to parse and extract structured content from documents, turning unstructured files into usable data.
In Sim, the Extend integration allows your agents to submit a document for parsing and receive back the processed content as structured chunks and block-level elements, along with the page count and credits consumed by the run. This enables workflows to pull structured data out of documents—such as PDFs or other file references—for downstream steps to consume, without manually building document-parsing logic.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Extend AI into the workflow. Parse and extract structured content from documents or file references.
## Actions [#actions]
### Extend Document Parser [#extend-document-parser]
#### Input [#input]
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ------------------------ |
| `file` | file | Yes | Document to be processed |
#### Output [#output]
| Parameter | Type | Description |
| ------------- | ------ | --------------------------------------------------- |
| `id` | string | Unique identifier for the parser run |
| `status` | string | Processing status |
| `chunks` | json | Parsed document content chunks |
| `blocks` | json | Block-level document elements with type and content |
| `pageCount` | number | Number of pages processed |
| `creditsUsed` | number | API credits consumed |
---
# Fathom (/integrations/fathom)
{/* MANUAL-CONTENT-START:intro */}
[Fathom](https://fathom.video/) is an AI meeting assistant that automatically records, transcribes, and summarizes your video calls. It works across platforms like Zoom, Google Meet, and Microsoft Teams, generating highlights and action items so your team can stay focused during meetings and catch up quickly afterward.
With the Sim Fathom integration, you can:
* **List and filter meetings**: Retrieve recent meetings recorded by you or shared with your team, with optional filters by date range, recorder, or team.
* **Get meeting summaries**: Pull structured, markdown-formatted summaries for any recorded meeting to quickly review key discussion points.
* **Access full transcripts**: Retrieve complete transcripts with speaker attribution and timestamps for detailed review or downstream processing.
* **Manage teams and members**: List teams in your Fathom organization and view team member details to coordinate meeting workflows.
**How it works in Sim:**
Add a Fathom block to your workflow and select an operation. Provide your Fathom API key and any required parameters (such as a recording ID for summaries and transcripts). The block calls the Fathom API and returns structured data you can pass to downstream blocks — for example, sending a summary to Slack or extracting action items with an AI agent.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Fathom AI Notetaker into your workflow. List meetings, get transcripts and summaries, and manage team members and teams. Can also trigger workflows when new meeting content is ready.
## Actions [#actions]
### Fathom List Meetings [#fathom-list-meetings]
List recent meetings recorded by the user or shared to their team.
#### Input [#input]
| Parameter | Type | Required | Description |
| ----------------------------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Fathom API Key |
| `includeSummary` | string | No | Include meeting summary (true/false) |
| `includeTranscript` | string | No | Include meeting transcript (true/false) |
| `includeActionItems` | string | No | Include action items (true/false) |
| `includeCrmMatches` | string | No | Include linked CRM matches (true/false) |
| `includeHighlights` | string | No | Include meeting highlights (true/false) |
| `createdAfter` | string | No | Filter meetings created after this ISO 8601 timestamp |
| `createdBefore` | string | No | Filter meetings created before this ISO 8601 timestamp |
| `recordedBy` | string | No | Filter by recorder email address |
| `teams` | string | No | Filter by team name |
| `meetingType` | string | No | Filter by meeting type name |
| `calendarInviteesDomains` | string | No | Filter by calendar invitee company domain (exact match) |
| `calendarInviteesDomainsType` | string | No | Filter by invitee domain type: all, only\_internal, or one\_or\_more\_external |
| `cursor` | string | No | Pagination cursor from a previous response |
#### Output [#output]
| Parameter | Type | Description |
| ---------------------------------- | ------- | ---------------------------------------------------------------------- |
| `meetings` | array | List of meetings |
| ↳ `title` | string | Meeting title |
| ↳ `meeting_title` | string | Calendar event title |
| ↳ `meeting_type` | string | Meeting type name |
| ↳ `recording_id` | number | Unique recording ID |
| ↳ `url` | string | URL to view the meeting |
| ↳ `meeting_url` | string | URL of the underlying video call (Zoom, Meet, Teams, etc.) |
| ↳ `share_url` | string | Shareable URL |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `scheduled_start_time` | string | Scheduled start time |
| ↳ `scheduled_end_time` | string | Scheduled end time |
| ↳ `recording_start_time` | string | Recording start time |
| ↳ `recording_end_time` | string | Recording end time |
| ↳ `transcript_language` | string | Transcript language |
| ↳ `calendar_invitees_domains_type` | string | Invitee domain type: only\_internal or one\_or\_more\_external |
| ↳ `shared_with` | string | Sharing scope: no\_teams, single\_team, multiple\_teams, or all\_teams |
| ↳ `recorded_by` | object | Recorder details |
| ↳ `name` | string | Name of the recorder |
| ↳ `email` | string | Email of the recorder |
| ↳ `email_domain` | string | Email domain of the recorder |
| ↳ `team` | string | Recorder team name |
| ↳ `calendar_invitees` | array | Calendar invitees for the meeting |
| ↳ `name` | string | Invitee name |
| ↳ `email` | string | Invitee email |
| ↳ `email_domain` | string | Invitee email domain |
| ↳ `is_external` | boolean | Whether the invitee is external |
| ↳ `matched_speaker_display_name` | string | Matched transcript speaker display name |
| ↳ `default_summary` | object | Meeting summary |
| ↳ `template_name` | string | Summary template name |
| ↳ `markdown_formatted` | string | Markdown-formatted summary |
| ↳ `transcript` | array | Transcript entries with speaker, text, and timestamp |
| ↳ `speaker` | object | Speaker information |
| ↳ `display_name` | string | Speaker display name |
| ↳ `matched_calendar_invitee_email` | string | Matched calendar invitee email |
| ↳ `text` | string | Transcript text |
| ↳ `timestamp` | string | Timestamp (HH:MM:SS) |
| ↳ `action_items` | array | Action items extracted from the meeting |
| ↳ `description` | string | Action item description |
| ↳ `user_generated` | boolean | Whether the action item was user-generated |
| ↳ `completed` | boolean | Whether the action item is completed |
| ↳ `recording_timestamp` | string | Timestamp in the recording (HH:MM:SS) |
| ↳ `recording_playback_url` | string | Playback URL for the action item moment |
| ↳ `assignee` | object | Assignee details |
| ↳ `name` | string | Assignee name |
| ↳ `email` | string | Assignee email |
| ↳ `team` | string | Assignee team |
| ↳ `highlights` | array | Meeting highlights with type, summary, text, and start/end time |
| ↳ `type` | string | Highlight type |
| ↳ `summary` | string | Highlight summary |
| ↳ `text` | string | Highlight text |
| ↳ `start_time` | number | Start time in seconds |
| ↳ `end_time` | number | End time in seconds |
| ↳ `crm_matches` | object | Matched CRM contacts, companies, and deals |
| ↳ `contacts` | array | Matched CRM contacts |
| ↳ `name` | string | Contact name |
| ↳ `email` | string | Contact email |
| ↳ `record_url` | string | CRM record URL |
| ↳ `companies` | array | Matched CRM companies |
| ↳ `name` | string | Company name |
| ↳ `record_url` | string | CRM record URL |
| ↳ `deals` | array | Matched CRM deals |
| ↳ `name` | string | Deal name |
| ↳ `amount` | number | Deal amount |
| ↳ `record_url` | string | CRM record URL |
| ↳ `error` | string | CRM match error, if any |
| `next_cursor` | string | Pagination cursor for next page |
### Fathom List Meeting Types [#fathom-list-meeting-types]
List meeting types configured in your Fathom organization.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------ |
| `apiKey` | string | Yes | Fathom API Key |
| `cursor` | string | No | Pagination cursor from a previous response |
#### Output [#output-1]
| Parameter | Type | Description |
| -------------- | ------ | --------------------------------------- |
| `meetingTypes` | array | List of meeting types |
| ↳ `name` | string | Meeting type name |
| ↳ `status` | string | Meeting type status: active or inactive |
| ↳ `created_at` | string | Date the meeting type was created |
| `next_cursor` | string | Pagination cursor for next page |
### Fathom Get Summary [#fathom-get-summary]
Get the call summary for a specific meeting recording.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------- |
| `apiKey` | string | Yes | Fathom API Key |
| `recordingId` | string | Yes | The recording ID of the meeting |
#### Output [#output-2]
| Parameter | Type | Description |
| -------------------- | ------ | --------------------------------- |
| `template_name` | string | Name of the summary template used |
| `markdown_formatted` | string | Markdown-formatted summary text |
### Fathom Get Transcript [#fathom-get-transcript]
Get the full transcript for a specific meeting recording.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------- |
| `apiKey` | string | Yes | Fathom API Key |
| `recordingId` | string | Yes | The recording ID of the meeting |
#### Output [#output-3]
| Parameter | Type | Description |
| ---------------------------------- | ------ | ------------------------------------------------------------- |
| `transcript` | array | Array of transcript entries with speaker, text, and timestamp |
| ↳ `speaker` | object | Speaker information |
| ↳ `display_name` | string | Speaker display name |
| ↳ `matched_calendar_invitee_email` | string | Matched calendar invitee email |
| ↳ `text` | string | Transcript text |
| ↳ `timestamp` | string | Timestamp (HH:MM:SS) |
### Fathom List Team Members [#fathom-list-team-members]
List team members in your Fathom organization.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------ |
| `apiKey` | string | Yes | Fathom API Key |
| `teams` | string | No | Team name to filter by |
| `cursor` | string | No | Pagination cursor from a previous response |
#### Output [#output-4]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------- |
| `members` | array | List of team members |
| ↳ `name` | string | Team member name |
| ↳ `email` | string | Team member email |
| ↳ `created_at` | string | Date the member was added |
| `next_cursor` | string | Pagination cursor for next page |
### Fathom List Teams [#fathom-list-teams]
List teams in your Fathom organization.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------ |
| `apiKey` | string | Yes | Fathom API Key |
| `cursor` | string | No | Pagination cursor from a previous response |
#### Output [#output-5]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------- |
| `teams` | array | List of teams |
| ↳ `name` | string | Team name |
| ↳ `created_at` | string | Date the team was created |
| `next_cursor` | string | Pagination cursor for next page |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
### Fathom New Meeting Content [#fathom-new-meeting-content]
Trigger workflow when new meeting content is ready in Fathom
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| -------------------- | ------- | -------- | ------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Required to create the webhook in Fathom. |
| `triggeredFor` | string | No | Which recording types should trigger this webhook. |
| `includeSummary` | boolean | No | Include the meeting summary in the webhook payload. |
| `includeTranscript` | boolean | No | Include the full transcript in the webhook payload. |
| `includeActionItems` | boolean | No | Include action items extracted from the meeting. |
| `includeCrmMatches` | boolean | No | Include matched CRM contacts, companies, and deals from your linked CRM. |
#### Output [#output-6]
| Parameter | Type | Description |
| -------------------------------- | ------ | ------------------------------------------------------------- |
| `title` | string | Meeting title |
| `meeting_title` | string | Calendar event title |
| `recording_id` | number | Unique recording ID |
| `url` | string | URL to view the meeting in Fathom |
| `share_url` | string | Shareable URL for the meeting |
| `created_at` | string | ISO 8601 creation timestamp |
| `scheduled_start_time` | string | Scheduled start time |
| `scheduled_end_time` | string | Scheduled end time |
| `recording_start_time` | string | Recording start time |
| `recording_end_time` | string | Recording end time |
| `transcript_language` | string | Language of the transcript |
| `calendar_invitees_domains_type` | string | Domain type: only\_internal or one\_or\_more\_external |
| `recorded_by` | object | Recorder details |
| ↳ `name` | string | Name of the recorder |
| ↳ `email` | string | Email of the recorder |
| `calendar_invitees` | array | Array of calendar invitees with name and email |
| `default_summary` | object | Meeting summary |
| ↳ `template_name` | string | Summary template name |
| ↳ `markdown_formatted` | string | Markdown-formatted summary |
| `transcript` | array | Array of transcript entries with speaker, text, and timestamp |
| `action_items` | array | Array of action items extracted from the meeting |
| `crm_matches` | json | Matched CRM contacts, companies, and deals from linked CRM |
***
### Fathom Webhook [#fathom-webhook]
Generic webhook trigger for all Fathom events
#### Configuration [#configuration-1]
| Parameter | Type | Required | Description |
| -------------------- | ------- | -------- | ------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Required to create the webhook in Fathom. |
| `triggeredFor` | string | No | Which recording types should trigger this webhook. |
| `includeSummary` | boolean | No | Include the meeting summary in the webhook payload. |
| `includeTranscript` | boolean | No | Include the full transcript in the webhook payload. |
| `includeActionItems` | boolean | No | Include action items extracted from the meeting. |
| `includeCrmMatches` | boolean | No | Include matched CRM contacts, companies, and deals from your linked CRM. |
#### Output [#output-7]
| Parameter | Type | Description |
| -------------------------------- | ------ | ------------------------------------------------------------- |
| `title` | string | Meeting title |
| `meeting_title` | string | Calendar event title |
| `recording_id` | number | Unique recording ID |
| `url` | string | URL to view the meeting in Fathom |
| `share_url` | string | Shareable URL for the meeting |
| `created_at` | string | ISO 8601 creation timestamp |
| `scheduled_start_time` | string | Scheduled start time |
| `scheduled_end_time` | string | Scheduled end time |
| `recording_start_time` | string | Recording start time |
| `recording_end_time` | string | Recording end time |
| `transcript_language` | string | Language of the transcript |
| `calendar_invitees_domains_type` | string | Domain type: only\_internal or one\_or\_more\_external |
| `recorded_by` | object | Recorder details |
| ↳ `name` | string | Name of the recorder |
| ↳ `email` | string | Email of the recorder |
| `calendar_invitees` | array | Array of calendar invitees with name and email |
| `default_summary` | object | Meeting summary |
| ↳ `template_name` | string | Summary template name |
| ↳ `markdown_formatted` | string | Markdown-formatted summary |
| `transcript` | array | Array of transcript entries with speaker, text, and timestamp |
| `action_items` | array | Array of action items extracted from the meeting |
| `crm_matches` | json | Matched CRM contacts, companies, and deals from linked CRM |
---
# File (/integrations/file)
{/* MANUAL-CONTENT-START:intro */}
The File block is a built-in Sim block for working with files stored in the workspace, or fetched from external URLs. It handles reading, writing, appending, compressing, decompressing, and sharing files as part of a workflow.
With the File block, you can:
* **Read and extract content**: Load workspace file objects and extract their text content
* **Fetch from URLs**: Retrieve and parse files from external URLs with custom headers
* **Write and append**: Create new workspace files or append content to existing ones
* **Compress and decompress**: Bundle files into a .zip archive or extract an archive into the workspace
* **Manage sharing**: Enable or disable a public share link for a file, with public, password, email, or SSO access modes
In Sim, the File block allows your agents to read and extract text from workspace files, fetch and parse files from URLs, write or append content to files, bundle files into or out of .zip archives, and control public sharing access for a file—all programmatically as steps in a workflow. This makes it possible to move file content into and out of a workflow, package outputs for download or transfer, and expose files to external users through a managed share link.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Read workspace file objects, extract the text content of files, fetch and parse files from URLs with optional headers, write new workspace files, append content to existing files, compress files into a .zip archive, extract a .zip archive into the workspace, or manage the public share link for a file.
## Actions [#actions]
### File Read [#file-read]
#### Input [#input]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------- |
| `fileId` | string | No | Canonical workspace file ID, or an array of canonical workspace file IDs. |
| `fileInput` | file | No | Selected workspace file object. |
#### Output [#output]
| Parameter | Type | Description |
| --------- | ------- | ---------------------- |
| `files` | file\[] | Workspace file objects |
### File Get Content [#file-get-content]
Extract the text content of one or more workspace files from selected file objects or canonical workspace file IDs.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------- |
| `fileId` | string | No | Canonical workspace file ID, or an array of canonical workspace file IDs. |
| `fileInput` | file | No | Selected workspace file object, or an array of file objects. |
#### Output [#output-1]
| Parameter | Type | Description |
| ---------- | ----- | -------------------------------------------------------------- |
| `contents` | array | Array of file text contents, one entry per file in input order |
### File Fetch [#file-fetch]
Fetch and parse a file from a URL with optional custom headers.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------ |
| `headers` | object | No | HTTP headers to include when fetching URL-based files. |
#### Output [#output-2]
| Parameter | Type | Description |
| ----------------- | ------- | ------------------------------------- |
| `files` | file\[] | Fetched files as UserFile objects |
| `combinedContent` | string | Combined content of all fetched files |
### File Write [#file-write]
Create a new workspace file. If a file with the same name already exists, a numeric suffix is added (e.g., "data (1).csv").
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------- |
| `fileName` | string | Yes | File name (e.g., "data.csv"). If a file with this name exists, a numeric suffix is added automatically. |
| `content` | string | Yes | The text content to write to the file. |
| `contentType` | string | No | MIME type for new files (e.g., "text/plain"). Auto-detected from file extension if omitted. |
#### Output [#output-3]
| Parameter | Type | Description |
| --------- | ------ | ---------------------- |
| `id` | string | File ID |
| `name` | string | File name |
| `size` | number | File size in bytes |
| `url` | string | URL to access the file |
### File Append [#file-append]
Append content to an existing workspace file. The file must already exist. Content is added to the end of the file.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------ |
| `fileName` | string | Yes | Name of an existing workspace file to append to. |
| `content` | string | Yes | The text content to append to the file. |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ------ | ---------------------- |
| `id` | string | File ID |
| `name` | string | File name |
| `size` | number | File size in bytes |
| `url` | string | URL to access the file |
### File Compress [#file-compress]
Compress one or more workspace files into a single .zip archive stored in the workspace, for bundling files to download, transfer, or store. Preserves the workspace folder structure of the selected files.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `fileId` | string | No | Canonical workspace file ID, or an array of canonical workspace file IDs. |
| `fileInput` | file | No | Selected workspace file object, or an array of file objects. |
| `archiveName` | string | No | Name for the .zip archive (e.g., "documents.zip"). Defaults to the source file name when compressing a single file, otherwise "archive.zip". |
#### Output [#output-5]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------------------------ |
| `id` | string | Compressed archive file ID |
| `name` | string | Compressed archive file name |
| `size` | number | Compressed archive size in bytes |
| `url` | string | URL to access the compressed archive |
| `files` | file\[] | Compressed archive file object, as a single-item array |
### File Decompress [#file-decompress]
Extract the contents of a .zip archive into the workspace, preserving the archive folder structure.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------- |
| `fileId` | string | No | Canonical workspace file ID of the .zip archive to extract. |
| `fileInput` | file | No | Selected .zip archive file object. |
#### Output [#output-6]
| Parameter | Type | Description |
| --------- | ------- | -------------------------------- |
| `files` | file\[] | Extracted workspace file objects |
### Manage Sharing [#manage-sharing]
Enable or disable the public share link for a workspace file, and set its access mode (public, password, email, or SSO). Idempotent: the public link stays stable across changes.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| --------------- | ------- | -------- | ---------------------------------------------------------------------------------------- |
| `fileId` | string | No | Canonical ID of the workspace file to update sharing for. |
| `fileInput` | file | No | Selected workspace file object (from the file picker). |
| `isActive` | boolean | Yes | Whether the public link is enabled. Set to false to make the file private. |
| `authType` | string | No | Access mode for the link: "public", "password", "email", or "sso". Defaults to "public". |
| `password` | string | No | Password to protect the link. Required when authType is "password". |
| `allowedEmails` | array | No | Allowed emails or "@domain" patterns. Required when authType is "email" or "sso". |
#### Output [#output-7]
| Parameter | Type | Description |
| --------------- | ------- | ---------------------------------------------- |
| `url` | string | Public share URL for the file |
| `isActive` | boolean | Whether the public link is enabled |
| `authType` | string | Access mode: public, password, email, or sso |
| `hasPassword` | boolean | Whether the share is password-protected |
| `allowedEmails` | array | Allowed emails/domains for email or SSO access |
---
# Findymail (/integrations/findymail)
{/* MANUAL-CONTENT-START:intro */}
[Findymail](https://findymail.com/) is a B2B contact data platform for finding and verifying work emails, phone numbers, and enriched profile data on company employees. It combines real-time email finding, deliverability verification, reverse-lookup, and technology stack detection in a single API.
With Findymail, you can:
* **Find work emails by name and company:** Resolve a verified work email from a person's name plus a company domain or company name.
* **Find emails from LinkedIn:** Look up the verified work email behind any LinkedIn profile URL.
* **Find contacts by role:** Search a company domain for verified emails matching specific target roles (e.g., CEO, Founder).
* **Verify deliverability:** Check whether an email is deliverable and identify the underlying mail provider.
* **Reverse-lookup profiles:** Given an email, return the matching LinkedIn URL and an optional enriched profile (job, education, skills, certificates).
* **Enrich companies and employees:** Look up company metadata by LinkedIn URL, domain, or name, and find employees by website and target job titles.
* **Find phone numbers:** Retrieve a contact's phone number (US-only) from a LinkedIn profile URL.
* **Detect technology stacks:** Search the technology catalog or look up the full tech stack of a company by domain.
In Sim, the Findymail integration lets your agents programmatically build verified contact lists, enrich CRMs, qualify leads, and gather technographic data without leaving your workflow. Use it to automate outbound prospecting, augment incoming form submissions, validate email captures before sending, and trigger downstream actions when a verified contact is found.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Findymail to find verified work emails by name, domain, or LinkedIn URL, verify deliverability, reverse-lookup profiles from emails, enrich company data, find employees by job title, look up phone numbers, search technology stacks, and check credit usage.
## Actions [#actions]
### Findymail Verify Email [#findymail-verify-email]
Verifies the deliverability of an email address. Uses one verifier credit.
#### Input [#input]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------------------------------------------- |
| `email` | string | Yes | Email address to verify (e.g., [john@example.com](mailto:john@example.com)) |
| `apiKey` | string | Yes | Findymail API Key |
#### Output [#output]
| Parameter | Type | Description |
| ---------- | ------- | ------------------------------------------------ |
| `email` | string | The verified email address |
| `verified` | boolean | Whether the email is verified as deliverable |
| `provider` | string | Email service provider (e.g., Google, Microsoft) |
### Findymail Find Email From Name [#findymail-find-email-from-name]
Find someone's email from their name and a company domain or company name. Uses one finder credit when a verified email is found.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------- |
| `name` | string | Yes | Person's full name (e.g., 'John Doe') |
| `domain` | string | Yes | Company domain (preferred) or company name (e.g., stripe.com) |
| `apiKey` | string | Yes | Findymail API Key |
#### Output [#output-1]
| Parameter | Type | Description |
| ---------- | ------ | --------------------- |
| `contact` | object | Contact information |
| ↳ `name` | string | Contact full name |
| ↳ `email` | string | Contact email address |
| ↳ `domain` | string | Email domain |
### Findymail Find Emails By Domain [#findymail-find-emails-by-domain]
Find verified contacts at a given domain matching one or more target roles (max 3 roles). Limited to 5 concurrent synchronous requests.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------------------------- |
| `domain` | string | Yes | Company domain (e.g., stripe.com) |
| `roles` | array | Yes | Target roles at the company (max 3, e.g., \["CEO", "Founder"]) |
| `apiKey` | string | Yes | Findymail API Key |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------- | ------ | ---------------------- |
| `contacts` | array | List of contacts found |
| ↳ `name` | string | Contact full name |
| ↳ `email` | string | Contact email address |
| ↳ `domain` | string | Email domain |
### Findymail Find Email From LinkedIn [#findymail-find-email-from-linkedin]
Find someone's email from a LinkedIn profile URL or username. Uses one finder credit when a verified email is found.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- |
| `linkedin_url` | string | Yes | Person's LinkedIn URL or username (e.g., '[https://linkedin.com/in/johndoe](https://linkedin.com/in/johndoe)' or 'johndoe') |
| `apiKey` | string | Yes | Findymail API Key |
#### Output [#output-3]
| Parameter | Type | Description |
| ---------- | ------ | --------------------- |
| `contact` | object | Contact information |
| ↳ `name` | string | Contact full name |
| ↳ `email` | string | Contact email address |
| ↳ `domain` | string | Email domain |
### Findymail Reverse Email Lookup [#findymail-reverse-email-lookup]
Find a business profile from an email address. Uses 1 finder credit if a profile is found, 2 credits if returning full profile data.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| -------------- | ------- | -------- | ------------------------------------------------------------ |
| `email` | string | Yes | Work or personal email address to look up |
| `with_profile` | boolean | No | Whether to return enriched profile metadata (default: false) |
| `apiKey` | string | Yes | Findymail API Key |
#### Output [#output-4]
| Parameter | Type | Description |
| -------------------- | ------- | --------------------------------------------------------------------- |
| `email` | string | The email address that was looked up |
| `linkedin_url` | string | LinkedIn profile URL |
| `fullName` | string | Full name from profile |
| `username` | string | LinkedIn username |
| `headline` | string | Profile headline |
| `jobTitle` | string | Current job title |
| `summary` | string | Profile summary |
| `city` | string | City |
| `region` | string | Region or state |
| `country` | string | Country |
| `companyLinkedinUrl` | string | Current company LinkedIn URL |
| `companyName` | string | Current company name |
| `companyWebsite` | string | Current company website |
| `isPremium` | boolean | Whether the profile has LinkedIn Premium |
| `isOpenProfile` | boolean | Whether the profile is an Open Profile |
| `skills` | array | List of profile skills |
| `jobs` | array | Job history entries |
| `educations` | array | Education history (school, degree, fieldOfStudy, startDate, endDate) |
| `certificates` | array | Certifications (name, issuingOrganization, issueDate, expirationDate) |
### Findymail Get Company [#findymail-get-company]
Retrieve company information from a LinkedIn URL, domain, or company name. Uses 1 finder credit per successful response.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------- |
| `linkedin_url` | string | No | Company LinkedIn URL (e.g., [https://www.linkedin.com/company/stripe/\\](https://www.linkedin.com/company/stripe/\\)) |
| `domain` | string | No | Company domain (e.g., stripe.com) |
| `name` | string | No | Company name (e.g., Stripe) |
| `apiKey` | string | Yes | Findymail API Key |
#### Output [#output-5]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------------ |
| `name` | string | Company name |
| `domain` | string | Company domain |
| `company_size` | string | Employee headcount range (e.g., 1001-5000) |
| `industry` | string | Industry classification |
| `linkedin_url` | string | Company LinkedIn URL |
| `description` | string | Company description |
### Findymail Find Employees [#findymail-find-employees]
Find employees at a company by website and target job titles. Uses 1 credit per found contact. Does not return email addresses.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ----------------------------------------------------------------------------- |
| `website` | string | Yes | Company website or domain (e.g., google.com) |
| `job_titles` | array | Yes | Target job titles to search for (max 10, e.g., \["Software Engineer", "CEO"]) |
| `count` | number | No | Number of contacts to return (max 5, default 1) |
| `apiKey` | string | Yes | Findymail API Key |
#### Output [#output-6]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------------------------- |
| `employees` | array | List of employees matching the search criteria |
| ↳ `name` | string | Employee full name |
| ↳ `linkedinUrl` | string | LinkedIn profile URL |
| ↳ `companyWebsite` | string | Company website |
| ↳ `companyName` | string | Company name |
| ↳ `jobTitle` | string | Job title |
### Findymail Find Phone [#findymail-find-phone]
Find someone's phone number from a LinkedIn profile URL. Uses 10 finder credits if a phone is found. EU citizens are excluded for legal reasons.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- |
| `linkedin_url` | string | Yes | Person's LinkedIn URL or username (e.g., '[https://linkedin.com/in/johndoe](https://linkedin.com/in/johndoe)' or 'johndoe') |
| `apiKey` | string | Yes | Findymail API Key |
#### Output [#output-7]
| Parameter | Type | Description |
| ----------- | ------ | ------------------------------------------------------------ |
| `phone` | string | Phone number in E.164 format. Only available for US numbers. |
| `line_type` | string | Phone line type (e.g., "Mobile", "Landline") |
### Findymail Search Technologies [#findymail-search-technologies]
Search the technology catalog by name. Returns up to 25 technologies. Free endpoint, rate limited to 10 requests per minute.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------------- |
| `q` | string | Yes | Search term (min 2 characters, e.g., "React") |
| `apiKey` | string | Yes | Findymail API Key |
#### Output [#output-8]
| Parameter | Type | Description |
| -------------------- | ------ | ----------------------------------- |
| `technologies` | array | List of technologies |
| ↳ `name` | string | Technology name |
| ↳ `category` | string | Technology category |
| ↳ `subcategory` | string | Technology subcategory |
| ↳ `last_detected_at` | string | Last detection timestamp (ISO 8601) |
### Findymail Lookup Technologies [#findymail-lookup-technologies]
Get the technology stack for a company by domain. Optionally filter by technology names. 1 finder credit if technologies are found, free otherwise.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ----------------------------------------------------------------------------- |
| `domain` | string | Yes | Company domain to look up (e.g., stripe.com) |
| `technologies` | array | No | Filter by technology names, case-insensitive (e.g., \["React", "TypeScript"]) |
| `apiKey` | string | Yes | Findymail API Key |
#### Output [#output-9]
| Parameter | Type | Description |
| -------------------- | ------ | ----------------------------------- |
| `technologies` | array | List of technologies |
| ↳ `name` | string | Technology name |
| ↳ `category` | string | Technology category |
| ↳ `subcategory` | string | Technology subcategory |
| ↳ `last_detected_at` | string | Last detection timestamp (ISO 8601) |
| `domain` | string | The resolved company domain |
### Findymail Get Credits [#findymail-get-credits]
Retrieve the remaining finder and verifier credits for the authenticated account.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------- |
| `apiKey` | string | Yes | Findymail API Key |
#### Output [#output-10]
| Parameter | Type | Description |
| ------------------ | ------ | -------------------------- |
| `credits` | number | Remaining finder credits |
| `verifier_credits` | number | Remaining verifier credits |
---
# Firecrawl (/integrations/firecrawl)
{/* MANUAL-CONTENT-START:intro */}
[Firecrawl](https://firecrawl.dev/) is a powerful web scraping and content extraction API that integrates seamlessly into Sim, enabling developers to extract clean, structured content from any website. This integration provides a simple way to transform web pages into usable data formats like Markdown and HTML while preserving the essential content.
With Firecrawl in Sim, you can:
* **Extract clean content**: Remove ads, navigation elements, and other distractions to get just the main content
* **Convert to structured formats**: Transform web pages into Markdown, HTML, or JSON
* **Capture metadata**: Extract SEO metadata, Open Graph tags, and other page information
* **Handle JavaScript-heavy sites**: Process content from modern web applications that rely on JavaScript
* **Filter content**: Focus on specific parts of a page using CSS selectors
* **Process at scale**: Handle high-volume scraping needs with a reliable API
* **Search the web**: Perform intelligent web searches and retrieve structured results
* **Crawl entire sites**: Crawl multiple pages from a website and aggregate their content
In Sim, the Firecrawl integration enables your agents to access and process web content programmatically as part of their workflows. Supported operations include:
* **Scrape**: Extract structured content (Markdown, HTML, metadata) from a single web page.
* **Search**: Search the web for information using Firecrawl's intelligent search capabilities.
* **Crawl**: Crawl multiple pages from a website, returning structured content and metadata for each page.
This allows your agents to gather information from websites, extract structured data, and use that information to make decisions or generate insights—all without having to navigate the complexities of raw HTML parsing or browser automation. Simply configure the Firecrawl block with your API key, select the operation (Scrape, Search, or Crawl), and provide the relevant parameters. Your agents can immediately begin working with web content in a clean, structured format.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Firecrawl into the workflow. Scrape pages, search the web, crawl entire sites, map URL structures, and extract structured data with AI.
## Actions [#actions]
### Firecrawl Website Scraper [#firecrawl-website-scraper]
Extract structured content from web pages with comprehensive metadata support. Converts content to markdown or HTML while capturing SEO metadata, Open Graph tags, and page information.
#### Input [#input]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------- |
| `url` | string | Yes | The URL to scrape content from (e.g., "[https://example.com/page"\\](https://example.com/page"\\)) |
| `formats` | json | No | Output formats supplied by existing Firecrawl block configurations |
| `scrapeOptions` | json | No | Options for content scraping |
| `apiKey` | string | Yes | Firecrawl API key |
#### Output [#output]
| Parameter | Type | Description |
| --------------------- | ------ | ------------------------------------------------------ |
| `markdown` | string | Page content in markdown format |
| `html` | string | Raw HTML content of the page |
| `metadata` | object | Page metadata including SEO and Open Graph information |
| ↳ `title` | string | Page title |
| ↳ `description` | string | Page meta description |
| ↳ `language` | string | Page language code (e.g., "en") |
| ↳ `sourceURL` | string | Original source URL that was scraped |
| ↳ `statusCode` | number | HTTP status code of the response |
| ↳ `keywords` | string | Page meta keywords |
| ↳ `robots` | string | Robots meta directive (e.g., "follow, index") |
| ↳ `ogTitle` | string | Open Graph title |
| ↳ `ogDescription` | string | Open Graph description |
| ↳ `ogUrl` | string | Open Graph URL |
| ↳ `ogImage` | string | Open Graph image URL |
| ↳ `ogLocaleAlternate` | array | Alternate locale versions for Open Graph |
| ↳ `ogSiteName` | string | Open Graph site name |
| ↳ `error` | string | Error message if scrape failed |
### Firecrawl Batch Scrape [#firecrawl-batch-scrape]
Scrape multiple URLs in a single batch job and retrieve structured content from each page.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `urls` | json | Yes | Array of URLs to scrape (e.g., \["[https://example.com/page1](https://example.com/page1)", "[https://example.com/page2"\\\]\\](https://example.com/page2"\\]\\)) |
| `formats` | json | No | Output formats for scraped content (e.g., \["markdown"], \["markdown", "html"]) |
| `onlyMainContent` | boolean | No | Extract only main content from pages |
| `maxConcurrency` | number | No | Maximum number of concurrent scrapes |
| `ignoreInvalidURLs` | boolean | No | Skip invalid URLs instead of failing the batch (default: true) |
| `scrapeOptions` | json | No | Advanced scraping configuration options |
| `zeroDataRetention` | boolean | No | Enable zero data retention |
| `apiKey` | string | Yes | Firecrawl API key |
#### Output [#output-1]
| Parameter | Type | Description |
| --------------------- | ------ | ------------------------------------------------------ |
| `pages` | array | Array of scraped pages with their content and metadata |
| ↳ `markdown` | string | Page content in markdown format |
| ↳ `html` | string | Processed HTML content of the page |
| ↳ `rawHtml` | string | Unprocessed raw HTML content |
| ↳ `links` | array | Array of links found on the page |
| ↳ `screenshot` | string | Screenshot URL (expires after 24 hours) |
| ↳ `metadata` | object | Page metadata from crawl operation |
| ↳ `title` | string | Page title |
| ↳ `description` | string | Page meta description |
| ↳ `language` | string | Page language code |
| ↳ `sourceURL` | string | Original source URL |
| ↳ `statusCode` | number | HTTP status code |
| ↳ `ogLocaleAlternate` | array | Alternate locale versions |
| `total` | number | Total number of pages attempted |
| `completed` | number | Number of pages successfully scraped |
| `invalidURLs` | array | URLs that were skipped because they were invalid |
### Firecrawl Batch Scrape Status [#firecrawl-batch-scrape-status]
Check the status and retrieve results of a previously started Firecrawl batch scrape job by its job ID.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------- |
| `jobId` | string | Yes | The ID of the batch scrape job to check |
| `apiKey` | string | Yes | Firecrawl API key |
#### Output [#output-2]
| Parameter | Type | Description |
| --------------------- | ------ | ------------------------------------------------------------ |
| `status` | string | Current batch scrape status (scraping, completed, or failed) |
| `total` | number | Total number of pages attempted |
| `completed` | number | Number of pages successfully scraped |
| `creditsUsed` | number | Credits consumed by the batch scrape |
| `expiresAt` | string | ISO timestamp when the batch scrape results expire |
| `next` | string | URL to retrieve the next page of results when present |
| `pages` | array | Array of scraped pages with their content and metadata |
| ↳ `markdown` | string | Page content in markdown format |
| ↳ `html` | string | Processed HTML content of the page |
| ↳ `rawHtml` | string | Unprocessed raw HTML content |
| ↳ `links` | array | Array of links found on the page |
| ↳ `screenshot` | string | Screenshot URL (expires after 24 hours) |
| ↳ `metadata` | object | Page metadata from crawl operation |
| ↳ `title` | string | Page title |
| ↳ `description` | string | Page meta description |
| ↳ `language` | string | Page language code |
| ↳ `sourceURL` | string | Original source URL |
| ↳ `statusCode` | number | HTTP status code |
| ↳ `ogLocaleAlternate` | array | Alternate locale versions |
### Firecrawl Search [#firecrawl-search]
Search for information on the web using Firecrawl
#### Input [#input-3]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ----------------------------------------------------------- |
| `query` | string | Yes | The search query to use |
| `scrapeOptions` | json | No | Advanced scrape options supplied by existing configurations |
| `apiKey` | string | Yes | Firecrawl API key |
#### Output [#output-3]
| Parameter | Type | Description |
| --------------- | ------ | ----------------------------------------------------------------------------------------- |
| `data` | array | Search results data with scraped content and metadata |
| ↳ `title` | string | Search result title from search engine |
| ↳ `description` | string | Search result description/snippet from search engine |
| ↳ `url` | string | URL of the search result |
| ↳ `markdown` | string | Page content in markdown (when scrapeOptions.formats includes "markdown") |
| ↳ `html` | string | Processed HTML content (when scrapeOptions.formats includes "html") |
| ↳ `rawHtml` | string | Unprocessed raw HTML (when scrapeOptions.formats includes "rawHtml") |
| ↳ `links` | array | Links found on the page (when scrapeOptions.formats includes "links") |
| ↳ `screenshot` | string | Screenshot URL (expires after 24 hours, when scrapeOptions.formats includes "screenshot") |
| ↳ `metadata` | object | Metadata about the search result page |
| ↳ `title` | string | Page title |
| ↳ `description` | string | Page meta description |
| ↳ `sourceURL` | string | Original source URL |
| ↳ `statusCode` | number | HTTP status code |
| ↳ `error` | string | Error message if scrape failed |
### Firecrawl Crawl [#firecrawl-crawl]
Crawl entire websites and extract structured content from all accessible pages
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `url` | string | Yes | The website URL to crawl (e.g., "[https://example.com](https://example.com)" or "[https://docs.example.com/guide"\\](https://docs.example.com/guide"\\)) |
| `limit` | number | No | Maximum number of pages to crawl (e.g., 50, 100, 500). Default: 100 |
| `maxDepth` | number | No | Maximum depth to crawl from the starting URL (e.g., 1, 2, 3). Controls how many levels deep to follow links |
| `formats` | json | No | Output formats for scraped content (e.g., \["markdown"], \["markdown", "html"], \["markdown", "links"]) |
| `prompt` | string | No | Natural-language crawl guidance supplied by existing configurations |
| `scrapeOptions` | json | No | Advanced scrape options supplied by existing configurations |
| `excludePaths` | json | No | URL paths to exclude from crawling (e.g., \["/blog/*", "/admin/*", "/\*.pdf"]) |
| `includePaths` | json | No | URL paths to include in crawling (e.g., \["/docs/*", "/api/*"]). Only these paths will be crawled |
| `onlyMainContent` | boolean | No | Extract only main content from pages |
| `apiKey` | string | Yes | Firecrawl API Key |
#### Output [#output-4]
| Parameter | Type | Description |
| --------------------- | ------ | ------------------------------------------------------ |
| `pages` | array | Array of crawled pages with their content and metadata |
| ↳ `markdown` | string | Page content in markdown format |
| ↳ `html` | string | Processed HTML content of the page |
| ↳ `rawHtml` | string | Unprocessed raw HTML content |
| ↳ `links` | array | Array of links found on the page |
| ↳ `screenshot` | string | Screenshot URL (expires after 24 hours) |
| ↳ `metadata` | object | Page metadata from crawl operation |
| ↳ `title` | string | Page title |
| ↳ `description` | string | Page meta description |
| ↳ `language` | string | Page language code |
| ↳ `sourceURL` | string | Original source URL |
| ↳ `statusCode` | number | HTTP status code |
| ↳ `ogLocaleAlternate` | array | Alternate locale versions |
| `total` | number | Total number of pages found during crawl |
### Firecrawl Crawl Status [#firecrawl-crawl-status]
Check the status and retrieve results of a previously started Firecrawl crawl job by its job ID.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------- |
| `jobId` | string | Yes | The ID of the crawl job to check |
| `apiKey` | string | Yes | Firecrawl API key |
#### Output [#output-5]
| Parameter | Type | Description |
| --------------------- | ------ | ------------------------------------------------------ |
| `status` | string | Current crawl status (scraping, completed, or failed) |
| `total` | number | Total number of pages attempted |
| `completed` | number | Number of pages successfully crawled |
| `creditsUsed` | number | Credits consumed by the crawl |
| `expiresAt` | string | ISO timestamp when the crawl results expire |
| `next` | string | URL to retrieve the next page of results when present |
| `pages` | array | Array of crawled pages with their content and metadata |
| ↳ `markdown` | string | Page content in markdown format |
| ↳ `html` | string | Processed HTML content of the page |
| ↳ `rawHtml` | string | Unprocessed raw HTML content |
| ↳ `links` | array | Array of links found on the page |
| ↳ `screenshot` | string | Screenshot URL (expires after 24 hours) |
| ↳ `metadata` | object | Page metadata from crawl operation |
| ↳ `title` | string | Page title |
| ↳ `description` | string | Page meta description |
| ↳ `language` | string | Page language code |
| ↳ `sourceURL` | string | Original source URL |
| ↳ `statusCode` | number | HTTP status code |
| ↳ `ogLocaleAlternate` | array | Alternate locale versions |
### Firecrawl Cancel Crawl [#firecrawl-cancel-crawl]
Cancel an in-progress Firecrawl crawl job by its job ID.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------- |
| `jobId` | string | Yes | The ID of the crawl job to cancel |
| `apiKey` | string | Yes | Firecrawl API key |
#### Output [#output-6]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------------------------------- |
| `status` | string | Status of the cancelled crawl job (e.g., "cancelled") |
### Firecrawl Map [#firecrawl-map]
Get a complete list of URLs from any website quickly and reliably. Useful for discovering all pages on a site without crawling them.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ----------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------- |
| `url` | string | Yes | The base URL to map and discover links from (e.g., "[https://example.com"\\](https://example.com"\\)) |
| `search` | string | No | Filter results by relevance to a search term (e.g., "blog") |
| `sitemap` | string | No | Controls sitemap usage: "skip", "include" (default), or "only" |
| `includeSubdomains` | boolean | No | Whether to include URLs from subdomains (default: true) |
| `ignoreQueryParameters` | boolean | No | Exclude URLs containing query strings (default: true) |
| `limit` | number | No | Maximum number of links to return (e.g., 100, 1000, 5000). Max: 100,000, default: 5,000 |
| `timeout` | number | No | Request timeout in milliseconds |
| `location` | json | No | Geographic context for proxying (country, languages) |
| `apiKey` | string | Yes | Firecrawl API key |
#### Output [#output-7]
| Parameter | Type | Description |
| --------- | ------- | -------------------------------------------- |
| `success` | boolean | Whether the mapping operation was successful |
| `links` | array | Array of discovered URLs from the website |
### Firecrawl Extract [#firecrawl-extract]
Extract structured data from entire webpages using natural language prompts and JSON schema. Powerful agentic feature for intelligent data extraction.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `urls` | json | Yes | Array of URLs to extract data from (e.g., \["[https://example.com/page1](https://example.com/page1)", "[https://example.com/page2"\\](https://example.com/page2"\\)] or \["[https://example.com/\*"\\\]\\](https://example.com/*"\\]\\)) |
| `prompt` | string | No | Natural language guidance for the extraction process |
| `schema` | json | No | JSON Schema defining the structure of data to extract |
| `enableWebSearch` | boolean | No | Enable web search to find supplementary information (default: false) |
| `ignoreSitemap` | boolean | No | Ignore sitemap.xml files during scanning (default: false) |
| `includeSubdomains` | boolean | No | Extend scanning to subdomains (default: true) |
| `showSources` | boolean | No | Return data sources in the response (default: false) |
| `ignoreInvalidURLs` | boolean | No | Skip invalid URLs in the array (default: true) |
| `scrapeOptions` | json | No | Advanced scraping configuration options |
| `apiKey` | string | Yes | Firecrawl API key |
#### Output [#output-8]
| Parameter | Type | Description |
| --------- | ------- | ----------------------------------------------------------- |
| `success` | boolean | Whether the extraction operation was successful |
| `data` | object | Extracted structured data according to the schema or prompt |
### Firecrawl Extract Status [#firecrawl-extract-status]
Check the status and retrieve results of a previously started Firecrawl extract job by its job ID.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------- |
| `jobId` | string | Yes | The ID of the extract job to check |
| `apiKey` | string | Yes | Firecrawl API key |
#### Output [#output-9]
| Parameter | Type | Description |
| ------------- | ------ | -------------------------------------------------------------------- |
| `status` | string | Current extract status (processing, completed, failed, or cancelled) |
| `data` | json | Extracted structured data according to the schema or prompt |
| `expiresAt` | string | ISO timestamp when the extract results expire |
| `creditsUsed` | number | Number of credits used by the extract job |
| `tokensUsed` | number | Number of tokens used by the extract job |
### Firecrawl Agent [#firecrawl-agent]
Autonomous web data extraction agent. Searches and gathers information based on natural language prompts without requiring specific URLs.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ----------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `prompt` | string | Yes | Natural language description of the data to extract (max 10,000 characters) |
| `urls` | json | No | Optional array of URLs to focus the agent on (e.g., \["[https://example.com](https://example.com)", "[https://docs.example.com"\\\]\\](https://docs.example.com"\\]\\)) |
| `schema` | json | No | JSON Schema defining the structure of data to extract |
| `maxCredits` | number | No | Maximum credits to spend on this agent task |
| `strictConstrainToURLs` | boolean | No | If true, agent will only visit URLs provided in the urls array |
| `apiKey` | string | Yes | Firecrawl API key |
#### Output [#output-10]
| Parameter | Type | Description |
| ----------- | ------- | --------------------------------------------------------------- |
| `success` | boolean | Whether the agent operation was successful |
| `status` | string | Current status of the agent job (processing, completed, failed) |
| `data` | object | Extracted data from the agent |
| `expiresAt` | string | Timestamp when the results expire (24 hours) |
| `sources` | object | Array of source URLs used by the agent |
### Firecrawl Document Parser [#firecrawl-document-parser]
Parse uploaded documents (PDF, DOCX, HTML, etc.) into clean markdown using Firecrawl. Supports .html, .htm, .pdf, .docx, .doc, .odt, .rtf, .xlsx, .xls.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| -------------------- | ------- | -------- | --------------------------------------------------------------------- |
| `file` | file | Yes | Document file to be parsed |
| `formats` | array | No | Output formats to return (e.g., \["markdown"]). Defaults to markdown. |
| `onlyMainContent` | boolean | No | Exclude headers, navs, footers. Defaults to true. |
| `includeTags` | array | No | HTML tags to include |
| `excludeTags` | array | No | HTML tags to exclude |
| `timeout` | number | No | Timeout in milliseconds (max 300000). Defaults to 30000. |
| `parsers` | array | No | Parser configuration (e.g., \[\{ "type": "pdf" }]) |
| `removeBase64Images` | boolean | No | Remove base64 images, keep alt text. Defaults to true. |
| `blockAds` | boolean | No | Block ads and popups. Defaults to true. |
| `proxy` | string | No | Proxy mode: "basic" or "auto" |
| `zeroDataRetention` | boolean | No | Enable zero data retention. Defaults to false. |
| `apiKey` | string | Yes | Firecrawl API key |
#### Output [#output-11]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------------------ |
| `markdown` | string | Parsed document content in markdown format |
| `summary` | string | Generated summary of the document |
| `html` | string | Processed HTML content |
| `rawHtml` | string | Unprocessed raw HTML content |
| `screenshot` | string | Screenshot URL or base64 (when requested) |
| `links` | array | URLs discovered in the document |
| `metadata` | object | Document metadata |
| ↳ `title` | string | Document title |
| ↳ `description` | string | Document description |
| ↳ `language` | string | Document language code |
| ↳ `sourceURL` | string | Source URL |
| ↳ `url` | string | Final URL |
| ↳ `keywords` | string | Document keywords |
| ↳ `statusCode` | number | HTTP status code |
| ↳ `contentType` | string | Document content type |
| ↳ `error` | string | Error message if parse failed |
| `warning` | string | Warning message from the parse operation |
### Firecrawl Credit Usage [#firecrawl-credit-usage]
Retrieve the remaining and allocated Firecrawl credits for the team.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------- |
| `apiKey` | string | Yes | Firecrawl API key |
#### Output [#output-12]
| Parameter | Type | Description |
| -------------------- | ------ | ---------------------------------------- |
| `remainingCredits` | number | Number of credits remaining for the team |
| `planCredits` | number | Credits allocated in the current plan |
| `billingPeriodStart` | string | Start of the current billing period |
| `billingPeriodEnd` | string | End of the current billing period |
---
# Fireflies (/integrations/fireflies)
{/* MANUAL-CONTENT-START:intro */}
[Fireflies.ai](https://fireflies.ai/) is a meeting transcription and intelligence platform that integrates with Sim, allowing your agents to work directly with meeting recordings, transcripts, and insights through no-code automations.
The Fireflies integration in Sim provides tools to:
* **List meeting transcripts:** Fetch multiple meetings and their summary information for your team or account.
* **Retrieve full transcript details:** Access detailed transcripts, including summaries, action items, topics, and participant analytics for any meeting.
* **Upload audio or video:** Upload audio/video files or provide URLs for transcription—optionally set language, title, attendees, and receive automated meeting notes.
* **Search transcripts:** Find meetings by keyword, participant, host, or timeframe to quickly locate relevant discussions.
* **Delete transcripts:** Remove specific meeting transcripts from your Fireflies workspace.
* **Create soundbites (Bites):** Extract and highlight key moments from transcripts as audio or video clips.
* **Trigger workflows on transcription completion:** Activate Sim workflows automatically when a Fireflies meeting transcription finishes using the provided webhook trigger—enabling real-time automations and notifications based on new meeting data.
By combining these capabilities, you can streamline post-meeting actions, extract structured insights, automate notifications, manage recordings, and orchestrate custom workflows around your organization’s calls—all securely using your API key and Fireflies credentials.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Fireflies.ai into the workflow. Manage meeting transcripts, add bot to live meetings, create soundbites, and more. Can also trigger workflows when transcriptions complete.
## Actions [#actions]
### Fireflies List Transcripts [#fireflies-list-transcripts]
List meeting transcripts from Fireflies.ai with optional filtering
#### Input [#input]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Fireflies API key |
| `keyword` | string | No | Search keyword in meeting title or transcript (e.g., "quarterly review") |
| `fromDate` | string | No | Filter transcripts from this date (ISO 8601 format) |
| `toDate` | string | No | Filter transcripts until this date (ISO 8601 format) |
| `hostEmail` | string | No | Filter by meeting host email |
| `participants` | string | No | Filter by participant emails (comma-separated) |
| `limit` | number | No | Maximum number of transcripts to return (e.g., 10, max 50) |
| `skip` | number | No | Number of transcripts to skip for pagination (e.g., 0, 10, 20) |
#### Output [#output]
| Parameter | Type | Description |
| ------------- | ------ | ------------------------------ |
| `transcripts` | array | List of transcripts |
| `count` | number | Number of transcripts returned |
### Fireflies Get Transcript [#fireflies-get-transcript]
Get a single transcript with full details including summary, action items, and analytics
#### Input [#input-1]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------- |
| `apiKey` | string | Yes | Fireflies API key |
| `transcriptId` | string | Yes | The transcript ID to retrieve (e.g., "abc123def456") |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------------ | ------ | -------------------------------- |
| `transcript` | object | The transcript with full details |
| ↳ `id` | string | Transcript ID |
| ↳ `title` | string | Meeting title |
| ↳ `date` | number | Meeting timestamp |
| ↳ `duration` | number | Meeting duration in seconds |
| ↳ `transcript_url` | string | URL to view transcript |
| ↳ `audio_url` | string | URL to audio recording |
| ↳ `host_email` | string | Host email address |
| ↳ `participants` | array | List of participant emails |
| ↳ `speakers` | array | List of speakers |
| ↳ `sentences` | array | Transcript sentences |
| ↳ `summary` | object | Meeting summary and action items |
| ↳ `analytics` | object | Meeting analytics and sentiment |
### Fireflies Get User [#fireflies-get-user]
Get user information from Fireflies.ai. Returns current user if no ID specified.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------------------------------------- |
| `apiKey` | string | Yes | Fireflies API key |
| `userId` | string | No | User ID to retrieve (e.g., "user\_abc123", defaults to API key owner) |
#### Output [#output-2]
| Parameter | Type | Description |
| --------------------- | ------- | ------------------------- |
| `user` | object | User information |
| ↳ `user_id` | string | User ID |
| ↳ `name` | string | User name |
| ↳ `email` | string | User email |
| ↳ `integrations` | array | Connected integrations |
| ↳ `is_admin` | boolean | Whether user is admin |
| ↳ `minutes_consumed` | number | Total minutes transcribed |
| ↳ `num_transcripts` | number | Number of transcripts |
| ↳ `recent_transcript` | string | Most recent transcript ID |
| ↳ `recent_meeting` | string | Most recent meeting date |
### Fireflies List Users [#fireflies-list-users]
List all users within your Fireflies.ai team
#### Input [#input-3]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------- |
| `apiKey` | string | Yes | Fireflies API key |
#### Output [#output-3]
| Parameter | Type | Description |
| --------- | ----- | ------------------ |
| `users` | array | List of team users |
### Fireflies Upload Audio [#fireflies-upload-audio]
Upload an audio file URL to Fireflies.ai for transcription
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Fireflies API key |
| `audioFile` | file | No | Audio/video file to upload for transcription |
| `audioUrl` | string | No | Public HTTPS URL of the audio/video file (MP3, MP4, WAV, M4A, OGG) |
| `title` | string | No | Title for the meeting/transcript |
| `webhook` | string | No | Webhook URL to notify when transcription is complete |
| `language` | string | No | Language code for transcription (e.g., "es" for Spanish, "de" for German) |
| `attendees` | string | No | Attendees in JSON format: \[\{"displayName": "Name", "email": "[email@example.com](mailto:email@example.com)"}] |
| `clientReferenceId` | string | No | Custom reference ID for tracking |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ------- | --------------------------------- |
| `success` | boolean | Whether the upload was successful |
| `title` | string | Title of the uploaded meeting |
| `message` | string | Status message from Fireflies |
### Fireflies Delete Transcript [#fireflies-delete-transcript]
Delete a transcript from Fireflies.ai
#### Input [#input-5]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | -------------------------------------------------- |
| `apiKey` | string | Yes | Fireflies API key |
| `transcriptId` | string | Yes | The transcript ID to delete (e.g., "abc123def456") |
#### Output [#output-5]
| Parameter | Type | Description |
| ------------------- | ------- | ----------------------------------------------- |
| `success` | boolean | Whether the transcript was successfully deleted |
| `transcript` | object | The deleted transcript |
| ↳ `id` | string | Transcript ID |
| ↳ `title` | string | Meeting title |
| ↳ `date` | number | Meeting timestamp |
| ↳ `duration` | number | Meeting duration |
| ↳ `host_email` | string | Host email address |
| ↳ `organizer_email` | string | Organizer email address |
### Fireflies Add to Live Meeting [#fireflies-add-to-live-meeting]
Add the Fireflies.ai bot to an ongoing meeting to record and transcribe
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------------------------ |
| `apiKey` | string | Yes | Fireflies API key |
| `meetingLink` | string | Yes | Valid meeting URL (Zoom, Google Meet, Microsoft Teams, etc.) |
| `title` | string | No | Title for the meeting (max 256 characters) |
| `meetingPassword` | string | No | Password for the meeting if required (max 32 characters) |
| `duration` | number | No | Meeting duration in minutes (15-120, default: 60) |
| `language` | string | No | Language code for transcription (e.g., "en", "es", "de") |
#### Output [#output-6]
| Parameter | Type | Description |
| --------- | ------- | ----------------------------------------------------- |
| `success` | boolean | Whether the bot was successfully added to the meeting |
### Fireflies Create Bite [#fireflies-create-bite]
Create a soundbite/highlight from a specific time range in a transcript
#### Input [#input-7]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `apiKey` | string | Yes | Fireflies API key |
| `transcriptId` | string | Yes | ID of the transcript to create the bite from (e.g., "abc123def456") |
| `startTime` | number | Yes | Start time of the bite in seconds |
| `endTime` | number | Yes | End time of the bite in seconds |
| `name` | string | No | Name for the bite (max 256 characters) |
| `mediaType` | string | No | Media type: "video" or "audio" |
| `summary` | string | No | Summary for the bite (max 500 characters) |
#### Output [#output-7]
| Parameter | Type | Description |
| ---------- | ------ | -------------------- |
| `bite` | object | Created bite details |
| ↳ `id` | string | Bite ID |
| ↳ `name` | string | Bite name |
| ↳ `status` | string | Processing status |
### Fireflies List Bites [#fireflies-list-bites]
List soundbites/highlights from Fireflies.ai
#### Input [#input-8]
| Parameter | Type | Required | Description |
| -------------- | ------- | -------- | ------------------------------------------------------------- |
| `apiKey` | string | Yes | Fireflies API key |
| `transcriptId` | string | No | Filter bites for a specific transcript (e.g., "abc123def456") |
| `mine` | boolean | No | Only return bites owned by the API key owner (default: true) |
| `limit` | number | No | Maximum number of bites to return (e.g., 10, max 50) |
| `skip` | number | No | Number of bites to skip for pagination (e.g., 0, 10, 20) |
#### Output [#output-8]
| Parameter | Type | Description |
| --------- | ----- | ------------------------ |
| `bites` | array | List of bites/soundbites |
### Fireflies List Contacts [#fireflies-list-contacts]
List all contacts from your Fireflies.ai meetings
#### Input [#input-9]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------- |
| `apiKey` | string | Yes | Fireflies API key |
#### Output [#output-9]
| Parameter | Type | Description |
| ---------- | ----- | ------------------------------ |
| `contacts` | array | List of contacts from meetings |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
### Fireflies Transcription Complete [#fireflies-transcription-complete]
Trigger workflow when a Fireflies meeting transcription is complete
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ----------------------------------------------------------------------- |
| `webhookSecret` | string | No | Secret key for HMAC signature verification (set in Fireflies dashboard) |
#### Output [#output-10]
| Parameter | Type | Description |
| ------------------- | ------ | --------------------------------------------------------------------- |
| `meetingId` | string | The ID of the transcribed meeting |
| `eventType` | string | The type of event (e.g. Transcription completed, meeting.transcribed) |
| `clientReferenceId` | string | Custom reference ID if set during upload |
| `timestamp` | number | Unix timestamp in milliseconds when the event was fired (V2 webhooks) |
---
# Flint (/integrations/flint)
{/* MANUAL-CONTENT-START:intro */}
[Flint](https://www.flint.com/) is an AI website platform where background agents build and update your site for you. Through the Agent Tasks API, you can programmatically kick off site changes from a natural-language prompt, generate batches of pages from a template, and monitor each task until it completes.
**Why Flint?**
* **Agent-Driven Site Changes:** Describe the change in plain language — "Add a new About page with a team section" — and a background agent makes it happen.
* **Programmatic Page Generation:** Generate up to 10 pages per task from an existing template page, each with its own slug and content context — ideal for case studies, location pages, and programmatic SEO.
* **Controlled Publishing:** Every task can either publish automatically on completion or leave changes unpublished for review.
* **Full Task Visibility:** Poll any task for its status and get back the created, modified, and deleted pages with preview, edit, and published URLs.
**Using Flint in Sim**
Sim's Flint integration connects your workflows directly to the Flint Agent Tasks API using an API key from your Flint team settings. Three operations cover the full task lifecycle: Create Task starts a prompt-driven site change, Generate Pages fans a template out into a batch of new pages, and Get Task reports status and results.
**Key benefits of using Flint in Sim:**
* **Content pipelines:** Read rows from a table or spreadsheet and generate a landing page per row from a Flint template.
* **Event-driven site updates:** Trigger site changes from Slack requests, closed-won deals, or new GitHub releases.
* **Safe review workflows:** Leave publishing off, collect preview URLs from Get Task, and publish only after approval.
* **Reliable monitoring:** Poll task status on a schedule, write published URLs back to your data, and alert on failed tasks with their error messages.
Whether you're scaling programmatic SEO, keeping marketing pages in sync with your business systems, or automating site maintenance, Flint in Sim turns your website into something your workflows can edit. Configure your API key, pick an operation, and let the agent do the work.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Create background agent tasks that modify your Flint sites from natural-language prompts, generate batches of pages from a template, and check task status and results.
## Actions [#actions]
### Flint Create Task [#flint-create-task]
Start a background Flint agent task that modifies a site from a natural-language prompt.
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | ---------------------------------------------------------------------------------------------- |
| `siteId` | string | Yes | ID of the Flint site the agent should modify |
| `prompt` | string | Yes | Natural-language instructions for the agent (e.g., "Add a new About page with a team section") |
| `callbackUrl` | string | No | HTTPS webhook URL that Flint will POST to when the task completes or fails |
| `publish` | boolean | No | Whether to automatically publish the changes when the task completes |
#### Output [#output]
| Parameter | Type | Description |
| ----------- | ------ | -------------------------------------------- |
| `taskId` | string | Identifier of the created background task |
| `status` | string | Initial task status (running) |
| `createdAt` | string | ISO 8601 timestamp when the task was created |
### Flint Generate Pages [#flint-generate-pages]
Start a background Flint agent task that generates up to 10 pages from a template page.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `siteId` | string | Yes | ID of the Flint site the agent should modify |
| `templatePageSlug` | string | Yes | Slug of the existing template page to generate from (e.g., /case-studies/template) |
| `items` | json | Yes | JSON array of 1-10 pages to generate. Each item requires targetPageSlug (slug for the new page) and context (content details the agent should use). |
| `callbackUrl` | string | No | HTTPS webhook URL that Flint will POST to when the task completes or fails |
| `publish` | boolean | No | Whether to automatically publish the generated pages when the task completes |
#### Output [#output-1]
| Parameter | Type | Description |
| ----------- | ------ | -------------------------------------------- |
| `taskId` | string | Identifier of the created background task |
| `status` | string | Initial task status (running) |
| `createdAt` | string | ISO 8601 timestamp when the task was created |
### Flint Get Task [#flint-get-task]
Get the status and results of a background Flint agent task.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------ |
| `taskId` | string | Yes | Identifier of the task returned when it was created (e.g., bg-...) |
#### Output [#output-2]
| Parameter | Type | Description |
| --------------- | ------ | ----------------------------------------------------- |
| `taskId` | string | Identifier of the task |
| `status` | string | Task status: running, completed, or failed |
| `pagesCreated` | array | Pages created by the task (populated when completed) |
| `pagesModified` | array | Pages modified by the task (populated when completed) |
| `pagesDeleted` | array | Pages deleted by the task (populated when completed) |
| `errorMessage` | string | Error message when the task failed |
---
# Gamma (/integrations/gamma)
{/* MANUAL-CONTENT-START:intro */}
[Gamma](https://gamma.app/) is an AI-powered platform for creating presentations, documents, webpages, and social posts. Gamma's API lets you programmatically generate polished, visually rich content from text prompts, adapt existing templates, and manage workspace assets like themes and folders.
With Gamma, you can:
* **Generate presentations and documents:** Create slide decks, documents, webpages, and social posts from text input with full control over format, tone, and image sourcing.
* **Create from templates:** Adapt existing Gamma templates with custom prompts to quickly produce tailored content.
* **Check generation status:** Poll for completion of async generation jobs and retrieve the final Gamma URL.
* **Browse themes and folders:** List available workspace themes and folders to organize and style your generated content.
In Sim, the Gamma integration enables your agents to automatically generate presentations and documents, create content from templates, and manage workspace assets directly within your workflows. This allows you to automate content creation pipelines, batch-produce slide decks, and integrate AI-generated presentations into broader business automation scenarios.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Gamma into the workflow. Can generate presentations, documents, webpages, and social posts from text, create from templates, check generation status, and browse themes and folders.
## Actions [#actions]
### Gamma Generate [#gamma-generate]
Generate a new Gamma presentation, document, webpage, or social post from text input.
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Gamma API key |
| `inputText` | string | Yes | Text and image URLs used to generate your gamma (1-100,000 tokens) |
| `textMode` | string | Yes | How to handle input text: generate (AI expands), condense (AI summarizes), or preserve (keep as-is) |
| `format` | string | No | Output format: presentation, document, webpage, or social (default: presentation) |
| `themeId` | string | No | Custom Gamma workspace theme ID (use List Themes to find available themes) |
| `numCards` | number | No | Number of cards/slides to generate (1-60 for Pro, 1-75 for Ultra; default: 10) |
| `cardSplit` | string | No | How to split content into cards: auto or inputTextBreaks (default: auto) |
| `cardDimensions` | string | No | Card aspect ratio. Presentation: fluid, 16x9, 4x3. Document: fluid, pageless, letter, a4. Social: 1x1, 4x5, 9x16 |
| `additionalInstructions` | string | No | Additional instructions for the AI generation (max 2000 chars) |
| `exportAs` | string | No | Automatically export the generated gamma as pdf or pptx |
| `folderIds` | string | No | Comma-separated folder IDs to store the generated gamma in |
| `textAmount` | string | No | Amount of text per card: brief, medium, detailed, or extensive |
| `textTone` | string | No | Tone of the generated text, e.g. "professional", "casual" (max 500 chars) |
| `textAudience` | string | No | Target audience for the generated text, e.g. "executives", "students" (max 500 chars) |
| `textLanguage` | string | No | Language code for the generated text (default: en) |
| `imageSource` | string | No | Where to source images: aiGenerated, pictographic, unsplash, webAllImages, webFreeToUse, webFreeToUseCommercially, giphy, placeholder, or noImages |
| `imageModel` | string | No | AI image generation model to use when imageSource is aiGenerated |
| `imageStyle` | string | No | Style directive for AI-generated images, e.g. "watercolor", "photorealistic" (max 500 chars) |
#### Output [#output]
| Parameter | Type | Description |
| -------------- | ------ | --------------------------------------------------------------------------- |
| `generationId` | string | The ID of the generation job. Use with Check Status to poll for completion. |
### Gamma Generate from Template [#gamma-generate-from-template]
Generate a new Gamma by adapting an existing template with a prompt.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | -------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Gamma API key |
| `gammaId` | string | Yes | The ID of the template gamma to adapt |
| `prompt` | string | Yes | Instructions for how to adapt the template (1-100,000 tokens) |
| `themeId` | string | No | Custom Gamma workspace theme ID to apply |
| `exportAs` | string | No | Automatically export the generated gamma as pdf or pptx |
| `folderIds` | string | No | Comma-separated folder IDs to store the generated gamma in |
| `imageModel` | string | No | AI image generation model to use when imageSource is aiGenerated |
| `imageStyle` | string | No | Style directive for AI-generated images, e.g. "watercolor", "photorealistic" (max 500 chars) |
#### Output [#output-1]
| Parameter | Type | Description |
| -------------- | ------ | --------------------------------------------------------------------------- |
| `generationId` | string | The ID of the generation job. Use with Check Status to poll for completion. |
### Gamma Check Status [#gamma-check-status]
Check the status of a Gamma generation job. Returns the gamma URL when completed, or error details if failed.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Gamma API key |
| `generationId` | string | Yes | The generation ID returned by the Generate or Generate from Template tool |
#### Output [#output-2]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------------------------------------ |
| `generationId` | string | The generation ID that was checked |
| `status` | string | Generation status: pending, completed, or failed |
| `gammaUrl` | string | URL of the generated gamma (only present when status is completed) |
| `credits` | object | Credit usage information (only present when status is completed) |
| ↳ `deducted` | number | Number of credits deducted for this generation |
| ↳ `remaining` | number | Remaining credits in the account |
| `error` | object | Error details (only present when status is failed) |
| ↳ `message` | string | Human-readable error message |
| ↳ `statusCode` | number | HTTP status code of the error |
### Gamma List Themes [#gamma-list-themes]
List available themes in your Gamma workspace. Returns theme IDs, names, and keywords for styling.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Gamma API key |
| `query` | string | No | Search query to filter themes by name (case-insensitive) |
| `limit` | number | No | Maximum number of themes to return per page (max 50) |
| `after` | string | No | Pagination cursor from a previous response (nextCursor) to fetch the next page |
#### Output [#output-3]
| Parameter | Type | Description |
| ----------------- | ------- | ------------------------------------------------------------------ |
| `themes` | array | List of available themes |
| ↳ `id` | string | Theme ID (use with themeId parameter) |
| ↳ `name` | string | Theme display name |
| ↳ `type` | string | Theme type: standard or custom |
| ↳ `colorKeywords` | array | Color descriptors for this theme |
| ↳ `toneKeywords` | array | Tone descriptors for this theme |
| `hasMore` | boolean | Whether more results are available on the next page |
| `nextCursor` | string | Pagination cursor to pass as the after parameter for the next page |
### Gamma List Folders [#gamma-list-folders]
List available folders in your Gamma workspace. Returns folder IDs and names for organizing generated content.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Gamma API key |
| `query` | string | No | Search query to filter folders by name (case-sensitive) |
| `limit` | number | No | Maximum number of folders to return per page (max 50) |
| `after` | string | No | Pagination cursor from a previous response (nextCursor) to fetch the next page |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------ | ------- | ------------------------------------------------------------------ |
| `folders` | array | List of available folders |
| ↳ `id` | string | Folder ID (use with folderIds parameter) |
| ↳ `name` | string | Folder display name |
| `hasMore` | boolean | Whether more results are available on the next page |
| `nextCursor` | string | Pagination cursor to pass as the after parameter for the next page |
---
# GitHub (/integrations/github)
{/* MANUAL-CONTENT-START:intro */}
[GitHub](https://github.com/) is the world’s leading platform for hosting, collaborating on, and managing source code. GitHub offers powerful tools for version control, code review, branching strategies, and team collaboration within the rich Git ecosystem, underpinning both open source and enterprise development worldwide.
The GitHub integration in Sim allows your agents to seamlessly automate, interact with, and orchestrate workflows across your repositories. Using this integration, agents can perform an extended set of code and collaboration operations, enabling:
* **Fetch pull request details:** Retrieve a full overview of any pull request, including file diffs, branch information, metadata, approvals, and a summary of changes, for automation or review workflows.
* **Create pull request comments:** Automatically generate or post comments on PRs—such as reviews, suggestions, or status updates—enabling speedy feedback, documentation, or policy enforcement.
* **Get repository information:** Access comprehensive repository metadata, including descriptions, visibility, topics, default branches, and contributors. This supports intelligent project analysis, dynamic workflow routing, and organizational reporting.
* **Fetch the latest commit:** Quickly obtain details from the newest commit on any branch, including hashes, messages, authors, and timestamps. This is useful for monitoring development velocity, triggering downstream actions, or enforcing quality checks.
* **Trigger workflows from GitHub events:** Set up Sim workflows to start automatically from key GitHub events, including pull request creation, review comments, or when new commits are pushed, through easy webhook integration. Automate actions such as deployments, notifications, compliance checks, or documentation updates in real time.
* **Monitor and manage repository activity:** Programmatically track contributions, manage PR review states, analyze branch histories, and audit code changes. Empower agents to enforce requirements, coordinate releases, and respond dynamically to development patterns.
* **Support for advanced automations:** Combine these operations—for example, fetch PR data, leave context-aware comments, and kick off multi-step Sim workflows on code pushes or PR merges—to automate your team’s engineering processes from end to end.
By leveraging all of these capabilities, the Sim GitHub integration enables agents to engage deeply in the development lifecycle. Automate code reviews, streamline team feedback, synchronize project artifacts, accelerate CI/CD, and enforce best practices with ease. Bring security, speed, and reliability to your workflows—directly within your Sim-powered automation environment, with full integration into your organization’s GitHub strategy.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Github into the workflow. Can get get PR details, create PR comment, get repository info, and get latest commit. Can be used in trigger mode to trigger a workflow when a PR is created, commented on, or a commit is pushed.
## Actions [#actions]
### GitHub PR Reader [#github-pr-reader]
Fetch PR details including diff and files changed
#### Input [#input]
| Parameter | Type | Required | Description |
| -------------- | ------- | -------- | ---------------------------------------------------------------------- |
| `includeFiles` | boolean | No | Whether to fetch changed-file details from the separate files endpoint |
#### Output [#output]
| Parameter | Type | Description |
| --------------------- | ------- | ----------------------------------------------------------------------- |
| `user` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| `head` | object | Branch reference info |
| ↳ `label` | string | Branch label (owner:branch) |
| ↳ `ref` | string | Branch name |
| ↳ `sha` | string | Commit SHA |
| ↳ `repo_full_name` | string | Full name (owner/repo) of the branch's repository |
| `base` | object | Branch reference info |
| ↳ `label` | string | Branch label (owner:branch) |
| ↳ `ref` | string | Branch name |
| ↳ `sha` | string | Commit SHA |
| ↳ `repo_full_name` | string | Full name (owner/repo) of the branch's repository |
| `id` | number | Pull request ID |
| `number` | number | Pull request number |
| `title` | string | PR title |
| `state` | string | PR state (open/closed) |
| `html_url` | string | GitHub web URL |
| `diff_url` | string | Raw diff URL |
| `body` | string | PR description |
| `merged` | boolean | Whether PR is merged |
| `mergeable` | boolean | Whether PR is mergeable |
| `merged_by` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| `comments` | number | Number of comments |
| `review_comments` | number | Number of review comments |
| `commits` | number | Number of commits |
| `additions` | number | Lines added |
| `deletions` | number | Lines deleted |
| `changed_files` | number | Number of changed files |
| `created_at` | string | Creation timestamp |
| `updated_at` | string | Last update timestamp |
| `closed_at` | string | Close timestamp |
| `merged_at` | string | Merge timestamp |
| `files` | array | Array of changed file objects |
| ↳ `sha` | string | Blob SHA |
| ↳ `filename` | string | File path |
| ↳ `status` | string | Change status (added/removed/modified/renamed/copied/changed/unchanged) |
| ↳ `additions` | number | Lines added |
| ↳ `deletions` | number | Lines deleted |
| ↳ `changes` | number | Total line changes |
| ↳ `blob_url` | string | Blob URL |
| ↳ `raw_url` | string | Raw file URL |
| ↳ `contents_url` | string | Contents API URL |
| ↳ `patch` | string | Diff patch |
| ↳ `previous_filename` | string | Previous filename (for renames) |
### GitHub PR Commenter [#github-pr-commenter]
Create comments on GitHub PRs
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `body` | string | Yes | Comment content |
| `pullNumber` | number | Yes | Pull request number |
| `path` | string | No | File path for review comment |
| `position` | number | No | Line number for review comment |
| `commentType` | string | No | Type of comment (pr\_comment or file\_comment) |
| `line` | number | No | Line number for review comment |
| `side` | string | No | Side of the diff (LEFT or RIGHT) |
| `commitId` | string | No | The SHA of the commit to comment on |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-1]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------- |
| `user` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| `id` | number | Comment ID |
| `body` | string | Comment body |
| `html_url` | string | GitHub web URL |
| `path` | string | File path (for file comments) |
| `line` | number | Line number (for file comments) |
| `side` | string | Side (LEFT/RIGHT for diff comments) |
| `commit_id` | string | Commit SHA |
| `created_at` | string | Creation timestamp |
| `updated_at` | string | Last update timestamp |
### GitHub Repository Info [#github-repository-info]
Retrieve comprehensive GitHub repository metadata including stars, forks, issues, and primary language. Supports both public and private repositories with optional authentication.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------------- | ------- | -------------------------------------- |
| `id` | number | Repository ID |
| `name` | string | Repository name |
| `full_name` | string | Full repository name (owner/repo) |
| `description` | string | Repository description |
| `html_url` | string | GitHub web URL |
| `homepage` | string | Homepage URL |
| `language` | string | Primary programming language |
| `default_branch` | string | Default branch name |
| `visibility` | string | Repository visibility (public/private) |
| `private` | boolean | Whether the repository is private |
| `fork` | boolean | Whether this is a fork |
| `archived` | boolean | Whether the repository is archived |
| `disabled` | boolean | Whether the repository is disabled |
| `stargazers_count` | number | Number of stars |
| `watchers_count` | number | Number of watchers |
| `forks_count` | number | Number of forks |
| `open_issues_count` | number | Number of open issues |
| `topics` | array | Repository topics |
| `created_at` | string | Creation timestamp |
| `updated_at` | string | Last update timestamp |
| `pushed_at` | string | Last push timestamp |
| `owner` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| `license` | object | License information |
| ↳ `key` | string | License key (e.g., mit) |
| ↳ `name` | string | License name |
| ↳ `spdx_id` | string | SPDX identifier |
### GitHub Latest Commit [#github-latest-commit]
Retrieve the latest commit from a GitHub repository
#### Input [#input-3]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `branch` | string | No | Branch name (defaults to the repository's default branch) |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-3]
| Parameter | Type | Description |
| ----------------- | ------- | ----------------------------- |
| `commit` | object | Core commit data |
| ↳ `url` | string | Commit API URL |
| ↳ `message` | string | Commit message |
| ↳ `comment_count` | number | Number of comments |
| ↳ `author` | object | Git actor (author/committer) |
| ↳ `name` | string | Name |
| ↳ `email` | string | Email address |
| ↳ `date` | string | Timestamp (ISO 8601) |
| ↳ `committer` | object | Git actor (author/committer) |
| ↳ `name` | string | Name |
| ↳ `email` | string | Email address |
| ↳ `date` | string | Timestamp (ISO 8601) |
| ↳ `tree` | object | Tree object |
| ↳ `sha` | string | Tree SHA |
| ↳ `url` | string | Tree API URL |
| ↳ `verification` | object | Signature verification |
| ↳ `verified` | boolean | Whether signature is verified |
| ↳ `reason` | string | Verification reason |
| ↳ `signature` | string | GPG signature |
| ↳ `payload` | string | Signed payload |
| `author` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| `committer` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| `sha` | string | Commit SHA |
| `html_url` | string | GitHub web URL |
### GitHub Issue Comment Creator [#github-issue-comment-creator]
Create a comment on a GitHub issue
#### Input [#input-4]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `issue_number` | number | Yes | Issue number |
| `body` | string | Yes | Comment content |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-4]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------- |
| `user` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| `id` | number | Comment ID |
| `body` | string | Comment body |
| `html_url` | string | GitHub web URL |
| `path` | string | File path (for file comments) |
| `line` | number | Line number (for file comments) |
| `side` | string | Side (LEFT/RIGHT for diff comments) |
| `commit_id` | string | Commit SHA |
| `created_at` | string | Creation timestamp |
| `updated_at` | string | Last update timestamp |
### GitHub Issue Comments Lister [#github-issue-comments-lister]
List all comments on a GitHub issue
#### Input [#input-5]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | -------------------------------------------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `issue_number` | number | Yes | Issue number |
| `since` | string | No | Only show comments updated after this ISO 8601 timestamp |
| `per_page` | number | No | Number of results per page (max 100) |
| `page` | number | No | Page number |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-5]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------- |
| `items` | array | Array of comment objects |
| ↳ `user` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| ↳ `id` | number | Comment ID |
| ↳ `body` | string | Comment body |
| ↳ `html_url` | string | GitHub web URL |
| ↳ `path` | string | File path (for file comments) |
| ↳ `line` | number | Line number (for file comments) |
| ↳ `side` | string | Side (LEFT/RIGHT for diff comments) |
| ↳ `commit_id` | string | Commit SHA |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `updated_at` | string | Last update timestamp |
| `count` | number | Number of comments returned |
### GitHub Comment Updater [#github-comment-updater]
Update an existing comment on a GitHub issue or pull request
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ----------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `comment_id` | number | Yes | Comment ID |
| `body` | string | Yes | Updated comment content |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-6]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------- |
| `user` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| `id` | number | Comment ID |
| `body` | string | Comment body |
| `html_url` | string | GitHub web URL |
| `path` | string | File path (for file comments) |
| `line` | number | Line number (for file comments) |
| `side` | string | Side (LEFT/RIGHT for diff comments) |
| `commit_id` | string | Commit SHA |
| `created_at` | string | Creation timestamp |
| `updated_at` | string | Last update timestamp |
### GitHub Comment Deleter [#github-comment-deleter]
Delete a comment on a GitHub issue or pull request
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ---------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `comment_id` | number | Yes | Comment ID |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-7]
| Parameter | Type | Description |
| ------------ | ------- | ------------------------------- |
| `deleted` | boolean | Whether deletion was successful |
| `comment_id` | number | Deleted comment ID |
### GitHub PR Review Comments Lister [#github-pr-review-comments-lister]
List all review comments on a GitHub pull request
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | -------------------------------------------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `pullNumber` | number | Yes | Pull request number |
| `sort` | string | No | Sort by created or updated |
| `direction` | string | No | Sort direction (asc or desc) |
| `since` | string | No | Only show comments updated after this ISO 8601 timestamp |
| `per_page` | number | No | Number of results per page (max 100) |
| `page` | number | No | Page number |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-8]
| Parameter | Type | Description |
| ---------------------- | ------ | ----------------------------------- |
| `items` | array | Array of review comment objects |
| ↳ `user` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| ↳ `id` | number | Comment ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `body` | string | Comment body |
| ↳ `html_url` | string | GitHub web URL |
| ↳ `path` | string | File path |
| ↳ `position` | number | Position in diff |
| ↳ `line` | number | Line number |
| ↳ `side` | string | Side (LEFT/RIGHT) |
| ↳ `commit_id` | string | Commit SHA |
| ↳ `original_commit_id` | string | Original commit SHA |
| ↳ `diff_hunk` | string | Diff hunk context |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `updated_at` | string | Last update timestamp |
| `count` | number | Number of comments returned |
### GitHub Create Pull Request [#github-create-pull-request]
Create a new pull request in a GitHub repository
#### Input [#input-9]
| Parameter | Type | Required | Description |
| --------- | ------- | -------- | --------------------------------------------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `title` | string | Yes | Pull request title |
| `head` | string | Yes | The name of the branch where your changes are implemented |
| `base` | string | Yes | The name of the branch you want the changes pulled into |
| `body` | string | No | Pull request description (Markdown) |
| `draft` | boolean | No | Create as draft pull request |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-9]
| Parameter | Type | Description |
| ------------ | ------- | ----------------------- |
| `id` | number | Pull request ID |
| `number` | number | Pull request number |
| `title` | string | PR title |
| `state` | string | PR state |
| `html_url` | string | GitHub web URL |
| `body` | string | PR description |
| `user` | json | User who created the PR |
| `head` | json | Head branch info |
| `base` | json | Base branch info |
| `draft` | boolean | Whether PR is a draft |
| `merged` | boolean | Whether PR is merged |
| `mergeable` | boolean | Whether PR is mergeable |
| `created_at` | string | Creation timestamp |
| `updated_at` | string | Last update timestamp |
### GitHub Update Pull Request [#github-update-pull-request]
Update an existing pull request in a GitHub repository
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | --------------------------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `pullNumber` | number | Yes | Pull request number |
| `title` | string | No | New pull request title |
| `body` | string | No | New pull request description (Markdown) |
| `state` | string | No | New state (open or closed) |
| `base` | string | No | New base branch name |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-10]
| Parameter | Type | Description |
| ------------ | ------- | ----------------------- |
| `id` | number | PR ID |
| `number` | number | PR number |
| `title` | string | PR title |
| `state` | string | PR state |
| `html_url` | string | GitHub web URL |
| `body` | string | PR description |
| `user` | json | User who created the PR |
| `head` | json | Head branch info |
| `base` | json | Base branch info |
| `draft` | boolean | Whether PR is a draft |
| `merged` | boolean | Whether PR is merged |
| `created_at` | string | Creation timestamp |
| `updated_at` | string | Last update timestamp |
### GitHub Merge Pull Request [#github-merge-pull-request]
Merge a pull request in a GitHub repository
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ---------------------------------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `pullNumber` | number | Yes | Pull request number |
| `commit_title` | string | No | Title for the merge commit |
| `commit_message` | string | No | Extra detail to append to merge commit message |
| `merge_method` | string | No | Merge method: merge, squash, or rebase |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-11]
| Parameter | Type | Description |
| --------- | ------- | ---------------------------- |
| `sha` | string | Merge commit SHA |
| `merged` | boolean | Whether merge was successful |
| `message` | string | Response message |
### GitHub List Pull Requests [#github-list-pull-requests]
List pull requests in a GitHub repository
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------------------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `state` | string | No | Filter by state: open, closed, or all |
| `head` | string | No | Filter by head user or branch name (format: user:ref-name or organization:ref-name) |
| `base` | string | No | Filter by base branch name |
| `sort` | string | No | Sort by: created, updated, popularity, or long-running |
| `direction` | string | No | Sort direction: asc or desc |
| `per_page` | number | No | Results per page (max 100) |
| `page` | number | No | Page number |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-12]
| Parameter | Type | Description |
| -------------- | ------- | ----------------------------------- |
| `items` | array | Array of pull request objects |
| ↳ `user` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| ↳ `head` | object | Branch reference info |
| ↳ `label` | string | Branch label (owner:branch) |
| ↳ `ref` | string | Branch name |
| ↳ `sha` | string | Commit SHA |
| ↳ `base` | object | Branch reference info |
| ↳ `label` | string | Branch label (owner:branch) |
| ↳ `ref` | string | Branch name |
| ↳ `sha` | string | Commit SHA |
| ↳ `id` | number | Pull request ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `number` | number | Pull request number |
| ↳ `title` | string | PR title |
| ↳ `state` | string | PR state (open/closed) |
| ↳ `html_url` | string | GitHub web URL |
| ↳ `diff_url` | string | Diff URL |
| ↳ `body` | string | PR description |
| ↳ `locked` | boolean | Whether PR is locked |
| ↳ `draft` | boolean | Whether PR is a draft |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `updated_at` | string | Last update timestamp |
| ↳ `closed_at` | string | Close timestamp |
| ↳ `merged_at` | string | Merge timestamp |
| `count` | number | Number of PRs returned |
### GitHub Get PR Files [#github-get-pr-files]
Get the list of files changed in a pull request
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | -------------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `pullNumber` | number | Yes | Pull request number |
| `per_page` | number | No | Results per page (max 100) |
| `page` | number | No | Page number |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-13]
| Parameter | Type | Description |
| --------------------- | ------ | ----------------------------------------------------------------------- |
| `items` | array | Array of changed file objects |
| ↳ `sha` | string | Blob SHA |
| ↳ `filename` | string | File path |
| ↳ `status` | string | Change status (added/removed/modified/renamed/copied/changed/unchanged) |
| ↳ `additions` | number | Lines added |
| ↳ `deletions` | number | Lines deleted |
| ↳ `changes` | number | Total line changes |
| ↳ `blob_url` | string | Blob URL |
| ↳ `raw_url` | string | Raw file URL |
| ↳ `contents_url` | string | Contents API URL |
| ↳ `patch` | string | Diff patch |
| ↳ `previous_filename` | string | Previous filename (for renames) |
| `count` | number | Total number of files |
### GitHub Close Pull Request [#github-close-pull-request]
Close a pull request in a GitHub repository
#### Input [#input-14]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `pullNumber` | number | Yes | Pull request number |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-14]
| Parameter | Type | Description |
| ------------ | ------- | ----------------------- |
| `id` | number | PR ID |
| `number` | number | PR number |
| `title` | string | PR title |
| `state` | string | PR state (closed) |
| `html_url` | string | GitHub web URL |
| `body` | string | PR description |
| `user` | json | User who created the PR |
| `head` | json | Head branch info |
| `base` | json | Base branch info |
| `draft` | boolean | Whether PR is a draft |
| `merged` | boolean | Whether PR is merged |
| `closed_at` | string | Close timestamp |
| `created_at` | string | Creation timestamp |
| `updated_at` | string | Last update timestamp |
### GitHub Request Reviewers [#github-request-reviewers]
Request reviewers for a pull request
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `pullNumber` | number | Yes | Pull request number |
| `reviewers` | string | No | Comma-separated list of user logins to request reviews from (at least one of reviewers or team\_reviewers is required) |
| `team_reviewers` | string | No | Comma-separated list of team slugs to request reviews from |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-15]
| Parameter | Type | Description |
| --------------------- | ------ | ----------------------------------- |
| `id` | number | PR ID |
| `number` | number | PR number |
| `title` | string | PR title |
| `html_url` | string | GitHub web URL |
| `requested_reviewers` | array | Array of requested reviewer objects |
| `requested_teams` | array | Array of requested team objects |
### GitHub Create PR Review [#github-create-pr-review]
Submit a review for a pull request. Use APPROVE, REQUEST\_CHANGES, or COMMENT. A body is required for REQUEST\_CHANGES and COMMENT reviews.
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `pullNumber` | number | Yes | Pull request number |
| `event` | string | Yes | The review action to perform: APPROVE, REQUEST\_CHANGES, or COMMENT |
| `body` | string | No | The body text of the review (required for REQUEST\_CHANGES and COMMENT) |
| `commit_id` | string | No | The SHA of the commit that needs a review (required when posting inline comments; defaults to the most recent commit otherwise) |
| `comments` | array | No | Optional inline comments with required path, body, line, and side fields |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-16]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------------------------------- |
| `id` | number | Review ID |
| `user` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| `body` | string | Review body text |
| `state` | string | Review state (APPROVED/CHANGES\_REQUESTED/COMMENTED) |
| `html_url` | string | GitHub web URL for the review |
| `pull_request_url` | string | API URL of the reviewed pull request |
| `commit_id` | string | SHA of the reviewed commit |
| `submitted_at` | string | Review submission timestamp |
### GitHub Get File Content [#github-get-file-content]
Get the content of a file from a GitHub repository. Supports files up to 1MB. Content is returned decoded and human-readable.
#### Input [#input-17]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------------------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `path` | string | Yes | Path to the file in the repository (e.g., "src/index.ts") |
| `ref` | string | No | Branch name, tag, or commit SHA (defaults to repository default branch) |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-17]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------- |
| `name` | string | File name |
| `path` | string | Full path in repository |
| `sha` | string | Git blob SHA |
| `size` | number | File size in bytes |
| `type` | string | Content type (file/dir/symlink/submodule) |
| `content` | string | Decoded file content |
| `encoding` | string | Content encoding |
| `html_url` | string | GitHub web URL |
| `download_url` | string | Direct download URL |
| `git_url` | string | Git blob API URL |
| `_links` | json | Related links |
| `file` | file | Downloaded file stored in execution files |
### GitHub Create File [#github-create-file]
Create a new file in a GitHub repository. The file content will be automatically Base64 encoded. Supports files up to 1MB.
#### Input [#input-18]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `path` | string | Yes | Path where the file will be created (e.g., "src/newfile.ts") |
| `message` | string | Yes | Commit message for this file creation |
| `content` | string | Yes | File content (plain text, will be Base64 encoded automatically) |
| `branch` | string | No | Branch to create the file in (defaults to repository default branch) |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-18]
| Parameter | Type | Description |
| --------- | ---- | ------------------------- |
| `content` | json | Created file content info |
| `commit` | json | Commit information |
### GitHub Update File [#github-update-file]
Update an existing file in a GitHub repository. Requires the file SHA. Content will be automatically Base64 encoded. Supports files up to 1MB.
#### Input [#input-19]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------------------------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `path` | string | Yes | Path to the file to update (e.g., "src/index.ts") |
| `message` | string | Yes | Commit message for this file update |
| `content` | string | Yes | New file content (plain text, will be Base64 encoded automatically) |
| `sha` | string | Yes | The blob SHA of the file being replaced (get from github\_get\_file\_content) |
| `branch` | string | No | Branch to update the file in (defaults to repository default branch) |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-19]
| Parameter | Type | Description |
| --------- | ---- | ------------------------- |
| `content` | json | Updated file content info |
| `commit` | json | Commit information |
### GitHub Delete File [#github-delete-file]
Delete a file from a GitHub repository. Requires the file SHA. This operation cannot be undone through the API.
#### Input [#input-20]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `path` | string | Yes | Path to the file to delete (e.g., "src/oldfile.ts") |
| `message` | string | Yes | Commit message for this file deletion |
| `sha` | string | Yes | The blob SHA of the file being deleted (get from github\_get\_file\_content) |
| `branch` | string | No | Branch to delete the file from (defaults to repository default branch) |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-20]
| Parameter | Type | Description |
| --------- | ---- | ----------------------------------- |
| `content` | json | File content info (null for delete) |
| `commit` | json | Commit information |
### GitHub Get Repository Tree [#github-get-repository-tree]
Get the contents of a directory in a GitHub repository. Returns a list of files and subdirectories. Use empty path or omit to get root directory contents.
#### Input [#input-21]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------ |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `path` | string | No | Directory path (e.g., "src/components"). Leave empty for root directory. |
| `ref` | string | No | Branch name, tag, or commit SHA (defaults to repository default branch) |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-21]
| Parameter | Type | Description |
| ---------------- | ------ | --------------------------------- |
| `items` | array | Array of file/directory objects |
| ↳ `name` | string | File or directory name |
| ↳ `path` | string | Full path in repository |
| ↳ `sha` | string | Git object SHA |
| ↳ `size` | number | Size in bytes |
| ↳ `type` | string | Type (file/dir/symlink/submodule) |
| ↳ `html_url` | string | GitHub web URL |
| ↳ `download_url` | string | Direct download URL |
| ↳ `git_url` | string | Git blob API URL |
| ↳ `url` | string | API URL for this item |
| ↳ `_links` | json | Related links |
| `count` | number | Total number of items |
### GitHub Get README [#github-get-readme]
Get the preferred README for a GitHub repository, with its content decoded to plain text.
#### Input [#input-22]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `ref` | string | No | The name of the commit/branch/tag to read the README from (defaults to the repository default branch) |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-22]
| Parameter | Type | Description |
| -------------- | ------ | -------------------------------------- |
| `name` | string | README file name |
| `path` | string | README file path |
| `sha` | string | Blob SHA of the README |
| `size` | number | File size in bytes |
| `encoding` | string | Original content encoding from the API |
| `html_url` | string | GitHub web URL for the README |
| `download_url` | string | Raw download URL for the README |
| `content` | string | Decoded README text content |
### GitHub List Tags [#github-list-tags]
List tags for a GitHub repository. Returns tag names with their commit SHA and download URLs.
#### Input [#input-23]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `per_page` | number | No | Number of results per page (max 100) |
| `page` | number | No | Page number of the results to fetch |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-23]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------ |
| `items` | array | Array of tag objects |
| ↳ `name` | string | Tag name |
| ↳ `zipball_url` | string | Zipball download URL |
| ↳ `tarball_url` | string | Tarball download URL |
| ↳ `node_id` | string | Node ID |
| ↳ `commit` | object | Commit the tag points to |
| ↳ `sha` | string | Commit SHA |
| ↳ `url` | string | Commit API URL |
| `count` | number | Number of tags returned |
### GitHub List Branches [#github-list-branches]
List all branches in a GitHub repository. Optionally filter by protected status and control pagination.
#### Input [#input-24]
| Parameter | Type | Required | Description |
| ----------- | ------- | -------- | ------------------------------------------------ |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `protected` | boolean | No | Filter branches by protection status |
| `per_page` | number | No | Number of results per page (max 100, default 30) |
| `page` | number | No | Page number for pagination (default 1) |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-24]
| Parameter | Type | Description |
| ------------- | ------- | --------------------------- |
| `items` | array | Array of branch objects |
| ↳ `name` | string | Branch name |
| ↳ `commit` | object | Commit reference info |
| ↳ `sha` | string | Commit SHA |
| ↳ `url` | string | Commit API URL |
| ↳ `protected` | boolean | Whether branch is protected |
| `count` | number | Number of branches returned |
### GitHub Get Branch [#github-get-branch]
Get detailed information about a specific branch in a GitHub repository, including commit details and protection status.
#### Input [#input-25]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `branch` | string | Yes | Branch name |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-25]
| Parameter | Type | Description |
| ---------------- | ------- | --------------------------- |
| `name` | string | Branch name |
| `commit` | object | Commit reference info |
| ↳ `sha` | string | Commit SHA |
| ↳ `url` | string | Commit API URL |
| `protected` | boolean | Whether branch is protected |
| `protection` | json | Protection settings object |
| `protection_url` | string | URL to protection settings |
### GitHub Create Branch [#github-create-branch]
Create a new branch in a GitHub repository by creating a git reference pointing to a specific commit SHA.
#### Input [#input-26]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `branch` | string | Yes | Name of the branch to create |
| `sha` | string | Yes | Commit SHA to point the branch to |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-26]
| Parameter | Type | Description |
| --------- | ------ | --------------------------------------- |
| `ref` | string | Full reference name (refs/heads/branch) |
| `node_id` | string | Git ref node ID |
| `url` | string | API URL for the reference |
| `object` | json | Git object with type and sha |
### GitHub Delete Branch [#github-delete-branch]
Delete a branch from a GitHub repository by removing its git reference. Protected branches cannot be deleted.
#### Input [#input-27]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `branch` | string | Yes | Name of the branch to delete |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-27]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------ |
| `deleted` | boolean | Whether the branch was deleted |
| `branch` | string | Name of the deleted branch |
### GitHub Get Branch Protection [#github-get-branch-protection]
Get the branch protection rules for a specific branch, including status checks, review requirements, and restrictions.
#### Input [#input-28]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `branch` | string | Yes | Branch name |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-28]
| Parameter | Type | Description |
| ---------------------------------- | ------ | ----------------------------------- |
| `url` | string | Protection settings URL |
| `required_status_checks` | json | Status check requirements |
| `enforce_admins` | json | Admin enforcement settings |
| `required_pull_request_reviews` | json | PR review requirements |
| `restrictions` | json | Push restrictions |
| `required_linear_history` | json | Linear history requirement |
| `allow_force_pushes` | json | Force push settings |
| `allow_deletions` | json | Deletion settings |
| `block_creations` | json | Creation blocking settings |
| `required_conversation_resolution` | json | Conversation resolution requirement |
| `required_signatures` | json | Signature requirements |
### GitHub Update Branch Protection [#github-update-branch-protection]
Update branch protection rules for a specific branch, including status checks, review requirements, admin enforcement, and push restrictions.
#### Input [#input-29]
| Parameter | Type | Required | Description |
| ------------------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `branch` | string | Yes | Branch name |
| `required_status_checks` | object | Yes | Required status check configuration (null to disable). Object with strict (boolean) and contexts (string array) |
| `enforce_admins` | boolean | Yes | Whether to enforce restrictions for administrators |
| `required_pull_request_reviews` | object | Yes | PR review requirements (null to disable). Object with optional required\_approving\_review\_count, dismiss\_stale\_reviews, require\_code\_owner\_reviews |
| `restrictions` | object | Yes | Push restrictions (null to disable). Object with users (string array) and teams (string array) |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-29]
| Parameter | Type | Description |
| ---------------------------------- | ------ | ----------------------------------- |
| `url` | string | Protection settings URL |
| `required_status_checks` | json | Status check requirements |
| `enforce_admins` | json | Admin enforcement settings |
| `required_pull_request_reviews` | json | PR review requirements |
| `restrictions` | json | Push restrictions |
| `required_linear_history` | json | Linear history requirement |
| `allow_force_pushes` | json | Force push settings |
| `allow_deletions` | json | Deletion settings |
| `block_creations` | json | Creation blocking settings |
| `required_conversation_resolution` | json | Conversation resolution requirement |
| `required_signatures` | json | Signature requirements |
### GitHub Create Issue [#github-create-issue]
Create a new issue in a GitHub repository
#### Input [#input-30]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `title` | string | Yes | Issue title |
| `body` | string | No | Issue description/body |
| `assignees` | string | No | Comma-separated list of usernames to assign to this issue |
| `labels` | string | No | Comma-separated list of label names to add to this issue |
| `milestone` | number | No | Milestone number to associate with this issue |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-30]
| Parameter | Type | Description |
| ----------------- | ------- | ------------------------------------- |
| `user` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| `id` | number | Issue ID |
| `number` | number | Issue number |
| `title` | string | Issue title |
| `state` | string | Issue state (open/closed) |
| `html_url` | string | GitHub web URL |
| `body` | string | Issue body/description |
| `created_at` | string | Creation timestamp |
| `updated_at` | string | Last update timestamp |
| `closed_at` | string | Close timestamp |
| `state_reason` | string | State reason (completed/not\_planned) |
| `labels` | array | Array of label objects |
| ↳ `id` | number | Label ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `url` | string | API URL |
| ↳ `name` | string | Label name |
| ↳ `description` | string | Label description |
| ↳ `color` | string | Hex color code (without #) |
| ↳ `default` | boolean | Whether this is a default label |
| `assignees` | array | Array of assignee objects |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| `milestone` | object | GitHub milestone object |
| ↳ `id` | number | Milestone ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `number` | number | Milestone number |
| ↳ `title` | string | Milestone title |
| ↳ `description` | string | Milestone description |
| ↳ `state` | string | State (open or closed) |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | GitHub web URL |
| ↳ `labels_url` | string | Labels API URL |
| ↳ `due_on` | string | Due date (ISO 8601) |
| ↳ `open_issues` | number | Number of open issues |
| ↳ `closed_issues` | number | Number of closed issues |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `updated_at` | string | Last update timestamp |
| ↳ `closed_at` | string | Close timestamp |
### GitHub Update Issue [#github-update-issue]
Update an existing issue in a GitHub repository
#### Input [#input-31]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `issue_number` | number | Yes | Issue number |
| `title` | string | No | New issue title |
| `body` | string | No | New issue description/body |
| `state` | string | No | Issue state (open or closed) |
| `labels` | array | No | Array of label names (replaces all existing labels) |
| `assignees` | array | No | Array of usernames (replaces all existing assignees) |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-31]
| Parameter | Type | Description |
| ----------------- | ------- | ------------------------------------- |
| `user` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| `id` | number | Issue ID |
| `number` | number | Issue number |
| `title` | string | Issue title |
| `state` | string | Issue state (open/closed) |
| `html_url` | string | GitHub web URL |
| `body` | string | Issue body/description |
| `created_at` | string | Creation timestamp |
| `updated_at` | string | Last update timestamp |
| `closed_at` | string | Close timestamp |
| `state_reason` | string | State reason (completed/not\_planned) |
| `labels` | array | Array of label objects |
| ↳ `id` | number | Label ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `url` | string | API URL |
| ↳ `name` | string | Label name |
| ↳ `description` | string | Label description |
| ↳ `color` | string | Hex color code (without #) |
| ↳ `default` | boolean | Whether this is a default label |
| `assignees` | array | Array of assignee objects |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| `milestone` | object | GitHub milestone object |
| ↳ `id` | number | Milestone ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `number` | number | Milestone number |
| ↳ `title` | string | Milestone title |
| ↳ `description` | string | Milestone description |
| ↳ `state` | string | State (open or closed) |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | GitHub web URL |
| ↳ `labels_url` | string | Labels API URL |
| ↳ `due_on` | string | Due date (ISO 8601) |
| ↳ `open_issues` | number | Number of open issues |
| ↳ `closed_issues` | number | Number of closed issues |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `updated_at` | string | Last update timestamp |
| ↳ `closed_at` | string | Close timestamp |
### GitHub List Issues [#github-list-issues]
List issues in a GitHub repository. Note: This includes pull requests as PRs are considered issues in GitHub
#### Input [#input-32]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `state` | string | No | Filter by state: open, closed, or all (default: open) |
| `assignee` | string | No | Filter by assignee username |
| `creator` | string | No | Filter by creator username |
| `labels` | string | No | Comma-separated list of label names to filter by |
| `sort` | string | No | Sort by: created, updated, or comments (default: created) |
| `direction` | string | No | Sort direction: asc or desc (default: desc) |
| `per_page` | number | No | Results per page (max 100, default: 30) |
| `page` | number | No | Page number (default: 1) |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-32]
| Parameter | Type | Description |
| --------------- | ------- | -------------------------------------- |
| `items` | array | Array of issue objects from GitHub API |
| ↳ `id` | number | Label ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `url` | string | API URL |
| ↳ `name` | string | Label name |
| ↳ `description` | string | Label description |
| ↳ `color` | string | Hex color code (without #) |
| ↳ `default` | boolean | Whether this is a default label |
| `count` | number | Number of issues returned |
### GitHub Get Issue [#github-get-issue]
Get detailed information about a specific issue in a GitHub repository
#### Input [#input-33]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `issue_number` | number | Yes | Issue number |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-33]
| Parameter | Type | Description |
| ----------------- | ------- | ------------------------------------- |
| `user` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| `id` | number | Issue ID |
| `number` | number | Issue number |
| `title` | string | Issue title |
| `state` | string | Issue state (open/closed) |
| `html_url` | string | GitHub web URL |
| `body` | string | Issue body/description |
| `created_at` | string | Creation timestamp |
| `updated_at` | string | Last update timestamp |
| `closed_at` | string | Close timestamp |
| `state_reason` | string | State reason (completed/not\_planned) |
| `labels` | array | Array of label objects |
| ↳ `id` | number | Label ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `url` | string | API URL |
| ↳ `name` | string | Label name |
| ↳ `description` | string | Label description |
| ↳ `color` | string | Hex color code (without #) |
| ↳ `default` | boolean | Whether this is a default label |
| `assignees` | array | Array of assignee objects |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| `milestone` | object | GitHub milestone object |
| ↳ `id` | number | Milestone ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `number` | number | Milestone number |
| ↳ `title` | string | Milestone title |
| ↳ `description` | string | Milestone description |
| ↳ `state` | string | State (open or closed) |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | GitHub web URL |
| ↳ `labels_url` | string | Labels API URL |
| ↳ `due_on` | string | Due date (ISO 8601) |
| ↳ `open_issues` | number | Number of open issues |
| ↳ `closed_issues` | number | Number of closed issues |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `updated_at` | string | Last update timestamp |
| ↳ `closed_at` | string | Close timestamp |
| `closed_by` | object | User who closed the issue |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
### GitHub Close Issue [#github-close-issue]
Close an issue in a GitHub repository
#### Input [#input-34]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `issue_number` | number | Yes | Issue number |
| `state_reason` | string | No | Reason for closing: completed or not\_planned |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-34]
| Parameter | Type | Description |
| --------------- | ------- | ------------------------------------- |
| `user` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| `id` | number | Issue ID |
| `number` | number | Issue number |
| `title` | string | Issue title |
| `state` | string | Issue state (open/closed) |
| `html_url` | string | GitHub web URL |
| `body` | string | Issue body/description |
| `created_at` | string | Creation timestamp |
| `updated_at` | string | Last update timestamp |
| `closed_at` | string | Close timestamp |
| `state_reason` | string | State reason (completed/not\_planned) |
| `labels` | array | Array of label objects |
| ↳ `id` | number | Label ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `url` | string | API URL |
| ↳ `name` | string | Label name |
| ↳ `description` | string | Label description |
| ↳ `color` | string | Hex color code (without #) |
| ↳ `default` | boolean | Whether this is a default label |
| `assignees` | array | Array of assignee objects |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
### GitHub Add Labels [#github-add-labels]
Add labels to an issue in a GitHub repository
#### Input [#input-35]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `issue_number` | number | Yes | Issue number |
| `labels` | string | Yes | Comma-separated list of label names to add to the issue |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-35]
| Parameter | Type | Description |
| --------------- | ------ | ----------------------------------- |
| `items` | array | Array of label objects on the issue |
| ↳ `id` | number | Label ID |
| ↳ `name` | string | Label name |
| ↳ `color` | string | Label color |
| ↳ `description` | string | Label description |
| `count` | number | Number of labels |
### GitHub Remove Label [#github-remove-label]
Remove a label from an issue in a GitHub repository
#### Input [#input-36]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | -------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `issue_number` | number | Yes | Issue number |
| `name` | string | Yes | Label name to remove |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-36]
| Parameter | Type | Description |
| --------------- | ------ | ----------------------------- |
| `items` | array | Remaining labels on the issue |
| ↳ `id` | number | Label ID |
| ↳ `name` | string | Label name |
| ↳ `color` | string | Label color |
| ↳ `description` | string | Label description |
| `count` | number | Number of remaining labels |
### GitHub Add Assignees [#github-add-assignees]
Add assignees to an issue in a GitHub repository
#### Input [#input-37]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | -------------------------------------------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `issue_number` | number | Yes | Issue number |
| `assignees` | string | Yes | Comma-separated list of usernames to assign to the issue |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-37]
| Parameter | Type | Description |
| ------------ | ------ | ------------------------- |
| `id` | number | Issue ID |
| `number` | number | Issue number |
| `title` | string | Issue title |
| `state` | string | Issue state |
| `html_url` | string | GitHub web URL |
| `body` | string | Issue body |
| `user` | json | Issue creator |
| `labels` | array | Array of label objects |
| `assignees` | array | Array of assignee objects |
| `created_at` | string | Creation timestamp |
| `updated_at` | string | Last update timestamp |
### GitHub Create Release [#github-create-release]
Create a new release for a GitHub repository. Specify tag name, target commit, title, description, and whether it should be a draft or prerelease.
#### Input [#input-38]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `tag_name` | string | Yes | The name of the tag for this release |
| `target_commitish` | string | No | Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Defaults to the repository default branch. |
| `name` | string | No | The name of the release |
| `body` | string | No | Text describing the contents of the release (markdown supported) |
| `draft` | boolean | No | true to create a draft (unpublished) release, false to create a published one |
| `prerelease` | boolean | No | true to identify the release as a prerelease, false to identify as a full release |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-38]
| Parameter | Type | Description |
| ------------------------ | ------- | ----------------------------------- |
| `author` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| `id` | number | Release ID |
| `node_id` | string | GraphQL node ID |
| `tag_name` | string | Git tag name |
| `name` | string | Release name |
| `body` | string | Release notes (markdown) |
| `html_url` | string | GitHub web URL |
| `tarball_url` | string | Source tarball URL |
| `zipball_url` | string | Source zipball URL |
| `draft` | boolean | Whether this is a draft release |
| `prerelease` | boolean | Whether this is a prerelease |
| `target_commitish` | string | Target branch or commit SHA |
| `created_at` | string | Creation timestamp |
| `published_at` | string | Publication timestamp |
| `assets` | array | Release assets |
| ↳ `uploader` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| ↳ `id` | number | Asset ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `name` | string | Asset filename |
| ↳ `label` | string | Asset label |
| ↳ `state` | string | Asset state (uploaded/open) |
| ↳ `content_type` | string | MIME type |
| ↳ `size` | number | File size in bytes |
| ↳ `download_count` | number | Number of downloads |
| ↳ `browser_download_url` | string | Direct download URL |
| ↳ `created_at` | string | Upload timestamp |
| ↳ `updated_at` | string | Last update timestamp |
### GitHub Update Release [#github-update-release]
Update an existing GitHub release. Modify tag name, target commit, title, description, draft status, or prerelease status.
#### Input [#input-39]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | ---------------------------------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `release_id` | number | Yes | The unique identifier of the release |
| `tag_name` | string | No | The name of the tag |
| `target_commitish` | string | No | Specifies the commitish value for where the tag is created from |
| `name` | string | No | The name of the release |
| `body` | string | No | Text describing the contents of the release (markdown supported) |
| `draft` | boolean | No | true to set as draft, false to publish |
| `prerelease` | boolean | No | true to identify as a prerelease, false for a full release |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-39]
| Parameter | Type | Description |
| ------------------------ | ------- | ----------------------------------- |
| `author` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| `id` | number | Release ID |
| `node_id` | string | GraphQL node ID |
| `tag_name` | string | Git tag name |
| `name` | string | Release name |
| `body` | string | Release notes (markdown) |
| `html_url` | string | GitHub web URL |
| `tarball_url` | string | Source tarball URL |
| `zipball_url` | string | Source zipball URL |
| `draft` | boolean | Whether this is a draft release |
| `prerelease` | boolean | Whether this is a prerelease |
| `target_commitish` | string | Target branch or commit SHA |
| `created_at` | string | Creation timestamp |
| `published_at` | string | Publication timestamp |
| `assets` | array | Release assets |
| ↳ `uploader` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| ↳ `id` | number | Asset ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `name` | string | Asset filename |
| ↳ `label` | string | Asset label |
| ↳ `state` | string | Asset state (uploaded/open) |
| ↳ `content_type` | string | MIME type |
| ↳ `size` | number | File size in bytes |
| ↳ `download_count` | number | Number of downloads |
| ↳ `browser_download_url` | string | Direct download URL |
| ↳ `created_at` | string | Upload timestamp |
| ↳ `updated_at` | string | Last update timestamp |
### GitHub List Releases [#github-list-releases]
List all releases for a GitHub repository. Returns release information including tags, names, and download URLs.
#### Input [#input-40]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `per_page` | number | No | Number of results per page (max 100) |
| `page` | number | No | Page number of the results to fetch |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-40]
| Parameter | Type | Description |
| ------------------------ | ------- | ----------------------------------- |
| `items` | array | Array of release objects |
| ↳ `author` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| ↳ `id` | number | Release ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `tag_name` | string | Git tag name |
| ↳ `name` | string | Release name |
| ↳ `body` | string | Release notes (markdown) |
| ↳ `html_url` | string | GitHub web URL |
| ↳ `tarball_url` | string | Source tarball URL |
| ↳ `zipball_url` | string | Source zipball URL |
| ↳ `draft` | boolean | Whether this is a draft release |
| ↳ `prerelease` | boolean | Whether this is a prerelease |
| ↳ `target_commitish` | string | Target branch or commit SHA |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `published_at` | string | Publication timestamp |
| ↳ `assets` | array | Release assets |
| ↳ `uploader` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| ↳ `id` | number | Asset ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `name` | string | Asset filename |
| ↳ `label` | string | Asset label |
| ↳ `state` | string | Asset state (uploaded/open) |
| ↳ `content_type` | string | MIME type |
| ↳ `size` | number | File size in bytes |
| ↳ `download_count` | number | Number of downloads |
| ↳ `browser_download_url` | string | Direct download URL |
| ↳ `created_at` | string | Upload timestamp |
| ↳ `updated_at` | string | Last update timestamp |
| `count` | number | Number of releases returned |
### GitHub Get Release [#github-get-release]
Get detailed information about a specific GitHub release by ID. Returns release metadata including assets and download URLs.
#### Input [#input-41]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | --------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `release_id` | number | Yes | The unique identifier of the release |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-41]
| Parameter | Type | Description |
| ------------------------ | ------- | ----------------------------------- |
| `author` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| `id` | number | Release ID |
| `node_id` | string | GraphQL node ID |
| `tag_name` | string | Git tag name |
| `name` | string | Release name |
| `body` | string | Release notes (markdown) |
| `html_url` | string | GitHub web URL |
| `tarball_url` | string | Source tarball URL |
| `zipball_url` | string | Source zipball URL |
| `draft` | boolean | Whether this is a draft release |
| `prerelease` | boolean | Whether this is a prerelease |
| `target_commitish` | string | Target branch or commit SHA |
| `created_at` | string | Creation timestamp |
| `published_at` | string | Publication timestamp |
| `assets` | array | Release assets |
| ↳ `uploader` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| ↳ `id` | number | Asset ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `name` | string | Asset filename |
| ↳ `label` | string | Asset label |
| ↳ `state` | string | Asset state (uploaded/open) |
| ↳ `content_type` | string | MIME type |
| ↳ `size` | number | File size in bytes |
| ↳ `download_count` | number | Number of downloads |
| ↳ `browser_download_url` | string | Direct download URL |
| ↳ `created_at` | string | Upload timestamp |
| ↳ `updated_at` | string | Last update timestamp |
### GitHub Get Latest Release [#github-get-latest-release]
Get the latest published, non-draft, non-prerelease release for a GitHub repository. Returns release metadata including assets and download URLs.
#### Input [#input-42]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-42]
| Parameter | Type | Description |
| ------------------------ | ------- | ----------------------------------- |
| `author` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| `id` | number | Release ID |
| `node_id` | string | GraphQL node ID |
| `tag_name` | string | Git tag name |
| `name` | string | Release name |
| `body` | string | Release notes (markdown) |
| `html_url` | string | GitHub web URL |
| `tarball_url` | string | Source tarball URL |
| `zipball_url` | string | Source zipball URL |
| `draft` | boolean | Whether this is a draft release |
| `prerelease` | boolean | Whether this is a prerelease |
| `target_commitish` | string | Target branch or commit SHA |
| `created_at` | string | Creation timestamp |
| `published_at` | string | Publication timestamp |
| `assets` | array | Release assets |
| ↳ `uploader` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| ↳ `id` | number | Asset ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `name` | string | Asset filename |
| ↳ `label` | string | Asset label |
| ↳ `state` | string | Asset state (uploaded/open) |
| ↳ `content_type` | string | MIME type |
| ↳ `size` | number | File size in bytes |
| ↳ `download_count` | number | Number of downloads |
| ↳ `browser_download_url` | string | Direct download URL |
| ↳ `created_at` | string | Upload timestamp |
| ↳ `updated_at` | string | Last update timestamp |
### GitHub Delete Release [#github-delete-release]
Delete a GitHub release by ID. This permanently removes the release but does not delete the associated Git tag.
#### Input [#input-43]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ---------------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `release_id` | number | Yes | The unique identifier of the release to delete |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-43]
| Parameter | Type | Description |
| ------------ | ------- | ------------------------------- |
| `deleted` | boolean | Whether the release was deleted |
| `release_id` | number | ID of the deleted release |
### GitHub List Workflows [#github-list-workflows]
List all workflows in a GitHub repository. Returns workflow details including ID, name, path, state, and badge URL.
#### Input [#input-44]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `per_page` | number | No | Number of results per page (default: 30, max: 100) |
| `page` | number | No | Page number of results to fetch (default: 1) |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-44]
| Parameter | Type | Description |
| -------------- | ------ | --------------------------------------------------------------- |
| `total_count` | number | Total number of workflows |
| `items` | array | Array of workflow objects |
| ↳ `id` | number | Workflow ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `name` | string | Workflow name |
| ↳ `path` | string | Path to workflow file |
| ↳ `state` | string | Workflow state (active/disabled\_manually/disabled\_inactivity) |
| ↳ `html_url` | string | GitHub web URL |
| ↳ `badge_url` | string | Status badge URL |
| ↳ `url` | string | API URL |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `updated_at` | string | Last update timestamp |
| ↳ `deleted_at` | string | Deletion timestamp |
### GitHub Get Workflow [#github-get-workflow]
Get details of a specific GitHub Actions workflow by ID or filename. Returns workflow information including name, path, state, and badge URL.
#### Input [#input-45]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `workflow_id` | string | Yes | Workflow ID (number) or workflow filename (e.g., "main.yaml") |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-45]
| Parameter | Type | Description |
| ------------ | ------ | --------------------------------------------------------------- |
| `id` | number | Workflow ID |
| `node_id` | string | GraphQL node ID |
| `name` | string | Workflow name |
| `path` | string | Path to workflow file |
| `state` | string | Workflow state (active/disabled\_manually/disabled\_inactivity) |
| `html_url` | string | GitHub web URL |
| `badge_url` | string | Status badge URL |
| `url` | string | API URL |
| `created_at` | string | Creation timestamp |
| `updated_at` | string | Last update timestamp |
| `deleted_at` | string | Deletion timestamp |
### GitHub Trigger Workflow [#github-trigger-workflow]
Trigger a workflow dispatch event for a GitHub Actions workflow. The workflow must have a workflow\_dispatch trigger configured. Returns 204 No Content on success.
#### Input [#input-46]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `workflow_id` | string | Yes | Workflow ID (number) or workflow filename (e.g., "main.yaml") |
| `ref` | string | Yes | Git reference (branch or tag name) to run the workflow on |
| `inputs` | object | No | Input keys and values configured in the workflow file |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-46]
| Parameter | Type | Description |
| ------------- | ------- | ------------------------------ |
| `triggered` | boolean | Whether workflow was triggered |
| `workflow_id` | string | Workflow ID or filename |
| `ref` | string | Git reference used |
### GitHub List Workflow Runs [#github-list-workflow-runs]
List workflow runs for a repository. Supports filtering by actor, branch, event, and status. Returns run details including status, conclusion, and links.
#### Input [#input-47]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `actor` | string | No | Filter by user who triggered the workflow |
| `branch` | string | No | Filter by branch name |
| `event` | string | No | Filter by event type (e.g., push, pull\_request, workflow\_dispatch) |
| `status` | string | No | Filter by status (queued, in\_progress, completed, waiting, requested, pending) |
| `per_page` | number | No | Number of results per page (default: 30, max: 100) |
| `page` | number | No | Page number of results to fetch (default: 1) |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-47]
| Parameter | Type | Description |
| ------------- | ------ | ----------------------------- |
| `total_count` | number | Total number of workflow runs |
| `items` | array | Array of workflow run objects |
| ↳ `id` | number | Pull request ID |
| ↳ `number` | number | Pull request number |
| ↳ `url` | string | API URL |
### GitHub Get Workflow Run [#github-get-workflow-run]
Get detailed information about a specific workflow run by ID. Returns status, conclusion, timing, and links to the run.
#### Input [#input-48]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `run_id` | number | Yes | Workflow run ID |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-48]
| Parameter | Type | Description |
| ---------------------- | ------ | ---------------------------------------------- |
| `triggering_actor` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
| `head_commit` | object | Head commit information |
| ↳ `id` | string | Commit SHA |
| ↳ `tree_id` | string | Tree SHA |
| ↳ `message` | string | Commit message |
| ↳ `timestamp` | string | Commit timestamp |
| `id` | number | Workflow run ID |
| `name` | string | Workflow name |
| `head_branch` | string | Head branch name |
| `head_sha` | string | Head commit SHA |
| `run_number` | number | Run number |
| `run_attempt` | number | Run attempt number |
| `event` | string | Event that triggered the run |
| `status` | string | Run status (queued/in\_progress/completed) |
| `conclusion` | string | Run conclusion (success/failure/cancelled/etc) |
| `workflow_id` | number | Associated workflow ID |
| `html_url` | string | GitHub web URL |
| `logs_url` | string | Logs download URL |
| `jobs_url` | string | Jobs API URL |
| `artifacts_url` | string | Artifacts API URL |
| `run_started_at` | string | Run start timestamp |
| `created_at` | string | Creation timestamp |
| `updated_at` | string | Last update timestamp |
| `pull_requests` | array | Associated pull requests |
| ↳ `id` | number | Pull request ID |
| ↳ `number` | number | Pull request number |
| ↳ `url` | string | API URL |
| `referenced_workflows` | array | Referenced workflows |
| ↳ `path` | string | Path to referenced workflow |
| ↳ `sha` | string | Commit SHA of referenced workflow |
| ↳ `ref` | string | Git ref of referenced workflow |
### GitHub Cancel Workflow Run [#github-cancel-workflow-run]
Cancel a workflow run. Returns 202 Accepted if cancellation is initiated, or 409 Conflict if the run cannot be cancelled (already completed).
#### Input [#input-49]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `run_id` | number | Yes | Workflow run ID to cancel |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-49]
| Parameter | Type | Description |
| ----------- | ------- | ---------------------------------- |
| `cancelled` | boolean | Whether cancellation was initiated |
| `run_id` | number | Workflow run ID |
### GitHub Rerun Workflow [#github-rerun-workflow]
Rerun a workflow run. Optionally enable debug logging for the rerun. Returns 201 Created on success.
#### Input [#input-50]
| Parameter | Type | Required | Description |
| ---------------------- | ------- | -------- | --------------------------------------------------- |
| `owner` | string | Yes | Repository owner (user or organization) |
| `repo` | string | Yes | Repository name |
| `run_id` | number | Yes | Workflow run ID to rerun |
| `enable_debug_logging` | boolean | No | Enable debug logging for the rerun (default: false) |
| `apiKey` | string | Yes | GitHub Personal Access Token |
#### Output [#output-50]
| Parameter | Type | Description |
| ----------------- | ------- | --------------------------- |
| `rerun_requested` | boolean | Whether rerun was requested |
| `run_id` | number | Workflow run ID |
### GitHub List Projects [#github-list-projects]
List GitHub Projects V2 for an organization or user. Returns up to 20 projects with their details including ID, title, number, URL, and status.
#### Input [#input-51]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------------------------- |
| `owner_type` | string | Yes | Owner type: "org" for organization or "user" for user |
| `owner_login` | string | Yes | Organization or user login name |
| `apiKey` | string | Yes | GitHub Personal Access Token with project read permissions |
#### Output [#output-51]
| Parameter | Type | Description |
| -------------------- | ------- | ------------------------- |
| `items` | array | Array of project objects |
| ↳ `id` | string | Project node ID |
| ↳ `title` | string | Project title |
| ↳ `number` | number | Project number |
| ↳ `url` | string | Project URL |
| ↳ `closed` | boolean | Whether project is closed |
| ↳ `public` | boolean | Whether project is public |
| ↳ `shortDescription` | string | Short description |
| `totalCount` | number | Total number of projects |
### GitHub Get Project [#github-get-project]
Get detailed information about a specific GitHub Project V2 by its number. Returns project details including ID, title, description, URL, and status.
#### Input [#input-52]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ---------------------------------------------------------- |
| `owner_type` | string | Yes | Owner type: "org" for organization or "user" for user |
| `owner_login` | string | Yes | Organization or user login name |
| `project_number` | number | Yes | Project number |
| `apiKey` | string | Yes | GitHub Personal Access Token with project read permissions |
#### Output [#output-52]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------- |
| `id` | string | Project node ID |
| `title` | string | Project title |
| `number` | number | Project number |
| `url` | string | Project URL |
| `closed` | boolean | Whether project is closed |
| `public` | boolean | Whether project is public |
| `shortDescription` | string | Short description |
| `readme` | string | Project readme |
| `createdAt` | string | Creation timestamp |
| `updatedAt` | string | Last update timestamp |
### GitHub Create Project [#github-create-project]
Create a new GitHub Project V2. Requires the owner Node ID (not login name). Returns the created project with ID, title, and URL.
#### Input [#input-53]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- |
| `owner_id` | string | Yes | Owner Node ID (format: PVT\_... or MDQ6...). Use GitHub GraphQL API to get this ID from organization or user login. |
| `title` | string | Yes | Project title |
| `apiKey` | string | Yes | GitHub Personal Access Token with project write permissions |
#### Output [#output-53]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------- |
| `id` | string | Project node ID |
| `title` | string | Project title |
| `number` | number | Project number |
| `url` | string | Project URL |
| `closed` | boolean | Whether project is closed |
| `public` | boolean | Whether project is public |
| `shortDescription` | string | Short description |
### GitHub Update Project [#github-update-project]
Update an existing GitHub Project V2. Can update title, description, visibility (public), or status (closed). Requires the project Node ID.
#### Input [#input-54]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | ----------------------------------------------------------- |
| `project_id` | string | Yes | Project Node ID (format: PVT\_...) |
| `title` | string | No | New project title |
| `shortDescription` | string | No | New project short description |
| `project_public` | boolean | No | Set project visibility (true = public, false = private) |
| `closed` | boolean | No | Set project status (true = closed, false = open) |
| `apiKey` | string | Yes | GitHub Personal Access Token with project write permissions |
#### Output [#output-54]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------- |
| `id` | string | Project node ID |
| `title` | string | Project title |
| `number` | number | Project number |
| `url` | string | Project URL |
| `closed` | boolean | Whether project is closed |
| `public` | boolean | Whether project is public |
| `shortDescription` | string | Short description |
### GitHub Delete Project [#github-delete-project]
Delete a GitHub Project V2. This action is permanent and cannot be undone. Requires the project Node ID.
#### Input [#input-55]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ----------------------------------------------------------- |
| `project_id` | string | Yes | Project Node ID (format: PVT\_...) |
| `apiKey` | string | Yes | GitHub Personal Access Token with project admin permissions |
#### Output [#output-55]
| Parameter | Type | Description |
| --------- | ------ | ----------------------- |
| `id` | string | Deleted project node ID |
| `title` | string | Deleted project title |
| `number` | number | Deleted project number |
| `url` | string | Deleted project URL |
### GitHub Search Code [#github-search-code]
Search for code across GitHub repositories. Use qualifiers like repo:owner/name, language:js, path:src, extension:py
#### Input [#input-56]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------------------------------------- |
| `q` | string | Yes | Search query with optional qualifiers (repo:, language:, path:, extension:, user:, org:) |
| `sort` | string | No | Sort by indexed date (default: best match) |
| `order` | string | No | Sort order: asc or desc (default: desc) |
| `per_page` | number | No | Results per page (max 100, default: 30) |
| `page` | number | No | Page number (default: 1) |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-56]
| Parameter | Type | Description |
| -------------------- | ------- | ------------------------------------- |
| `total_count` | number | Total matching results |
| `incomplete_results` | boolean | Whether results are incomplete |
| `items` | array | Array of code matches from GitHub API |
| ↳ `name` | string | File name |
| ↳ `path` | string | File path |
| ↳ `sha` | string | Blob SHA |
| ↳ `url` | string | API URL |
| ↳ `git_url` | string | Git blob URL |
| ↳ `html_url` | string | GitHub web URL |
| ↳ `score` | number | Search relevance score |
| ↳ `repository` | object | Repository containing the code |
| ↳ `id` | number | Repository ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `name` | string | Repository name |
| ↳ `full_name` | string | Full name (owner/repo) |
| ↳ `private` | boolean | Whether repository is private |
| ↳ `html_url` | string | GitHub web URL |
| ↳ `description` | string | Repository description |
| ↳ `fork` | boolean | Whether this is a fork |
| ↳ `url` | string | API URL |
| ↳ `owner` | object | Repository owner |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| ↳ `text_matches` | array | Text matches showing context |
| ↳ `object_url` | string | Object URL |
| ↳ `object_type` | string | Object type |
| ↳ `property` | string | Property matched |
| ↳ `fragment` | string | Text fragment with match |
| ↳ `matches` | array | Match indices |
| ↳ `text` | string | Matched text |
| ↳ `indices` | array | Start and end indices |
### GitHub Search Commits [#github-search-commits]
Search for commits across GitHub. Use qualifiers like repo:owner/name, author:user, committer:user, author-date:>2023-01-01
#### Input [#input-57]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- |
| `q` | string | Yes | Search query with optional qualifiers (repo:, author:, committer:, author-date:, committer-date:, merge:true/false) |
| `sort` | string | No | Sort by: author-date or committer-date (default: best match) |
| `order` | string | No | Sort order: asc or desc (default: desc) |
| `per_page` | number | No | Results per page (max 100, default: 30) |
| `page` | number | No | Page number (default: 1) |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-57]
| Parameter | Type | Description |
| -------------------- | ------- | --------------------------------------- |
| `total_count` | number | Total matching results |
| `incomplete_results` | boolean | Whether results are incomplete |
| `items` | array | Array of commit objects from GitHub API |
| ↳ `sha` | string | Commit SHA |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `html_url` | string | Web URL |
| ↳ `url` | string | API URL |
| ↳ `comments_url` | string | Comments API URL |
| ↳ `score` | number | Search relevance score |
| ↳ `commit` | object | Core commit data |
| ↳ `url` | string | Commit API URL |
| ↳ `message` | string | Commit message |
| ↳ `comment_count` | number | Number of comments |
| ↳ `author` | object | Git author |
| ↳ `name` | string | Author name |
| ↳ `email` | string | Author email |
| ↳ `date` | string | Author date (ISO 8601) |
| ↳ `committer` | object | Git committer |
| ↳ `name` | string | Committer name |
| ↳ `email` | string | Committer email |
| ↳ `date` | string | Commit date (ISO 8601) |
| ↳ `tree` | object | Tree object |
| ↳ `sha` | string | Tree SHA |
| ↳ `url` | string | Tree API URL |
| ↳ `author` | object | GitHub user (author) |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| ↳ `committer` | object | GitHub user (committer) |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| ↳ `repository` | object | Repository containing the commit |
| ↳ `id` | number | Repository ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `name` | string | Repository name |
| ↳ `full_name` | string | Full name (owner/repo) |
| ↳ `private` | boolean | Whether repository is private |
| ↳ `html_url` | string | GitHub web URL |
| ↳ `description` | string | Repository description |
| ↳ `owner` | object | Repository owner |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| ↳ `parents` | array | Parent commits |
| ↳ `sha` | string | Parent SHA |
| ↳ `url` | string | Parent API URL |
| ↳ `html_url` | string | Parent web URL |
### GitHub Search Issues [#github-search-issues]
Search for issues and pull requests across GitHub. Use qualifiers like repo:owner/name, is:issue, is:pr, state:open, label:bug, author:user
#### Input [#input-58]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------------------------------------------------------------- |
| `q` | string | Yes | Search query with optional qualifiers (repo:, is:issue, is:pr, state:, label:, author:, assignee:) |
| `sort` | string | No | Sort by: comments, reactions, created, updated, interactions (default: best match) |
| `order` | string | No | Sort order: asc or desc (default: desc) |
| `per_page` | number | No | Results per page (max 100, default: 30) |
| `page` | number | No | Page number (default: 1) |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-58]
| Parameter | Type | Description |
| -------------------- | ------- | ----------------------------------------- |
| `total_count` | number | Total matching results |
| `incomplete_results` | boolean | Whether results are incomplete |
| `items` | array | Array of issue/PR objects from GitHub API |
| ↳ `id` | number | Issue ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `number` | number | Issue number |
| ↳ `title` | string | Title |
| ↳ `state` | string | State (open or closed) |
| ↳ `locked` | boolean | Whether issue is locked |
| ↳ `html_url` | string | Web URL |
| ↳ `url` | string | API URL |
| ↳ `repository_url` | string | Repository API URL |
| ↳ `comments_url` | string | Comments API URL |
| ↳ `body` | string | Body text |
| ↳ `comments` | number | Number of comments |
| ↳ `score` | number | Search relevance score |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `updated_at` | string | Last update timestamp |
| ↳ `closed_at` | string | Close timestamp |
| ↳ `user` | object | Issue author |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| ↳ `labels` | array | Issue labels |
| ↳ `id` | number | Label ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `url` | string | API URL |
| ↳ `name` | string | Label name |
| ↳ `description` | string | Label description |
| ↳ `color` | string | Hex color code |
| ↳ `default` | boolean | Whether this is a default label |
| ↳ `assignee` | object | Primary assignee |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| ↳ `assignees` | array | All assignees |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| ↳ `milestone` | object | Associated milestone |
| ↳ `id` | number | Milestone ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `number` | number | Milestone number |
| ↳ `title` | string | Milestone title |
| ↳ `description` | string | Milestone description |
| ↳ `state` | string | State (open or closed) |
| ↳ `html_url` | string | Web URL |
| ↳ `due_on` | string | Due date |
| ↳ `pull_request` | object | Pull request details (if this is a PR) |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Web URL |
| ↳ `diff_url` | string | Diff URL |
| ↳ `patch_url` | string | Patch URL |
### GitHub Search Repositories [#github-search-repositories]
Search for repositories across GitHub. Use qualifiers like language:python, stars:>1000, topic:react, user:owner, org:name
#### Input [#input-59]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ |
| `q` | string | Yes | Search query with optional qualifiers (language:, stars:, forks:, topic:, user:, org:, in:name,description,readme) |
| `sort` | string | No | Sort by: stars, forks, help-wanted-issues, updated (default: best match) |
| `order` | string | No | Sort order: asc or desc (default: desc) |
| `per_page` | number | No | Results per page (max 100, default: 30) |
| `page` | number | No | Page number (default: 1) |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-59]
| Parameter | Type | Description |
| --------------------- | ------- | ------------------------------------------- |
| `total_count` | number | Total matching results |
| `incomplete_results` | boolean | Whether results are incomplete |
| `items` | array | Array of repository objects from GitHub API |
| ↳ `id` | number | Repository ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `name` | string | Repository name |
| ↳ `full_name` | string | Full name (owner/repo) |
| ↳ `private` | boolean | Whether repository is private |
| ↳ `description` | string | Repository description |
| ↳ `html_url` | string | GitHub web URL |
| ↳ `url` | string | API URL |
| ↳ `fork` | boolean | Whether this is a fork |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `updated_at` | string | Last update timestamp |
| ↳ `pushed_at` | string | Last push timestamp |
| ↳ `size` | number | Repository size in KB |
| ↳ `stargazers_count` | number | Number of stars |
| ↳ `watchers_count` | number | Number of watchers |
| ↳ `forks_count` | number | Number of forks |
| ↳ `open_issues_count` | number | Number of open issues |
| ↳ `language` | string | Primary programming language |
| ↳ `default_branch` | string | Default branch name |
| ↳ `visibility` | string | Repository visibility |
| ↳ `archived` | boolean | Whether repository is archived |
| ↳ `disabled` | boolean | Whether repository is disabled |
| ↳ `score` | number | Search relevance score |
| ↳ `topics` | array | Repository topics |
| ↳ `license` | object | License information |
| ↳ `key` | string | License key (e.g., mit) |
| ↳ `name` | string | License name |
| ↳ `spdx_id` | string | SPDX identifier |
| ↳ `owner` | object | Repository owner |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
### GitHub Search Users [#github-search-users]
Search for users and organizations on GitHub. Use qualifiers like type:user, type:org, followers:>1000, repos:>10, location:city
#### Input [#input-60]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- |
| `q` | string | Yes | Search query with optional qualifiers (type:user/org, followers:, repos:, location:, language:, created:) |
| `sort` | string | No | Sort by: followers, repositories, joined (default: best match) |
| `order` | string | No | Sort order: asc or desc (default: desc) |
| `per_page` | number | No | Results per page (max 100, default: 30) |
| `page` | number | No | Page number (default: 1) |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-60]
| Parameter | Type | Description |
| --------------------- | ------- | ------------------------------------- |
| `total_count` | number | Total matching results |
| `incomplete_results` | boolean | Whether results are incomplete |
| `items` | array | Array of user objects from GitHub API |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `login` | string | Username |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `gravatar_id` | string | Gravatar ID |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `followers_url` | string | Followers API URL |
| ↳ `following_url` | string | Following API URL |
| ↳ `gists_url` | string | Gists API URL |
| ↳ `starred_url` | string | Starred API URL |
| ↳ `repos_url` | string | Repos API URL |
| ↳ `organizations_url` | string | Organizations API URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| ↳ `score` | number | Search relevance score |
### GitHub List Commits [#github-list-commits]
List commits in a repository with optional filtering by SHA, path, author, committer, or date range
#### Input [#input-61]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `sha` | string | No | SHA or branch to start listing commits from |
| `path` | string | No | Only commits containing this file path |
| `author` | string | No | GitHub login or email address to filter by author |
| `committer` | string | No | GitHub login or email address to filter by committer |
| `since` | string | No | Only commits after this date (ISO 8601 format) |
| `until` | string | No | Only commits before this date (ISO 8601 format) |
| `per_page` | number | No | Results per page (max 100, default: 30) |
| `page` | number | No | Page number (default: 1) |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-61]
| Parameter | Type | Description |
| ----------------- | ------- | --------------------------------------- |
| `items` | array | Array of commit objects from GitHub API |
| ↳ `commit` | object | Core commit data |
| ↳ `url` | string | Commit API URL |
| ↳ `message` | string | Commit message |
| ↳ `comment_count` | number | Number of comments |
| ↳ `author` | object | Git actor (author/committer) |
| ↳ `name` | string | Name |
| ↳ `email` | string | Email address |
| ↳ `date` | string | Timestamp (ISO 8601) |
| ↳ `committer` | object | Git actor (author/committer) |
| ↳ `name` | string | Name |
| ↳ `email` | string | Email address |
| ↳ `date` | string | Timestamp (ISO 8601) |
| ↳ `tree` | object | Tree object |
| ↳ `sha` | string | Tree SHA |
| ↳ `url` | string | Tree API URL |
| ↳ `verification` | object | Signature verification |
| ↳ `verified` | boolean | Whether signature is verified |
| ↳ `reason` | string | Verification reason |
| ↳ `signature` | string | GPG signature |
| ↳ `payload` | string | Signed payload |
| ↳ `author` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| ↳ `committer` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| ↳ `sha` | string | Commit SHA |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `html_url` | string | GitHub web URL |
| ↳ `url` | string | API URL |
| ↳ `comments_url` | string | Comments API URL |
| ↳ `parents` | array | Parent commits |
| ↳ `sha` | string | Parent SHA |
| ↳ `url` | string | Parent API URL |
| ↳ `html_url` | string | Parent web URL |
| `count` | number | Number of commits returned |
### GitHub Get Commit [#github-get-commit]
Get detailed information about a specific commit including files changed and stats
#### Input [#input-62]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------ |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `ref` | string | Yes | Commit SHA, branch name, or tag name |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-62]
| Parameter | Type | Description |
| --------------------- | ------- | ----------------------------------------------------------------------------- |
| `commit` | object | Core commit data |
| ↳ `url` | string | Commit API URL |
| ↳ `message` | string | Commit message |
| ↳ `comment_count` | number | Number of comments |
| ↳ `author` | object | Git actor (author/committer) |
| ↳ `name` | string | Name |
| ↳ `email` | string | Email address |
| ↳ `date` | string | Timestamp (ISO 8601) |
| ↳ `committer` | object | Git actor (author/committer) |
| ↳ `name` | string | Name |
| ↳ `email` | string | Email address |
| ↳ `date` | string | Timestamp (ISO 8601) |
| ↳ `tree` | object | Tree object |
| ↳ `sha` | string | Tree SHA |
| ↳ `url` | string | Tree API URL |
| ↳ `verification` | object | Signature verification |
| ↳ `verified` | boolean | Whether signature is verified |
| ↳ `reason` | string | Verification reason |
| ↳ `signature` | string | GPG signature |
| ↳ `payload` | string | Signed payload |
| `author` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| `committer` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| `stats` | object | Change statistics |
| ↳ `additions` | number | Lines added |
| ↳ `deletions` | number | Lines deleted |
| ↳ `total` | number | Total changes |
| `sha` | string | Commit SHA |
| `node_id` | string | GraphQL node ID |
| `html_url` | string | GitHub web URL |
| `url` | string | API URL |
| `comments_url` | string | Comments API URL |
| `files` | array | Changed files (diff entries) |
| ↳ `sha` | string | Blob SHA |
| ↳ `filename` | string | File path |
| ↳ `status` | string | Change status (added, removed, modified, renamed, copied, changed, unchanged) |
| ↳ `additions` | number | Lines added |
| ↳ `deletions` | number | Lines deleted |
| ↳ `changes` | number | Total changes |
| ↳ `blob_url` | string | Blob URL |
| ↳ `raw_url` | string | Raw file URL |
| ↳ `contents_url` | string | Contents API URL |
| ↳ `patch` | string | Diff patch |
| ↳ `previous_filename` | string | Previous filename (for renames) |
| `parents` | array | Parent commits |
| ↳ `sha` | string | Parent SHA |
| ↳ `url` | string | Parent API URL |
| ↳ `html_url` | string | Parent web URL |
### GitHub Compare Commits [#github-compare-commits]
Compare two commits or branches to see the diff, commits between them, and changed files
#### Input [#input-63]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `base` | string | Yes | Base branch/tag/SHA for comparison |
| `head` | string | Yes | Head branch/tag/SHA for comparison |
| `per_page` | number | No | Results per page for files (max 100, default: 30) |
| `page` | number | No | Page number for files (default: 1) |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-63]
| Parameter | Type | Description |
| --------------------- | ------- | ----------------------------------------------------------------------------- |
| `url` | string | API URL |
| `html_url` | string | GitHub web URL |
| `permalink_url` | string | Permanent link URL |
| `diff_url` | string | Diff download URL |
| `patch_url` | string | Patch download URL |
| `status` | string | Comparison status (ahead, behind, identical, diverged) |
| `ahead_by` | number | Commits head is ahead of base |
| `behind_by` | number | Commits head is behind base |
| `total_commits` | number | Total commits in comparison |
| `base_commit` | object | Base commit object |
| ↳ `commit` | object | Core commit data |
| ↳ `url` | string | Commit API URL |
| ↳ `message` | string | Commit message |
| ↳ `comment_count` | number | Number of comments |
| ↳ `author` | object | Git actor (author/committer) |
| ↳ `name` | string | Name |
| ↳ `email` | string | Email address |
| ↳ `date` | string | Timestamp (ISO 8601) |
| ↳ `committer` | object | Git actor (author/committer) |
| ↳ `name` | string | Name |
| ↳ `email` | string | Email address |
| ↳ `date` | string | Timestamp (ISO 8601) |
| ↳ `tree` | object | Tree object |
| ↳ `sha` | string | Tree SHA |
| ↳ `url` | string | Tree API URL |
| ↳ `verification` | object | Signature verification |
| ↳ `verified` | boolean | Whether signature is verified |
| ↳ `reason` | string | Verification reason |
| ↳ `signature` | string | GPG signature |
| ↳ `payload` | string | Signed payload |
| ↳ `author` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| ↳ `committer` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| ↳ `sha` | string | Commit SHA |
| ↳ `html_url` | string | Web URL |
| `merge_base_commit` | object | Merge base commit object |
| ↳ `sha` | string | Commit SHA |
| ↳ `html_url` | string | Web URL |
| `commits` | array | Commits between base and head |
| ↳ `commit` | object | Core commit data |
| ↳ `url` | string | Commit API URL |
| ↳ `message` | string | Commit message |
| ↳ `comment_count` | number | Number of comments |
| ↳ `author` | object | Git actor (author/committer) |
| ↳ `name` | string | Name |
| ↳ `email` | string | Email address |
| ↳ `date` | string | Timestamp (ISO 8601) |
| ↳ `committer` | object | Git actor (author/committer) |
| ↳ `name` | string | Name |
| ↳ `email` | string | Email address |
| ↳ `date` | string | Timestamp (ISO 8601) |
| ↳ `tree` | object | Tree object |
| ↳ `sha` | string | Tree SHA |
| ↳ `url` | string | Tree API URL |
| ↳ `verification` | object | Signature verification |
| ↳ `verified` | boolean | Whether signature is verified |
| ↳ `reason` | string | Verification reason |
| ↳ `signature` | string | GPG signature |
| ↳ `payload` | string | Signed payload |
| ↳ `author` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| ↳ `committer` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| ↳ `sha` | string | Commit SHA |
| ↳ `html_url` | string | Web URL |
| `files` | array | Changed files (diff entries) |
| ↳ `sha` | string | Blob SHA |
| ↳ `filename` | string | File path |
| ↳ `status` | string | Change status (added, removed, modified, renamed, copied, changed, unchanged) |
| ↳ `additions` | number | Lines added |
| ↳ `deletions` | number | Lines deleted |
| ↳ `changes` | number | Total changes |
| ↳ `blob_url` | string | Blob URL |
| ↳ `raw_url` | string | Raw file URL |
| ↳ `contents_url` | string | Contents API URL |
| ↳ `patch` | string | Diff patch |
| ↳ `previous_filename` | string | Previous filename (for renames) |
### GitHub Create Gist [#github-create-gist]
Create a new gist with one or more files
#### Input [#input-64]
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------- |
| `description` | string | No | Description of the gist |
| `files` | json | Yes | JSON object with filenames as keys and content as values. Example: \{"file.txt": \{"content": "Hello"}} |
| `public` | boolean | No | Whether the gist is public (default: false) |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-64]
| Parameter | Type | Description |
| -------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `id` | string | Gist ID |
| `node_id` | string | GraphQL node ID |
| `url` | string | API URL |
| `html_url` | string | Web URL |
| `forks_url` | string | Forks API URL |
| `commits_url` | string | Commits API URL |
| `git_pull_url` | string | Git pull URL |
| `git_push_url` | string | Git push URL |
| `description` | string | Gist description |
| `public` | boolean | Whether gist is public |
| `truncated` | boolean | Whether files are truncated |
| `comments` | number | Number of comments |
| `comments_url` | string | Comments API URL |
| `created_at` | string | Creation timestamp |
| `updated_at` | string | Last update timestamp |
| `files` | object | Files in the gist (object with filenames as keys, each containing filename, type, language, raw\_url, size, truncated, content) |
| `owner` | object | Gist owner |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
### GitHub Get Gist [#github-get-gist]
Get a gist by ID including its file contents
#### Input [#input-65]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------- |
| `gist_id` | string | Yes | The gist ID |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-65]
| Parameter | Type | Description |
| -------------- | ------- | ------------------------------------- |
| `files` | object | Files in the gist (keyed by filename) |
| ↳ `filename` | string | File name |
| ↳ `type` | string | MIME type |
| ↳ `language` | string | Programming language |
| ↳ `raw_url` | string | Raw file URL |
| ↳ `size` | number | File size in bytes |
| ↳ `truncated` | boolean | Whether content is truncated |
| ↳ `content` | string | File content |
| `owner` | object | Gist owner |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| `id` | string | Gist ID |
| `node_id` | string | GraphQL node ID |
| `url` | string | API URL |
| `html_url` | string | GitHub web URL |
| `forks_url` | string | Forks API URL |
| `commits_url` | string | Commits API URL |
| `git_pull_url` | string | Git clone URL |
| `git_push_url` | string | Git push URL |
| `description` | string | Gist description |
| `public` | boolean | Whether gist is public |
| `truncated` | boolean | Whether content is truncated |
| `comments` | number | Number of comments |
| `comments_url` | string | Comments API URL |
| `created_at` | string | Creation timestamp |
| `updated_at` | string | Last update timestamp |
### GitHub List Gists [#github-list-gists]
List gists for a user or the authenticated user
#### Input [#input-66]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------------- |
| `username` | string | No | GitHub username (omit for authenticated user's gists) |
| `since` | string | No | Only gists updated after this time (ISO 8601) |
| `per_page` | number | No | Results per page (max 100, default: 30) |
| `page` | number | No | Page number (default: 1) |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-66]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------------------- |
| `items` | array | Array of gist objects from GitHub API |
| ↳ `files` | object | Files in the gist (keyed by filename) |
| ↳ `filename` | string | File name |
| ↳ `type` | string | MIME type |
| ↳ `language` | string | Programming language |
| ↳ `raw_url` | string | Raw file URL |
| ↳ `size` | number | File size in bytes |
| ↳ `truncated` | boolean | Whether content is truncated |
| ↳ `content` | string | File content |
| ↳ `owner` | object | Gist owner |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| ↳ `id` | string | Gist ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | GitHub web URL |
| ↳ `forks_url` | string | Forks API URL |
| ↳ `commits_url` | string | Commits API URL |
| ↳ `git_pull_url` | string | Git clone URL |
| ↳ `git_push_url` | string | Git push URL |
| ↳ `description` | string | Gist description |
| ↳ `public` | boolean | Whether gist is public |
| ↳ `truncated` | boolean | Whether content is truncated |
| ↳ `comments` | number | Number of comments |
| ↳ `comments_url` | string | Comments API URL |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `updated_at` | string | Last update timestamp |
| `count` | number | Number of gists returned |
### GitHub Update Gist [#github-update-gist]
Update a gist description or files. To delete a file, set its value to null in files object
#### Input [#input-67]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `gist_id` | string | Yes | The gist ID to update |
| `description` | string | No | New description for the gist |
| `files` | json | No | JSON object with filenames as keys. Set to null to delete, or provide content to update/add |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-67]
| Parameter | Type | Description |
| -------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `id` | string | Gist ID |
| `node_id` | string | GraphQL node ID |
| `url` | string | API URL |
| `html_url` | string | Web URL |
| `forks_url` | string | Forks API URL |
| `commits_url` | string | Commits API URL |
| `git_pull_url` | string | Git pull URL |
| `git_push_url` | string | Git push URL |
| `description` | string | Gist description |
| `public` | boolean | Whether gist is public |
| `truncated` | boolean | Whether files are truncated |
| `comments` | number | Number of comments |
| `comments_url` | string | Comments API URL |
| `created_at` | string | Creation timestamp |
| `updated_at` | string | Last update timestamp |
| `files` | object | Files in the gist (object with filenames as keys, each containing filename, type, language, raw\_url, size, truncated, content) |
| `owner` | object | Gist owner |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
### GitHub Delete Gist [#github-delete-gist]
Delete a gist by ID
#### Input [#input-68]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------- |
| `gist_id` | string | Yes | The gist ID to delete |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-68]
| Parameter | Type | Description |
| --------- | ------- | -------------------------- |
| `deleted` | boolean | Whether deletion succeeded |
| `gist_id` | string | The deleted gist ID |
### GitHub Fork Gist [#github-fork-gist]
Fork a gist to create your own copy
#### Input [#input-69]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------- |
| `gist_id` | string | Yes | The gist ID to fork |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-69]
| Parameter | Type | Description |
| ------------- | ------- | ------------- |
| `id` | string | New gist ID |
| `html_url` | string | Web URL |
| `description` | string | Description |
| `public` | boolean | Is public |
| `created_at` | string | Creation date |
| `owner` | object | Owner info |
| `files` | object | Files |
### GitHub Star Gist [#github-star-gist]
Star a gist
#### Input [#input-70]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------- |
| `gist_id` | string | Yes | The gist ID to star |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-70]
| Parameter | Type | Description |
| --------- | ------- | -------------------------- |
| `starred` | boolean | Whether starring succeeded |
| `gist_id` | string | The gist ID |
### GitHub Unstar Gist [#github-unstar-gist]
Unstar a gist
#### Input [#input-71]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------- |
| `gist_id` | string | Yes | The gist ID to unstar |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-71]
| Parameter | Type | Description |
| ----------- | ------- | ---------------------------- |
| `unstarred` | boolean | Whether unstarring succeeded |
| `gist_id` | string | The gist ID |
### GitHub Fork Repository [#github-fork-repository]
Fork a repository to your account or an organization
#### Input [#input-72]
| Parameter | Type | Required | Description |
| --------------------- | ------- | -------- | -------------------------------------------------------- |
| `owner` | string | Yes | Repository owner to fork from |
| `repo` | string | Yes | Repository name to fork |
| `organization` | string | No | Organization to fork into (omit to fork to your account) |
| `name` | string | No | Custom name for the forked repository |
| `default_branch_only` | boolean | No | Only fork the default branch (default: false) |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-72]
| Parameter | Type | Description |
| ---------------- | ------- | -------------------------------------- |
| `id` | number | Repository ID |
| `node_id` | string | GraphQL node ID |
| `name` | string | Repository name |
| `full_name` | string | Full name (owner/repo) |
| `private` | boolean | Whether repository is private |
| `description` | string | Repository description |
| `html_url` | string | GitHub web URL |
| `url` | string | API URL |
| `clone_url` | string | HTTPS clone URL |
| `ssh_url` | string | SSH clone URL |
| `git_url` | string | Git protocol URL |
| `default_branch` | string | Default branch name |
| `fork` | boolean | Whether this is a fork |
| `created_at` | string | Creation timestamp |
| `updated_at` | string | Last update timestamp |
| `pushed_at` | string | Last push timestamp |
| `owner` | object | Fork owner |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| `parent` | object | Parent repository (source of the fork) |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| `source` | object | Source repository (ultimate origin) |
| ↳ `id` | number | Repository ID |
| ↳ `full_name` | string | Full name |
| ↳ `html_url` | string | Web URL |
### GitHub List Forks [#github-list-forks]
List forks of a repository
#### Input [#input-73]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `sort` | string | No | Sort by: newest, oldest, stargazers, watchers (default: newest) |
| `per_page` | number | No | Results per page (max 100, default: 30) |
| `page` | number | No | Page number (default: 1) |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-73]
| Parameter | Type | Description |
| --------------------- | ------- | ------------------------------------------------ |
| `items` | array | Array of fork repository objects from GitHub API |
| ↳ `id` | number | Repository ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `name` | string | Repository name |
| ↳ `full_name` | string | Full name (owner/repo) |
| ↳ `private` | boolean | Whether repository is private |
| ↳ `description` | string | Repository description |
| ↳ `html_url` | string | GitHub web URL |
| ↳ `url` | string | API URL |
| ↳ `fork` | boolean | Whether this is a fork |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `updated_at` | string | Last update timestamp |
| ↳ `pushed_at` | string | Last push timestamp |
| ↳ `size` | number | Repository size in KB |
| ↳ `stargazers_count` | number | Number of stars |
| ↳ `watchers_count` | number | Number of watchers |
| ↳ `forks_count` | number | Number of forks |
| ↳ `open_issues_count` | number | Number of open issues |
| ↳ `language` | string | Primary programming language |
| ↳ `default_branch` | string | Default branch name |
| ↳ `visibility` | string | Repository visibility |
| ↳ `archived` | boolean | Whether repository is archived |
| ↳ `disabled` | boolean | Whether repository is disabled |
| ↳ `owner` | object | Fork owner |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| `count` | number | Number of forks returned |
### GitHub Create Milestone [#github-create-milestone]
Create a milestone in a repository
#### Input [#input-74]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------ |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `title` | string | Yes | Milestone title |
| `state` | string | No | State: open or closed (default: open) |
| `description` | string | No | Milestone description |
| `due_on` | string | No | Due date (ISO 8601 format, e.g., 2024-12-31T23:59:59Z) |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-74]
| Parameter | Type | Description |
| --------------- | ------- | ----------------------- |
| `creator` | object | Milestone creator |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| `id` | number | Milestone ID |
| `node_id` | string | GraphQL node ID |
| `number` | number | Milestone number |
| `title` | string | Milestone title |
| `description` | string | Milestone description |
| `state` | string | State (open or closed) |
| `url` | string | API URL |
| `html_url` | string | GitHub web URL |
| `labels_url` | string | Labels API URL |
| `due_on` | string | Due date (ISO 8601) |
| `open_issues` | number | Number of open issues |
| `closed_issues` | number | Number of closed issues |
| `created_at` | string | Creation timestamp |
| `updated_at` | string | Last update timestamp |
| `closed_at` | string | Close timestamp |
### GitHub Get Milestone [#github-get-milestone]
Get a specific milestone by number
#### Input [#input-75]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ---------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `milestone_number` | number | Yes | Milestone number |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-75]
| Parameter | Type | Description |
| --------------- | ------- | ----------------------- |
| `creator` | object | Milestone creator |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| `id` | number | Milestone ID |
| `node_id` | string | GraphQL node ID |
| `number` | number | Milestone number |
| `title` | string | Milestone title |
| `description` | string | Milestone description |
| `state` | string | State (open or closed) |
| `url` | string | API URL |
| `html_url` | string | GitHub web URL |
| `labels_url` | string | Labels API URL |
| `due_on` | string | Due date (ISO 8601) |
| `open_issues` | number | Number of open issues |
| `closed_issues` | number | Number of closed issues |
| `created_at` | string | Creation timestamp |
| `updated_at` | string | Last update timestamp |
| `closed_at` | string | Close timestamp |
### GitHub List Milestones [#github-list-milestones]
List milestones in a repository
#### Input [#input-76]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `state` | string | No | Filter by state: open, closed, all (default: open) |
| `sort` | string | No | Sort by: due\_on or completeness (default: due\_on) |
| `direction` | string | No | Sort direction: asc or desc (default: asc) |
| `per_page` | number | No | Results per page (max 100, default: 30) |
| `page` | number | No | Page number (default: 1) |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-76]
| Parameter | Type | Description |
| ----------------- | ------- | ------------------------------------------ |
| `items` | array | Array of milestone objects from GitHub API |
| ↳ `creator` | object | Milestone creator |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| ↳ `id` | number | Milestone ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `number` | number | Milestone number |
| ↳ `title` | string | Milestone title |
| ↳ `description` | string | Milestone description |
| ↳ `state` | string | State (open or closed) |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | GitHub web URL |
| ↳ `labels_url` | string | Labels API URL |
| ↳ `due_on` | string | Due date (ISO 8601) |
| ↳ `open_issues` | number | Number of open issues |
| ↳ `closed_issues` | number | Number of closed issues |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `updated_at` | string | Last update timestamp |
| ↳ `closed_at` | string | Close timestamp |
| `count` | number | Number of milestones returned |
### GitHub Update Milestone [#github-update-milestone]
Update a milestone in a repository
#### Input [#input-77]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ------------------------------ |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `milestone_number` | number | Yes | Milestone number to update |
| `title` | string | No | New milestone title |
| `state` | string | No | New state: open or closed |
| `description` | string | No | New description |
| `due_on` | string | No | New due date (ISO 8601 format) |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-77]
| Parameter | Type | Description |
| --------------- | ------- | ----------------------- |
| `id` | number | Milestone ID |
| `node_id` | string | GraphQL node ID |
| `number` | number | Milestone number |
| `title` | string | Milestone title |
| `description` | string | Milestone description |
| `state` | string | State (open or closed) |
| `url` | string | API URL |
| `html_url` | string | GitHub web URL |
| `labels_url` | string | Labels API URL |
| `due_on` | string | Due date (ISO 8601) |
| `open_issues` | number | Number of open issues |
| `closed_issues` | number | Number of closed issues |
| `created_at` | string | Creation timestamp |
| `updated_at` | string | Last update timestamp |
| `closed_at` | string | Close timestamp |
| `creator` | object | Milestone creator |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
### GitHub Delete Milestone [#github-delete-milestone]
Delete a milestone from a repository
#### Input [#input-78]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | -------------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `milestone_number` | number | Yes | Milestone number to delete |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-78]
| Parameter | Type | Description |
| ------------------ | ------- | ---------------------------- |
| `deleted` | boolean | Whether deletion succeeded |
| `milestone_number` | number | The deleted milestone number |
### GitHub Create Issue Reaction [#github-create-issue-reaction]
Add a reaction to an issue
#### Input [#input-79]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `issue_number` | number | Yes | Issue number |
| `content` | string | Yes | Reaction type: +1 (thumbs up), -1 (thumbs down), laugh, confused, heart, hooray, rocket, eyes |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-79]
| Parameter | Type | Description |
| -------------- | ------ | -------------------------------------------------------------------- |
| `id` | number | Reaction ID |
| `node_id` | string | GraphQL node ID |
| `content` | string | Reaction type (+1, -1, laugh, confused, heart, hooray, rocket, eyes) |
| `created_at` | string | Creation timestamp |
| `user` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
### GitHub Delete Issue Reaction [#github-delete-issue-reaction]
Remove a reaction from an issue
#### Input [#input-80]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `issue_number` | number | Yes | Issue number |
| `reaction_id` | number | Yes | Reaction ID to delete |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-80]
| Parameter | Type | Description |
| ------------- | ------- | -------------------------- |
| `deleted` | boolean | Whether deletion succeeded |
| `reaction_id` | number | The deleted reaction ID |
### GitHub Create Comment Reaction [#github-create-comment-reaction]
Add a reaction to an issue comment
#### Input [#input-81]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | --------------------------------------------------------------------------------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `comment_id` | number | Yes | Comment ID |
| `content` | string | Yes | Reaction type: +1 (thumbs up), -1 (thumbs down), laugh, confused, heart, hooray, rocket, eyes |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-81]
| Parameter | Type | Description |
| -------------- | ------ | -------------------------------------------------------------------- |
| `id` | number | Reaction ID |
| `node_id` | string | GraphQL node ID |
| `content` | string | Reaction type (+1, -1, laugh, confused, heart, hooray, rocket, eyes) |
| `created_at` | string | Creation timestamp |
| `user` | object | GitHub user object |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `type` | string | Account type (User or Organization) |
### GitHub Delete Comment Reaction [#github-delete-comment-reaction]
Remove a reaction from an issue comment
#### Input [#input-82]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | --------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `comment_id` | number | Yes | Comment ID |
| `reaction_id` | number | Yes | Reaction ID to delete |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-82]
| Parameter | Type | Description |
| ------------- | ------- | -------------------------- |
| `deleted` | boolean | Whether deletion succeeded |
| `reaction_id` | number | The deleted reaction ID |
### GitHub Star Repository [#github-star-repository]
Star a repository
#### Input [#input-83]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-83]
| Parameter | Type | Description |
| --------- | ------- | -------------------------- |
| `starred` | boolean | Whether starring succeeded |
| `owner` | string | Repository owner |
| `repo` | string | Repository name |
### GitHub Unstar Repository [#github-unstar-repository]
Remove star from a repository
#### Input [#input-84]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-84]
| Parameter | Type | Description |
| ----------- | ------- | ---------------------------- |
| `unstarred` | boolean | Whether unstarring succeeded |
| `owner` | string | Repository owner |
| `repo` | string | Repository name |
### GitHub Check Star [#github-check-star]
Check if you have starred a repository
#### Input [#input-85]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-85]
| Parameter | Type | Description |
| --------- | ------- | --------------------------------- |
| `starred` | boolean | Whether you have starred the repo |
| `owner` | string | Repository owner |
| `repo` | string | Repository name |
### GitHub List Stargazers [#github-list-stargazers]
List users who have starred a repository
#### Input [#input-86]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------- |
| `owner` | string | Yes | Repository owner |
| `repo` | string | Yes | Repository name |
| `per_page` | number | No | Results per page (max 100, default: 30) |
| `page` | number | No | Page number (default: 1) |
| `apiKey` | string | Yes | GitHub API token |
#### Output [#output-86]
| Parameter | Type | Description |
| ----------------- | ------- | ------------------------------------- |
| `items` | array | Array of user objects from GitHub API |
| ↳ `login` | string | GitHub username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | GraphQL node ID |
| ↳ `avatar_url` | string | Avatar image URL |
| ↳ `url` | string | API URL |
| ↳ `html_url` | string | Profile page URL |
| ↳ `type` | string | User or Organization |
| ↳ `site_admin` | boolean | GitHub staff indicator |
| ↳ `gravatar_id` | string | Gravatar ID |
| ↳ `followers_url` | string | Followers API URL |
| ↳ `following_url` | string | Following API URL |
| ↳ `gists_url` | string | Gists API URL |
| ↳ `starred_url` | string | Starred API URL |
| ↳ `repos_url` | string | Repos API URL |
| `count` | number | Number of stargazers returned |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
### GitHub Actions Workflow Run [#github-actions-workflow-run]
Trigger workflow when a GitHub Actions workflow run is requested, in progress, or completed
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------------------------------------- |
| `contentType` | string | Yes | Format GitHub will use when sending the webhook payload. |
| `webhookSecret` | string | No | Validates that webhook deliveries originate from GitHub. |
| `sslVerification` | string | Yes | GitHub verifies SSL certificates when delivering webhooks. |
#### Output [#output-87]
| Parameter | Type | Description |
| ------------------------ | ------- | ------------------------------------------------------------------------------- |
| `event_type` | string | GitHub event type from X-GitHub-Event header (e.g., workflow\_run) |
| `action` | string | Action performed (requested, in\_progress, completed) |
| `workflow_run` | object | workflow\_run output from the tool |
| ↳ `id` | number | Workflow run ID |
| ↳ `node_id` | string | Workflow run node ID |
| ↳ `name` | string | Workflow name |
| ↳ `workflow_id` | number | Workflow ID |
| ↳ `run_number` | number | Run number for this workflow |
| ↳ `run_attempt` | number | Attempt number for this run |
| ↳ `event` | string | Event that triggered the workflow (push, pull\_request, etc.) |
| ↳ `status` | string | Current status (queued, in\_progress, completed) |
| ↳ `conclusion` | string | Conclusion (success, failure, cancelled, skipped, timed\_out, action\_required) |
| ↳ `head_branch` | string | Branch name |
| ↳ `head_sha` | string | Commit SHA that triggered the workflow |
| ↳ `path` | string | Path to the workflow file |
| ↳ `display_title` | string | Display title for the run |
| ↳ `run_started_at` | string | Timestamp when the run started |
| ↳ `created_at` | string | Workflow run creation timestamp |
| ↳ `updated_at` | string | Workflow run last update timestamp |
| ↳ `html_url` | string | Workflow run HTML URL |
| ↳ `check_suite_id` | number | Associated check suite ID |
| ↳ `check_suite_node_id` | string | Associated check suite node ID |
| ↳ `url` | string | Workflow run API URL |
| ↳ `actor` | object | actor output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
| ↳ `triggering_actor` | object | triggering\_actor output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
| ↳ `repository` | object | repository output from the tool |
| ↳ `id` | number | Repository ID |
| ↳ `node_id` | string | Repository node ID |
| ↳ `name` | string | Repository name |
| ↳ `full_name` | string | Repository full name |
| ↳ `private` | boolean | Whether repository is private |
| ↳ `head_repository` | object | head\_repository output from the tool |
| ↳ `id` | number | Head repository ID |
| ↳ `node_id` | string | Head repository node ID |
| ↳ `name` | string | Head repository name |
| ↳ `full_name` | string | Head repository full name |
| ↳ `private` | boolean | Whether repository is private |
| ↳ `head_commit` | object | head\_commit output from the tool |
| ↳ `id` | string | Commit SHA |
| ↳ `tree_id` | string | Tree ID |
| ↳ `message` | string | Commit message |
| ↳ `timestamp` | string | Commit timestamp |
| ↳ `author` | object | author output from the tool |
| ↳ `name` | string | Author name |
| ↳ `email` | string | Author email |
| ↳ `committer` | object | committer output from the tool |
| ↳ `name` | string | Committer name |
| ↳ `email` | string | Committer email |
| ↳ `pull_requests` | array | Array of associated pull requests |
| ↳ `referenced_workflows` | array | Array of referenced workflow runs |
| `workflow` | object | workflow output from the tool |
| ↳ `id` | number | Workflow ID |
| ↳ `node_id` | string | Workflow node ID |
| ↳ `name` | string | Workflow name |
| ↳ `path` | string | Path to workflow file |
| ↳ `state` | string | Workflow state (active, deleted, disabled\_fork, etc.) |
| ↳ `created_at` | string | Workflow creation timestamp |
| ↳ `updated_at` | string | Workflow last update timestamp |
| ↳ `url` | string | Workflow API URL |
| ↳ `html_url` | string | Workflow HTML URL |
| ↳ `badge_url` | string | Workflow badge URL |
| `repository` | object | repository output from the tool |
| ↳ `id` | number | Repository ID |
| ↳ `node_id` | string | Repository node ID |
| ↳ `name` | string | Repository name |
| ↳ `full_name` | string | Repository full name (owner/repo) |
| ↳ `private` | boolean | Whether the repository is private |
| ↳ `html_url` | string | Repository HTML URL |
| ↳ `repo_description` | string | Repository description |
| ↳ `owner` | object | owner output from the tool |
| ↳ `login` | string | Owner username |
| ↳ `id` | number | Owner ID |
| ↳ `node_id` | string | Owner node ID |
| ↳ `avatar_url` | string | Owner avatar URL |
| ↳ `html_url` | string | Owner profile URL |
| ↳ `owner_type` | string | Owner type (User, Organization) |
| `sender` | object | sender output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
***
### GitHub Issue Closed [#github-issue-closed]
Trigger workflow when an issue is closed in a GitHub repository
#### Configuration [#configuration-1]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------------------------------------- |
| `contentType` | string | Yes | Format GitHub will use when sending the webhook payload. |
| `webhookSecret` | string | No | Validates that webhook deliveries originate from GitHub. |
| `sslVerification` | string | Yes | GitHub verifies SSL certificates when delivering webhooks. |
#### Output [#output-88]
| Parameter | Type | Description |
| --------------------- | ------- | -------------------------------------------------------------------------------- |
| `event_type` | string | GitHub event type from X-GitHub-Event header (e.g., issues, pull\_request, push) |
| `action` | string | Action performed (opened, closed, reopened, edited, etc.) |
| `issue` | object | issue output from the tool |
| ↳ `id` | number | Issue ID |
| ↳ `node_id` | string | Issue node ID |
| ↳ `number` | number | Issue number |
| ↳ `title` | string | Issue title |
| ↳ `body` | string | Issue body/description |
| ↳ `state` | string | Issue state (open, closed) |
| ↳ `state_reason` | string | Reason for state (completed, not\_planned, reopened) |
| ↳ `html_url` | string | Issue HTML URL |
| ↳ `user` | object | user output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
| ↳ `labels` | array | Array of label objects |
| ↳ `assignees` | array | Array of assigned users |
| ↳ `milestone` | object | Milestone object if assigned |
| ↳ `created_at` | string | Issue creation timestamp |
| ↳ `updated_at` | string | Issue last update timestamp |
| ↳ `closed_at` | string | Issue closed timestamp |
| `repository` | object | repository output from the tool |
| ↳ `id` | number | Repository ID |
| ↳ `node_id` | string | Repository node ID |
| ↳ `name` | string | Repository name |
| ↳ `full_name` | string | Repository full name (owner/repo) |
| ↳ `private` | boolean | Whether the repository is private |
| ↳ `html_url` | string | Repository HTML URL |
| ↳ `repo_description` | string | Repository description |
| ↳ `fork` | boolean | Whether the repository is a fork |
| ↳ `url` | string | Repository API URL |
| ↳ `homepage` | string | Repository homepage URL |
| ↳ `size` | number | Repository size in KB |
| ↳ `stargazers_count` | number | Number of stars |
| ↳ `watchers_count` | number | Number of watchers |
| ↳ `language` | string | Primary programming language |
| ↳ `forks_count` | number | Number of forks |
| ↳ `open_issues_count` | number | Number of open issues |
| ↳ `default_branch` | string | Default branch name |
| ↳ `owner` | object | owner output from the tool |
| ↳ `login` | string | Owner username |
| ↳ `id` | number | Owner ID |
| ↳ `avatar_url` | string | Owner avatar URL |
| ↳ `html_url` | string | Owner profile URL |
| ↳ `owner_type` | string | Owner type (User, Organization) |
| `sender` | object | sender output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
***
### GitHub Issue Comment [#github-issue-comment]
Trigger workflow when a comment is added to an issue (not pull requests)
#### Configuration [#configuration-2]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------------------------------------- |
| `contentType` | string | Yes | Format GitHub will use when sending the webhook payload. |
| `webhookSecret` | string | No | Validates that webhook deliveries originate from GitHub. |
| `sslVerification` | string | Yes | GitHub verifies SSL certificates when delivering webhooks. |
#### Output [#output-89]
| Parameter | Type | Description |
| --------------------- | ------- | ------------------------------------------------------------------- |
| `event_type` | string | GitHub event type from X-GitHub-Event header (e.g., issue\_comment) |
| `action` | string | Action performed (created, edited, deleted) |
| `issue` | object | issue output from the tool |
| ↳ `number` | number | Issue number |
| ↳ `title` | string | Issue title |
| ↳ `state` | string | Issue state (open, closed) |
| ↳ `html_url` | string | Issue HTML URL |
| ↳ `user` | object | user output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
| `comment` | object | comment output from the tool |
| ↳ `id` | number | Comment ID |
| ↳ `node_id` | string | Comment node ID |
| ↳ `body` | string | Comment text |
| ↳ `html_url` | string | Comment HTML URL |
| ↳ `user` | object | user output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
| ↳ `created_at` | string | Comment creation timestamp |
| ↳ `updated_at` | string | Comment last update timestamp |
| `repository` | object | repository output from the tool |
| ↳ `id` | number | Repository ID |
| ↳ `node_id` | string | Repository node ID |
| ↳ `name` | string | Repository name |
| ↳ `full_name` | string | Repository full name (owner/repo) |
| ↳ `private` | boolean | Whether the repository is private |
| ↳ `html_url` | string | Repository HTML URL |
| ↳ `repo_description` | string | Repository description |
| ↳ `fork` | boolean | Whether the repository is a fork |
| ↳ `url` | string | Repository API URL |
| ↳ `homepage` | string | Repository homepage URL |
| ↳ `size` | number | Repository size in KB |
| ↳ `stargazers_count` | number | Number of stars |
| ↳ `watchers_count` | number | Number of watchers |
| ↳ `language` | string | Primary programming language |
| ↳ `forks_count` | number | Number of forks |
| ↳ `open_issues_count` | number | Number of open issues |
| ↳ `default_branch` | string | Default branch name |
| ↳ `owner` | object | owner output from the tool |
| ↳ `login` | string | Owner username |
| ↳ `id` | number | Owner ID |
| ↳ `avatar_url` | string | Owner avatar URL |
| ↳ `html_url` | string | Owner profile URL |
| ↳ `owner_type` | string | Owner type (User, Organization) |
| `sender` | object | sender output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
***
### GitHub Issue Opened [#github-issue-opened]
Trigger workflow when a new issue is opened in a GitHub repository
#### Configuration [#configuration-3]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------------------------------------- |
| `contentType` | string | Yes | Format GitHub will use when sending the webhook payload. |
| `webhookSecret` | string | No | Validates that webhook deliveries originate from GitHub. |
| `sslVerification` | string | Yes | GitHub verifies SSL certificates when delivering webhooks. |
#### Output [#output-90]
| Parameter | Type | Description |
| --------------------- | ------- | -------------------------------------------------------------------------------- |
| `event_type` | string | GitHub event type from X-GitHub-Event header (e.g., issues, pull\_request, push) |
| `action` | string | Action performed (opened, closed, reopened, edited, etc.) |
| `issue` | object | issue output from the tool |
| ↳ `id` | number | Issue ID |
| ↳ `node_id` | string | Issue node ID |
| ↳ `number` | number | Issue number |
| ↳ `title` | string | Issue title |
| ↳ `body` | string | Issue body/description |
| ↳ `state` | string | Issue state (open, closed) |
| ↳ `state_reason` | string | Reason for state (completed, not\_planned, reopened) |
| ↳ `html_url` | string | Issue HTML URL |
| ↳ `user` | object | user output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
| ↳ `labels` | array | Array of label objects |
| ↳ `assignees` | array | Array of assigned users |
| ↳ `milestone` | object | Milestone object if assigned |
| ↳ `created_at` | string | Issue creation timestamp |
| ↳ `updated_at` | string | Issue last update timestamp |
| ↳ `closed_at` | string | Issue closed timestamp |
| `repository` | object | repository output from the tool |
| ↳ `id` | number | Repository ID |
| ↳ `node_id` | string | Repository node ID |
| ↳ `name` | string | Repository name |
| ↳ `full_name` | string | Repository full name (owner/repo) |
| ↳ `private` | boolean | Whether the repository is private |
| ↳ `html_url` | string | Repository HTML URL |
| ↳ `repo_description` | string | Repository description |
| ↳ `fork` | boolean | Whether the repository is a fork |
| ↳ `url` | string | Repository API URL |
| ↳ `homepage` | string | Repository homepage URL |
| ↳ `size` | number | Repository size in KB |
| ↳ `stargazers_count` | number | Number of stars |
| ↳ `watchers_count` | number | Number of watchers |
| ↳ `language` | string | Primary programming language |
| ↳ `forks_count` | number | Number of forks |
| ↳ `open_issues_count` | number | Number of open issues |
| ↳ `default_branch` | string | Default branch name |
| ↳ `owner` | object | owner output from the tool |
| ↳ `login` | string | Owner username |
| ↳ `id` | number | Owner ID |
| ↳ `avatar_url` | string | Owner avatar URL |
| ↳ `html_url` | string | Owner profile URL |
| ↳ `owner_type` | string | Owner type (User, Organization) |
| `sender` | object | sender output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
***
### GitHub PR Closed [#github-pr-closed]
Trigger workflow when a pull request is closed without being merged (e.g., abandoned) in a GitHub repository
#### Configuration [#configuration-4]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------------------------------------- |
| `contentType` | string | Yes | Format GitHub will use when sending the webhook payload. |
| `webhookSecret` | string | No | Validates that webhook deliveries originate from GitHub. |
| `sslVerification` | string | Yes | GitHub verifies SSL certificates when delivering webhooks. |
#### Output [#output-91]
| Parameter | Type | Description |
| ----------------------- | ------- | ---------------------------------------------------------------------- |
| `event_type` | string | GitHub event type from X-GitHub-Event header (e.g., pull\_request) |
| `action` | string | Action performed (opened, closed, synchronize, reopened, edited, etc.) |
| `number` | number | Pull request number |
| `pull_request` | object | pull\_request output from the tool |
| ↳ `id` | number | Pull request ID |
| ↳ `node_id` | string | Pull request node ID |
| ↳ `number` | number | Pull request number |
| ↳ `title` | string | Pull request title |
| ↳ `body` | string | Pull request description |
| ↳ `state` | string | Pull request state (open, closed) |
| ↳ `merged` | boolean | Whether the PR was merged |
| ↳ `merged_at` | string | Timestamp when PR was merged |
| ↳ `merged_by` | object | merged\_by output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
| ↳ `draft` | boolean | Whether the PR is a draft |
| ↳ `html_url` | string | Pull request HTML URL |
| ↳ `diff_url` | string | Pull request diff URL |
| ↳ `patch_url` | string | Pull request patch URL |
| ↳ `user` | object | user output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
| ↳ `head` | object | head output from the tool |
| ↳ `ref` | string | Source branch name |
| ↳ `sha` | string | Source branch commit SHA |
| ↳ `repo` | object | repo output from the tool |
| ↳ `name` | string | Source repository name |
| ↳ `full_name` | string | Source repository full name |
| ↳ `base` | object | base output from the tool |
| ↳ `ref` | string | Target branch name |
| ↳ `sha` | string | Target branch commit SHA |
| ↳ `repo` | object | repo output from the tool |
| ↳ `name` | string | Target repository name |
| ↳ `full_name` | string | Target repository full name |
| ↳ `additions` | number | Number of lines added |
| ↳ `deletions` | number | Number of lines deleted |
| ↳ `changed_files` | number | Number of files changed |
| ↳ `labels` | array | Array of label objects |
| ↳ `assignees` | array | Array of assigned users |
| ↳ `requested_reviewers` | array | Array of requested reviewers |
| ↳ `created_at` | string | Pull request creation timestamp |
| ↳ `updated_at` | string | Pull request last update timestamp |
| ↳ `closed_at` | string | Pull request closed timestamp |
| `repository` | object | repository output from the tool |
| ↳ `id` | number | Repository ID |
| ↳ `node_id` | string | Repository node ID |
| ↳ `name` | string | Repository name |
| ↳ `full_name` | string | Repository full name (owner/repo) |
| ↳ `private` | boolean | Whether the repository is private |
| ↳ `html_url` | string | Repository HTML URL |
| ↳ `repo_description` | string | Repository description |
| ↳ `fork` | boolean | Whether the repository is a fork |
| ↳ `url` | string | Repository API URL |
| ↳ `homepage` | string | Repository homepage URL |
| ↳ `size` | number | Repository size in KB |
| ↳ `stargazers_count` | number | Number of stars |
| ↳ `watchers_count` | number | Number of watchers |
| ↳ `language` | string | Primary programming language |
| ↳ `forks_count` | number | Number of forks |
| ↳ `open_issues_count` | number | Number of open issues |
| ↳ `default_branch` | string | Default branch name |
| ↳ `owner` | object | owner output from the tool |
| ↳ `login` | string | Owner username |
| ↳ `id` | number | Owner ID |
| ↳ `avatar_url` | string | Owner avatar URL |
| ↳ `html_url` | string | Owner profile URL |
| `sender` | object | sender output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
***
### GitHub PR Comment [#github-pr-comment]
Trigger workflow when a comment is added to a pull request in a GitHub repository
#### Configuration [#configuration-5]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------------------------------------- |
| `contentType` | string | Yes | Format GitHub will use when sending the webhook payload. |
| `webhookSecret` | string | No | Validates that webhook deliveries originate from GitHub. |
| `sslVerification` | string | Yes | GitHub verifies SSL certificates when delivering webhooks. |
#### Output [#output-92]
| Parameter | Type | Description |
| -------------------- | ------- | ------------------------------------------------------------------- |
| `event_type` | string | GitHub event type from X-GitHub-Event header (e.g., issue\_comment) |
| `action` | string | Action performed (created, edited, deleted) |
| `issue` | object | issue output from the tool |
| ↳ `id` | number | Issue ID |
| ↳ `node_id` | string | Issue node ID |
| ↳ `number` | number | Issue/PR number |
| ↳ `title` | string | Issue/PR title |
| ↳ `body` | string | Issue/PR description |
| ↳ `state` | string | Issue/PR state (open, closed) |
| ↳ `html_url` | string | Issue/PR HTML URL |
| ↳ `user` | object | user output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
| ↳ `labels` | array | Array of label objects |
| ↳ `assignees` | array | Array of assigned users |
| ↳ `pull_request` | object | pull\_request output from the tool |
| ↳ `url` | string | Pull request API URL (present only for PR comments) |
| ↳ `html_url` | string | Pull request HTML URL |
| ↳ `diff_url` | string | Pull request diff URL |
| ↳ `patch_url` | string | Pull request patch URL |
| ↳ `created_at` | string | Issue/PR creation timestamp |
| ↳ `updated_at` | string | Issue/PR last update timestamp |
| `comment` | object | comment output from the tool |
| ↳ `id` | number | Comment ID |
| ↳ `node_id` | string | Comment node ID |
| ↳ `url` | string | Comment API URL |
| ↳ `html_url` | string | Comment HTML URL |
| ↳ `body` | string | Comment text |
| ↳ `user` | object | user output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
| ↳ `created_at` | string | Comment creation timestamp |
| ↳ `updated_at` | string | Comment last update timestamp |
| `repository` | object | repository output from the tool |
| ↳ `id` | number | Repository ID |
| ↳ `node_id` | string | Repository node ID |
| ↳ `name` | string | Repository name |
| ↳ `full_name` | string | Repository full name (owner/repo) |
| ↳ `private` | boolean | Whether the repository is private |
| ↳ `html_url` | string | Repository HTML URL |
| ↳ `repo_description` | string | Repository description |
| ↳ `owner` | object | owner output from the tool |
| ↳ `login` | string | Owner username |
| ↳ `id` | number | Owner ID |
| ↳ `node_id` | string | Owner node ID |
| ↳ `avatar_url` | string | Owner avatar URL |
| ↳ `html_url` | string | Owner profile URL |
| ↳ `owner_type` | string | Owner type (User, Organization) |
| `sender` | object | sender output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
***
### GitHub PR Merged [#github-pr-merged]
Trigger workflow when a pull request is successfully merged in a GitHub repository
#### Configuration [#configuration-6]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------------------------------------- |
| `contentType` | string | Yes | Format GitHub will use when sending the webhook payload. |
| `webhookSecret` | string | No | Validates that webhook deliveries originate from GitHub. |
| `sslVerification` | string | Yes | GitHub verifies SSL certificates when delivering webhooks. |
#### Output [#output-93]
| Parameter | Type | Description |
| ----------------------- | ------- | ---------------------------------------------------------------------- |
| `event_type` | string | GitHub event type from X-GitHub-Event header (e.g., pull\_request) |
| `action` | string | Action performed (opened, closed, synchronize, reopened, edited, etc.) |
| `number` | number | Pull request number |
| `pull_request` | object | pull\_request output from the tool |
| ↳ `id` | number | Pull request ID |
| ↳ `node_id` | string | Pull request node ID |
| ↳ `number` | number | Pull request number |
| ↳ `title` | string | Pull request title |
| ↳ `body` | string | Pull request description |
| ↳ `state` | string | Pull request state (open, closed) |
| ↳ `merged` | boolean | Whether the PR was merged |
| ↳ `merged_at` | string | Timestamp when PR was merged |
| ↳ `merged_by` | object | merged\_by output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
| ↳ `draft` | boolean | Whether the PR is a draft |
| ↳ `html_url` | string | Pull request HTML URL |
| ↳ `diff_url` | string | Pull request diff URL |
| ↳ `patch_url` | string | Pull request patch URL |
| ↳ `user` | object | user output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
| ↳ `head` | object | head output from the tool |
| ↳ `ref` | string | Source branch name |
| ↳ `sha` | string | Source branch commit SHA |
| ↳ `repo` | object | repo output from the tool |
| ↳ `name` | string | Source repository name |
| ↳ `full_name` | string | Source repository full name |
| ↳ `base` | object | base output from the tool |
| ↳ `ref` | string | Target branch name |
| ↳ `sha` | string | Target branch commit SHA |
| ↳ `repo` | object | repo output from the tool |
| ↳ `name` | string | Target repository name |
| ↳ `full_name` | string | Target repository full name |
| ↳ `additions` | number | Number of lines added |
| ↳ `deletions` | number | Number of lines deleted |
| ↳ `changed_files` | number | Number of files changed |
| ↳ `labels` | array | Array of label objects |
| ↳ `assignees` | array | Array of assigned users |
| ↳ `requested_reviewers` | array | Array of requested reviewers |
| ↳ `created_at` | string | Pull request creation timestamp |
| ↳ `updated_at` | string | Pull request last update timestamp |
| ↳ `closed_at` | string | Pull request closed timestamp |
| `repository` | object | repository output from the tool |
| ↳ `id` | number | Repository ID |
| ↳ `node_id` | string | Repository node ID |
| ↳ `name` | string | Repository name |
| ↳ `full_name` | string | Repository full name (owner/repo) |
| ↳ `private` | boolean | Whether the repository is private |
| ↳ `html_url` | string | Repository HTML URL |
| ↳ `repo_description` | string | Repository description |
| ↳ `fork` | boolean | Whether the repository is a fork |
| ↳ `url` | string | Repository API URL |
| ↳ `homepage` | string | Repository homepage URL |
| ↳ `size` | number | Repository size in KB |
| ↳ `stargazers_count` | number | Number of stars |
| ↳ `watchers_count` | number | Number of watchers |
| ↳ `language` | string | Primary programming language |
| ↳ `forks_count` | number | Number of forks |
| ↳ `open_issues_count` | number | Number of open issues |
| ↳ `default_branch` | string | Default branch name |
| ↳ `owner` | object | owner output from the tool |
| ↳ `login` | string | Owner username |
| ↳ `id` | number | Owner ID |
| ↳ `avatar_url` | string | Owner avatar URL |
| ↳ `html_url` | string | Owner profile URL |
| `sender` | object | sender output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
***
### GitHub PR Opened [#github-pr-opened]
Trigger workflow when a new pull request is opened in a GitHub repository
#### Configuration [#configuration-7]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------------------------------------- |
| `contentType` | string | Yes | Format GitHub will use when sending the webhook payload. |
| `webhookSecret` | string | No | Validates that webhook deliveries originate from GitHub. |
| `sslVerification` | string | Yes | GitHub verifies SSL certificates when delivering webhooks. |
#### Output [#output-94]
| Parameter | Type | Description |
| ----------------------- | ------- | ---------------------------------------------------------------------- |
| `event_type` | string | GitHub event type from X-GitHub-Event header (e.g., pull\_request) |
| `action` | string | Action performed (opened, closed, synchronize, reopened, edited, etc.) |
| `number` | number | Pull request number |
| `pull_request` | object | pull\_request output from the tool |
| ↳ `id` | number | Pull request ID |
| ↳ `node_id` | string | Pull request node ID |
| ↳ `number` | number | Pull request number |
| ↳ `title` | string | Pull request title |
| ↳ `body` | string | Pull request description |
| ↳ `state` | string | Pull request state (open, closed) |
| ↳ `merged` | boolean | Whether the PR was merged |
| ↳ `merged_at` | string | Timestamp when PR was merged |
| ↳ `merged_by` | object | merged\_by output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
| ↳ `draft` | boolean | Whether the PR is a draft |
| ↳ `html_url` | string | Pull request HTML URL |
| ↳ `diff_url` | string | Pull request diff URL |
| ↳ `patch_url` | string | Pull request patch URL |
| ↳ `user` | object | user output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
| ↳ `head` | object | head output from the tool |
| ↳ `ref` | string | Source branch name |
| ↳ `sha` | string | Source branch commit SHA |
| ↳ `repo` | object | repo output from the tool |
| ↳ `name` | string | Source repository name |
| ↳ `full_name` | string | Source repository full name |
| ↳ `base` | object | base output from the tool |
| ↳ `ref` | string | Target branch name |
| ↳ `sha` | string | Target branch commit SHA |
| ↳ `repo` | object | repo output from the tool |
| ↳ `name` | string | Target repository name |
| ↳ `full_name` | string | Target repository full name |
| ↳ `additions` | number | Number of lines added |
| ↳ `deletions` | number | Number of lines deleted |
| ↳ `changed_files` | number | Number of files changed |
| ↳ `labels` | array | Array of label objects |
| ↳ `assignees` | array | Array of assigned users |
| ↳ `requested_reviewers` | array | Array of requested reviewers |
| ↳ `created_at` | string | Pull request creation timestamp |
| ↳ `updated_at` | string | Pull request last update timestamp |
| ↳ `closed_at` | string | Pull request closed timestamp |
| `repository` | object | repository output from the tool |
| ↳ `id` | number | Repository ID |
| ↳ `node_id` | string | Repository node ID |
| ↳ `name` | string | Repository name |
| ↳ `full_name` | string | Repository full name (owner/repo) |
| ↳ `private` | boolean | Whether the repository is private |
| ↳ `html_url` | string | Repository HTML URL |
| ↳ `repo_description` | string | Repository description |
| ↳ `fork` | boolean | Whether the repository is a fork |
| ↳ `url` | string | Repository API URL |
| ↳ `homepage` | string | Repository homepage URL |
| ↳ `size` | number | Repository size in KB |
| ↳ `stargazers_count` | number | Number of stars |
| ↳ `watchers_count` | number | Number of watchers |
| ↳ `language` | string | Primary programming language |
| ↳ `forks_count` | number | Number of forks |
| ↳ `open_issues_count` | number | Number of open issues |
| ↳ `default_branch` | string | Default branch name |
| ↳ `owner` | object | owner output from the tool |
| ↳ `login` | string | Owner username |
| ↳ `id` | number | Owner ID |
| ↳ `avatar_url` | string | Owner avatar URL |
| ↳ `html_url` | string | Owner profile URL |
| ↳ `owner_type` | string | Owner type (User, Organization) |
| `sender` | object | sender output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
***
### GitHub PR Reviewed [#github-pr-reviewed]
Trigger workflow when a pull request review is submitted, edited, or dismissed in a GitHub repository
#### Configuration [#configuration-8]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------------------------------------- |
| `contentType` | string | Yes | Format GitHub will use when sending the webhook payload. |
| `webhookSecret` | string | No | Validates that webhook deliveries originate from GitHub. |
| `sslVerification` | string | Yes | GitHub verifies SSL certificates when delivering webhooks. |
#### Output [#output-95]
| Parameter | Type | Description |
| ---------------------- | ------- | -------------------------------------------------------------------------- |
| `event_type` | string | GitHub event type from X-GitHub-Event header (e.g., pull\_request\_review) |
| `action` | string | Action performed (submitted, edited, dismissed) |
| `review` | object | review output from the tool |
| ↳ `id` | number | Review ID |
| ↳ `node_id` | string | Review node ID |
| ↳ `user` | object | user output from the tool |
| ↳ `login` | string | Reviewer username |
| ↳ `id` | number | Reviewer user ID |
| ↳ `node_id` | string | Reviewer node ID |
| ↳ `avatar_url` | string | Reviewer avatar URL |
| ↳ `html_url` | string | Reviewer profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
| ↳ `body` | string | Review comment text |
| ↳ `state` | string | Review state (approved, changes\_requested, commented, dismissed) |
| ↳ `html_url` | string | Review HTML URL |
| ↳ `submitted_at` | string | Review submission timestamp |
| ↳ `commit_id` | string | Commit SHA that was reviewed |
| ↳ `author_association` | string | Author association (OWNER, MEMBER, COLLABORATOR, CONTRIBUTOR, etc.) |
| `pull_request` | object | pull\_request output from the tool |
| ↳ `id` | number | Pull request ID |
| ↳ `node_id` | string | Pull request node ID |
| ↳ `number` | number | Pull request number |
| ↳ `title` | string | Pull request title |
| ↳ `body` | string | Pull request description |
| ↳ `state` | string | Pull request state (open, closed) |
| ↳ `merged` | boolean | Whether the PR was merged |
| ↳ `draft` | boolean | Whether the PR is a draft |
| ↳ `html_url` | string | Pull request HTML URL |
| ↳ `diff_url` | string | Pull request diff URL |
| ↳ `patch_url` | string | Pull request patch URL |
| ↳ `user` | object | user output from the tool |
| ↳ `login` | string | PR author username |
| ↳ `id` | number | PR author user ID |
| ↳ `node_id` | string | PR author node ID |
| ↳ `avatar_url` | string | PR author avatar URL |
| ↳ `html_url` | string | PR author profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
| ↳ `head` | object | head output from the tool |
| ↳ `ref` | string | Source branch name |
| ↳ `sha` | string | Source branch commit SHA |
| ↳ `repo` | object | repo output from the tool |
| ↳ `name` | string | Source repository name |
| ↳ `full_name` | string | Source repository full name |
| ↳ `base` | object | base output from the tool |
| ↳ `ref` | string | Target branch name |
| ↳ `sha` | string | Target branch commit SHA |
| ↳ `repo` | object | repo output from the tool |
| ↳ `name` | string | Target repository name |
| ↳ `full_name` | string | Target repository full name |
| ↳ `created_at` | string | Pull request creation timestamp |
| ↳ `updated_at` | string | Pull request last update timestamp |
| `repository` | object | repository output from the tool |
| ↳ `id` | number | Repository ID |
| ↳ `node_id` | string | Repository node ID |
| ↳ `name` | string | Repository name |
| ↳ `full_name` | string | Repository full name (owner/repo) |
| ↳ `private` | boolean | Whether the repository is private |
| ↳ `html_url` | string | Repository HTML URL |
| ↳ `repo_description` | string | Repository description |
| ↳ `owner` | object | owner output from the tool |
| ↳ `login` | string | Owner username |
| ↳ `id` | number | Owner ID |
| ↳ `node_id` | string | Owner node ID |
| ↳ `avatar_url` | string | Owner avatar URL |
| ↳ `html_url` | string | Owner profile URL |
| ↳ `owner_type` | string | Owner type (User, Organization) |
| `sender` | object | sender output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
***
### GitHub Push [#github-push]
Trigger workflow when code is pushed to a repository
#### Configuration [#configuration-9]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------------------------------------- |
| `contentType` | string | Yes | Format GitHub will use when sending the webhook payload. |
| `webhookSecret` | string | No | Validates that webhook deliveries originate from GitHub. |
| `sslVerification` | string | Yes | GitHub verifies SSL certificates when delivering webhooks. |
#### Output [#output-96]
| Parameter | Type | Description |
| --------------------- | ------- | -------------------------------------------------------------- |
| `event_type` | string | GitHub event type from X-GitHub-Event header (e.g., push) |
| `branch` | string | Branch name derived from ref (e.g., main from refs/heads/main) |
| `ref` | string | Git reference that was pushed (e.g., refs/heads/main) |
| `before` | string | SHA of the commit before the push |
| `after` | string | SHA of the commit after the push |
| `created` | boolean | Whether this push created a new branch or tag |
| `deleted` | boolean | Whether this push deleted a branch or tag |
| `forced` | boolean | Whether this was a force push |
| `base_ref` | string | Base reference for the push |
| `compare` | string | URL to compare the changes |
| `commits` | array | Array of commit objects included in this push |
| `head_commit` | object | head\_commit output from the tool |
| ↳ `id` | string | Commit SHA of the most recent commit |
| ↳ `tree_id` | string | Git tree SHA |
| ↳ `distinct` | boolean | Whether this commit is distinct |
| ↳ `message` | string | Commit message |
| ↳ `timestamp` | string | Commit timestamp |
| ↳ `url` | string | Commit URL |
| ↳ `author` | object | author output from the tool |
| ↳ `name` | string | Author name |
| ↳ `email` | string | Author email |
| ↳ `username` | string | Author GitHub username |
| ↳ `committer` | object | committer output from the tool |
| ↳ `name` | string | Committer name |
| ↳ `email` | string | Committer email |
| ↳ `username` | string | Committer GitHub username |
| ↳ `added` | array | Array of file paths added in this commit |
| ↳ `removed` | array | Array of file paths removed in this commit |
| ↳ `modified` | array | Array of file paths modified in this commit |
| `pusher` | object | pusher output from the tool |
| ↳ `name` | string | Pusher name |
| ↳ `email` | string | Pusher email |
| `repository` | object | repository output from the tool |
| ↳ `id` | number | Repository ID |
| ↳ `node_id` | string | Repository node ID |
| ↳ `name` | string | Repository name |
| ↳ `full_name` | string | Repository full name (owner/repo) |
| ↳ `private` | boolean | Whether the repository is private |
| ↳ `html_url` | string | Repository HTML URL |
| ↳ `repo_description` | string | Repository description |
| ↳ `fork` | boolean | Whether the repository is a fork |
| ↳ `url` | string | Repository API URL |
| ↳ `homepage` | string | Repository homepage URL |
| ↳ `size` | number | Repository size in KB |
| ↳ `stargazers_count` | number | Number of stars |
| ↳ `watchers_count` | number | Number of watchers |
| ↳ `language` | string | Primary programming language |
| ↳ `forks_count` | number | Number of forks |
| ↳ `open_issues_count` | number | Number of open issues |
| ↳ `default_branch` | string | Default branch name |
| ↳ `owner` | object | owner output from the tool |
| ↳ `login` | string | Owner username |
| ↳ `id` | number | Owner ID |
| ↳ `node_id` | string | Owner node ID |
| ↳ `avatar_url` | string | Owner avatar URL |
| ↳ `html_url` | string | Owner profile URL |
| ↳ `owner_type` | string | Owner type (User, Organization) |
| `sender` | object | sender output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
***
### GitHub Release Published [#github-release-published]
Trigger workflow when a new release is published in a GitHub repository
#### Configuration [#configuration-10]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------------------------------------- |
| `contentType` | string | Yes | Format GitHub will use when sending the webhook payload. |
| `webhookSecret` | string | No | Validates that webhook deliveries originate from GitHub. |
| `sslVerification` | string | Yes | GitHub verifies SSL certificates when delivering webhooks. |
#### Output [#output-97]
| Parameter | Type | Description |
| ----------------------- | ------- | ------------------------------------------------------------------------------------------ |
| `event_type` | string | GitHub event type from X-GitHub-Event header (e.g., release) |
| `action` | string | Action performed (published, unpublished, created, edited, deleted, prereleased, released) |
| `release` | object | release output from the tool |
| ↳ `id` | number | Release ID |
| ↳ `node_id` | string | Release node ID |
| ↳ `tag_name` | string | Git tag name for the release |
| ↳ `target_commitish` | string | Target branch or commit SHA |
| ↳ `name` | string | Release name/title |
| ↳ `body` | string | Release description/notes in markdown format |
| ↳ `draft` | boolean | Whether the release is a draft |
| ↳ `prerelease` | boolean | Whether the release is a pre-release |
| ↳ `created_at` | string | Release creation timestamp |
| ↳ `published_at` | string | Release publication timestamp |
| ↳ `url` | string | Release API URL |
| ↳ `html_url` | string | Release HTML URL |
| ↳ `assets_url` | string | Release assets API URL |
| ↳ `upload_url` | string | URL for uploading release assets |
| ↳ `tarball_url` | string | Source code tarball download URL |
| ↳ `zipball_url` | string | Source code zipball download URL |
| ↳ `discussion_url` | string | Discussion URL if available |
| ↳ `author` | object | author output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `gravatar_id` | string | Gravatar ID |
| ↳ `url` | string | User API URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `followers_url` | string | Followers API URL |
| ↳ `following_url` | string | Following API URL |
| ↳ `gists_url` | string | Gists API URL |
| ↳ `starred_url` | string | Starred repositories API URL |
| ↳ `subscriptions_url` | string | Subscriptions API URL |
| ↳ `organizations_url` | string | Organizations API URL |
| ↳ `repos_url` | string | Repositories API URL |
| ↳ `events_url` | string | Events API URL |
| ↳ `received_events_url` | string | Received events API URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
| ↳ `site_admin` | boolean | Whether user is a site administrator |
| ↳ `assets` | array | Array of release asset objects with download URLs |
| `repository` | object | repository output from the tool |
| ↳ `id` | number | Repository ID |
| ↳ `node_id` | string | Repository node ID |
| ↳ `name` | string | Repository name |
| ↳ `full_name` | string | Repository full name (owner/repo) |
| ↳ `private` | boolean | Whether the repository is private |
| ↳ `html_url` | string | Repository HTML URL |
| ↳ `repo_description` | string | Repository description |
| ↳ `fork` | boolean | Whether the repository is a fork |
| ↳ `url` | string | Repository API URL |
| ↳ `archive_url` | string | Archive API URL |
| ↳ `assignees_url` | string | Assignees API URL |
| ↳ `blobs_url` | string | Blobs API URL |
| ↳ `branches_url` | string | Branches API URL |
| ↳ `collaborators_url` | string | Collaborators API URL |
| ↳ `comments_url` | string | Comments API URL |
| ↳ `commits_url` | string | Commits API URL |
| ↳ `compare_url` | string | Compare API URL |
| ↳ `contents_url` | string | Contents API URL |
| ↳ `contributors_url` | string | Contributors API URL |
| ↳ `deployments_url` | string | Deployments API URL |
| ↳ `downloads_url` | string | Downloads API URL |
| ↳ `events_url` | string | Events API URL |
| ↳ `forks_url` | string | Forks API URL |
| ↳ `git_commits_url` | string | Git commits API URL |
| ↳ `git_refs_url` | string | Git refs API URL |
| ↳ `git_tags_url` | string | Git tags API URL |
| ↳ `hooks_url` | string | Hooks API URL |
| ↳ `issue_comment_url` | string | Issue comment API URL |
| ↳ `issue_events_url` | string | Issue events API URL |
| ↳ `issues_url` | string | Issues API URL |
| ↳ `keys_url` | string | Keys API URL |
| ↳ `labels_url` | string | Labels API URL |
| ↳ `languages_url` | string | Languages API URL |
| ↳ `merges_url` | string | Merges API URL |
| ↳ `milestones_url` | string | Milestones API URL |
| ↳ `notifications_url` | string | Notifications API URL |
| ↳ `pulls_url` | string | Pull requests API URL |
| ↳ `releases_url` | string | Releases API URL |
| ↳ `stargazers_url` | string | Stargazers API URL |
| ↳ `statuses_url` | string | Statuses API URL |
| ↳ `subscribers_url` | string | Subscribers API URL |
| ↳ `subscription_url` | string | Subscription API URL |
| ↳ `tags_url` | string | Tags API URL |
| ↳ `teams_url` | string | Teams API URL |
| ↳ `trees_url` | string | Trees API URL |
| ↳ `homepage` | string | Repository homepage URL |
| ↳ `size` | number | Repository size in KB |
| ↳ `stargazers_count` | number | Number of stars |
| ↳ `watchers_count` | number | Number of watchers |
| ↳ `language` | string | Primary programming language |
| ↳ `has_issues` | boolean | Whether issues are enabled |
| ↳ `has_projects` | boolean | Whether projects are enabled |
| ↳ `has_downloads` | boolean | Whether downloads are enabled |
| ↳ `has_wiki` | boolean | Whether wiki is enabled |
| ↳ `has_pages` | boolean | Whether GitHub Pages is enabled |
| ↳ `forks_count` | number | Number of forks |
| ↳ `mirror_url` | string | Mirror URL if repository is a mirror |
| ↳ `archived` | boolean | Whether the repository is archived |
| ↳ `disabled` | boolean | Whether the repository is disabled |
| ↳ `open_issues_count` | number | Number of open issues |
| ↳ `license` | object | license output from the tool |
| ↳ `key` | string | License key |
| ↳ `name` | string | License name |
| ↳ `spdx_id` | string | SPDX license identifier |
| ↳ `url` | string | License API URL |
| ↳ `node_id` | string | License node ID |
| ↳ `allow_forking` | boolean | Whether forking is allowed |
| ↳ `is_template` | boolean | Whether repository is a template |
| ↳ `topics` | array | Array of repository topics |
| ↳ `visibility` | string | Repository visibility (public, private, internal) |
| ↳ `forks` | number | Number of forks |
| ↳ `open_issues` | number | Number of open issues |
| ↳ `watchers` | number | Number of watchers |
| ↳ `default_branch` | string | Default branch name |
| ↳ `created_at` | string | Repository creation timestamp |
| ↳ `updated_at` | string | Repository last update timestamp |
| ↳ `pushed_at` | string | Repository last push timestamp |
| ↳ `owner` | object | owner output from the tool |
| ↳ `login` | string | Owner username |
| ↳ `id` | number | Owner ID |
| ↳ `node_id` | string | Owner node ID |
| ↳ `avatar_url` | string | Owner avatar URL |
| ↳ `gravatar_id` | string | Owner gravatar ID |
| ↳ `url` | string | Owner API URL |
| ↳ `html_url` | string | Owner profile URL |
| ↳ `followers_url` | string | Followers API URL |
| ↳ `following_url` | string | Following API URL |
| ↳ `gists_url` | string | Gists API URL |
| ↳ `starred_url` | string | Starred repositories API URL |
| ↳ `subscriptions_url` | string | Subscriptions API URL |
| ↳ `organizations_url` | string | Organizations API URL |
| ↳ `repos_url` | string | Repositories API URL |
| ↳ `events_url` | string | Events API URL |
| ↳ `received_events_url` | string | Received events API URL |
| ↳ `owner_type` | string | Owner type (User, Organization) |
| ↳ `site_admin` | boolean | Whether owner is a site administrator |
| `sender` | object | sender output from the tool |
| ↳ `login` | string | Username |
| ↳ `id` | number | User ID |
| ↳ `node_id` | string | User node ID |
| ↳ `avatar_url` | string | Avatar URL |
| ↳ `gravatar_id` | string | Gravatar ID |
| ↳ `url` | string | User API URL |
| ↳ `html_url` | string | Profile URL |
| ↳ `followers_url` | string | Followers API URL |
| ↳ `following_url` | string | Following API URL |
| ↳ `gists_url` | string | Gists API URL |
| ↳ `starred_url` | string | Starred repositories API URL |
| ↳ `subscriptions_url` | string | Subscriptions API URL |
| ↳ `organizations_url` | string | Organizations API URL |
| ↳ `repos_url` | string | Repositories API URL |
| ↳ `events_url` | string | Events API URL |
| ↳ `received_events_url` | string | Received events API URL |
| ↳ `user_type` | string | User type (User, Bot, Organization) |
| ↳ `site_admin` | boolean | Whether user is a site administrator |
***
### GitHub Webhook [#github-webhook]
Trigger workflow from GitHub events like push, pull requests, issues, and more
#### Configuration [#configuration-11]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------------------------------------- |
| `contentType` | string | Yes | Format GitHub will use when sending the webhook payload. |
| `webhookSecret` | string | No | Validates that webhook deliveries originate from GitHub. |
| `sslVerification` | string | Yes | GitHub verifies SSL certificates when delivering webhooks. |
#### Output [#output-98]
| Parameter | Type | Description |
| --------------------- | ------- | ----------------------------------------------------------------- |
| `ref` | string | Git reference (e.g., refs/heads/fix/telegram-wh) |
| `before` | string | SHA of the commit before the push |
| `after` | string | SHA of the commit after the push |
| `created` | boolean | Whether the push created the reference |
| `deleted` | boolean | Whether the push deleted the reference |
| `forced` | boolean | Whether the push was forced |
| `base_ref` | string | Base reference for the push |
| `compare` | string | URL to compare the changes |
| `repository` | object | repository output from the tool |
| ↳ `id` | number | Repository ID |
| ↳ `node_id` | string | Repository node ID |
| ↳ `name` | string | Repository name |
| ↳ `full_name` | string | Repository full name (owner/repo) |
| ↳ `private` | boolean | Whether the repository is private |
| ↳ `html_url` | string | Repository HTML URL |
| ↳ `fork` | boolean | Whether the repository is a fork |
| ↳ `url` | string | Repository API URL |
| ↳ `created_at` | number | Repository creation timestamp |
| ↳ `updated_at` | string | Repository last updated time |
| ↳ `pushed_at` | number | Repository last push timestamp |
| ↳ `git_url` | string | Repository git URL |
| ↳ `ssh_url` | string | Repository SSH URL |
| ↳ `clone_url` | string | Repository clone URL |
| ↳ `homepage` | string | Repository homepage URL |
| ↳ `size` | number | Repository size |
| ↳ `stargazers_count` | number | Number of stars |
| ↳ `watchers_count` | number | Number of watchers |
| ↳ `language` | string | Primary programming language |
| ↳ `forks_count` | number | Number of forks |
| ↳ `archived` | boolean | Whether the repository is archived |
| ↳ `disabled` | boolean | Whether the repository is disabled |
| ↳ `open_issues_count` | number | Number of open issues |
| ↳ `topics` | array | Repository topics |
| ↳ `visibility` | string | Repository visibility (public, private) |
| ↳ `forks` | number | Number of forks |
| ↳ `open_issues` | number | Number of open issues |
| ↳ `watchers` | number | Number of watchers |
| ↳ `default_branch` | string | Default branch name |
| ↳ `stargazers` | number | Number of stargazers |
| ↳ `master_branch` | string | Master branch name |
| ↳ `owner` | object | owner output from the tool |
| ↳ `name` | string | Owner name |
| ↳ `email` | string | Owner email |
| ↳ `login` | string | Owner username |
| ↳ `id` | number | Owner ID |
| ↳ `node_id` | string | Owner node ID |
| ↳ `avatar_url` | string | Owner avatar URL |
| ↳ `gravatar_id` | string | Owner gravatar ID |
| ↳ `url` | string | Owner API URL |
| ↳ `html_url` | string | Owner profile URL |
| ↳ `user_view_type` | string | User view type |
| ↳ `site_admin` | boolean | Whether the owner is a site admin |
| ↳ `license` | object | Repository license information |
| ↳ `key` | string | License key (e.g., apache-2.0) |
| ↳ `name` | string | License name |
| ↳ `spdx_id` | string | SPDX license identifier |
| ↳ `url` | string | License URL |
| ↳ `node_id` | string | License node ID |
| `pusher` | object | Information about who pushed the changes |
| ↳ `name` | string | Pusher name |
| ↳ `email` | string | Pusher email |
| `sender` | object | sender output from the tool |
| ↳ `login` | string | Sender username |
| ↳ `id` | number | Sender ID |
| ↳ `node_id` | string | Sender node ID |
| ↳ `avatar_url` | string | Sender avatar URL |
| ↳ `gravatar_id` | string | Sender gravatar ID |
| ↳ `url` | string | Sender API URL |
| ↳ `html_url` | string | Sender profile URL |
| ↳ `user_view_type` | string | User view type |
| ↳ `site_admin` | boolean | Whether the sender is a site admin |
| `commits` | array | Array of commit objects |
| `head_commit` | object | Head commit object |
| ↳ `id` | string | Commit SHA |
| ↳ `tree_id` | string | Tree SHA |
| ↳ `distinct` | boolean | Whether the commit is distinct |
| ↳ `message` | string | Commit message |
| ↳ `timestamp` | string | Commit timestamp |
| ↳ `url` | string | Commit URL |
| ↳ `author` | object | Commit author |
| ↳ `name` | string | Author name |
| ↳ `email` | string | Author email |
| ↳ `committer` | object | Commit committer |
| ↳ `name` | string | Committer name |
| ↳ `email` | string | Committer email |
| ↳ `added` | array | Array of added files |
| ↳ `removed` | array | Array of removed files |
| ↳ `modified` | array | Array of modified files |
| `event_type` | string | Type of GitHub event (e.g., push, pull\_request, issues) |
| `action` | string | The action that was performed (e.g., opened, closed, synchronize) |
| `branch` | string | Branch name extracted from ref |
---
# GitLab (/integrations/gitlab)
{/* MANUAL-CONTENT-START:intro */}
[GitLab](https://gitlab.com/) is a comprehensive DevOps platform that allows teams to manage, collaborate on, and automate their software development lifecycle. With GitLab, you can effortlessly handle source code management, CI/CD, reviews, and collaboration in a single application.
With GitLab in Sim, you can:
* **Manage projects and repositories**: List and retrieve your GitLab projects, access details, and organize your repositories
* **Work with issues**: List, create, and comment on issues to track work and collaborate effectively
* **Handle merge requests**: Review, create, and manage merge requests for code changes and peer reviews
* **Automate CI/CD pipelines**: Trigger, monitor, and interact with GitLab pipelines as part of your automation flows
* **Collaborate with comments**: Add comments to issues or merge requests for efficient communication within your team
Using Sim’s GitLab integration, your agents can programmatically interact with your GitLab projects. Automate project management, issue tracking, code reviews, and pipeline operations seamlessly in your workflows, optimizing your software development process and enhancing collaboration across your team.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate GitLab into the workflow. Can manage projects, issues, merge requests, pipelines, and add comments, plus project/group membership, invitations, access requests, SAML group links, and instance user administration. Supports all core GitLab DevOps operations.
## Actions [#actions]
### GitLab List Projects [#gitlab-list-projects]
List GitLab projects accessible to the authenticated user
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | ----------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `owned` | boolean | No | Limit to projects owned by the current user |
| `membership` | boolean | No | Limit to projects the current user is a member of |
| `search` | string | No | Search projects by name |
| `visibility` | string | No | Filter by visibility (public, internal, private) |
| `orderBy` | string | No | Order by field (id, name, path, created\_at, updated\_at, last\_activity\_at) |
| `sort` | string | No | Sort direction (asc, desc) |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |
#### Output [#output]
| Parameter | Type | Description |
| ---------- | ------ | ------------------------ |
| `projects` | array | List of GitLab projects |
| `total` | number | Total number of projects |
### GitLab Get Project [#gitlab-get-project]
Get details of a specific GitLab project
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) (e.g., "namespace/project") |
#### Output [#output-1]
| Parameter | Type | Description |
| --------- | ------ | -------------------------- |
| `project` | object | The GitLab project details |
### GitLab List Groups [#gitlab-list-groups]
List GitLab groups accessible to the authenticated user
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `owned` | boolean | No | Limit to groups owned by the current user |
| `search` | string | No | Search groups by name or path |
| `topLevelOnly` | boolean | No | Limit to top-level groups, excluding subgroups |
| `visibility` | string | No | Filter by visibility: public, internal, or private |
| `minAccessLevel` | number | No | Only groups where the current user has at least this access level, as an integer (e.g. 30 for Developer). Valid values: 5, 10, 15, 20, 25, 30, 40, 50. |
| `allAvailable` | boolean | No | Include all groups the user can access, not only groups they are a member of (ignored when owned or a minimum access level is set) |
| `orderBy` | string | No | Order by field (name, path, id, similarity). similarity requires a search term. |
| `sort` | string | No | Sort direction (asc, desc) |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |
#### Output [#output-2]
| Parameter | Type | Description |
| --------- | ------ | ---------------------- |
| `groups` | array | List of GitLab groups |
| `total` | number | Total number of groups |
### GitLab Get Group [#gitlab-get-group]
Get details of a specific GitLab group
#### Input [#input-3]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `groupId` | string | Yes | Group ID or path (e.g. mygroup or parent/subgroup) |
#### Output [#output-3]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `group` | object | The GitLab group details |
### GitLab List User Memberships [#gitlab-list-user-memberships]
List a user's project and group memberships. Requires an administrator access token (GET /users/:id/memberships is admin-only). For a non-admin path, iterate List Members on each project or group instead.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ----------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `userId` | string | Yes | The ID of the user whose memberships to list |
| `membershipType` | string | No | Filter by source: 'Project' or 'Namespace' (group). Omit for all memberships. |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------- | ------ | ---------------------------------------- |
| `memberships` | array | The user's project and group memberships |
| `total` | number | Total number of memberships |
### GitLab List Issues [#gitlab-list-issues]
List issues in a GitLab project
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `state` | string | No | Filter by state (opened, closed, all) |
| `labels` | string | No | Comma-separated list of label names |
| `assigneeId` | number | No | Filter by assignee user ID |
| `milestoneTitle` | string | No | Filter by milestone title |
| `search` | string | No | Search issues by title and description |
| `orderBy` | string | No | Order by field (created\_at, updated\_at, priority, due\_date, relative\_position, label\_priority, milestone\_due, popularity, weight) |
| `sort` | string | No | Sort direction (asc, desc) |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |
#### Output [#output-5]
| Parameter | Type | Description |
| --------- | ------ | ---------------------- |
| `issues` | array | List of GitLab issues |
| `total` | number | Total number of issues |
### GitLab Get Issue [#gitlab-get-issue]
Get details of a specific GitLab issue
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `issueIid` | number | Yes | Issue number within the project (the # shown in GitLab UI) |
#### Output [#output-6]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `issue` | object | The GitLab issue details |
### GitLab Create Issue [#gitlab-create-issue]
Create a new issue in a GitLab project
#### Input [#input-7]
| Parameter | Type | Required | Description |
| -------------- | ------- | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `title` | string | Yes | Issue title |
| `description` | string | No | Issue description (Markdown supported) |
| `labels` | string | No | Comma-separated list of label names |
| `assigneeIds` | array | No | Array of user IDs to assign |
| `milestoneId` | number | No | Milestone ID to assign |
| `dueDate` | string | No | Due date in YYYY-MM-DD format |
| `confidential` | boolean | No | Whether the issue is confidential |
#### Output [#output-7]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `issue` | object | The created GitLab issue |
### GitLab Update Issue [#gitlab-update-issue]
Update an existing issue in a GitLab project
#### Input [#input-8]
| Parameter | Type | Required | Description |
| -------------- | ------- | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `issueIid` | number | Yes | Issue internal ID (IID) |
| `title` | string | No | New issue title |
| `description` | string | No | New issue description (Markdown supported) |
| `stateEvent` | string | No | State event (close or reopen) |
| `labels` | string | No | Comma-separated list of label names |
| `assigneeIds` | array | No | Array of user IDs to assign |
| `milestoneId` | number | No | Milestone ID to assign |
| `dueDate` | string | No | Due date in YYYY-MM-DD format |
| `confidential` | boolean | No | Whether the issue is confidential |
#### Output [#output-8]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `issue` | object | The updated GitLab issue |
### GitLab Delete Issue [#gitlab-delete-issue]
Delete an issue from a GitLab project
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `issueIid` | number | Yes | Issue internal ID (IID) |
#### Output [#output-9]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------------ |
| `success` | boolean | Whether the issue was deleted successfully |
### GitLab Create Issue Comment [#gitlab-create-issue-comment]
Add a comment to a GitLab issue
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ----------- | ------- | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `issueIid` | number | Yes | Issue internal ID (IID) |
| `body` | string | Yes | Comment body (Markdown supported) |
| `internal` | boolean | No | Create the comment as an internal note visible only to project members |
#### Output [#output-10]
| Parameter | Type | Description |
| --------- | ------ | ------------------- |
| `note` | object | The created comment |
### GitLab List Merge Requests [#gitlab-list-merge-requests]
List merge requests in a GitLab project
#### Input [#input-11]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `state` | string | No | Filter by state (opened, closed, locked, merged, all) |
| `labels` | string | No | Comma-separated list of label names |
| `sourceBranch` | string | No | Filter by source branch |
| `targetBranch` | string | No | Filter by target branch |
| `orderBy` | string | No | Order by field (created\_at, updated\_at, merged\_at, priority, label\_priority, milestone\_due, popularity, title) |
| `sort` | string | No | Sort direction (asc, desc) |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |
#### Output [#output-11]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------ |
| `mergeRequests` | array | List of GitLab merge requests |
| `total` | number | Total number of merge requests |
### GitLab Get Merge Request [#gitlab-get-merge-request]
Get details of a specific GitLab merge request
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `mergeRequestIid` | number | Yes | Merge request internal ID (IID) |
#### Output [#output-12]
| Parameter | Type | Description |
| -------------- | ------ | -------------------------------- |
| `mergeRequest` | object | The GitLab merge request details |
### GitLab Create Merge Request [#gitlab-create-merge-request]
Create a new merge request in a GitLab project
#### Input [#input-13]
| Parameter | Type | Required | Description |
| -------------------- | ------- | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `sourceBranch` | string | Yes | Source branch name |
| `targetBranch` | string | Yes | Target branch name |
| `title` | string | Yes | Merge request title |
| `description` | string | No | Merge request description (Markdown supported) |
| `labels` | string | No | Comma-separated list of label names |
| `assigneeIds` | array | No | Array of user IDs to assign |
| `milestoneId` | number | No | Milestone ID to assign |
| `removeSourceBranch` | boolean | No | Delete source branch after merge |
| `squash` | boolean | No | Squash commits on merge |
| `draft` | boolean | No | Mark as draft (applied via the "Draft:" title prefix) |
#### Output [#output-13]
| Parameter | Type | Description |
| -------------- | ------ | -------------------------------- |
| `mergeRequest` | object | The created GitLab merge request |
### GitLab Update Merge Request [#gitlab-update-merge-request]
Update an existing merge request in a GitLab project
#### Input [#input-14]
| Parameter | Type | Required | Description |
| -------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------ |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `mergeRequestIid` | number | Yes | Merge request internal ID (IID) |
| `title` | string | No | New merge request title |
| `description` | string | No | New merge request description |
| `stateEvent` | string | No | State event (close or reopen) |
| `labels` | string | No | Comma-separated list of label names |
| `assigneeIds` | array | No | Array of user IDs to assign |
| `milestoneId` | number | No | Milestone ID to assign |
| `targetBranch` | string | No | New target branch |
| `removeSourceBranch` | boolean | No | Delete source branch after merge |
| `squash` | boolean | No | Squash commits on merge |
| `draft` | boolean | No | Mark as draft or remove draft status (applied via the "Draft:" title prefix; requires title to be set) |
#### Output [#output-14]
| Parameter | Type | Description |
| -------------- | ------ | -------------------------------- |
| `mergeRequest` | object | The updated GitLab merge request |
### GitLab Merge Merge Request [#gitlab-merge-merge-request]
Merge a merge request in a GitLab project
#### Input [#input-15]
| Parameter | Type | Required | Description |
| --------------------------- | ------- | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `mergeRequestIid` | number | Yes | Merge request internal ID (IID) |
| `mergeCommitMessage` | string | No | Custom merge commit message |
| `squashCommitMessage` | string | No | Custom squash commit message |
| `squash` | boolean | No | Squash commits before merging |
| `shouldRemoveSourceBranch` | boolean | No | Delete source branch after merge |
| `mergeWhenPipelineSucceeds` | boolean | No | Merge when pipeline succeeds |
#### Output [#output-15]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------- |
| `mergeRequest` | object | The merged GitLab merge request |
### GitLab Create Merge Request Comment [#gitlab-create-merge-request-comment]
Add a comment to a GitLab merge request
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `mergeRequestIid` | number | Yes | Merge request internal ID (IID) |
| `body` | string | Yes | Comment body (Markdown supported) |
| `internal` | boolean | No | Create the comment as an internal note visible only to project members |
#### Output [#output-16]
| Parameter | Type | Description |
| --------- | ------ | ------------------- |
| `note` | object | The created comment |
### GitLab List Pipelines [#gitlab-list-pipelines]
List pipelines in a GitLab project
#### Input [#input-17]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `ref` | string | No | Filter by ref (branch or tag) |
| `status` | string | No | Filter by status (created, waiting\_for\_resource, preparing, pending, running, success, failed, canceling, canceled, skipped, manual, scheduled, waiting\_for\_callback) |
| `orderBy` | string | No | Order by field (id, status, ref, updated\_at, user\_id) |
| `sort` | string | No | Sort direction (asc, desc) |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |
#### Output [#output-17]
| Parameter | Type | Description |
| ----------- | ------ | ------------------------- |
| `pipelines` | array | List of GitLab pipelines |
| `total` | number | Total number of pipelines |
### GitLab Get Pipeline [#gitlab-get-pipeline]
Get details of a specific GitLab pipeline
#### Input [#input-18]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `pipelineId` | number | Yes | Pipeline ID |
#### Output [#output-18]
| Parameter | Type | Description |
| ---------- | ------ | --------------------------- |
| `pipeline` | object | The GitLab pipeline details |
### GitLab Create Pipeline [#gitlab-create-pipeline]
Trigger a new pipeline in a GitLab project
#### Input [#input-19]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `ref` | string | Yes | Branch or tag to run the pipeline on |
| `variables` | array | No | Array of variables for the pipeline (each with key, value, and optional variable\_type) |
| `inputs` | json | No | Pipeline inputs as a key/value object (for pipelines with spec:inputs) |
#### Output [#output-19]
| Parameter | Type | Description |
| ---------- | ------ | --------------------------- |
| `pipeline` | object | The created GitLab pipeline |
### GitLab Retry Pipeline [#gitlab-retry-pipeline]
Retry a failed GitLab pipeline
#### Input [#input-20]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `pipelineId` | number | Yes | Pipeline ID |
#### Output [#output-20]
| Parameter | Type | Description |
| ---------- | ------ | --------------------------- |
| `pipeline` | object | The retried GitLab pipeline |
### GitLab Cancel Pipeline [#gitlab-cancel-pipeline]
Cancel a running GitLab pipeline
#### Input [#input-21]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `pipelineId` | number | Yes | Pipeline ID |
#### Output [#output-21]
| Parameter | Type | Description |
| ---------- | ------ | ----------------------------- |
| `pipeline` | object | The cancelled GitLab pipeline |
### GitLab List Repository Tree [#gitlab-list-repository-tree]
List files and directories in a GitLab project repository
#### Input [#input-22]
| Parameter | Type | Required | Description |
| ----------- | ------- | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `path` | string | No | Path inside the repository to list |
| `ref` | string | No | Branch, tag, or commit SHA to list from |
| `recursive` | boolean | No | Whether to list files recursively |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |
#### Output [#output-22]
| Parameter | Type | Description |
| --------- | ------ | ------------------------------- |
| `tree` | array | List of repository tree entries |
| `total` | number | Total number of tree entries |
### GitLab Get File [#gitlab-get-file]
Get the contents of a file from a GitLab project repository
#### Input [#input-23]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `filePath` | string | Yes | Path to the file in the repository |
| `ref` | string | Yes | Branch, tag, or commit SHA |
#### Output [#output-23]
| Parameter | Type | Description |
| -------------- | ------- | ---------------------------------------------------- |
| `filePath` | string | The file path |
| `fileName` | string | The file name |
| `size` | number | The file size in bytes |
| `ref` | string | The branch, tag, or commit SHA |
| `blobId` | string | The blob ID |
| `lastCommitId` | string | The last commit ID that modified the file |
| `content` | string | The decoded file content, truncated to 1M characters |
| `truncated` | boolean | Whether the content was truncated |
### GitLab Create File [#gitlab-create-file]
Create a new file in a GitLab project repository
#### Input [#input-24]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | ------------------------------------------------------------------------------ |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `filePath` | string | Yes | Path to the file in the repository |
| `branch` | string | Yes | Branch to commit the new file to |
| `content` | string | Yes | File content |
| `startBranch` | string | No | Name of the base branch to create the target branch from, if it does not exist |
| `authorName` | string | No | Commit author name (defaults to the token user) |
| `authorEmail` | string | No | Commit author email (defaults to the token user) |
| `executeFilemode` | boolean | No | Enable the execute flag on the file |
| `commitMessage` | string | Yes | Commit message |
#### Output [#output-24]
| Parameter | Type | Description |
| ---------- | ------ | ------------------------------------ |
| `filePath` | string | The created file path |
| `branch` | string | The branch the file was committed to |
### GitLab Update File [#gitlab-update-file]
Update an existing file in a GitLab project repository
#### Input [#input-25]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | ------------------------------------------------------------------------------ |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `filePath` | string | Yes | Path to the file in the repository |
| `branch` | string | Yes | Branch to commit the update to |
| `content` | string | Yes | New file content |
| `startBranch` | string | No | Name of the base branch to create the target branch from, if it does not exist |
| `authorName` | string | No | Commit author name (defaults to the token user) |
| `authorEmail` | string | No | Commit author email (defaults to the token user) |
| `executeFilemode` | boolean | No | Enable or disable the execute flag on the file |
| `commitMessage` | string | Yes | Commit message |
| `lastCommitId` | string | No | Last known commit ID for the file (optimistic locking) |
#### Output [#output-25]
| Parameter | Type | Description |
| ---------- | ------ | -------------------------------------- |
| `filePath` | string | The updated file path |
| `branch` | string | The branch the update was committed to |
### GitLab Create Branch [#gitlab-create-branch]
Create a new branch in a GitLab project repository
#### Input [#input-26]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `branch` | string | Yes | Name of the new branch |
| `ref` | string | Yes | Source branch/tag/SHA |
#### Output [#output-26]
| Parameter | Type | Description |
| ----------- | ------- | ------------------------------- |
| `name` | string | The created branch name |
| `webUrl` | string | The web URL of the branch |
| `protected` | boolean | Whether the branch is protected |
| `commit` | object | The commit the branch points to |
### GitLab Delete Branch [#gitlab-delete-branch]
Delete a branch from a GitLab project repository
#### Input [#input-27]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `branch` | string | Yes | Name of the branch to delete |
#### Output [#output-27]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------------- |
| `success` | boolean | Whether the branch was deleted successfully |
### GitLab Compare Branches [#gitlab-compare-branches]
Compare two branches, tags, or commits in a GitLab project repository
#### Input [#input-28]
| Parameter | Type | Required | Description |
| --------------- | ------- | -------- | ----------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `from` | string | Yes | Commit SHA or branch/tag name to compare from |
| `to` | string | Yes | Commit SHA or branch/tag name to compare to |
| `straight` | boolean | No | Compare directly from..to instead of using the merge base (defaults to false) |
| `fromProjectId` | string | No | ID of the project to compare from (for cross-fork comparisons) |
| `unidiff` | boolean | No | Return diffs in unified diff format (GitLab 16.5+) |
#### Output [#output-28]
| Parameter | Type | Description |
| ---------------- | ------- | -------------------------------------------------------- |
| `commit` | object | The latest commit in the comparison |
| `commits` | array | Commits between the two references |
| `diffs` | array | File diffs between the two references |
| `compareTimeout` | boolean | Whether the comparison exceeded size limits or timed out |
| `compareSameRef` | boolean | Whether both references point to the same commit |
| `webUrl` | string | The web URL for viewing the comparison |
### GitLab List Branches [#gitlab-list-branches]
List branches in a GitLab project repository
#### Input [#input-29]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `search` | string | No | Filter branches by name |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |
#### Output [#output-29]
| Parameter | Type | Description |
| ---------- | ------ | ------------------------ |
| `branches` | array | List of branches |
| `total` | number | Total number of branches |
### GitLab List Commits [#gitlab-list-commits]
List commits in a GitLab project repository
#### Input [#input-30]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `refName` | string | No | Branch, tag, or revision range to list commits from |
| `since` | string | No | Only commits after this ISO 8601 date |
| `until` | string | No | Only commits before this ISO 8601 date |
| `path` | string | No | Only commits affecting this file path |
| `author` | string | No | Filter commits by author |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |
#### Output [#output-30]
| Parameter | Type | Description |
| --------- | ------ | ------------------------------------------------------------------------------------------ |
| `commits` | array | List of commits |
| `total` | number | Number of commits returned on this page (GitLab does not report a grand total for commits) |
### GitLab Get Merge Request Changes [#gitlab-get-merge-request-changes]
Get the file changes (diffs) of a GitLab merge request
#### Input [#input-31]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `mergeRequestIid` | number | Yes | Merge request internal ID (IID) |
#### Output [#output-31]
| Parameter | Type | Description |
| ----------------- | ------- | ----------------------------------------------------------------------------- |
| `mergeRequestIid` | number | The merge request internal ID (IID) |
| `changes` | array | List of file changes (diffs) |
| `changesCount` | number | Number of changed files returned (first 100) |
| `hasMore` | boolean | Whether the merge request has more than 100 changed files (results truncated) |
### GitLab Approve Merge Request [#gitlab-approve-merge-request]
Approve a GitLab merge request
#### Input [#input-32]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `mergeRequestIid` | number | Yes | Merge request internal ID (IID) |
| `sha` | string | No | HEAD SHA of the merge request to approve |
#### Output [#output-32]
| Parameter | Type | Description |
| ------------------- | ------ | -------------------------------- |
| `approvalsRequired` | number | Number of approvals required |
| `approvalsLeft` | number | Number of approvals still needed |
| `approvedBy` | array | List of approvers |
### GitLab List Pipeline Jobs [#gitlab-list-pipeline-jobs]
List jobs for a GitLab pipeline
#### Input [#input-33]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `pipelineId` | number | Yes | Pipeline ID |
| `scope` | string | No | Filter jobs by scope (e.g. created, running, success, failed) |
| `includeRetried` | boolean | No | Whether to include retried jobs |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |
#### Output [#output-33]
| Parameter | Type | Description |
| --------- | ------ | --------------------- |
| `jobs` | array | List of pipeline jobs |
| `total` | number | Total number of jobs |
### GitLab Get Job Log [#gitlab-get-job-log]
Get the log (trace) of a GitLab job
#### Input [#input-34]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `jobId` | number | Yes | Job ID |
#### Output [#output-34]
| Parameter | Type | Description |
| ----------- | ------- | -------------------------------------------------------- |
| `log` | string | The job log (trace) output, truncated to 200k characters |
| `truncated` | boolean | Whether the log was truncated |
### GitLab Play Job [#gitlab-play-job]
Trigger (play) a manual GitLab job
#### Input [#input-35]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `jobId` | number | Yes | Job ID |
| `jobVariables` | array | No | Variables for the manual job (array of objects with key and value) |
#### Output [#output-35]
| Parameter | Type | Description |
| --------- | ------ | ---------------------- |
| `id` | number | The job ID |
| `name` | string | The job name |
| `status` | string | The job status |
| `webUrl` | string | The web URL of the job |
### GitLab List Releases [#gitlab-list-releases]
List releases in a GitLab project
#### Input [#input-36]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `orderBy` | string | No | Order by field (released\_at, created\_at) |
| `sort` | string | No | Sort direction (asc, desc) |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |
#### Output [#output-36]
| Parameter | Type | Description |
| ---------- | ------ | ------------------------ |
| `releases` | array | List of GitLab releases |
| `total` | number | Total number of releases |
### GitLab Create Release [#gitlab-create-release]
Create a new release in a GitLab project
#### Input [#input-37]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) |
| `tagName` | string | Yes | The Git tag for the release |
| `name` | string | No | The release name |
| `description` | string | No | Release description/notes (Markdown supported) |
| `ref` | string | No | Commit SHA, branch, or tag to create the tag from if it does not already exist |
| `releasedAt` | string | No | ISO 8601 date for an upcoming or historical release |
| `tagMessage` | string | No | Annotation message to use if creating a new annotated tag |
| `assetLinks` | array | No | Release asset links: array of objects with name, url, and optional link\_type (other, runbook, image, package) |
| `milestones` | array | No | Array of milestone titles to associate with the release |
#### Output [#output-37]
| Parameter | Type | Description |
| --------- | ------ | -------------------------- |
| `release` | object | The created GitLab release |
### GitLab List Members [#gitlab-list-members]
List members of a GitLab project or group. Includes members inherited from ancestor groups by default.
#### Input [#input-38]
| Parameter | Type | Required | Description |
| -------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' |
| `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) |
| `directOnly` | boolean | No | When true, returns only direct members. Defaults to false, which also returns members inherited from ancestor groups. |
| `query` | string | No | Filter members by name, email, or username |
| `userIds` | string | No | Comma-separated user IDs to filter the results to |
| `state` | string | No | Filter inherited-member results by state: 'awaiting' or 'active' (Premium/Ultimate; only applies when inherited members are included) |
| `showSeatInfo` | boolean | No | Include seat information for each member |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |
#### Output [#output-38]
| Parameter | Type | Description |
| --------- | ------ | -------------------------------- |
| `members` | array | List of project or group members |
| `total` | number | Total number of members |
### GitLab Add Member [#gitlab-add-member]
Add an existing GitLab user to a project or group at a given access level
#### Input [#input-39]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' |
| `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) |
| `userId` | number | No | The ID of the user to add. Provide either userId or username. |
| `username` | string | No | The username of the user to add. Provide either userId or username. |
| `accessLevel` | number | Yes | Access level: 0 (No access), 5 (Minimal), 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), 50 (Owner) |
| `expiresAt` | string | No | Access expiration date in YYYY-MM-DD format |
| `memberRoleId` | number | No | Custom member role ID (GitLab Ultimate only) |
#### Output [#output-39]
| Parameter | Type | Description |
| --------------- | ------- | ------------------------------------------------------- |
| `member` | object | The added member |
| `alreadyMember` | boolean | Whether the user was already a member (add was a no-op) |
### GitLab Update Member [#gitlab-update-member]
Update a member's access level in a GitLab project or group
#### Input [#input-40]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' |
| `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) |
| `userId` | number | Yes | The ID of the member to update |
| `accessLevel` | number | Yes | New access level: 0 (No access), 5 (Minimal), 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), 50 (Owner) |
| `expiresAt` | string | No | Access expiration date in YYYY-MM-DD format. Pass an empty string to clear an existing expiration. |
| `memberRoleId` | number | No | Custom member role ID (GitLab Ultimate only). Warning: when omitted, GitLab removes any custom role the member currently holds. |
#### Output [#output-40]
| Parameter | Type | Description |
| --------- | ------ | ------------------ |
| `member` | object | The updated member |
### GitLab Remove Member [#gitlab-remove-member]
Remove a member from a GitLab project or group
#### Input [#input-41]
| Parameter | Type | Required | Description |
| ------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' |
| `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) |
| `userId` | number | Yes | The ID of the member to remove |
| `skipSubresources` | boolean | No | Skip deleting the member from subgroups and projects below the target (defaults to false) |
| `unassignIssuables` | boolean | No | Unassign the member from all issues and merge requests in the target (defaults to false) |
#### Output [#output-41]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------------- |
| `success` | boolean | Whether the member was removed successfully |
### GitLab Invite Member [#gitlab-invite-member]
Invite a person to a GitLab project or group by email address
#### Input [#input-42]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' |
| `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) |
| `email` | string | Yes | Email address to invite (comma-separated for multiple) |
| `accessLevel` | number | Yes | Access level: 0 (No access), 5 (Minimal), 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), 50 (Owner) |
| `expiresAt` | string | No | Access expiration date in YYYY-MM-DD format |
| `memberRoleId` | number | No | Custom member role ID (GitLab Ultimate only) |
| `inviteSource` | string | No | Identifier recorded as the source of the invitation (for attribution) |
#### Output [#output-42]
| Parameter | Type | Description |
| --------- | ------ | ------------------------------------ |
| `status` | string | Invitation status returned by GitLab |
| `message` | object | Per-email result detail, if any |
### GitLab List Invitations [#gitlab-list-invitations]
List pending email invitations for a GitLab project or group
#### Input [#input-43]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' |
| `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) |
| `query` | string | No | Filter invitations by invited email |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |
#### Output [#output-43]
| Parameter | Type | Description |
| ------------- | ------ | --------------------------- |
| `invitations` | array | List of pending invitations |
| `total` | number | Total number of invitations |
### GitLab Update Invitation [#gitlab-update-invitation]
Update a pending invitation to a GitLab project or group
#### Input [#input-44]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' |
| `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) |
| `email` | string | Yes | Email address of the invitation to update |
| `accessLevel` | number | No | New access level: 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), 50 (Owner) |
| `expiresAt` | string | No | Access expiration date (ISO 8601, e.g. 2026-12-31T00:00:00Z; date-only also accepted). At least one of accessLevel or expiresAt must be provided. |
#### Output [#output-44]
| Parameter | Type | Description |
| ------------ | ------ | ---------------------- |
| `invitation` | object | The updated invitation |
### GitLab Revoke Invitation [#gitlab-revoke-invitation]
Revoke a pending email invitation to a GitLab project or group
#### Input [#input-45]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' |
| `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) |
| `email` | string | Yes | Email address of the invitation to revoke |
#### Output [#output-45]
| Parameter | Type | Description |
| --------- | ------- | ----------------------------------------------- |
| `success` | boolean | Whether the invitation was revoked successfully |
### GitLab List Access Requests [#gitlab-list-access-requests]
List pending access requests for a GitLab project or group
#### Input [#input-46]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' |
| `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |
#### Output [#output-46]
| Parameter | Type | Description |
| ---------------- | ------ | ------------------------------- |
| `accessRequests` | array | List of pending access requests |
| `total` | number | Total number of access requests |
### GitLab Approve Access Request [#gitlab-approve-access-request]
Approve a pending access request for a GitLab project or group
#### Input [#input-47]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' |
| `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) |
| `userId` | number | Yes | The user ID of the access requester |
| `accessLevel` | number | No | Access level to grant: 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), 50 (Owner). Defaults to 30 (Developer). |
#### Output [#output-47]
| Parameter | Type | Description |
| --------------- | ------ | --------------------------- |
| `accessRequest` | object | The approved access request |
### GitLab Deny Access Request [#gitlab-deny-access-request]
Deny (delete) a pending access request for a GitLab project or group
#### Input [#input-48]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' |
| `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) |
| `userId` | number | Yes | The user ID of the access requester |
#### Output [#output-48]
| Parameter | Type | Description |
| --------- | ------- | -------------------------------------------------- |
| `success` | boolean | Whether the access request was denied successfully |
### GitLab List SAML Group Links [#gitlab-list-saml-group-links]
List SAML group links for a GitLab group. Use this to detect whether a group is governed by SAML group sync before provisioning members.
#### Input [#input-49]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `groupId` | string | Yes | Group ID or path (e.g. my-org/my-group) |
#### Output [#output-49]
| Parameter | Type | Description |
| ---------------- | ------ | -------------------------- |
| `samlGroupLinks` | array | List of SAML group links |
| `total` | number | Number of SAML group links |
### GitLab Search Users [#gitlab-search-users]
Search for GitLab users by name, username, or email. Email matches must be exact; private emails match only with an admin token. Use this to resolve an email to a user ID before adding a member.
#### Input [#input-50]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `search` | string | Yes | Name, username, or email to search for |
| `perPage` | number | No | Number of results per page (default 20, max 100) |
| `page` | number | No | Page number for pagination |
#### Output [#output-50]
| Parameter | Type | Description |
| --------- | ------ | ------------------------------ |
| `users` | array | List of matching users |
| `total` | number | Total number of matching users |
### GitLab Create User [#gitlab-create-user]
Create a new GitLab user. Requires an administrator token with admin\_mode on the instance.
#### Input [#input-51]
| Parameter | Type | Required | Description |
| --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `email` | string | Yes | The user's email address |
| `username` | string | Yes | The user's username |
| `name` | string | Yes | The user's display name |
| `password` | string | No | The user's password. Omit and set resetPassword to email a reset link instead. |
| `resetPassword` | boolean | No | Send the user a password reset link instead of setting a password |
| `forceRandomPassword` | boolean | No | Set a random password without emailing a reset link (useful for SSO-only accounts). One of password, resetPassword, or forceRandomPassword is required. |
| `admin` | boolean | No | Whether the new user is an administrator |
| `skipConfirmation` | boolean | No | Skip email confirmation for the new user |
#### Output [#output-51]
| Parameter | Type | Description |
| --------- | ------ | ---------------- |
| `user` | object | The created user |
### GitLab Update User [#gitlab-update-user]
Modify an existing GitLab user. Requires an administrator token with admin\_mode on the instance.
#### Input [#input-52]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------ |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `userId` | number | Yes | The ID of the user to modify |
| `email` | string | No | The user's new email address (GitLab only allows changing to one of the user's existing verified secondary emails) |
| `username` | string | No | The user's new username |
| `name` | string | No | The user's new display name |
| `admin` | boolean | No | Whether the user is an administrator |
#### Output [#output-52]
| Parameter | Type | Description |
| --------- | ------ | ---------------- |
| `user` | object | The updated user |
### GitLab Delete User [#gitlab-delete-user]
Delete a GitLab user. Requires an administrator token with admin\_mode on the instance.
#### Input [#input-53]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `userId` | number | Yes | The ID of the user to delete |
| `hardDelete` | boolean | No | When true, contributions, personal projects, AND groups owned solely by this user are deleted rather than moved to a Ghost User |
#### Output [#output-53]
| Parameter | Type | Description |
| --------- | ------- | ----------------------------------------- |
| `success` | boolean | Whether the user was deleted successfully |
### GitLab Block User [#gitlab-block-user]
#### Input [#input-54]
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
#### Output [#output-54]
| Parameter | Type | Description |
| ------------------- | ------- | ---------------------------------------------------------------- |
| `projects` | json | List of projects |
| `project` | json | Project details |
| `groups` | json | List of groups |
| `group` | json | Group details |
| `memberships` | json | A user's project and group memberships |
| `issues` | json | List of issues |
| `issue` | json | Issue details |
| `mergeRequests` | json | List of merge requests |
| `mergeRequest` | json | Merge request details |
| `mergeRequestIid` | number | Merge request internal ID (IID) |
| `pipelines` | json | List of pipelines |
| `pipeline` | json | Pipeline details |
| `note` | json | Comment/note details |
| `tree` | json | Repository tree entries |
| `content` | string | File contents (decoded) |
| `fileName` | string | File name |
| `filePath` | string | Path to the file in the repository |
| `branch` | string | Branch the file was committed to |
| `branches` | json | List of branches |
| `commits` | json | List of commits |
| `commit` | json | A single commit (e.g. latest commit in a comparison) |
| `name` | string | Created branch name |
| `protected` | boolean | Whether the branch is protected |
| `size` | number | File size in bytes |
| `ref` | string | The branch, tag, or commit SHA |
| `blobId` | string | The blob ID |
| `lastCommitId` | string | The last commit ID that modified the file |
| `webUrl` | string | Web URL |
| `changes` | json | Merge request file changes/diffs |
| `changesCount` | number | Number of changed files returned (first 100) |
| `hasMore` | boolean | Whether more changed files exist beyond the first 100 |
| `approvalsRequired` | number | Approvals required |
| `approvalsLeft` | number | Approvals remaining |
| `approvedBy` | json | List of approvers |
| `jobs` | json | Pipeline jobs |
| `log` | string | Job log output |
| `id` | number | Job ID |
| `status` | string | Job status |
| `diffs` | json | File diffs between two compared references |
| `compareTimeout` | boolean | Whether the comparison timed out |
| `compareSameRef` | boolean | Whether both compared references match |
| `releases` | json | List of releases |
| `release` | json | Release details |
| `members` | json | List of project or group members |
| `member` | json | A single member |
| `alreadyMember` | boolean | Whether the user was already a member |
| `invitations` | json | List of pending invitations |
| `invitation` | json | A single invitation |
| `accessRequests` | json | List of pending access requests |
| `accessRequest` | json | A single access request |
| `samlGroupLinks` | json | List of SAML group links |
| `samlGroupLink` | json | A single SAML group link |
| `message` | json | Per-email invitation result detail |
| `users` | json | List of matching users |
| `user` | json | User details |
| `total` | number | Total number of items available across all pages |
| `truncated` | boolean | Whether returned content (file content or job log) was truncated |
| `success` | boolean | Operation success status |
### GitLab Unblock User [#gitlab-unblock-user]
#### Input [#input-55]
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
#### Output [#output-55]
| Parameter | Type | Description |
| ------------------- | ------- | ---------------------------------------------------------------- |
| `projects` | json | List of projects |
| `project` | json | Project details |
| `groups` | json | List of groups |
| `group` | json | Group details |
| `memberships` | json | A user's project and group memberships |
| `issues` | json | List of issues |
| `issue` | json | Issue details |
| `mergeRequests` | json | List of merge requests |
| `mergeRequest` | json | Merge request details |
| `mergeRequestIid` | number | Merge request internal ID (IID) |
| `pipelines` | json | List of pipelines |
| `pipeline` | json | Pipeline details |
| `note` | json | Comment/note details |
| `tree` | json | Repository tree entries |
| `content` | string | File contents (decoded) |
| `fileName` | string | File name |
| `filePath` | string | Path to the file in the repository |
| `branch` | string | Branch the file was committed to |
| `branches` | json | List of branches |
| `commits` | json | List of commits |
| `commit` | json | A single commit (e.g. latest commit in a comparison) |
| `name` | string | Created branch name |
| `protected` | boolean | Whether the branch is protected |
| `size` | number | File size in bytes |
| `ref` | string | The branch, tag, or commit SHA |
| `blobId` | string | The blob ID |
| `lastCommitId` | string | The last commit ID that modified the file |
| `webUrl` | string | Web URL |
| `changes` | json | Merge request file changes/diffs |
| `changesCount` | number | Number of changed files returned (first 100) |
| `hasMore` | boolean | Whether more changed files exist beyond the first 100 |
| `approvalsRequired` | number | Approvals required |
| `approvalsLeft` | number | Approvals remaining |
| `approvedBy` | json | List of approvers |
| `jobs` | json | Pipeline jobs |
| `log` | string | Job log output |
| `id` | number | Job ID |
| `status` | string | Job status |
| `diffs` | json | File diffs between two compared references |
| `compareTimeout` | boolean | Whether the comparison timed out |
| `compareSameRef` | boolean | Whether both compared references match |
| `releases` | json | List of releases |
| `release` | json | Release details |
| `members` | json | List of project or group members |
| `member` | json | A single member |
| `alreadyMember` | boolean | Whether the user was already a member |
| `invitations` | json | List of pending invitations |
| `invitation` | json | A single invitation |
| `accessRequests` | json | List of pending access requests |
| `accessRequest` | json | A single access request |
| `samlGroupLinks` | json | List of SAML group links |
| `samlGroupLink` | json | A single SAML group link |
| `message` | json | Per-email invitation result detail |
| `users` | json | List of matching users |
| `user` | json | User details |
| `total` | number | Total number of items available across all pages |
| `truncated` | boolean | Whether returned content (file content or job log) was truncated |
| `success` | boolean | Operation success status |
### GitLab Deactivate User [#gitlab-deactivate-user]
#### Input [#input-56]
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
#### Output [#output-56]
| Parameter | Type | Description |
| ------------------- | ------- | ---------------------------------------------------------------- |
| `projects` | json | List of projects |
| `project` | json | Project details |
| `groups` | json | List of groups |
| `group` | json | Group details |
| `memberships` | json | A user's project and group memberships |
| `issues` | json | List of issues |
| `issue` | json | Issue details |
| `mergeRequests` | json | List of merge requests |
| `mergeRequest` | json | Merge request details |
| `mergeRequestIid` | number | Merge request internal ID (IID) |
| `pipelines` | json | List of pipelines |
| `pipeline` | json | Pipeline details |
| `note` | json | Comment/note details |
| `tree` | json | Repository tree entries |
| `content` | string | File contents (decoded) |
| `fileName` | string | File name |
| `filePath` | string | Path to the file in the repository |
| `branch` | string | Branch the file was committed to |
| `branches` | json | List of branches |
| `commits` | json | List of commits |
| `commit` | json | A single commit (e.g. latest commit in a comparison) |
| `name` | string | Created branch name |
| `protected` | boolean | Whether the branch is protected |
| `size` | number | File size in bytes |
| `ref` | string | The branch, tag, or commit SHA |
| `blobId` | string | The blob ID |
| `lastCommitId` | string | The last commit ID that modified the file |
| `webUrl` | string | Web URL |
| `changes` | json | Merge request file changes/diffs |
| `changesCount` | number | Number of changed files returned (first 100) |
| `hasMore` | boolean | Whether more changed files exist beyond the first 100 |
| `approvalsRequired` | number | Approvals required |
| `approvalsLeft` | number | Approvals remaining |
| `approvedBy` | json | List of approvers |
| `jobs` | json | Pipeline jobs |
| `log` | string | Job log output |
| `id` | number | Job ID |
| `status` | string | Job status |
| `diffs` | json | File diffs between two compared references |
| `compareTimeout` | boolean | Whether the comparison timed out |
| `compareSameRef` | boolean | Whether both compared references match |
| `releases` | json | List of releases |
| `release` | json | Release details |
| `members` | json | List of project or group members |
| `member` | json | A single member |
| `alreadyMember` | boolean | Whether the user was already a member |
| `invitations` | json | List of pending invitations |
| `invitation` | json | A single invitation |
| `accessRequests` | json | List of pending access requests |
| `accessRequest` | json | A single access request |
| `samlGroupLinks` | json | List of SAML group links |
| `samlGroupLink` | json | A single SAML group link |
| `message` | json | Per-email invitation result detail |
| `users` | json | List of matching users |
| `user` | json | User details |
| `total` | number | Total number of items available across all pages |
| `truncated` | boolean | Whether returned content (file content or job log) was truncated |
| `success` | boolean | Operation success status |
### GitLab Activate User [#gitlab-activate-user]
#### Input [#input-57]
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
#### Output [#output-57]
| Parameter | Type | Description |
| ------------------- | ------- | ---------------------------------------------------------------- |
| `projects` | json | List of projects |
| `project` | json | Project details |
| `groups` | json | List of groups |
| `group` | json | Group details |
| `memberships` | json | A user's project and group memberships |
| `issues` | json | List of issues |
| `issue` | json | Issue details |
| `mergeRequests` | json | List of merge requests |
| `mergeRequest` | json | Merge request details |
| `mergeRequestIid` | number | Merge request internal ID (IID) |
| `pipelines` | json | List of pipelines |
| `pipeline` | json | Pipeline details |
| `note` | json | Comment/note details |
| `tree` | json | Repository tree entries |
| `content` | string | File contents (decoded) |
| `fileName` | string | File name |
| `filePath` | string | Path to the file in the repository |
| `branch` | string | Branch the file was committed to |
| `branches` | json | List of branches |
| `commits` | json | List of commits |
| `commit` | json | A single commit (e.g. latest commit in a comparison) |
| `name` | string | Created branch name |
| `protected` | boolean | Whether the branch is protected |
| `size` | number | File size in bytes |
| `ref` | string | The branch, tag, or commit SHA |
| `blobId` | string | The blob ID |
| `lastCommitId` | string | The last commit ID that modified the file |
| `webUrl` | string | Web URL |
| `changes` | json | Merge request file changes/diffs |
| `changesCount` | number | Number of changed files returned (first 100) |
| `hasMore` | boolean | Whether more changed files exist beyond the first 100 |
| `approvalsRequired` | number | Approvals required |
| `approvalsLeft` | number | Approvals remaining |
| `approvedBy` | json | List of approvers |
| `jobs` | json | Pipeline jobs |
| `log` | string | Job log output |
| `id` | number | Job ID |
| `status` | string | Job status |
| `diffs` | json | File diffs between two compared references |
| `compareTimeout` | boolean | Whether the comparison timed out |
| `compareSameRef` | boolean | Whether both compared references match |
| `releases` | json | List of releases |
| `release` | json | Release details |
| `members` | json | List of project or group members |
| `member` | json | A single member |
| `alreadyMember` | boolean | Whether the user was already a member |
| `invitations` | json | List of pending invitations |
| `invitation` | json | A single invitation |
| `accessRequests` | json | List of pending access requests |
| `accessRequest` | json | A single access request |
| `samlGroupLinks` | json | List of SAML group links |
| `samlGroupLink` | json | A single SAML group link |
| `message` | json | Per-email invitation result detail |
| `users` | json | List of matching users |
| `user` | json | User details |
| `total` | number | Total number of items available across all pages |
| `truncated` | boolean | Whether returned content (file content or job log) was truncated |
| `success` | boolean | Operation success status |
### GitLab Ban User [#gitlab-ban-user]
#### Input [#input-58]
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
#### Output [#output-58]
| Parameter | Type | Description |
| ------------------- | ------- | ---------------------------------------------------------------- |
| `projects` | json | List of projects |
| `project` | json | Project details |
| `groups` | json | List of groups |
| `group` | json | Group details |
| `memberships` | json | A user's project and group memberships |
| `issues` | json | List of issues |
| `issue` | json | Issue details |
| `mergeRequests` | json | List of merge requests |
| `mergeRequest` | json | Merge request details |
| `mergeRequestIid` | number | Merge request internal ID (IID) |
| `pipelines` | json | List of pipelines |
| `pipeline` | json | Pipeline details |
| `note` | json | Comment/note details |
| `tree` | json | Repository tree entries |
| `content` | string | File contents (decoded) |
| `fileName` | string | File name |
| `filePath` | string | Path to the file in the repository |
| `branch` | string | Branch the file was committed to |
| `branches` | json | List of branches |
| `commits` | json | List of commits |
| `commit` | json | A single commit (e.g. latest commit in a comparison) |
| `name` | string | Created branch name |
| `protected` | boolean | Whether the branch is protected |
| `size` | number | File size in bytes |
| `ref` | string | The branch, tag, or commit SHA |
| `blobId` | string | The blob ID |
| `lastCommitId` | string | The last commit ID that modified the file |
| `webUrl` | string | Web URL |
| `changes` | json | Merge request file changes/diffs |
| `changesCount` | number | Number of changed files returned (first 100) |
| `hasMore` | boolean | Whether more changed files exist beyond the first 100 |
| `approvalsRequired` | number | Approvals required |
| `approvalsLeft` | number | Approvals remaining |
| `approvedBy` | json | List of approvers |
| `jobs` | json | Pipeline jobs |
| `log` | string | Job log output |
| `id` | number | Job ID |
| `status` | string | Job status |
| `diffs` | json | File diffs between two compared references |
| `compareTimeout` | boolean | Whether the comparison timed out |
| `compareSameRef` | boolean | Whether both compared references match |
| `releases` | json | List of releases |
| `release` | json | Release details |
| `members` | json | List of project or group members |
| `member` | json | A single member |
| `alreadyMember` | boolean | Whether the user was already a member |
| `invitations` | json | List of pending invitations |
| `invitation` | json | A single invitation |
| `accessRequests` | json | List of pending access requests |
| `accessRequest` | json | A single access request |
| `samlGroupLinks` | json | List of SAML group links |
| `samlGroupLink` | json | A single SAML group link |
| `message` | json | Per-email invitation result detail |
| `users` | json | List of matching users |
| `user` | json | User details |
| `total` | number | Total number of items available across all pages |
| `truncated` | boolean | Whether returned content (file content or job log) was truncated |
| `success` | boolean | Operation success status |
### GitLab Unban User [#gitlab-unban-user]
#### Input [#input-59]
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
#### Output [#output-59]
| Parameter | Type | Description |
| ------------------- | ------- | ---------------------------------------------------------------- |
| `projects` | json | List of projects |
| `project` | json | Project details |
| `groups` | json | List of groups |
| `group` | json | Group details |
| `memberships` | json | A user's project and group memberships |
| `issues` | json | List of issues |
| `issue` | json | Issue details |
| `mergeRequests` | json | List of merge requests |
| `mergeRequest` | json | Merge request details |
| `mergeRequestIid` | number | Merge request internal ID (IID) |
| `pipelines` | json | List of pipelines |
| `pipeline` | json | Pipeline details |
| `note` | json | Comment/note details |
| `tree` | json | Repository tree entries |
| `content` | string | File contents (decoded) |
| `fileName` | string | File name |
| `filePath` | string | Path to the file in the repository |
| `branch` | string | Branch the file was committed to |
| `branches` | json | List of branches |
| `commits` | json | List of commits |
| `commit` | json | A single commit (e.g. latest commit in a comparison) |
| `name` | string | Created branch name |
| `protected` | boolean | Whether the branch is protected |
| `size` | number | File size in bytes |
| `ref` | string | The branch, tag, or commit SHA |
| `blobId` | string | The blob ID |
| `lastCommitId` | string | The last commit ID that modified the file |
| `webUrl` | string | Web URL |
| `changes` | json | Merge request file changes/diffs |
| `changesCount` | number | Number of changed files returned (first 100) |
| `hasMore` | boolean | Whether more changed files exist beyond the first 100 |
| `approvalsRequired` | number | Approvals required |
| `approvalsLeft` | number | Approvals remaining |
| `approvedBy` | json | List of approvers |
| `jobs` | json | Pipeline jobs |
| `log` | string | Job log output |
| `id` | number | Job ID |
| `status` | string | Job status |
| `diffs` | json | File diffs between two compared references |
| `compareTimeout` | boolean | Whether the comparison timed out |
| `compareSameRef` | boolean | Whether both compared references match |
| `releases` | json | List of releases |
| `release` | json | Release details |
| `members` | json | List of project or group members |
| `member` | json | A single member |
| `alreadyMember` | boolean | Whether the user was already a member |
| `invitations` | json | List of pending invitations |
| `invitation` | json | A single invitation |
| `accessRequests` | json | List of pending access requests |
| `accessRequest` | json | A single access request |
| `samlGroupLinks` | json | List of SAML group links |
| `samlGroupLink` | json | A single SAML group link |
| `message` | json | Per-email invitation result detail |
| `users` | json | List of matching users |
| `user` | json | User details |
| `total` | number | Total number of items available across all pages |
| `truncated` | boolean | Whether returned content (file content or job log) was truncated |
| `success` | boolean | Operation success status |
### GitLab Approve User [#gitlab-approve-user]
#### Input [#input-60]
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
#### Output [#output-60]
| Parameter | Type | Description |
| ------------------- | ------- | ---------------------------------------------------------------- |
| `projects` | json | List of projects |
| `project` | json | Project details |
| `groups` | json | List of groups |
| `group` | json | Group details |
| `memberships` | json | A user's project and group memberships |
| `issues` | json | List of issues |
| `issue` | json | Issue details |
| `mergeRequests` | json | List of merge requests |
| `mergeRequest` | json | Merge request details |
| `mergeRequestIid` | number | Merge request internal ID (IID) |
| `pipelines` | json | List of pipelines |
| `pipeline` | json | Pipeline details |
| `note` | json | Comment/note details |
| `tree` | json | Repository tree entries |
| `content` | string | File contents (decoded) |
| `fileName` | string | File name |
| `filePath` | string | Path to the file in the repository |
| `branch` | string | Branch the file was committed to |
| `branches` | json | List of branches |
| `commits` | json | List of commits |
| `commit` | json | A single commit (e.g. latest commit in a comparison) |
| `name` | string | Created branch name |
| `protected` | boolean | Whether the branch is protected |
| `size` | number | File size in bytes |
| `ref` | string | The branch, tag, or commit SHA |
| `blobId` | string | The blob ID |
| `lastCommitId` | string | The last commit ID that modified the file |
| `webUrl` | string | Web URL |
| `changes` | json | Merge request file changes/diffs |
| `changesCount` | number | Number of changed files returned (first 100) |
| `hasMore` | boolean | Whether more changed files exist beyond the first 100 |
| `approvalsRequired` | number | Approvals required |
| `approvalsLeft` | number | Approvals remaining |
| `approvedBy` | json | List of approvers |
| `jobs` | json | Pipeline jobs |
| `log` | string | Job log output |
| `id` | number | Job ID |
| `status` | string | Job status |
| `diffs` | json | File diffs between two compared references |
| `compareTimeout` | boolean | Whether the comparison timed out |
| `compareSameRef` | boolean | Whether both compared references match |
| `releases` | json | List of releases |
| `release` | json | Release details |
| `members` | json | List of project or group members |
| `member` | json | A single member |
| `alreadyMember` | boolean | Whether the user was already a member |
| `invitations` | json | List of pending invitations |
| `invitation` | json | A single invitation |
| `accessRequests` | json | List of pending access requests |
| `accessRequest` | json | A single access request |
| `samlGroupLinks` | json | List of SAML group links |
| `samlGroupLink` | json | A single SAML group link |
| `message` | json | Per-email invitation result detail |
| `users` | json | List of matching users |
| `user` | json | User details |
| `total` | number | Total number of items available across all pages |
| `truncated` | boolean | Whether returned content (file content or job log) was truncated |
| `success` | boolean | Operation success status |
### GitLab Reject User [#gitlab-reject-user]
#### Input [#input-61]
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
#### Output [#output-61]
| Parameter | Type | Description |
| ------------------- | ------- | ---------------------------------------------------------------- |
| `projects` | json | List of projects |
| `project` | json | Project details |
| `groups` | json | List of groups |
| `group` | json | Group details |
| `memberships` | json | A user's project and group memberships |
| `issues` | json | List of issues |
| `issue` | json | Issue details |
| `mergeRequests` | json | List of merge requests |
| `mergeRequest` | json | Merge request details |
| `mergeRequestIid` | number | Merge request internal ID (IID) |
| `pipelines` | json | List of pipelines |
| `pipeline` | json | Pipeline details |
| `note` | json | Comment/note details |
| `tree` | json | Repository tree entries |
| `content` | string | File contents (decoded) |
| `fileName` | string | File name |
| `filePath` | string | Path to the file in the repository |
| `branch` | string | Branch the file was committed to |
| `branches` | json | List of branches |
| `commits` | json | List of commits |
| `commit` | json | A single commit (e.g. latest commit in a comparison) |
| `name` | string | Created branch name |
| `protected` | boolean | Whether the branch is protected |
| `size` | number | File size in bytes |
| `ref` | string | The branch, tag, or commit SHA |
| `blobId` | string | The blob ID |
| `lastCommitId` | string | The last commit ID that modified the file |
| `webUrl` | string | Web URL |
| `changes` | json | Merge request file changes/diffs |
| `changesCount` | number | Number of changed files returned (first 100) |
| `hasMore` | boolean | Whether more changed files exist beyond the first 100 |
| `approvalsRequired` | number | Approvals required |
| `approvalsLeft` | number | Approvals remaining |
| `approvedBy` | json | List of approvers |
| `jobs` | json | Pipeline jobs |
| `log` | string | Job log output |
| `id` | number | Job ID |
| `status` | string | Job status |
| `diffs` | json | File diffs between two compared references |
| `compareTimeout` | boolean | Whether the comparison timed out |
| `compareSameRef` | boolean | Whether both compared references match |
| `releases` | json | List of releases |
| `release` | json | Release details |
| `members` | json | List of project or group members |
| `member` | json | A single member |
| `alreadyMember` | boolean | Whether the user was already a member |
| `invitations` | json | List of pending invitations |
| `invitation` | json | A single invitation |
| `accessRequests` | json | List of pending access requests |
| `accessRequest` | json | A single access request |
| `samlGroupLinks` | json | List of SAML group links |
| `samlGroupLink` | json | A single SAML group link |
| `message` | json | Per-email invitation result detail |
| `users` | json | List of matching users |
| `user` | json | User details |
| `total` | number | Total number of items available across all pages |
| `truncated` | boolean | Whether returned content (file content or job log) was truncated |
| `success` | boolean | Operation success status |
### GitLab Delete User Identity [#gitlab-delete-user-identity]
Delete a user's authentication identity (e.g. SAML or LDAP). Requires an administrator token with admin\_mode on the instance.
#### Input [#input-62]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `userId` | number | Yes | The ID of the user |
| `provider` | string | Yes | The external identity provider name (e.g. saml, ldapmain) |
#### Output [#output-62]
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------------- |
| `success` | boolean | Whether the identity was deleted successfully |
### GitLab Add SAML Group Link [#gitlab-add-saml-group-link]
Add a SAML group link that maps an identity-provider group to a GitLab group at a given access level (GitLab Premium/Ultimate)
#### Input [#input-63]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `groupId` | string | Yes | Group ID or path (e.g. my-org/my-group) |
| `samlGroupName` | string | Yes | The name of the SAML group as sent by the identity provider |
| `accessLevel` | number | Yes | Access level granted to members of the SAML group: 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), 50 (Owner) |
| `memberRoleId` | number | No | Custom member role ID (GitLab Ultimate only) |
| `provider` | string | No | Unique provider name that must match for this group link to be applied (GitLab 18.2+) |
#### Output [#output-63]
| Parameter | Type | Description |
| --------------- | ------ | --------------------------- |
| `samlGroupLink` | object | The created SAML group link |
### GitLab Delete SAML Group Link [#gitlab-delete-saml-group-link]
Delete a SAML group link from a GitLab group (GitLab Premium/Ultimate)
#### Input [#input-64]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------- |
| `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. |
| `groupId` | string | Yes | Group ID or path (e.g. my-org/my-group) |
| `samlGroupName` | string | Yes | The name of the SAML group link to delete |
| `provider` | string | No | Provider name of the link to delete. Required when multiple links share the same SAML group name. |
#### Output [#output-64]
| Parameter | Type | Description |
| --------- | ------- | ---------------------------------------------------- |
| `success` | boolean | Whether the SAML group link was deleted successfully |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
### GitLab Comment [#gitlab-comment]
Trigger workflow when a comment is added on a commit, merge request, or issue
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `accessToken` | string | Yes | Used to create the webhook in your project. Requires the Maintainer or Owner role. |
| `projectId` | string | Yes | The GitLab project to register the webhook on. |
| `host` | string | No | Self-managed GitLab host. Leave blank for gitlab.com. |
#### Output [#output-65]
| Parameter | Type | Description |
| ----------------------- | ------ | ------------------------------------------------------------- |
| `object_kind` | string | Event kind (note) |
| `event_type` | string | GitLab event type from the X-Gitlab-Event header |
| `user` | object | user output from the tool |
| ↳ `id` | number | User ID |
| ↳ `name` | string | User display name |
| ↳ `username` | string | Username |
| `project` | object | project output from the tool |
| ↳ `id` | number | Project ID |
| ↳ `name` | string | Project name |
| ↳ `web_url` | string | Project web URL |
| ↳ `path_with_namespace` | string | Full path (namespace/project) |
| `object_attributes` | object | object\_attributes output from the tool |
| ↳ `id` | number | Comment ID |
| ↳ `note` | string | Comment body |
| ↳ `noteable_type` | string | What the comment is on (Commit, MergeRequest, Issue, Snippet) |
| ↳ `action` | string | Action (create, update) |
| ↳ `url` | string | Comment URL |
***
### GitLab Event [#gitlab-event]
Trigger workflow from any GitLab webhook event
#### Configuration [#configuration-1]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `accessToken` | string | Yes | Used to create the webhook in your project. Requires the Maintainer or Owner role. |
| `projectId` | string | Yes | The GitLab project to register the webhook on. |
| `host` | string | No | Self-managed GitLab host. Leave blank for gitlab.com. |
#### Output [#output-66]
| Parameter | Type | Description |
| ----------------------- | ------ | -------------------------------------------------- |
| `object_kind` | string | Event kind (push, merge\_request, issue, etc.) |
| `event_type` | string | GitLab event type from the X-Gitlab-Event header |
| `user` | json | Actor that triggered the event (when present) |
| `project` | object | project output from the tool |
| ↳ `id` | number | Project ID |
| ↳ `name` | string | Project name |
| ↳ `web_url` | string | Project web URL |
| ↳ `path_with_namespace` | string | Full path (namespace/project) |
| `object_attributes` | json | Event-specific attributes (varies by object\_kind) |
***
### GitLab Issue [#gitlab-issue]
Trigger workflow when an issue is opened, updated, or closed in GitLab
#### Configuration [#configuration-2]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `accessToken` | string | Yes | Used to create the webhook in your project. Requires the Maintainer or Owner role. |
| `projectId` | string | Yes | The GitLab project to register the webhook on. |
| `host` | string | No | Self-managed GitLab host. Leave blank for gitlab.com. |
#### Output [#output-67]
| Parameter | Type | Description |
| ----------------------- | ------- | -------------------------------------------------------------- |
| `object_kind` | string | Event kind (issue) |
| `event_type` | string | GitLab event type from the X-Gitlab-Event header |
| `user` | object | user output from the tool |
| ↳ `id` | number | User ID |
| ↳ `name` | string | User display name |
| ↳ `username` | string | Username |
| `project` | object | project output from the tool |
| ↳ `id` | number | Project ID |
| ↳ `name` | string | Project name |
| ↳ `web_url` | string | Project web URL |
| ↳ `path_with_namespace` | string | Full path (namespace/project) |
| `object_attributes` | object | object\_attributes output from the tool |
| ↳ `id` | number | Global issue ID |
| ↳ `iid` | number | Project-scoped issue number |
| ↳ `title` | string | Issue title |
| ↳ `state` | string | State (opened, closed) |
| ↳ `action` | string | Action (open, close, reopen, update) |
| ↳ `description` | string | Issue description |
| ↳ `confidential` | boolean | Whether the issue is confidential |
| ↳ `url` | string | Issue URL |
| ↳ `work_item_type` | string | Work item type (e.g. Issue, Incident, Task); GitLab 17.2+ only |
***
### GitLab Merge Request [#gitlab-merge-request]
Trigger workflow when a merge request is opened, updated, or merged in GitLab
#### Configuration [#configuration-3]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `accessToken` | string | Yes | Used to create the webhook in your project. Requires the Maintainer or Owner role. |
| `projectId` | string | Yes | The GitLab project to register the webhook on. |
| `host` | string | No | Self-managed GitLab host. Leave blank for gitlab.com. |
#### Output [#output-68]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------------------- |
| `object_kind` | string | Event kind (merge\_request) |
| `event_type` | string | GitLab event type from the X-Gitlab-Event header |
| `user` | object | user output from the tool |
| ↳ `id` | number | User ID |
| ↳ `name` | string | User display name |
| ↳ `username` | string | Username |
| `project` | object | project output from the tool |
| ↳ `id` | number | Project ID |
| ↳ `name` | string | Project name |
| ↳ `web_url` | string | Project web URL |
| ↳ `path_with_namespace` | string | Full path (namespace/project) |
| `object_attributes` | object | object\_attributes output from the tool |
| ↳ `id` | number | Global merge request ID |
| ↳ `iid` | number | Project-scoped merge request number |
| ↳ `title` | string | Merge request title |
| ↳ `state` | string | State (opened, closed, merged, locked) |
| ↳ `action` | string | Action (open, close, reopen, update, merge, etc.) |
| ↳ `source_branch` | string | Source branch |
| ↳ `target_branch` | string | Target branch |
| ↳ `merge_status` | string | Merge status (deprecated by GitLab) |
| ↳ `detailed_merge_status` | string | Detailed merge status |
| ↳ `draft` | boolean | Whether the merge request is a draft |
| ↳ `url` | string | Merge request URL |
***
### GitLab Pipeline [#gitlab-pipeline]
Trigger workflow when a pipeline status changes in GitLab
#### Configuration [#configuration-4]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `accessToken` | string | Yes | Used to create the webhook in your project. Requires the Maintainer or Owner role. |
| `projectId` | string | Yes | The GitLab project to register the webhook on. |
| `host` | string | No | Self-managed GitLab host. Leave blank for gitlab.com. |
#### Output [#output-69]
| Parameter | Type | Description |
| ----------------------- | ------ | ------------------------------------------------ |
| `object_kind` | string | Event kind (pipeline) |
| `event_type` | string | GitLab event type from the X-Gitlab-Event header |
| `user` | object | user output from the tool |
| ↳ `id` | number | User ID |
| ↳ `name` | string | User display name |
| ↳ `username` | string | Username |
| `project` | object | project output from the tool |
| ↳ `id` | number | Project ID |
| ↳ `name` | string | Project name |
| ↳ `web_url` | string | Project web URL |
| ↳ `path_with_namespace` | string | Full path (namespace/project) |
| `object_attributes` | object | object\_attributes output from the tool |
| ↳ `id` | number | Pipeline ID |
| ↳ `status` | string | Pipeline status (success, failed, running, etc.) |
| ↳ `detailed_status` | string | Detailed pipeline status |
| ↳ `ref` | string | Ref the pipeline ran on |
| ↳ `sha` | string | Commit SHA |
| ↳ `source` | string | Pipeline source (push, web, schedule, etc.) |
| ↳ `duration` | number | Pipeline duration in seconds |
| ↳ `url` | string | Pipeline URL |
***
### GitLab Push [#gitlab-push]
Trigger workflow when commits are pushed to a GitLab project
#### Configuration [#configuration-5]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `accessToken` | string | Yes | Used to create the webhook in your project. Requires the Maintainer or Owner role. |
| `projectId` | string | Yes | The GitLab project to register the webhook on. |
| `host` | string | No | Self-managed GitLab host. Leave blank for gitlab.com. |
#### Output [#output-70]
| Parameter | Type | Description |
| ----------------------- | ------ | ------------------------------------------------ |
| `object_kind` | string | Event kind (push) |
| `event_type` | string | GitLab event type from the X-Gitlab-Event header |
| `ref` | string | Git ref that was pushed (e.g. refs/heads/main) |
| `branch` | string | Branch name derived from ref |
| `before` | string | SHA before the push |
| `after` | string | SHA after the push |
| `checkout_sha` | string | SHA of the most recent commit |
| `user_username` | string | Username of the pusher |
| `user_name` | string | Display name of the pusher |
| `user_email` | string | Email of the pusher |
| `total_commits_count` | number | Number of commits in the push |
| `project` | object | project output from the tool |
| ↳ `id` | number | Project ID |
| ↳ `name` | string | Project name |
| ↳ `web_url` | string | Project web URL |
| ↳ `path_with_namespace` | string | Full path (namespace/project) |
| `commits` | json | Array of commit objects included in this push |
---
# Gmail (/integrations/gmail)
{/* MANUAL-CONTENT-START:intro */}
[Gmail](https://mail.google.com/) is one of the world’s most popular email services, trusted by individuals and organizations to send, receive, and manage messages securely.
With the Gmail integration in Sim, you can:
* **Send emails**: Compose and send emails with support for recipients, CC, BCC, subject, body, and attachments
* **Create drafts**: Save email drafts for later review and sending
* **Read emails**: Retrieve email messages by ID with full content and metadata
* **Search emails**: Find emails using Gmail’s powerful search query syntax
* **Move emails**: Move messages between folders or labels
* **Manage read status**: Mark emails as read or unread
* **Archive and unarchive**: Archive messages to clean up your inbox or restore them
* **Delete emails**: Remove messages from your mailbox
* **Manage labels**: Add or remove labels from emails for organization
In Sim, the Gmail integration enables your agents to interact with your inbox programmatically as part of automated workflows. Agents can send notifications, search for specific emails, organize messages, and trigger actions based on email content—enabling intelligent email automation and communication workflows.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Gmail into the workflow. Can send, read, search, and move emails. Can be used in trigger mode to trigger a workflow when a new email is received.
## Actions [#actions]
### Gmail Send [#gmail-send]
Send emails using Gmail. Returns API-aligned fields only.
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------- |
| `to` | string | Yes | Recipient email address |
| `subject` | string | No | Email subject |
| `body` | string | Yes | Email body content |
| `contentType` | string | No | Content type for the email body (text or html) |
| `threadId` | string | No | Thread ID to reply to (for threading) |
| `replyToMessageId` | string | No | Gmail message ID to reply to - use the "id" field from Gmail Read results (not the RFC "messageId") |
| `cc` | string | No | CC recipients (comma-separated) |
| `bcc` | string | No | BCC recipients (comma-separated) |
| `attachments` | file\[] | No | Files to attach to the email |
#### Output [#output]
| Parameter | Type | Description |
| ---------- | ------ | ---------------- |
| `id` | string | Gmail message ID |
| `threadId` | string | Gmail thread ID |
| `labelIds` | array | Email labels |
### Gmail Draft [#gmail-draft]
Draft emails using Gmail. Returns API-aligned fields only.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------- |
| `to` | string | Yes | Recipient email address |
| `subject` | string | No | Email subject |
| `body` | string | Yes | Email body content |
| `contentType` | string | No | Content type for the email body (text or html) |
| `threadId` | string | No | Thread ID to reply to (for threading) |
| `replyToMessageId` | string | No | Gmail message ID to reply to - use the "id" field from Gmail Read results (not the RFC "messageId") |
| `cc` | string | No | CC recipients (comma-separated) |
| `bcc` | string | No | BCC recipients (comma-separated) |
| `attachments` | file\[] | No | Files to attach to the email draft |
#### Output [#output-1]
| Parameter | Type | Description |
| ----------- | ------ | ------------------------------ |
| `draftId` | string | Draft ID |
| `messageId` | string | Gmail message ID for the draft |
| `threadId` | string | Gmail thread ID |
| `labelIds` | array | Email labels |
### Gmail Edit Draft [#gmail-edit-draft]
Update an existing Gmail draft in place without deleting and recreating it.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------- |
| `draftId` | string | Yes | ID of the draft to update (from Gmail List Drafts or Gmail Get Draft) |
| `to` | string | Yes | Recipient email address |
| `subject` | string | No | Email subject |
| `body` | string | Yes | Email body content |
| `contentType` | string | No | Content type for the email body (text or html) |
| `threadId` | string | No | Thread ID to associate the draft with (for threading) |
| `replyToMessageId` | string | No | Gmail message ID to reply to - use the "id" field from Gmail Read results (not the RFC "messageId") |
| `cc` | string | No | CC recipients (comma-separated) |
| `bcc` | string | No | BCC recipients (comma-separated) |
| `attachments` | file\[] | No | Files to attach to the email draft |
#### Output [#output-2]
| Parameter | Type | Description |
| ----------- | ------ | ------------------------------ |
| `draftId` | string | Draft ID |
| `messageId` | string | Gmail message ID for the draft |
| `threadId` | string | Gmail thread ID |
| `labelIds` | array | Email labels |
### Gmail Read [#gmail-read]
Read emails from Gmail. Returns API-aligned fields only.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| -------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------- |
| `messageId` | string | No | Gmail message ID to read (e.g., 18f1a2b3c4d5e6f7) |
| `folder` | string | No | Folder/label to read emails from (e.g., INBOX, SENT, DRAFT, TRASH, SPAM, or custom label name) |
| `unreadOnly` | boolean | No | Set to true to only retrieve unread messages |
| `maxResults` | number | No | Maximum number of messages to retrieve (default: 1, max: 10) |
| `includeAttachments` | boolean | No | Set to true to download and include email attachments |
#### Output [#output-3]
| Parameter | Type | Description |
| ----------------- | ------- | ---------------------------------------------- |
| `id` | string | Gmail message ID |
| `threadId` | string | Gmail thread ID |
| `labelIds` | array | Email labels |
| `from` | string | Sender email address |
| `to` | string | Recipient email address |
| `subject` | string | Email subject |
| `date` | string | Email date |
| `body` | string | Email body text (best-effort plain text) |
| `hasAttachments` | boolean | Whether the email has attachments |
| `attachmentCount` | number | Number of attachments |
| `attachments` | file\[] | Downloaded attachments (if enabled) |
| `results` | json | Summary results when reading multiple messages |
### Gmail Search [#gmail-search]
Search emails in Gmail. Returns API-aligned fields only.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------ |
| `query` | string | Yes | Search query for emails |
| `maxResults` | number | No | Maximum number of results to return (e.g., 10, 25, 50) |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ---- | ----------------------- |
| `results` | json | Array of search results |
### Gmail Move [#gmail-move]
Move emails between labels/folders in Gmail. Returns API-aligned fields only.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ---------------------------------------------------------- |
| `messageId` | string | Yes | ID of the message to move |
| `addLabelIds` | string | Yes | Comma-separated label IDs to add (e.g., INBOX, Label\_123) |
| `removeLabelIds` | string | No | Comma-separated label IDs to remove (e.g., INBOX, SPAM) |
#### Output [#output-5]
| Parameter | Type | Description |
| ---------- | ------ | ---------------- |
| `id` | string | Gmail message ID |
| `threadId` | string | Gmail thread ID |
| `labelIds` | array | Email labels |
### Gmail Mark as Read [#gmail-mark-as-read]
Mark a Gmail message as read. Returns API-aligned fields only.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------- |
| `messageId` | string | Yes | ID of the message to mark as read |
#### Output [#output-6]
| Parameter | Type | Description |
| ---------- | ------ | -------------------- |
| `id` | string | Gmail message ID |
| `threadId` | string | Gmail thread ID |
| `labelIds` | array | Updated email labels |
### Gmail Mark as Unread [#gmail-mark-as-unread]
Mark a Gmail message as unread. Returns API-aligned fields only.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------- |
| `messageId` | string | Yes | ID of the message to mark as unread |
#### Output [#output-7]
| Parameter | Type | Description |
| ---------- | ------ | -------------------- |
| `id` | string | Gmail message ID |
| `threadId` | string | Gmail thread ID |
| `labelIds` | array | Updated email labels |
### Gmail Archive [#gmail-archive]
Archive a Gmail message (remove from inbox). Returns API-aligned fields only.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------- |
| `messageId` | string | Yes | ID of the message to archive |
#### Output [#output-8]
| Parameter | Type | Description |
| ---------- | ------ | -------------------- |
| `id` | string | Gmail message ID |
| `threadId` | string | Gmail thread ID |
| `labelIds` | array | Updated email labels |
### Gmail Unarchive [#gmail-unarchive]
Unarchive a Gmail message (move back to inbox). Returns API-aligned fields only.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------ |
| `messageId` | string | Yes | ID of the message to unarchive |
#### Output [#output-9]
| Parameter | Type | Description |
| ---------- | ------ | -------------------- |
| `id` | string | Gmail message ID |
| `threadId` | string | Gmail thread ID |
| `labelIds` | array | Updated email labels |
### Gmail Delete [#gmail-delete]
Delete a Gmail message (move to trash). Returns API-aligned fields only.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------- |
| `messageId` | string | Yes | ID of the message to delete |
#### Output [#output-10]
| Parameter | Type | Description |
| ---------- | ------ | -------------------- |
| `id` | string | Gmail message ID |
| `threadId` | string | Gmail thread ID |
| `labelIds` | array | Updated email labels |
### Gmail Add Label [#gmail-add-label]
Add label(s) to a Gmail message. Returns API-aligned fields only.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------- |
| `messageId` | string | Yes | ID of the message to add labels to |
| `labelIds` | string | Yes | Comma-separated label IDs to add (e.g., INBOX, Label\_123) |
#### Output [#output-11]
| Parameter | Type | Description |
| ---------- | ------ | -------------------- |
| `id` | string | Gmail message ID |
| `threadId` | string | Gmail thread ID |
| `labelIds` | array | Updated email labels |
### Gmail Remove Label [#gmail-remove-label]
Remove label(s) from a Gmail message. Returns API-aligned fields only.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------- |
| `messageId` | string | Yes | ID of the message to remove labels from |
| `labelIds` | string | Yes | Comma-separated label IDs to remove (e.g., INBOX, Label\_123) |
#### Output [#output-12]
| Parameter | Type | Description |
| ---------- | ------ | -------------------- |
| `id` | string | Gmail message ID |
| `threadId` | string | Gmail thread ID |
| `labelIds` | array | Updated email labels |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
These run on a schedule (**polling-based**) — they check for new data rather than receiving push notifications.
### Gmail Email Trigger [#gmail-email-trigger]
Triggers when new emails are received in Gmail (requires Gmail credentials)
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `triggerCredentials` | string | Yes | This trigger requires google email credentials to access your account. |
| `labelIds` | string | No | Choose which Gmail labels to monitor. Leave empty to monitor all emails. |
| `labelFilterBehavior` | string | Yes | Include only emails with selected labels, or exclude emails with selected labels |
| `searchQuery` | string | No | Optional Gmail search query to filter emails. Use the same format as Gmail search box (e.g., "subject:invoice", "from:[boss@company.com](mailto:boss@company.com)", "has:attachment"). Leave empty to search all emails. |
| `markAsRead` | boolean | No | Automatically mark emails as read after processing |
| `includeAttachments` | boolean | No | Download and include email attachments in the trigger payload |
#### Output [#output-13]
| Parameter | Type | Description |
| ------------------ | ------- | ---------------------------------------------------------------------- |
| `email` | object | email output from the tool |
| ↳ `id` | string | Gmail message ID |
| ↳ `threadId` | string | Gmail thread ID |
| ↳ `subject` | string | Email subject line |
| ↳ `from` | string | Sender email address |
| ↳ `to` | string | Recipient email address |
| ↳ `cc` | string | CC recipients |
| ↳ `date` | string | Email date in ISO format |
| ↳ `bodyText` | string | Plain text email body |
| ↳ `bodyHtml` | string | HTML email body |
| ↳ `labels` | array | Email labels array |
| ↳ `hasAttachments` | boolean | Whether email has attachments |
| ↳ `attachments` | file\[] | Array of email attachments as files (if includeAttachments is enabled) |
| `timestamp` | string | Event timestamp |
---
# Gong (/integrations/gong)
{/* MANUAL-CONTENT-START:intro */}
[Gong](https://www.gong.io/) is a revenue intelligence platform that captures and analyzes customer interactions across calls, emails, and meetings. By integrating Gong with Sim, your agents can access conversation data, user analytics, coaching metrics, and more through automated workflows.
The Gong integration in Sim provides tools to:
* **List and retrieve calls:** Fetch calls by date range, get individual call details, or retrieve extensive call data including trackers, topics, interaction stats, and points of interest.
* **Access call transcripts:** Retrieve full transcripts with speaker turns, topics, and sentence-level timestamps for any recorded call.
* **Manage users:** List all Gong users in your account or retrieve detailed information for a specific user, including settings, spoken languages, and contact details.
* **Analyze activity and performance:** Pull aggregated activity statistics, interaction stats (longest monologue, interactivity, patience, question rate), and answered scorecard data for your team.
* **Work with scorecards and trackers:** List scorecard definitions and keyword tracker configurations to understand how your team's conversations are being evaluated and monitored.
* **Browse the call library:** List library folders and retrieve their contents, including call snippets and notes curated by your team.
* **Access coaching metrics:** Retrieve coaching data for managers and their direct reports to track team development.
* **List Engage flows:** Fetch sales engagement sequences (flows) with visibility and ownership details.
* **Look up contacts by email or phone:** Find all Gong references to a specific email address or phone number, including related calls, emails, meetings, CRM data, and customer engagement events.
By combining these capabilities, you can automate sales coaching workflows, extract conversation insights, monitor team performance, sync Gong data with other systems, and build intelligent pipelines around your organization's revenue conversations -- all securely using your Gong API credentials.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Gong into your workflow. Access call recordings, transcripts, user data, activity stats, scorecards, trackers, library content, coaching metrics, and more via the Gong API.
## Actions [#actions]
### Gong List Calls [#gong-list-calls]
Retrieve call data by date range from Gong.
#### Input [#input]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `fromDateTime` | string | Yes | Start date/time in ISO-8601 format (e.g., 2024-01-01T00:00:00Z) |
| `toDateTime` | string | No | End date/time in ISO-8601 format (e.g., 2024-01-31T23:59:59Z). Defaults to the current execution time when omitted. |
| `cursor` | string | No | Pagination cursor from a previous response |
| `workspaceId` | string | No | Gong workspace ID to filter calls |
#### Output [#output]
| Parameter | Type | Description |
| ------------------- | ------- | -------------------------------------------------------- |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
| `calls` | array | List of calls matching the date range |
| ↳ `id` | string | Gong's unique numeric identifier for the call |
| ↳ `title` | string | Call title |
| ↳ `scheduled` | string | Scheduled call time in ISO-8601 format |
| ↳ `started` | string | Recording start time in ISO-8601 format |
| ↳ `duration` | number | Call duration in seconds |
| ↳ `direction` | string | Call direction (Inbound/Outbound) |
| ↳ `system` | string | Communication platform used (e.g., Outreach) |
| ↳ `scope` | string | Call scope: 'Internal', 'External', or 'Unknown' |
| ↳ `media` | string | Media type (e.g., Video) |
| ↳ `language` | string | Language code in ISO-639-2B format |
| ↳ `url` | string | URL to the call in the Gong web app |
| ↳ `primaryUserId` | string | Host team member identifier |
| ↳ `workspaceId` | string | Workspace identifier |
| ↳ `sdrDisposition` | string | SDR disposition classification |
| ↳ `clientUniqueId` | string | Call identifier from the origin recording system |
| ↳ `customData` | string | Metadata provided during call creation |
| ↳ `purpose` | string | Call purpose |
| ↳ `meetingUrl` | string | Web conference provider URL |
| ↳ `isPrivate` | boolean | Whether the call is private |
| ↳ `calendarEventId` | string | Calendar event identifier |
| `cursor` | string | Pagination cursor for the next page |
| `totalRecords` | number | Total number of records matching the filter |
| `currentPageSize` | number | Number of records in the current page |
| `currentPageNumber` | number | Current page number |
### Gong Create Call [#gong-create-call]
Upload call metadata to Gong and let Gong pull the media from a URL.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `clientUniqueId` | string | Yes | Unique call ID from the source telephony or recording system |
| `actualStart` | string | Yes | Actual call start time in ISO-8601 format |
| `primaryUser` | string | Yes | Gong user ID for the call's host or owner |
| `parties` | json | Yes | Array of call parties, with at least the primary user included |
| `direction` | string | Yes | Call direction: Inbound, Outbound, Conference, or Unknown |
| `downloadMediaUrl` | string | No | URL where Gong can download the call media file. If omitted, the call is created without media and Gong waits for a separate media upload. |
| `title` | string | No | Human-readable call title |
| `workspaceId` | string | No | Optional Gong workspace ID |
| `disposition` | string | No | Optional call disposition |
| `purpose` | string | No | Optional call purpose |
| `context` | json | No | Optional CRM context array for the call |
| `callProviderCode` | string | No | Optional conferencing or telephony provider code |
#### Output [#output-1]
| Parameter | Type | Description |
| ----------- | ------ | ----------------------------------------------------- |
| `callId` | string | Gong's unique numeric identifier for the created call |
| `requestId` | string | Gong request reference ID for troubleshooting |
### Gong Get Call [#gong-get-call]
Retrieve detailed data for a specific call from Gong.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `callId` | string | Yes | The Gong call ID to retrieve |
#### Output [#output-2]
| Parameter | Type | Description |
| ----------------- | ------- | -------------------------------------------------------- |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
| `id` | string | Gong's unique numeric identifier for the call |
| `title` | string | Call title |
| `url` | string | URL to the call in the Gong web app |
| `scheduled` | string | Scheduled call time in ISO-8601 format |
| `started` | string | Recording start time in ISO-8601 format |
| `duration` | number | Call duration in seconds |
| `direction` | string | Call direction (Inbound/Outbound) |
| `system` | string | Communication platform used (e.g., Outreach) |
| `scope` | string | Call scope: 'Internal', 'External', or 'Unknown' |
| `media` | string | Media type (e.g., Video) |
| `language` | string | Language code in ISO-639-2B format |
| `primaryUserId` | string | Host team member identifier |
| `workspaceId` | string | Workspace identifier |
| `sdrDisposition` | string | SDR disposition classification |
| `clientUniqueId` | string | Call identifier from the origin recording system |
| `customData` | string | Metadata provided during call creation |
| `purpose` | string | Call purpose |
| `meetingUrl` | string | Web conference provider URL |
| `isPrivate` | boolean | Whether the call is private |
| `calendarEventId` | string | Calendar event identifier |
### Gong Get Call Transcript [#gong-get-call-transcript]
Retrieve transcripts of calls from Gong by call IDs or date range.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------------------------ |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `callIds` | string | No | Comma-separated list of call IDs to retrieve transcripts for |
| `fromDateTime` | string | No | Start date/time filter in ISO-8601 format |
| `toDateTime` | string | No | End date/time filter in ISO-8601 format |
| `workspaceId` | string | No | Gong workspace ID to filter calls |
| `cursor` | string | No | Pagination cursor from a previous response |
#### Output [#output-3]
| Parameter | Type | Description |
| ----------------- | ------ | ---------------------------------------------------------- |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
| `callTranscripts` | array | List of call transcripts with speaker turns and sentences |
| ↳ `callId` | string | Gong's unique numeric identifier for the call |
| ↳ `transcript` | array | List of monologues in the call |
| ↳ `speakerId` | string | Unique ID of the speaker, cross-reference with parties |
| ↳ `topic` | string | Name of the topic being discussed |
| ↳ `sentences` | array | List of sentences spoken in the monologue |
| ↳ `start` | number | Start time of the sentence in milliseconds from call start |
| ↳ `end` | number | End time of the sentence in milliseconds from call start |
| ↳ `text` | string | The sentence text |
| `cursor` | string | Pagination cursor for the next page |
### Gong Get Extensive Calls [#gong-get-extensive-calls]
Retrieve detailed call data including trackers, topics, highlights, and AI spotlight content (brief, outline, key points, call outcome) from Gong.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | -------------------------------------------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `callIds` | string | No | Comma-separated list of call IDs to retrieve detailed data for |
| `fromDateTime` | string | No | Start date/time filter in ISO-8601 format |
| `toDateTime` | string | No | End date/time filter in ISO-8601 format |
| `workspaceId` | string | No | Gong workspace ID to filter calls |
| `primaryUserIds` | string | No | Comma-separated list of user IDs to filter calls by host |
| `cursor` | string | No | Pagination cursor from a previous response |
#### Output [#output-4]
| Parameter | Type | Description |
| -------------------- | ------- | ----------------------------------------------------------------------------------------------- |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
| `calls` | array | List of detailed call objects with metadata, content, interaction stats, and collaboration data |
| ↳ `metaData` | object | Call metadata (same fields as CallBasicData) |
| ↳ `id` | string | Call ID |
| ↳ `title` | string | Call title |
| ↳ `scheduled` | string | Scheduled time in ISO-8601 |
| ↳ `started` | string | Start time in ISO-8601 |
| ↳ `duration` | number | Duration in seconds |
| ↳ `direction` | string | Call direction |
| ↳ `system` | string | Communication platform |
| ↳ `scope` | string | Internal/External/Unknown |
| ↳ `media` | string | Media type |
| ↳ `language` | string | Language code (ISO-639-2B) |
| ↳ `url` | string | Gong web app URL |
| ↳ `primaryUserId` | string | Host user ID |
| ↳ `workspaceId` | string | Workspace ID |
| ↳ `sdrDisposition` | string | SDR disposition |
| ↳ `clientUniqueId` | string | Origin system call ID |
| ↳ `customData` | string | Custom metadata |
| ↳ `purpose` | string | Call purpose |
| ↳ `meetingUrl` | string | Meeting URL |
| ↳ `isPrivate` | boolean | Whether call is private |
| ↳ `calendarEventId` | string | Calendar event ID |
| ↳ `context` | array | Links to external systems (CRM, Dialer, etc.) |
| ↳ `system` | string | External system name (e.g., Salesforce) |
| ↳ `objects` | array | List of objects within the external system |
| ↳ `parties` | array | List of call participants |
| ↳ `id` | string | Unique participant ID in the call |
| ↳ `name` | string | Participant name |
| ↳ `emailAddress` | string | Email address |
| ↳ `title` | string | Job title |
| ↳ `phoneNumber` | string | Phone number |
| ↳ `speakerId` | string | Speaker ID for transcript cross-reference |
| ↳ `userId` | string | Gong user ID |
| ↳ `affiliation` | string | Company or non-company |
| ↳ `methods` | array | Whether invited or attended |
| ↳ `context` | array | Links to external systems for this party |
| ↳ `content` | object | Call content data |
| ↳ `brief` | string | AI-generated brief summary of the call (Call Spotlight) |
| ↳ `outline` | array | AI-generated call outline sections |
| ↳ `section` | string | Outline section name |
| ↳ `startTime` | number | Section start in seconds from call start |
| ↳ `duration` | number | Section duration in seconds |
| ↳ `items` | array | Bullet items within the section |
| ↳ `keyPoints` | array | AI-generated key points of the call |
| ↳ `text` | string | Key point text |
| ↳ `callOutcome` | object | AI-determined call outcome (Call Spotlight) |
| ↳ `id` | string | Outcome category ID |
| ↳ `category` | string | Outcome category name |
| ↳ `name` | string | Outcome name |
| ↳ `structure` | array | Call agenda parts |
| ↳ `name` | string | Agenda name |
| ↳ `duration` | number | Duration of this part in seconds |
| ↳ `topics` | array | Topics and their durations |
| ↳ `name` | string | Topic name (e.g., Pricing) |
| ↳ `duration` | number | Time spent on topic in seconds |
| ↳ `trackers` | array | Trackers found in the call |
| ↳ `id` | string | Tracker ID |
| ↳ `name` | string | Tracker name |
| ↳ `count` | number | Number of occurrences |
| ↳ `type` | string | Keyword or Smart |
| ↳ `occurrences` | array | Details for each occurrence |
| ↳ `speakerId` | string | Speaker who said it |
| ↳ `startTime` | number | Seconds from call start |
| ↳ `phrases` | array | Per-phrase occurrence counts |
| ↳ `phrase` | string | Specific phrase |
| ↳ `count` | number | Occurrences of this phrase |
| ↳ `occurrences` | array | Details per occurrence |
| ↳ `highlights` | array | AI-generated highlights including next steps, action items, and key moments |
| ↳ `title` | string | Title of the highlight |
| ↳ `items` | array | Individual highlight items |
| ↳ `text` | string | Text of the highlight item |
| ↳ `startTimes` | array | Start times in seconds from call start |
| ↳ `interaction` | object | Interaction statistics |
| ↳ `interactionStats` | array | Interaction stat measurements (Longest Monologue, Interactivity, Patience, etc.) |
| ↳ `name` | string | Stat name |
| ↳ `value` | number | Stat value |
| ↳ `speakers` | array | Talk duration per speaker |
| ↳ `id` | string | Participant ID |
| ↳ `userId` | string | Gong user ID |
| ↳ `talkTime` | number | Talk duration in seconds |
| ↳ `video` | array | Video statistics |
| ↳ `name` | string | Segment type: Browser, Presentation, WebcamPrimaryUser, WebcamNonCompany, Webcam |
| ↳ `duration` | number | Total segment duration in seconds |
| ↳ `questions` | object | Question counts |
| ↳ `companyCount` | number | Questions by company speakers |
| ↳ `nonCompanyCount` | number | Questions by non-company speakers |
| ↳ `collaboration` | object | Collaboration data |
| ↳ `publicComments` | array | Public comments on the call |
| ↳ `id` | string | Comment ID |
| ↳ `commenterUserId` | string | Commenter user ID |
| ↳ `comment` | string | Comment text |
| ↳ `posted` | string | Posted time in ISO-8601 |
| ↳ `audioStartTime` | number | Seconds from call start the comment refers to |
| ↳ `audioEndTime` | number | Seconds from call start the comment end refers to |
| ↳ `duringCall` | boolean | Whether the comment was posted during the call |
| ↳ `inReplyTo` | string | ID of original comment if this is a reply |
| ↳ `media` | object | Media download URLs (available for 8 hours) |
| ↳ `audioUrl` | string | Audio download URL |
| ↳ `videoUrl` | string | Video download URL |
| `cursor` | string | Pagination cursor for the next page |
### Gong List Users [#gong-list-users]
List all users in your Gong account.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `cursor` | string | No | Pagination cursor from a previous response |
| `includeAvatars` | string | No | Whether to include avatar URLs (true/false) |
#### Output [#output-5]
| Parameter | Type | Description |
| --------------------------------- | ------- | -------------------------------------------------------- |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
| `users` | array | List of Gong users |
| ↳ `id` | string | Unique numeric user ID (up to 20 digits) |
| ↳ `emailAddress` | string | User email address |
| ↳ `created` | string | User creation timestamp (ISO-8601) |
| ↳ `active` | boolean | Whether the user is active |
| ↳ `emailAliases` | array | Alternative email addresses for the user |
| ↳ `trustedEmailAddress` | string | Trusted email address for the user |
| ↳ `firstName` | string | First name |
| ↳ `lastName` | string | Last name |
| ↳ `title` | string | Job title |
| ↳ `phoneNumber` | string | Phone number |
| ↳ `extension` | string | Phone extension number |
| ↳ `personalMeetingUrls` | array | Personal meeting URLs |
| ↳ `settings` | object | User settings |
| ↳ `webConferencesRecorded` | boolean | Whether web conferences are recorded |
| ↳ `preventWebConferenceRecording` | boolean | Whether web conference recording is prevented |
| ↳ `telephonyCallsImported` | boolean | Whether telephony calls are imported |
| ↳ `emailsImported` | boolean | Whether emails are imported |
| ↳ `preventEmailImport` | boolean | Whether email import is prevented |
| ↳ `nonRecordedMeetingsImported` | boolean | Whether non-recorded meetings are imported |
| ↳ `gongConnectEnabled` | boolean | Whether Gong Connect is enabled |
| ↳ `managerId` | string | Manager user ID |
| ↳ `meetingConsentPageUrl` | string | Meeting consent page URL |
| ↳ `spokenLanguages` | array | Languages spoken by the user |
| ↳ `language` | string | Language code |
| ↳ `primary` | boolean | Whether this is the primary language |
| `cursor` | string | Pagination cursor for the next page |
| `totalRecords` | number | Total number of user records |
| `currentPageSize` | number | Number of records in the current page |
| `currentPageNumber` | number | Current page number |
### Gong Get User [#gong-get-user]
Retrieve details for a specific user from Gong.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `userId` | string | Yes | The Gong user ID to retrieve |
#### Output [#output-6]
| Parameter | Type | Description |
| --------------------------------- | ------- | -------------------------------------------------------- |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
| `id` | string | Unique numeric user ID (up to 20 digits) |
| `emailAddress` | string | User email address |
| `created` | string | User creation timestamp (ISO-8601) |
| `active` | boolean | Whether the user is active |
| `emailAliases` | array | Alternative email addresses for the user |
| `trustedEmailAddress` | string | Trusted email address for the user |
| `firstName` | string | First name |
| `lastName` | string | Last name |
| `title` | string | Job title |
| `phoneNumber` | string | Phone number |
| `extension` | string | Phone extension number |
| `personalMeetingUrls` | array | Personal meeting URLs |
| `settings` | object | User settings |
| ↳ `webConferencesRecorded` | boolean | Whether web conferences are recorded |
| ↳ `preventWebConferenceRecording` | boolean | Whether web conference recording is prevented |
| ↳ `telephonyCallsImported` | boolean | Whether telephony calls are imported |
| ↳ `emailsImported` | boolean | Whether emails are imported |
| ↳ `preventEmailImport` | boolean | Whether email import is prevented |
| ↳ `nonRecordedMeetingsImported` | boolean | Whether non-recorded meetings are imported |
| ↳ `gongConnectEnabled` | boolean | Whether Gong Connect is enabled |
| `managerId` | string | Manager user ID |
| `meetingConsentPageUrl` | string | Meeting consent page URL |
| `spokenLanguages` | array | Languages spoken by the user |
| ↳ `language` | string | Language code |
| ↳ `primary` | boolean | Whether this is the primary language |
### Gong Aggregate Activity [#gong-aggregate-activity]
Retrieve aggregated activity statistics for users by date range from Gong.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `userIds` | string | No | Comma-separated list of Gong user IDs (up to 20 digits each) |
| `fromDate` | string | Yes | Start date in YYYY-MM-DD format (inclusive, in company timezone) |
| `toDate` | string | Yes | End date in YYYY-MM-DD format (exclusive, in company timezone, cannot exceed current day) |
| `cursor` | string | No | Pagination cursor from a previous response |
#### Output [#output-7]
| Parameter | Type | Description |
| --------------------------------- | ------ | -------------------------------------------------------------------------- |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
| `usersActivity` | array | Aggregated activity statistics per user |
| ↳ `userId` | string | Gong's unique numeric identifier for the user |
| ↳ `userEmailAddress` | string | Email address of the Gong user |
| ↳ `callsAsHost` | number | Number of recorded calls this user hosted |
| ↳ `callsAttended` | number | Number of calls where this user was a participant (not host) |
| ↳ `callsGaveFeedback` | number | Number of recorded calls the user gave feedback on |
| ↳ `callsReceivedFeedback` | number | Number of recorded calls the user received feedback on |
| ↳ `callsRequestedFeedback` | number | Number of recorded calls the user requested feedback on |
| ↳ `callsScorecardsFilled` | number | Number of scorecards the user completed |
| ↳ `callsScorecardsReceived` | number | Number of calls where someone filled a scorecard on the user's calls |
| ↳ `ownCallsListenedTo` | number | Number of the user's own calls the user listened to |
| ↳ `othersCallsListenedTo` | number | Number of other users' calls the user listened to |
| ↳ `callsSharedInternally` | number | Number of calls the user shared internally |
| ↳ `callsSharedExternally` | number | Number of calls the user shared externally |
| ↳ `callsCommentsGiven` | number | Number of calls where the user provided at least one comment |
| ↳ `callsCommentsReceived` | number | Number of calls where the user received at least one comment |
| ↳ `callsMarkedAsFeedbackGiven` | number | Number of calls where the user selected Mark as reviewed |
| ↳ `callsMarkedAsFeedbackReceived` | number | Number of calls where others selected Mark as reviewed on the user's calls |
| `timeZone` | string | The company's defined timezone in Gong |
| `fromDateTime` | string | Start of results in ISO-8601 format |
| `toDateTime` | string | End of results in ISO-8601 format |
| `cursor` | string | Pagination cursor for the next page |
### Gong Day-by-Day Activity [#gong-day-by-day-activity]
Retrieve detailed day-by-day activity (call IDs per activity type) for users by date range from Gong.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `userIds` | string | No | Comma-separated list of Gong user IDs (up to 20 digits each) |
| `fromDate` | string | Yes | Start date in YYYY-MM-DD format (inclusive, in company timezone) |
| `toDate` | string | Yes | End date in YYYY-MM-DD format (exclusive, in company timezone, cannot exceed current day) |
| `cursor` | string | No | Pagination cursor from a previous response |
#### Output [#output-8]
| Parameter | Type | Description |
| --------------------------------- | ------ | -------------------------------------------------------------------- |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
| `usersDetailedActivities` | array | Day-by-day activity per user, with call IDs grouped by activity type |
| ↳ `userId` | string | Gong's unique numeric identifier for the user |
| ↳ `userEmailAddress` | string | Email address of the Gong user |
| ↳ `userDailyActivityStats` | array | One record per day in the date range |
| ↳ `fromDate` | string | Start of the day (ISO-8601) |
| ↳ `toDate` | string | End of the day (ISO-8601) |
| ↳ `callsAsHost` | array | IDs of calls the user hosted |
| ↳ `callsAttended` | array | IDs of calls the user attended (not host) |
| ↳ `callsGaveFeedback` | array | IDs of calls the user gave feedback on |
| ↳ `callsReceivedFeedback` | array | IDs of calls the user received feedback on |
| ↳ `callsRequestedFeedback` | array | IDs of calls the user requested feedback on |
| ↳ `callsScorecardsFilled` | array | IDs of calls the user filled scorecards on |
| ↳ `callsScorecardsReceived` | array | IDs of the user's calls that received a scorecard |
| ↳ `ownCallsListenedTo` | array | IDs of the user's own calls the user listened to |
| ↳ `othersCallsListenedTo` | array | IDs of other users' calls the user listened to |
| ↳ `callsSharedInternally` | array | IDs of calls the user shared internally |
| ↳ `callsSharedExternally` | array | IDs of calls the user shared externally |
| ↳ `callsCommentsGiven` | array | IDs of calls the user commented on |
| ↳ `callsCommentsReceived` | array | IDs of the user's calls that received a comment |
| ↳ `callsMarkedAsFeedbackGiven` | array | IDs of calls the user marked as reviewed |
| ↳ `callsMarkedAsFeedbackReceived` | array | IDs of the user's calls marked as reviewed by others |
| `cursor` | string | Pagination cursor for the next page |
### Gong Aggregate by Period [#gong-aggregate-by-period]
Retrieve aggregated user activity grouped into time periods (day, week, month, quarter, year) by date range from Gong.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ------------------- | ------ | -------- | --------------------------------------------------------------------------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `aggregationPeriod` | string | Yes | Calendar period to group activity by: DAY, WEEK, MONTH, QUARTER, or YEAR (week starts Monday) |
| `userIds` | string | No | Comma-separated list of Gong user IDs (up to 20 digits each) |
| `fromDate` | string | Yes | Start date in YYYY-MM-DD format (inclusive, in company timezone) |
| `toDate` | string | Yes | End date in YYYY-MM-DD format (exclusive, in company timezone, cannot exceed current day) |
| `cursor` | string | No | Pagination cursor from a previous response |
#### Output [#output-9]
| Parameter | Type | Description |
| --------------------------------- | ------ | ------------------------------------------------------------------------------- |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
| `usersAggregateActivity` | array | Aggregated activity per user, one item per consecutive time period in the range |
| ↳ `userId` | string | Gong's unique numeric identifier for the user |
| ↳ `userEmailAddress` | string | Email address of the Gong user |
| ↳ `userAggregateActivity` | array | Activity counts per time period |
| ↳ `fromDate` | string | Start of the period (ISO-8601) |
| ↳ `toDate` | string | End of the period (ISO-8601) |
| ↳ `callsAsHost` | number | Calls the user hosted |
| ↳ `callsAttended` | number | Calls the user attended (not host) |
| ↳ `callsGaveFeedback` | number | Calls the user gave feedback on |
| ↳ `callsReceivedFeedback` | number | Calls the user received feedback on |
| ↳ `callsRequestedFeedback` | number | Calls the user requested feedback on |
| ↳ `callsScorecardsFilled` | number | Scorecards the user completed |
| ↳ `callsScorecardsReceived` | number | Calls where someone filled a scorecard on the user's calls |
| ↳ `ownCallsListenedTo` | number | The user's own calls the user listened to |
| ↳ `othersCallsListenedTo` | number | Other users' calls the user listened to |
| ↳ `callsSharedInternally` | number | Calls the user shared internally |
| ↳ `callsSharedExternally` | number | Calls the user shared externally |
| ↳ `callsCommentsGiven` | number | Calls the user commented on |
| ↳ `callsCommentsReceived` | number | Calls where the user's calls received a comment |
| ↳ `callsMarkedAsFeedbackGiven` | number | Calls the user marked as reviewed |
| ↳ `callsMarkedAsFeedbackReceived` | number | The user's calls marked as reviewed by others |
| `cursor` | string | Pagination cursor for the next page |
### Gong Interaction Stats [#gong-interaction-stats]
Retrieve interaction statistics for users by date range from Gong. Only includes calls with Whisper enabled.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `userIds` | string | No | Comma-separated list of Gong user IDs (up to 20 digits each) |
| `fromDate` | string | Yes | Start date in YYYY-MM-DD format (inclusive, in company timezone) |
| `toDate` | string | Yes | End date in YYYY-MM-DD format (exclusive, in company timezone, cannot exceed current day) |
| `cursor` | string | No | Pagination cursor from a previous response |
#### Output [#output-10]
| Parameter | Type | Description |
| -------------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
| `peopleInteractionStats` | array | Interaction statistics per user. Applicable stat names: 'Longest Monologue', 'Longest Customer Story', 'Interactivity', 'Patience', 'Question Rate'. |
| ↳ `userId` | string | Gong's unique numeric identifier for the user |
| ↳ `userEmailAddress` | string | Email address of the Gong user |
| ↳ `personInteractionStats` | array | List of interaction stat measurements for this user |
| ↳ `name` | string | Stat name (e.g. Longest Monologue, Interactivity, Patience, Question Rate) |
| ↳ `value` | number | Stat measurement value (can be double or integer) |
| `timeZone` | string | The company's defined timezone in Gong |
| `fromDateTime` | string | Start of results in ISO-8601 format |
| `toDateTime` | string | End of results in ISO-8601 format |
| `cursor` | string | Pagination cursor for the next page |
### Gong Answered Scorecards [#gong-answered-scorecards]
Retrieve answered scorecards for reviewed users or by date range from Gong.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `callFromDate` | string | No | Start date for calls in YYYY-MM-DD format (inclusive, in company timezone). Defaults to earliest recorded call. |
| `callToDate` | string | No | End date for calls in YYYY-MM-DD format (exclusive, in company timezone). Defaults to latest recorded call. |
| `reviewFromDate` | string | No | Start date for reviews in YYYY-MM-DD format (inclusive, in company timezone). Defaults to earliest reviewed call. |
| `reviewToDate` | string | No | End date for reviews in YYYY-MM-DD format (exclusive, in company timezone). Defaults to latest reviewed call. |
| `scorecardIds` | string | No | Comma-separated list of scorecard IDs to filter by |
| `reviewedUserIds` | string | No | Comma-separated list of reviewed user IDs to filter by |
| `cursor` | string | No | Pagination cursor from a previous response |
#### Output [#output-11]
| Parameter | Type | Description |
| ----------------------- | ------- | ----------------------------------------------------------------------------- |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
| `answeredScorecards` | array | List of answered scorecards with scores and answers |
| ↳ `answeredScorecardId` | number | Identifier of the answered scorecard |
| ↳ `scorecardId` | number | Identifier of the scorecard |
| ↳ `scorecardName` | string | Scorecard name |
| ↳ `callId` | number | Gong's unique numeric identifier for the call |
| ↳ `callStartTime` | string | Date/time of the call in ISO-8601 format |
| ↳ `reviewedUserId` | number | User ID of the team member being reviewed |
| ↳ `reviewerUserId` | number | User ID of the team member who completed the scorecard |
| ↳ `reviewTime` | string | Date/time when the review was completed in ISO-8601 format |
| ↳ `visibilityType` | string | Visibility type of the scorecard answer |
| ↳ `answers` | array | Answers in the answered scorecard |
| ↳ `questionId` | number | Identifier of the question |
| ↳ `questionRevisionId` | number | Identifier of the revision version of the question |
| ↳ `isOverall` | boolean | Whether this is the overall question |
| ↳ `score` | number | Score between 1 to 50 if answered, null otherwise |
| ↳ `answerText` | string | The answer's text if answered, null otherwise |
| ↳ `notApplicable` | boolean | Whether the question is not applicable to this call |
| ↳ `selectedOptions` | array | Identifiers of the options selected for select-type questions, null otherwise |
| `cursor` | string | Pagination cursor for the next page |
### Gong List Library Folders [#gong-list-library-folders]
Retrieve library folders from Gong.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ----------------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `workspaceId` | string | No | Gong workspace ID to filter folders |
#### Output [#output-12]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------------------------------------------------------- |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
| `folders` | array | List of library folders with id, name, and parent relationships |
| ↳ `id` | string | Gong unique numeric identifier for the folder |
| ↳ `name` | string | Display name of the folder |
| ↳ `parentFolderId` | string | Gong unique numeric identifier for the parent folder (null for root folder) |
| ↳ `createdBy` | string | Gong unique numeric identifier for the user who added the folder |
| ↳ `updated` | string | Folder's last update time in ISO-8601 format |
### Gong Get Folder Content [#gong-get-folder-content]
Retrieve the list of calls in a specific library folder from Gong.
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | --------------------------------------------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `folderId` | string | No | The library folder ID to retrieve content for (up to 20 digits) |
#### Output [#output-13]
| Parameter | Type | Description |
| ------------ | ------ | ------------------------------------------------------------------ |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
| `folderId` | string | Gong's unique numeric identifier for the folder |
| `folderName` | string | Display name of the folder |
| `createdBy` | string | Gong's unique numeric identifier for the user who added the folder |
| `updated` | string | Folder's last update time in ISO-8601 format |
| `calls` | array | List of calls in the library folder |
| ↳ `id` | string | Gong unique numeric identifier of the call |
| ↳ `title` | string | The title of the call |
| ↳ `note` | string | A note attached to the call in the folder |
| ↳ `addedBy` | string | Gong unique numeric identifier for the user who added the call |
| ↳ `created` | string | Date and time the call was added to folder in ISO-8601 format |
| ↳ `url` | string | URL of the call |
| ↳ `snippet` | object | Call snippet time range |
| ↳ `fromSec` | number | Snippet start in seconds relative to call start |
| ↳ `toSec` | number | Snippet end in seconds relative to call start |
### Gong List Scorecards [#gong-list-scorecards]
Retrieve scorecard definitions from Gong settings.
#### Input [#input-14]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | -------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
#### Output [#output-14]
| Parameter | Type | Description |
| ---------------------- | ------- | -------------------------------------------------------- |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
| `scorecards` | array | List of scorecard definitions with questions |
| ↳ `scorecardId` | number | Unique identifier for the scorecard |
| ↳ `scorecardName` | string | Display name of the scorecard |
| ↳ `workspaceId` | number | Workspace identifier associated with this scorecard |
| ↳ `enabled` | boolean | Whether the scorecard is active |
| ↳ `updaterUserId` | number | ID of the user who last modified the scorecard |
| ↳ `created` | string | Creation timestamp in ISO-8601 format |
| ↳ `updated` | string | Last update timestamp in ISO-8601 format |
| ↳ `reviewMethod` | string | Review method configured for the scorecard |
| ↳ `questions` | array | List of questions in the scorecard |
| ↳ `questionId` | number | Unique identifier for the question |
| ↳ `questionRevisionId` | number | Identifier for the specific revision of the question |
| ↳ `questionText` | string | The text content of the question |
| ↳ `isOverall` | boolean | Whether this is the primary overall question |
| ↳ `questionType` | string | The type of the question (e.g. range or select) |
| ↳ `answerGuide` | string | Guidance text describing how to answer the question |
| ↳ `minRange` | number | Minimum score for range-type questions |
| ↳ `maxRange` | number | Maximum score for range-type questions |
| ↳ `answerOptions` | array | Selectable options for select-type questions |
| ↳ `id` | number | Identifier of the option |
| ↳ `text` | string | Display text of the option |
### Gong List Trackers [#gong-list-trackers]
Retrieve smart tracker and keyword tracker definitions from Gong settings.
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `workspaceId` | string | No | The ID of the workspace the keyword trackers are in. When empty, all trackers in all workspaces are returned. |
#### Output [#output-15]
| Parameter | Type | Description |
| ----------------------- | ------- | --------------------------------------------------------------------------- |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
| `trackers` | array | List of keyword tracker definitions |
| ↳ `trackerId` | string | Unique identifier for the tracker |
| ↳ `trackerName` | string | Display name of the tracker |
| ↳ `workspaceId` | string | ID of the workspace containing the tracker |
| ↳ `languageKeywords` | array | Keywords organized by language |
| ↳ `language` | string | ISO 639-2/B language code ("mul" means keywords apply across all languages) |
| ↳ `keywords` | array | Words and phrases in the designated language |
| ↳ `includeRelatedForms` | boolean | Whether to include different word forms |
| ↳ `affiliation` | string | Speaker affiliation filter: "Anyone", "Company", or "NonCompany" |
| ↳ `partOfQuestion` | boolean | Whether to track keywords only within questions |
| ↳ `saidAt` | string | Position in call: "Anytime", "First", or "Last" |
| ↳ `saidAtInterval` | number | Duration to search (in minutes or percentage) |
| ↳ `saidAtUnit` | string | Unit for saidAtInterval |
| ↳ `saidInTopics` | array | Topics where keywords should be detected |
| ↳ `filterQuery` | string | JSON-formatted call filtering criteria |
| ↳ `created` | string | Creation timestamp in ISO-8601 format |
| ↳ `creatorUserId` | string | ID of the user who created the tracker (null for built-in trackers) |
| ↳ `updated` | string | Last modification timestamp in ISO-8601 format |
| ↳ `updaterUserId` | string | ID of the user who last modified the tracker |
### Gong List Workspaces [#gong-list-workspaces]
List all company workspaces in Gong.
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | -------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
#### Output [#output-16]
| Parameter | Type | Description |
| --------------- | ------ | -------------------------------------------------------- |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
| `workspaces` | array | List of Gong workspaces |
| ↳ `id` | string | Gong unique numeric identifier for the workspace |
| ↳ `name` | string | Display name of the workspace |
| ↳ `description` | string | Description of the workspace's purpose or content |
### Gong List Flows [#gong-list-flows]
List Gong Engage flows (sales engagement sequences).
#### Input [#input-17]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `flowOwnerEmail` | string | Yes | Email of a Gong user. The API will return 'PERSONAL' flows belonging to this user in addition to 'COMPANY' flows. |
| `workspaceId` | string | No | Optional workspace ID to filter flows to a specific workspace |
| `cursor` | string | No | Pagination cursor from a previous API call to retrieve the next page of records |
#### Output [#output-17]
| Parameter | Type | Description |
| ------------------- | ------- | --------------------------------------------------------------------- |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
| `flows` | array | List of Gong Engage flows |
| ↳ `id` | string | The ID of the flow |
| ↳ `name` | string | The name of the flow |
| ↳ `folderId` | string | The ID of the folder this flow is under |
| ↳ `folderName` | string | The name of the folder this flow is under |
| ↳ `visibility` | string | The flow visibility type (COMPANY, PERSONAL, or SHARED) |
| ↳ `creationDate` | string | Creation time of the flow in ISO-8601 format |
| ↳ `exclusive` | boolean | Indicates whether a prospect in this flow can be added to other flows |
| `totalRecords` | number | Total number of flow records available |
| `currentPageSize` | number | Number of records returned in the current page |
| `currentPageNumber` | number | Current page number |
| `cursor` | string | Pagination cursor for retrieving the next page of records |
### Gong Assign Flow Prospects [#gong-assign-flow-prospects]
Assign up to 200 CRM prospects (contacts or leads) to a Gong Engage flow.
#### Input [#input-18]
| Parameter | Type | Required | Description |
| ------------------------ | ------ | -------- | ---------------------------------------------------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `flowId` | string | Yes | The Gong Engage flow ID to assign the prospects to |
| `crmProspectsIds` | string | Yes | Comma-separated list of CRM prospect IDs (contacts or leads) to assign |
| `flowInstanceOwnerEmail` | string | Yes | Email of the Gong user who owns the flow instance and its to-dos |
#### Output [#output-18]
| Parameter | Type | Description |
| ----------------------------- | ------- | ----------------------------------------------------------------- |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
| `prospectsAssigned` | array | Prospects successfully assigned to the flow |
| ↳ `flowId` | string | The flow ID |
| ↳ `flowName` | string | The flow name |
| ↳ `crmProspectId` | string | The CRM prospect ID |
| ↳ `flowInstanceId` | string | The created flow instance ID |
| ↳ `flowInstanceOwnerEmail` | string | Email of the flow instance owner |
| ↳ `flowInstanceOwnerFullName` | string | Full name of the flow instance owner |
| ↳ `flowInstanceCreateDate` | string | Creation time of the flow instance in ISO-8601 format |
| ↳ `flowInstanceStatus` | string | Status of the flow instance |
| ↳ `workspaceId` | string | Workspace ID |
| ↳ `exclusive` | boolean | Whether this prospect can be added to other flows |
| `prospectsNotAssigned` | array | Prospects that failed to be assigned to the flow |
| ↳ `flowId` | string | The flow ID |
| ↳ `crmProspectId` | string | The CRM prospect ID |
| ↳ `errorCode` | string | Failure reason: InvalidArgument, InvalidState, or UnexpectedError |
| ↳ `errorMessage` | string | Human-readable failure message |
### Gong Unassign Flow Prospects [#gong-unassign-flow-prospects]
Remove a prospect from Gong Engage flows. Omit the flow ID to remove the prospect from all flows they are assigned to.
#### Input [#input-19]
| Parameter | Type | Required | Description |
| ----------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `crmProspectId` | string | Yes | The CRM ID of the prospect to unassign |
| `flowId` | string | No | The ID of the flow to unassign the prospect from. If omitted, the prospect is removed from all flows they are assigned to. |
| `unassignedByUserEmail` | string | No | Email address of the Gong user requesting to remove the prospect from the flow |
#### Output [#output-19]
| Parameter | Type | Description |
| --------------------------- | ------ | -------------------------------------------------------------------- |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
| `unassignedFlowInstanceIds` | array | IDs of the flow instances the prospect was successfully removed from |
### Gong Get Prospect Flows [#gong-get-prospect-flows]
Get the Gong Engage flows currently assigned to the given CRM prospects.
#### Input [#input-20]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ----------------------------------------------------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `crmProspectsIds` | string | Yes | Comma-separated list of CRM prospect IDs (contacts or leads) to look up |
#### Output [#output-20]
| Parameter | Type | Description |
| ----------------------------- | ------- | -------------------------------------------------------- |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
| `prospectsAssigned` | array | Flows currently assigned to the requested prospects |
| ↳ `flowId` | string | The flow ID |
| ↳ `flowName` | string | The flow name |
| ↳ `crmProspectId` | string | The CRM prospect ID |
| ↳ `flowInstanceId` | string | The flow instance ID |
| ↳ `flowInstanceOwnerEmail` | string | Email of the flow instance owner |
| ↳ `flowInstanceOwnerFullName` | string | Full name of the flow instance owner |
| ↳ `flowInstanceCreateDate` | string | Creation time of the flow instance in ISO-8601 format |
| ↳ `flowInstanceStatus` | string | Status of the flow instance |
| ↳ `workspaceId` | string | Workspace ID |
| ↳ `exclusive` | boolean | Whether this prospect can be added to other flows |
### Gong Get Coaching [#gong-get-coaching]
Retrieve coaching metrics for a manager from Gong.
#### Input [#input-21]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ----------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `managerId` | string | Yes | Gong user ID of the manager |
| `workspaceId` | string | Yes | Gong workspace ID |
| `fromDate` | string | Yes | Start date in ISO-8601 format |
| `toDate` | string | Yes | End date in ISO-8601 format |
#### Output [#output-21]
| Parameter | Type | Description |
| ------------------------ | ------ | ------------------------------------------------------------------------------ |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
| `coachingData` | array | A list of coaching data entries, one per manager's team |
| ↳ `manager` | object | The manager user information |
| ↳ `id` | string | Gong unique numeric identifier for the user |
| ↳ `emailAddress` | string | Email address of the Gong user |
| ↳ `firstName` | string | First name of the Gong user |
| ↳ `lastName` | string | Last name of the Gong user |
| ↳ `title` | string | Job title of the Gong user |
| ↳ `directReportsMetrics` | array | Coaching metrics for each direct report |
| ↳ `report` | object | The direct report user information |
| ↳ `id` | string | Gong unique numeric identifier for the user |
| ↳ `emailAddress` | string | Email address of the Gong user |
| ↳ `firstName` | string | First name of the Gong user |
| ↳ `lastName` | string | Last name of the Gong user |
| ↳ `title` | string | Job title of the Gong user |
| ↳ `metrics` | json | A map of metric names to arrays of string values representing coaching metrics |
### Gong Ask Anything [#gong-ask-anything]
Ask a natural-language question about a CRM account, deal, contact, or lead. Gong answers from up to 60 calls and 500 emails associated with the entity. Consumes Gong credits.
#### Input [#input-22]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `workspaceId` | string | Yes | Gong workspace ID the entity belongs to |
| `crmEntityType` | string | Yes | Type of the CRM entity: ACCOUNT, CONTACT, DEAL, or LEAD |
| `crmEntityId` | string | Yes | The CRM ID of the entity the question is asked about |
| `question` | string | Yes | The natural-language question to ask about the entity |
| `timePeriod` | string | Yes | Time period of conversations to consider: LAST\_7DAYS, LAST\_30DAYS, LAST\_90DAYS, LAST\_90\_DAYS\_SINCE\_LAST\_ACTIVITY, LAST\_YEAR\_SINCE\_LAST\_ACTIVITY, LAST\_YEAR, THIS\_WEEK, THIS\_MONTH, THIS\_YEAR, THIS\_QUARTER, CUSTOM\_RANGE, or ALL\_CONVERSATIONS |
| `fromDateTime` | string | No | Start date/time (UTC, ISO-8601) for calls and emails to include. Required when timePeriod is CUSTOM\_RANGE. |
| `toDateTime` | string | No | End date/time (UTC, ISO-8601) for calls and emails to include. Required when timePeriod is CUSTOM\_RANGE. |
#### Output [#output-22]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------------------------------- |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
| `numOfCallsSearched` | number | Number of calls used to generate the answer |
| `numOfEmailsSearched` | number | Number of emails used to generate the answer |
| `answer` | array | Sections of the generated answer with supporting evidence |
| ↳ `answerItems` | array | Text items that make up this part of the answer |
| ↳ `callFindings` | array | Evidence from calls used to generate this answer item |
| ↳ `emailFindings` | array | Evidence from emails used to generate this answer item |
### Gong Get Brief [#gong-get-brief]
Generate an AI brief (configured in Gong Agent Studio) for a CRM account, deal, contact, or lead. Consumes Gong credits.
#### Input [#input-23]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `workspaceId` | string | Yes | Gong workspace ID the entity belongs to |
| `briefName` | string | Yes | Name of the brief to generate, as configured in Gong Agent Studio > AI Briefer |
| `crmEntityType` | string | Yes | Type of the CRM entity: ACCOUNT, CONTACT, DEAL, or LEAD |
| `crmEntityId` | string | Yes | The CRM ID of the entity to generate the brief for |
| `timePeriod` | string | Yes | Time period of conversations to consider: LAST\_7DAYS, LAST\_30DAYS, LAST\_90DAYS, LAST\_90\_DAYS\_SINCE\_LAST\_ACTIVITY, LAST\_YEAR\_SINCE\_LAST\_ACTIVITY, LAST\_YEAR, THIS\_WEEK, THIS\_MONTH, THIS\_YEAR, THIS\_QUARTER, CUSTOM\_RANGE, or ALL\_CONVERSATIONS |
| `fromDateTime` | string | No | Start date/time (UTC, ISO-8601) for calls and emails to include. Required when timePeriod is CUSTOM\_RANGE. |
| `toDateTime` | string | No | End date/time (UTC, ISO-8601) for calls and emails to include. Required when timePeriod is CUSTOM\_RANGE. |
#### Output [#output-23]
| Parameter | Type | Description |
| ------------------------ | ------ | -------------------------------------------------------------- |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
| `numOfCallsSearched` | number | Number of calls used to generate the brief |
| `numOfEmailsSearched` | number | Number of emails used to generate the brief |
| `briefSections` | array | Sections of the generated brief |
| ↳ `title` | string | Section title |
| ↳ `sectionSummary` | array | The content displayed for this section |
| ↳ `briefSectionType` | string | The section type, which determines the source of the data |
| ↳ `conversationFindings` | object | Evidence from calls and emails used to generate this section |
| ↳ `webFindings` | array | Evidence from web search results used to generate this section |
| ↳ `mcpResult` | object | Result from an MCP data source used to generate this section |
### Gong Get Logs [#gong-get-logs]
Retrieve Gong log entries of a specific type within a time range.
#### Input [#input-24]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `logType` | string | Yes | Type of logs requested: AccessLog, UserActivityLog, UserCallPlay, ExternallySharedCallAccess, or ExternallySharedCallPlay |
| `fromDateTime` | string | Yes | Time from which to retrieve log records, in ISO-8601 format (e.g., '2024-01-01T00:00:00Z') |
| `toDateTime` | string | No | Time until which to retrieve log records, in ISO-8601 format. Defaults to the latest available logs when omitted. |
| `cursor` | string | No | Pagination cursor from a previous response |
#### Output [#output-24]
| Parameter | Type | Description |
| ---------------------------- | ------ | --------------------------------------------------------------------- |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
| `logEntries` | array | Log entries matching the requested type and time range |
| ↳ `userId` | string | Gong's unique numeric identifier for the user, if available |
| ↳ `userEmailAddress` | string | Email address of the user, if available |
| ↳ `userFullName` | string | Full name of the user, if available |
| ↳ `impersonatorUserId` | string | Gong's unique numeric identifier for the impersonating user, if any |
| ↳ `impersonatorEmailAddress` | string | Email address of the impersonating user, if any |
| ↳ `impersonatorFullName` | string | Full name of the impersonating user, if any |
| ↳ `impersonatorCompanyId` | string | Gong's unique numeric identifier for the impersonating user's company |
| ↳ `eventTime` | string | Time of the event in ISO-8601 format |
| ↳ `logRecord` | object | Log fields and associated values, populated dynamically per log type |
| `cursor` | string | Pagination cursor for the next page |
| `totalRecords` | number | Total number of records matching the filter |
| `currentPageSize` | number | Number of records in the current page |
| `currentPageNumber` | number | Current page number |
### Gong Lookup Email [#gong-lookup-email]
Find all references to an email address in Gong (calls, email messages, meetings, CRM data, engagement).
#### Input [#input-25]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | -------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `emailAddress` | string | Yes | Email address to look up |
#### Output [#output-25]
| Parameter | Type | Description |
| -------------------- | ------ | ------------------------------------------------------------------------------------ |
| `requestId` | string | Gong request reference ID for troubleshooting |
| `calls` | array | Related calls referencing this email address |
| ↳ `id` | string | Gong's unique numeric identifier for the call (up to 20 digits) |
| ↳ `status` | string | Call status |
| ↳ `externalSystems` | array | Links to external systems such as CRM, Telephony System, etc. |
| ↳ `system` | string | External system name |
| ↳ `objects` | array | List of objects within the external system |
| ↳ `objectType` | string | Object type |
| ↳ `externalId` | string | External ID |
| `emails` | array | Related email messages referencing this email address |
| ↳ `id` | string | Gong's unique 32 character identifier for the email message |
| ↳ `from` | string | The sender's email address |
| ↳ `sentTime` | string | Date and time the email was sent in ISO-8601 format |
| ↳ `mailbox` | string | The mailbox from which the email was retrieved |
| ↳ `messageHash` | string | Hash code of the email message |
| `meetings` | array | Related meetings referencing this email address |
| ↳ `id` | string | Gong's unique identifier for the meeting |
| `customerData` | array | Links to data from external systems (CRM, Telephony, etc.) that reference this email |
| ↳ `system` | string | External system name |
| ↳ `objects` | array | List of objects in the external system |
| ↳ `id` | string | Gong's unique numeric identifier for the Lead or Contact (up to 20 digits) |
| ↳ `objectType` | string | Object type |
| ↳ `externalId` | string | External ID |
| ↳ `mirrorId` | string | CRM Mirror ID |
| ↳ `fields` | array | Object fields |
| ↳ `name` | string | Field name |
| ↳ `value` | json | Field value |
| `customerEngagement` | array | Customer engagement events (such as viewing external shared calls) |
| ↳ `eventType` | string | Event type |
| ↳ `eventName` | string | Event name |
| ↳ `timestamp` | string | Date and time the event occurred in ISO-8601 format |
| ↳ `contentId` | string | Event content ID |
| ↳ `contentUrl` | string | Event content URL |
| ↳ `reportingSystem` | string | Event reporting system |
| ↳ `sourceEventId` | string | Source event ID |
### Gong Lookup Phone [#gong-lookup-phone]
Find all references to a phone number in Gong (calls, email messages, meetings, CRM data, and associated contacts).
#### Input [#input-26]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | -------------------------------------------------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `phoneNumber` | string | Yes | Phone number to look up (must start with + followed by country code) |
#### Output [#output-26]
| Parameter | Type | Description |
| ---------------------- | ------ | ------------------------------------------------------------------------------------------- |
| `requestId` | string | Gong request reference ID for troubleshooting |
| `suppliedPhoneNumber` | string | The phone number that was supplied in the request |
| `matchingPhoneNumbers` | array | Phone numbers found in the system that match the supplied number |
| `emailAddresses` | array | Email addresses associated with the phone number |
| `calls` | array | Related calls referencing this phone number |
| ↳ `id` | string | Gong's unique numeric identifier for the call (up to 20 digits) |
| ↳ `status` | string | Call status |
| ↳ `externalSystems` | array | Links to external systems such as CRM, Telephony System, etc. |
| ↳ `system` | string | External system name |
| ↳ `objects` | array | List of objects within the external system |
| ↳ `objectType` | string | Object type |
| ↳ `externalId` | string | External ID |
| `emails` | array | Related email messages associated with contacts matching this phone number |
| ↳ `id` | string | Gong's unique 32 character identifier for the email message |
| ↳ `from` | string | The sender's email address |
| ↳ `sentTime` | string | Date and time the email was sent in ISO-8601 format |
| ↳ `mailbox` | string | The mailbox from which the email was retrieved |
| ↳ `messageHash` | string | Hash code of the email message |
| `meetings` | array | Related meetings associated with this phone number |
| ↳ `id` | string | Gong's unique identifier for the meeting |
| `customerData` | array | Links to data from external systems (CRM, Telephony, etc.) that reference this phone number |
| ↳ `system` | string | External system name |
| ↳ `objects` | array | List of objects in the external system |
| ↳ `id` | string | Gong's unique numeric identifier for the Lead or Contact (up to 20 digits) |
| ↳ `objectType` | string | Object type |
| ↳ `externalId` | string | External ID |
| ↳ `mirrorId` | string | CRM Mirror ID |
| ↳ `fields` | array | Object fields |
| ↳ `name` | string | Field name |
| ↳ `value` | json | Field value |
### Gong Purge Email Address [#gong-purge-email-address]
Erase all Gong data (calls, email messages, leads, contacts) referencing an email address. Asynchronous and irreversible.
#### Input [#input-27]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | -------------------------------------------------------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `emailAddress` | string | Yes | Email address whose associated data should be permanently erased from Gong |
#### Output [#output-27]
| Parameter | Type | Description |
| ----------- | ------ | -------------------------------------------------------- |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
### Gong Purge Phone Number [#gong-purge-phone-number]
Erase all Gong data (calls, leads, contacts) referencing a phone number. Asynchronous and irreversible.
#### Input [#input-28]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `accessKey` | string | Yes | Gong API Access Key |
| `accessKeySecret` | string | Yes | Gong API Access Key Secret |
| `phoneNumber` | string | Yes | Phone number whose associated data should be permanently erased from Gong. Must include a leading "+" and country code (e.g., +14255552671) |
#### Output [#output-28]
| Parameter | Type | Description |
| ----------- | ------ | -------------------------------------------------------- |
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
### Gong Call Completed [#gong-call-completed]
Trigger workflow when a call is completed and processed in Gong
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| --------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `gongJwtPublicKeyPem` | string | No | Required only when your Gong rule uses **Signed JWT header**. Sim verifies RS256, `webhook_url`, and `body_sha256` per Gong. If empty, only the webhook URL path authenticates the request. |
#### Output [#output-29]
| Parameter | Type | Description |
| ------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `eventType` | string | Constant identifier for automation-rule webhooks (`gong.automation_rule`). Gong does not send distinct event names in the payload. |
| `callId` | string | Gong call ID (same value as metaData.id when present) |
| `isTest` | boolean | Whether this is a test webhook from the Gong UI |
| `callData` | json | Full call data object |
| `metaData` | object | metaData output from the tool |
| ↳ `id` | string | Gong call ID |
| ↳ `url` | string | URL to the call in Gong |
| ↳ `title` | string | Call title |
| ↳ `scheduled` | string | Scheduled start time (ISO 8601) |
| ↳ `started` | string | Actual start time (ISO 8601) |
| ↳ `duration` | number | Call duration in seconds |
| ↳ `primaryUserId` | string | Primary Gong user ID |
| ↳ `workspaceId` | string | Gong workspace ID |
| ↳ `direction` | string | Call direction (Inbound, Outbound, etc.) |
| ↳ `system` | string | Communication platform used (e.g. Zoom, Teams) |
| ↳ `scope` | string | Call scope (Internal, External, or Unknown) |
| ↳ `media` | string | Media type (Video or Audio) |
| ↳ `language` | string | Language code (ISO-639-2B) |
| ↳ `sdrDisposition` | string | SDR disposition classification (when present) |
| ↳ `clientUniqueId` | string | Call identifier from the origin recording system (when present) |
| ↳ `customData` | string | Custom metadata from call creation (when present) |
| ↳ `purpose` | string | Call purpose (when present) |
| ↳ `meetingUrl` | string | Web conference provider URL (when present) |
| ↳ `isPrivate` | boolean | Whether the call is private (when present) |
| ↳ `calendarEventId` | string | Calendar event identifier (when present) |
| `parties` | array | Array of call participants with name, email, title, and affiliation |
| `context` | array | Array of CRM context objects (Salesforce opportunities, accounts, etc.) |
| `trackers` | array | Keyword and smart trackers from call content (same shape as Gong extensive-calls `content.trackers`) |
| `topics` | array | Topic segments with durations from call content (`content.topics`) |
| `highlights` | array | AI-generated highlights from call content (`content.highlights`) |
***
### Gong Webhook [#gong-webhook]
Generic webhook trigger for all Gong events
#### Configuration [#configuration-1]
| Parameter | Type | Required | Description |
| --------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `gongJwtPublicKeyPem` | string | No | Required only when your Gong rule uses **Signed JWT header**. Sim verifies RS256, `webhook_url`, and `body_sha256` per Gong. If empty, only the webhook URL path authenticates the request. |
#### Output [#output-30]
| Parameter | Type | Description |
| ------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `eventType` | string | Constant identifier for automation-rule webhooks (`gong.automation_rule`). Gong does not send distinct event names in the payload. |
| `callId` | string | Gong call ID (same value as metaData.id when present) |
| `isTest` | boolean | Whether this is a test webhook from the Gong UI |
| `callData` | json | Full call data object |
| `metaData` | object | metaData output from the tool |
| ↳ `id` | string | Gong call ID |
| ↳ `url` | string | URL to the call in Gong |
| ↳ `title` | string | Call title |
| ↳ `scheduled` | string | Scheduled start time (ISO 8601) |
| ↳ `started` | string | Actual start time (ISO 8601) |
| ↳ `duration` | number | Call duration in seconds |
| ↳ `primaryUserId` | string | Primary Gong user ID |
| ↳ `workspaceId` | string | Gong workspace ID |
| ↳ `direction` | string | Call direction (Inbound, Outbound, etc.) |
| ↳ `system` | string | Communication platform used (e.g. Zoom, Teams) |
| ↳ `scope` | string | Call scope (Internal, External, or Unknown) |
| ↳ `media` | string | Media type (Video or Audio) |
| ↳ `language` | string | Language code (ISO-639-2B) |
| ↳ `sdrDisposition` | string | SDR disposition classification (when present) |
| ↳ `clientUniqueId` | string | Call identifier from the origin recording system (when present) |
| ↳ `customData` | string | Custom metadata from call creation (when present) |
| ↳ `purpose` | string | Call purpose (when present) |
| ↳ `meetingUrl` | string | Web conference provider URL (when present) |
| ↳ `isPrivate` | boolean | Whether the call is private (when present) |
| ↳ `calendarEventId` | string | Calendar event identifier (when present) |
| `parties` | array | Array of call participants with name, email, title, and affiliation |
| `context` | array | Array of CRM context objects (Salesforce opportunities, accounts, etc.) |
| `trackers` | array | Keyword and smart trackers from call content (same shape as Gong extensive-calls `content.trackers`) |
| `topics` | array | Topic segments with durations from call content (`content.topics`) |
| `highlights` | array | AI-generated highlights from call content (`content.highlights`) |
---
# Google Service Accounts (/integrations/google-service-account)
Google service accounts with domain-wide delegation let your workflows access Google APIs on behalf of users in your Google Workspace domain — without requiring each user to complete an OAuth consent flow. This is ideal for automated workflows that need to send emails, read spreadsheets, or manage files across your organization.
For example, you could build a workflow that iterates through a list of employees, impersonates each one to read their Google Docs, and uploads the contents to a shared knowledge base — all without requiring any of those users to sign in.
## Prerequisites [#prerequisites]
Before adding a service account to Sim, you need to configure it in the Google Cloud Console and Google Workspace Admin Console.
### 1. Create a Service Account in Google Cloud [#1-create-a-service-account-in-google-cloud]
Go to the [Google Cloud Console](https://console.cloud.google.com/) and select your project (or create one)
Navigate to **IAM & Admin** → **Service Accounts**
Click **Create Service Account**, give it a name and description, then click **Create and Continue**
Skip the optional role and user access steps and click **Done**
Click on the newly created service account, go to the **Keys** tab, and click **Add Key** → **Create new key**
Select **JSON** as the key type and click **Create**. A JSON key file will download — keep this safe
The JSON key file contains your service account's private key. Treat it like a password — do not commit it to source control or share it publicly.
### 2. Enable the Required APIs [#2-enable-the-required-apis]
In the Google Cloud Console, go to **APIs & Services** → **Library** and enable the APIs for the services your workflows will use. See the [scopes reference](#scopes-reference) below for the full list of APIs by service.
### 3. Set Up Domain-Wide Delegation [#3-set-up-domain-wide-delegation]
In the Google Cloud Console, go to **IAM & Admin** → **Service Accounts**, click on your service account, and copy the **Client ID** (the numeric ID, not the email)
Open the [Google Workspace Admin Console](https://admin.google.com/) and navigate to **Security** → **Access and data control** → **API controls**
Click **Manage Domain Wide Delegation**, then click **Add new**
Paste the **Client ID** from your service account, then add the OAuth scopes for the services your workflows need. Copy the full scope URLs from the [scopes reference](#scopes-reference) below — only authorize scopes for services you plan to use.
Click **Authorize**
Domain-wide delegation must be configured by a Google Workspace admin. If you are not an admin, send the Client ID and required scopes to your admin.
### Scopes Reference [#scopes-reference]
The table below lists every Google service that supports service account authentication in Sim, the API to enable in Google Cloud Console, and the delegation scopes to authorize. Copy the scope string for each service you need and paste it into the Google Workspace Admin Console.
Service
API to Enable
Delegation Scopes
Gmail
Gmail API
{'https://www.googleapis.com/auth/gmail.send'}{'https://www.googleapis.com/auth/gmail.modify'}{'https://www.googleapis.com/auth/gmail.labels'}
Google Sheets
Google Sheets API, Google Drive API
{'https://www.googleapis.com/auth/drive'}{'https://www.googleapis.com/auth/drive.file'}
Google Drive
Google Drive API
{'https://www.googleapis.com/auth/drive'}{'https://www.googleapis.com/auth/drive.file'}
Google Docs
Google Docs API, Google Drive API
{'https://www.googleapis.com/auth/drive'}{'https://www.googleapis.com/auth/drive.file'}
Google Slides
Google Slides API, Google Drive API
{'https://www.googleapis.com/auth/drive'}{'https://www.googleapis.com/auth/drive.file'}
Google Forms
Google Forms API, Google Drive API
{'https://www.googleapis.com/auth/drive'}{'https://www.googleapis.com/auth/forms.body'}{'https://www.googleapis.com/auth/forms.responses.readonly'}
Google Calendar
Google Calendar API
{'https://www.googleapis.com/auth/calendar'}
Google Contacts
People API
{'https://www.googleapis.com/auth/contacts'}
BigQuery
BigQuery API
{'https://www.googleapis.com/auth/bigquery'}
Google Tasks
Tasks API
{'https://www.googleapis.com/auth/tasks'}
Google Vault
Vault API, Cloud Storage API
{'https://www.googleapis.com/auth/ediscovery'}{'https://www.googleapis.com/auth/devstorage.read_only'}
Google Groups
Admin SDK API
{'https://www.googleapis.com/auth/admin.directory.group'}{'https://www.googleapis.com/auth/admin.directory.group.member'}
Google Meet
Google Meet API
{'https://www.googleapis.com/auth/meetings.space.created'}{'https://www.googleapis.com/auth/meetings.space.readonly'}
You only need to enable APIs and authorize scopes for the services you plan to use. When authorizing multiple services, combine their scope strings with commas into a single entry in the Admin Console.
## Adding the Service Account to Sim [#adding-the-service-account-to-sim]
Once Google Cloud and Workspace are configured, add the service account as a credential in Sim.
Open **Integrations** from your workspace sidebar
Search for "Google Drive" and open it — any Google integration works, since they share one service account — then click **Add to Sim** and choose **Add service account**
Paste the full contents of your JSON key file into the text area
Give the credential a display name (the service account email is used by default)
Click **Add service account**
The JSON key file is validated for the required fields (`type`, `client_email`, `private_key`, `project_id`) and encrypted before being stored.
## Using Delegated Access in Workflows [#using-delegated-access-in-workflows]
When you use a Google block (Gmail, Sheets, Drive, etc.) in a workflow and select a service account credential, an **Impersonate User Email** field appears below the credential selector.
Enter the email address of the Google Workspace user you want the service account to act as. For example, if you enter `alice@yourcompany.com`, the workflow will send emails from Alice's account, read her spreadsheets, or access her calendar — depending on the scopes you authorized.
The impersonated email must belong to a user in the Google Workspace domain where you configured domain-wide delegation. Impersonating external email addresses will fail.
---
# Google Ads (/integrations/google_ads)
{/* MANUAL-CONTENT-START:intro */}
[Google Ads](https://ads.google.com) is Google's online advertising platform that lets businesses create ads to reach customers across Google Search, YouTube, Gmail, and millions of partner websites. It supports campaign types including Search, Display, Video, Shopping, and Performance Max, with detailed targeting, bidding strategies, and performance analytics.
In Sim, the Google Ads integration enables your agents to query campaign data, monitor ad group performance, and pull detailed metrics using the Google Ads Query Language (GAQL). This supports use cases such as automated performance reporting, budget monitoring, campaign health checks, and data-driven optimization workflows. By connecting Sim with Google Ads, your agents can retrieve real-time advertising data and act on insights without manual dashboard navigation.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Connect to Google Ads to list accessible accounts, list campaigns, view ad group details, get performance metrics, and run custom GAQL queries.
## Actions [#actions]
### List Google Ads Customers [#list-google-ads-customers]
List all Google Ads customer accounts accessible by the authenticated user
#### Input [#input]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------ |
| `developerToken` | string | Yes | Google Ads API developer token |
#### Output [#output]
| Parameter | Type | Description |
| ------------- | ------ | -------------------------------------------- |
| `customerIds` | array | List of accessible customer IDs |
| `totalCount` | number | Total number of accessible customer accounts |
### Google Ads Search (GAQL) [#google-ads-search-gaql]
Run a custom Google Ads Query Language (GAQL) query
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------------- | ------ | -------- | -------------------------------------------------------------- |
| `customerId` | string | Yes | Google Ads customer ID (numeric, no dashes) |
| `developerToken` | string | Yes | Google Ads API developer token |
| `managerCustomerId` | string | No | Manager account customer ID (if accessing via manager account) |
| `query` | string | Yes | GAQL query to execute |
| `pageToken` | string | No | Page token for pagination |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------------- | ------ | ------------------------------------------- |
| `results` | json | Array of result objects from the GAQL query |
| `totalResultsCount` | number | Total number of matching results |
| `nextPageToken` | string | Token for the next page of results |
### List Google Ads Campaigns [#list-google-ads-campaigns]
List campaigns in a Google Ads account with optional status filtering
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------------- | ------ | -------- | -------------------------------------------------------------- |
| `customerId` | string | Yes | Google Ads customer ID (numeric, no dashes) |
| `developerToken` | string | Yes | Google Ads API developer token |
| `managerCustomerId` | string | No | Manager account customer ID (if accessing via manager account) |
| `status` | string | No | Filter by campaign status (ENABLED, PAUSED, REMOVED) |
| `limit` | number | No | Maximum number of campaigns to return |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------------------- | ------ | ----------------------------------------------------------------------------- |
| `campaigns` | array | List of campaigns in the account |
| ↳ `id` | string | Campaign ID |
| ↳ `name` | string | Campaign name |
| ↳ `status` | string | Campaign status (ENABLED, PAUSED, REMOVED) |
| ↳ `channelType` | string | Advertising channel type (SEARCH, DISPLAY, SHOPPING, VIDEO, PERFORMANCE\_MAX) |
| ↳ `startDate` | string | Campaign start date (YYYY-MM-DD) |
| ↳ `endDate` | string | Campaign end date (YYYY-MM-DD) |
| ↳ `budgetAmountMicros` | string | Daily budget in micros (divide by 1,000,000 for currency value) |
| `totalCount` | number | Total number of campaigns returned |
### Google Ads Campaign Performance [#google-ads-campaign-performance]
Get performance metrics for Google Ads campaigns over a date range
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------- |
| `customerId` | string | Yes | Google Ads customer ID (numeric, no dashes) |
| `developerToken` | string | Yes | Google Ads API developer token |
| `managerCustomerId` | string | No | Manager account customer ID (if accessing via manager account) |
| `campaignId` | string | No | Filter by specific campaign ID |
| `dateRange` | string | No | Predefined date range (LAST\_7\_DAYS, LAST\_30\_DAYS, THIS\_MONTH, LAST\_MONTH, TODAY, YESTERDAY) |
| `startDate` | string | No | Custom start date in YYYY-MM-DD format |
| `endDate` | string | No | Custom end date in YYYY-MM-DD format |
#### Output [#output-3]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------------------------------- |
| `campaigns` | array | Campaign performance data broken down by date |
| ↳ `id` | string | Campaign ID |
| ↳ `name` | string | Campaign name |
| ↳ `status` | string | Campaign status |
| ↳ `impressions` | string | Number of impressions |
| ↳ `clicks` | string | Number of clicks |
| ↳ `costMicros` | string | Cost in micros (divide by 1,000,000 for currency value) |
| ↳ `ctr` | number | Click-through rate (0.0 to 1.0) |
| ↳ `conversions` | number | Number of conversions |
| ↳ `date` | string | Date for this row (YYYY-MM-DD) |
| `totalCount` | number | Total number of result rows |
### List Google Ads Ad Groups [#list-google-ads-ad-groups]
List ad groups in a Google Ads campaign
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ------------------- | ------ | -------- | -------------------------------------------------------------- |
| `customerId` | string | Yes | Google Ads customer ID (numeric, no dashes) |
| `developerToken` | string | Yes | Google Ads API developer token |
| `managerCustomerId` | string | No | Manager account customer ID (if accessing via manager account) |
| `campaignId` | string | Yes | Campaign ID to list ad groups for |
| `status` | string | No | Filter by ad group status (ENABLED, PAUSED, REMOVED) |
| `limit` | number | No | Maximum number of ad groups to return |
#### Output [#output-4]
| Parameter | Type | Description |
| ---------------- | ------ | --------------------------------------------------------------------------- |
| `adGroups` | array | List of ad groups in the campaign |
| ↳ `id` | string | Ad group ID |
| ↳ `name` | string | Ad group name |
| ↳ `status` | string | Ad group status (ENABLED, PAUSED, REMOVED) |
| ↳ `type` | string | Ad group type (SEARCH\_STANDARD, DISPLAY\_STANDARD, SHOPPING\_PRODUCT\_ADS) |
| ↳ `campaignId` | string | Parent campaign ID |
| ↳ `campaignName` | string | Parent campaign name |
| `totalCount` | number | Total number of ad groups returned |
### Google Ads Ad Performance [#google-ads-ad-performance]
Get performance metrics for individual ads over a date range
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------- |
| `customerId` | string | Yes | Google Ads customer ID (numeric, no dashes) |
| `developerToken` | string | Yes | Google Ads API developer token |
| `managerCustomerId` | string | No | Manager account customer ID (if accessing via manager account) |
| `campaignId` | string | No | Filter by campaign ID |
| `adGroupId` | string | No | Filter by ad group ID |
| `dateRange` | string | No | Predefined date range (LAST\_7\_DAYS, LAST\_30\_DAYS, THIS\_MONTH, LAST\_MONTH, TODAY, YESTERDAY) |
| `startDate` | string | No | Custom start date in YYYY-MM-DD format |
| `endDate` | string | No | Custom end date in YYYY-MM-DD format |
| `limit` | number | No | Maximum number of results to return |
#### Output [#output-5]
| Parameter | Type | Description |
| ---------------- | ------ | ---------------------------------------------------------- |
| `ads` | array | Ad performance data broken down by date |
| ↳ `adId` | string | Ad ID |
| ↳ `adGroupId` | string | Parent ad group ID |
| ↳ `adGroupName` | string | Parent ad group name |
| ↳ `campaignId` | string | Parent campaign ID |
| ↳ `campaignName` | string | Parent campaign name |
| ↳ `adType` | string | Ad type (RESPONSIVE\_SEARCH\_AD, EXPANDED\_TEXT\_AD, etc.) |
| ↳ `impressions` | string | Number of impressions |
| ↳ `clicks` | string | Number of clicks |
| ↳ `costMicros` | string | Cost in micros (divide by 1,000,000 for currency value) |
| ↳ `ctr` | number | Click-through rate (0.0 to 1.0) |
| ↳ `conversions` | number | Number of conversions |
| ↳ `date` | string | Date for this row (YYYY-MM-DD) |
| `totalCount` | number | Total number of result rows |
---
# Google AppSheet (/integrations/google_appsheet)
{/* MANUAL-CONTENT-START:intro */}
[Google AppSheet](https://about.appsheet.com/) is Google's no-code app development platform that lets teams turn spreadsheets and databases into mobile and web apps, backed by data sources like Google Sheets, Excel, and cloud databases.
With the Google AppSheet integration in Sim, you can:
* **Find rows**: Query a table with an optional Selector expression (`Filter`, `OrderBy`, `Top`, and more) to narrow, sort, and limit the rows returned
* **Add rows**: Insert new rows into a table, letting AppSheet generate the key column automatically or providing it explicitly
* **Edit rows**: Update existing rows by key column, changing only the fields that need to change
* **Delete rows**: Remove rows from a table by key column
In Sim, the Google AppSheet integration enables your agents to read and write AppSheet app data as part of automated workflows — syncing order intake, routing leads, escalating tickets, or keeping a table in sync with another system, all without touching the AppSheet editor.
### Getting Your Application Access Key [#getting-your-application-access-key]
Google AppSheet authenticates with a static Application Access Key rather than OAuth:
1. Open your app in the [AppSheet editor](https://www.appsheet.com/)
2. Go to **Settings > Integrations**
3. Enable **IN: from cloud services to your app**
4. Under **Application Access Keys**, create a key (or use an existing one) and copy it
5. Use the Application Access Key, along with your App ID and table name, in the Sim block configuration
The AppSheet API requires an Enterprise plan.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Google AppSheet into your workflow. Find, add, edit, and delete rows in an AppSheet table using the AppSheet API. Requires an AppSheet Enterprise plan with the API enabled and an Application Access Key.
## Actions [#actions]
### AppSheet Find Rows [#appsheet-find-rows]
Read rows from an AppSheet table. Omit the selector to return every row, or provide a Selector expression (Filter/Select/OrderBy/Top) to narrow and shape the results.
#### Input [#input]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | AppSheet Application Access Key |
| `appId` | string | Yes | AppSheet app ID (found in App > Settings > Integrations > IN) |
| `tableName` | string | Yes | Name of the table to read from |
| `region` | string | No | AppSheet region subdomain: "www" (global, default), "eu", or "asia-southeast" |
| `selector` | string | No | Optional AppSheet expression to filter/sort/limit rows, e.g. Filter(TableName, \[Age] >= 21) or Top(OrderBy(Filter(TableName, true), \[LastName], true), 10) |
#### Output [#output]
| Parameter | Type | Description |
| ------------ | ------ | ---------------------------------- |
| `rows` | array | Matching rows returned by AppSheet |
| `metadata` | json | Operation metadata |
| ↳ `rowCount` | number | Number of rows returned |
### AppSheet Add Rows [#appsheet-add-rows]
Add new rows to an AppSheet table. The key column value must be provided explicitly, or omitted when its Initial value expression generates it automatically (e.g. UNIQUEID()).
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | AppSheet Application Access Key |
| `appId` | string | Yes | AppSheet app ID (found in App > Settings > Integrations > IN) |
| `tableName` | string | Yes | Name of the table to add rows to |
| `region` | string | No | AppSheet region subdomain: "www" (global, default), "eu", or "asia-southeast" |
| `rows` | json | Yes | Array of row objects to add, each a column-name/value map, e.g. \[\{ "FirstName": "Jan", "LastName": "Jones" }] |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------ | ------ | ---------------------------------------------------------- |
| `rows` | array | Rows added by AppSheet, including any generated key values |
| `metadata` | json | Operation metadata |
| ↳ `rowCount` | number | Number of rows added |
### AppSheet Edit Rows [#appsheet-edit-rows]
Update existing rows in an AppSheet table. Each row must explicitly include the key column name and value, plus any columns to change.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | AppSheet Application Access Key |
| `appId` | string | Yes | AppSheet app ID (found in App > Settings > Integrations > IN) |
| `tableName` | string | Yes | Name of the table to update rows in |
| `region` | string | No | AppSheet region subdomain: "www" (global, default), "eu", or "asia-southeast" |
| `rows` | json | Yes | Array of row objects to update, each including the key column and the columns to change, e.g. \[\{ "RowID": "123", "Status": "Done" }] |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------ | ------ | ------------------------ |
| `rows` | array | Rows updated by AppSheet |
| `metadata` | json | Operation metadata |
| ↳ `rowCount` | number | Number of rows updated |
### AppSheet Delete Rows [#appsheet-delete-rows]
Delete rows from an AppSheet table. Each row only needs to include the key column name and value.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | AppSheet Application Access Key |
| `appId` | string | Yes | AppSheet app ID (found in App > Settings > Integrations > IN) |
| `tableName` | string | Yes | Name of the table to delete rows from |
| `region` | string | No | AppSheet region subdomain: "www" (global, default), "eu", or "asia-southeast" |
| `rows` | json | Yes | Array of row objects identifying rows to delete by key column, e.g. \[\{ "RowID": "123" }] |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------ | ------ | ------------------------ |
| `rows` | array | Rows deleted by AppSheet |
| `metadata` | json | Operation metadata |
| ↳ `rowCount` | number | Number of rows deleted |
---
# Google BigQuery (/integrations/google_bigquery)
{/* MANUAL-CONTENT-START:intro */}
[Google BigQuery](https://cloud.google.com/bigquery) is Google Cloud's fully managed, serverless data warehouse designed for large-scale data analytics. BigQuery lets you run fast SQL queries on massive datasets, making it ideal for business intelligence, data exploration, and machine learning pipelines.
With the Google BigQuery integration in Sim, you can:
* **Run SQL queries**: Execute queries against your BigQuery datasets and retrieve results for analysis or downstream processing
* **List datasets**: Browse available datasets within a Google Cloud project
* **List and inspect tables**: Enumerate tables within a dataset and retrieve detailed schema information
* **Insert rows**: Stream new rows into BigQuery tables for real-time data ingestion
In Sim, the Google BigQuery integration enables your agents to query datasets, inspect schemas, and insert rows as part of automated workflows. This is ideal for automated reporting, data pipeline orchestration, real-time data ingestion, and analytics-driven decision making.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Connect to Google BigQuery to run SQL queries, list datasets and tables, get table metadata, and insert rows.
## Actions [#actions]
### BigQuery Run Query [#bigquery-run-query]
Run a SQL query against Google BigQuery and return the results
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | ------------------------------------------------- |
| `projectId` | string | Yes | Google Cloud project ID |
| `query` | string | Yes | SQL query to execute |
| `useLegacySql` | boolean | No | Whether to use legacy SQL syntax (default: false) |
| `maxResults` | number | No | Maximum number of rows to return |
| `defaultDatasetId` | string | No | Default dataset for unqualified table names |
| `location` | string | No | Processing location (e.g., "US", "EU") |
#### Output [#output]
| Parameter | Type | Description |
| --------------------- | ------- | ------------------------------------------------ |
| `columns` | array | Array of column names from the query result |
| `rows` | array | Array of row objects keyed by column name |
| `totalRows` | string | Total number of rows in the complete result set |
| `jobComplete` | boolean | Whether the query completed within the timeout |
| `totalBytesProcessed` | string | Total bytes processed by the query |
| `cacheHit` | boolean | Whether the query result was served from cache |
| `jobReference` | object | Job reference (useful when jobComplete is false) |
| ↳ `projectId` | string | Project ID containing the job |
| ↳ `jobId` | string | Unique job identifier |
| ↳ `location` | string | Geographic location of the job |
| `pageToken` | string | Token for fetching additional result pages |
### BigQuery Get Query Results [#bigquery-get-query-results]
Fetch results for a previously submitted BigQuery job, or the next page of a Run Query result
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | --------------------------------------------------------- |
| `projectId` | string | Yes | Google Cloud project ID |
| `jobId` | string | Yes | ID of the BigQuery job to fetch results for |
| `pageToken` | string | No | Token for pagination |
| `maxResults` | number | No | Maximum number of rows to return |
| `timeoutMs` | number | No | How long to wait for the job to complete, in milliseconds |
| `location` | string | No | Processing location of the job (e.g., "US", "EU") |
| `startIndex` | string | No | Zero-based index of the starting row |
#### Output [#output-1]
| Parameter | Type | Description |
| --------------------- | ------- | ------------------------------------------------ |
| `columns` | array | Array of column names from the query result |
| `rows` | array | Array of row objects keyed by column name |
| `totalRows` | string | Total number of rows in the complete result set |
| `jobComplete` | boolean | Whether the job has completed |
| `totalBytesProcessed` | string | Total bytes processed by the query |
| `cacheHit` | boolean | Whether the query result was served from cache |
| `jobReference` | object | Job reference (useful when jobComplete is false) |
| ↳ `projectId` | string | Project ID containing the job |
| ↳ `jobId` | string | Unique job identifier |
| ↳ `location` | string | Geographic location of the job |
| `pageToken` | string | Token for fetching additional result pages |
### BigQuery List Datasets [#bigquery-list-datasets]
List all datasets in a Google BigQuery project
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------ |
| `projectId` | string | Yes | Google Cloud project ID |
| `maxResults` | number | No | Maximum number of datasets to return |
| `pageToken` | string | No | Token for pagination |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------------- | ------ | ------------------------------------------ |
| `datasets` | array | Array of dataset objects |
| ↳ `datasetId` | string | Unique dataset identifier |
| ↳ `projectId` | string | Project ID containing this dataset |
| ↳ `friendlyName` | string | Descriptive name for the dataset |
| ↳ `location` | string | Geographic location where the data resides |
| `nextPageToken` | string | Token for fetching next page of results |
### BigQuery Create Dataset [#bigquery-create-dataset]
Create a new dataset in a Google BigQuery project
#### Input [#input-3]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------ |
| `projectId` | string | Yes | Google Cloud project ID |
| `datasetId` | string | Yes | ID for the new BigQuery dataset |
| `location` | string | No | Geographic location for the dataset (e.g., "US", "EU") |
| `friendlyName` | string | No | Human-readable name for the dataset |
| `description` | string | No | Description of the dataset |
#### Output [#output-3]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------------------ |
| `datasetId` | string | Unique dataset identifier |
| `projectId` | string | Project ID containing this dataset |
| `friendlyName` | string | Descriptive name for the dataset |
| `description` | string | Dataset description |
| `location` | string | Geographic location where the data resides |
| `creationTime` | string | Dataset creation time (milliseconds since epoch) |
### BigQuery Delete Dataset [#bigquery-delete-dataset]
Delete a dataset from a Google BigQuery project
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | ------------------------------------------------------------ |
| `projectId` | string | Yes | Google Cloud project ID |
| `datasetId` | string | Yes | BigQuery dataset ID to delete |
| `deleteContents` | boolean | No | Whether to delete tables inside the dataset (default: false) |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------- |
| `deleted` | boolean | Whether the dataset was deleted |
### BigQuery List Tables [#bigquery-list-tables]
List all tables in a Google BigQuery dataset
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ---------------------------------- |
| `projectId` | string | Yes | Google Cloud project ID |
| `datasetId` | string | Yes | BigQuery dataset ID |
| `maxResults` | number | No | Maximum number of tables to return |
| `pageToken` | string | No | Token for pagination |
#### Output [#output-5]
| Parameter | Type | Description |
| ---------------- | ------ | ---------------------------------------------- |
| `tables` | array | Array of table objects |
| ↳ `tableId` | string | Table identifier |
| ↳ `datasetId` | string | Dataset ID containing this table |
| ↳ `projectId` | string | Project ID containing this table |
| ↳ `type` | string | Table type (TABLE, VIEW, EXTERNAL, etc.) |
| ↳ `friendlyName` | string | User-friendly name for the table |
| ↳ `creationTime` | string | Time when created, in milliseconds since epoch |
| `totalItems` | number | Total number of tables in the dataset |
| `nextPageToken` | string | Token for fetching next page of results |
### BigQuery Get Table [#bigquery-get-table]
Get metadata and schema for a Google BigQuery table
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------- |
| `projectId` | string | Yes | Google Cloud project ID |
| `datasetId` | string | Yes | BigQuery dataset ID |
| `tableId` | string | Yes | BigQuery table ID |
#### Output [#output-6]
| Parameter | Type | Description |
| ------------------ | ------ | -------------------------------------------------------------------- |
| `tableId` | string | Table ID |
| `datasetId` | string | Dataset ID |
| `projectId` | string | Project ID |
| `type` | string | Table type (TABLE, VIEW, SNAPSHOT, MATERIALIZED\_VIEW, EXTERNAL) |
| `description` | string | Table description |
| `numRows` | string | Total number of rows |
| `numBytes` | string | Total size in bytes, excluding data in streaming buffer |
| `schema` | array | Array of column definitions |
| ↳ `name` | string | Column name |
| ↳ `type` | string | Data type (STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, RECORD, etc.) |
| ↳ `mode` | string | Column mode (NULLABLE, REQUIRED, or REPEATED) |
| ↳ `description` | string | Column description |
| `creationTime` | string | Table creation time (milliseconds since epoch) |
| `lastModifiedTime` | string | Last modification time (milliseconds since epoch) |
| `location` | string | Geographic location where the table resides |
### BigQuery Create Table [#bigquery-create-table]
Create a new table in a Google BigQuery dataset
#### Input [#input-7]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------ |
| `projectId` | string | Yes | Google Cloud project ID |
| `datasetId` | string | Yes | BigQuery dataset ID |
| `tableId` | string | Yes | ID for the new BigQuery table |
| `schema` | string | Yes | JSON array of column field definitions, e.g. \[\{"name":"id","type":"STRING","mode":"REQUIRED"}] |
| `description` | string | No | Description of the table |
| `friendlyName` | string | No | Human-readable name for the table |
#### Output [#output-7]
| Parameter | Type | Description |
| --------------- | ------ | ---------------------------------------------- |
| `tableId` | string | Table ID |
| `datasetId` | string | Dataset ID |
| `projectId` | string | Project ID |
| `type` | string | Table type (usually TABLE) |
| `description` | string | Table description |
| `schema` | array | Array of column definitions |
| ↳ `name` | string | Column name |
| ↳ `type` | string | Data type |
| ↳ `mode` | string | Column mode (NULLABLE, REQUIRED, or REPEATED) |
| ↳ `description` | string | Column description |
| `creationTime` | string | Table creation time (milliseconds since epoch) |
| `location` | string | Geographic location where the table resides |
### BigQuery Delete Table [#bigquery-delete-table]
Delete a table from a Google BigQuery dataset
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------- |
| `projectId` | string | Yes | Google Cloud project ID |
| `datasetId` | string | Yes | BigQuery dataset ID |
| `tableId` | string | Yes | BigQuery table ID to delete |
#### Output [#output-8]
| Parameter | Type | Description |
| --------- | ------- | ----------------------------- |
| `deleted` | boolean | Whether the table was deleted |
### BigQuery List Table Data [#bigquery-list-table-data]
Preview rows from a Google BigQuery table without running a query. Pair with Get Table to know the column order.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ---------------------------------------------- |
| `projectId` | string | Yes | Google Cloud project ID |
| `datasetId` | string | Yes | BigQuery dataset ID |
| `tableId` | string | Yes | BigQuery table ID |
| `maxResults` | number | No | Maximum number of rows to return |
| `pageToken` | string | No | Token for pagination |
| `startIndex` | string | No | Zero-based index of the starting row |
| `selectedFields` | string | No | Comma-separated list of column names to return |
#### Output [#output-9]
| Parameter | Type | Description |
| ----------- | ------ | ---------------------------------------------------------------- |
| `rows` | array | Array of rows, each a raw array of column values in schema order |
| `totalRows` | string | Total number of rows in the table |
| `pageToken` | string | Token for fetching the next page of results |
### BigQuery Insert Rows [#bigquery-insert-rows]
Insert rows into a Google BigQuery table using streaming insert
#### Input [#input-10]
| Parameter | Type | Required | Description |
| --------------------- | ------- | -------- | ----------------------------------------------------- |
| `projectId` | string | Yes | Google Cloud project ID |
| `datasetId` | string | Yes | BigQuery dataset ID |
| `tableId` | string | Yes | BigQuery table ID |
| `rows` | string | Yes | JSON array of row objects to insert |
| `skipInvalidRows` | boolean | No | Whether to insert valid rows even if some are invalid |
| `ignoreUnknownValues` | boolean | No | Whether to ignore columns not in the table schema |
#### Output [#output-10]
| Parameter | Type | Description |
| -------------- | ------ | ---------------------------------------------------------- |
| `insertedRows` | number | Number of rows successfully inserted |
| `errors` | array | Array of per-row insertion errors (empty if all succeeded) |
| ↳ `index` | number | Zero-based index of the row that failed |
| ↳ `errors` | array | Error details for this row |
| ↳ `reason` | string | Short error code summarizing the error |
| ↳ `location` | string | Where the error occurred |
| ↳ `message` | string | Human-readable error description |
---
# Google Books (/integrations/google_books)
{/* MANUAL-CONTENT-START:intro */}
[Google Books](https://books.google.com) is Google's comprehensive book discovery and metadata service, providing access to millions of books from publishers, libraries, and digitized collections worldwide.
With the Google Books integration in Sim, you can:
* **Search for books**: Find volumes by title, author, ISBN, or keyword across the entire Google Books catalog
* **Retrieve volume details**: Get detailed metadata for a specific book including title, authors, description, ratings, and publication details
In Sim, the Google Books integration allows your agents to search for books and retrieve volume details as part of automated workflows. This enables use cases such as content research, reading list curation, bibliographic data enrichment, and knowledge gathering from published works.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Search for books using the Google Books API. Find volumes by title, author, ISBN, or keywords, and retrieve detailed information about specific books including descriptions, ratings, and publication details.
## Actions [#actions]
### Google Books Volume Search [#google-books-volume-search]
Search for books using the Google Books API
#### Input [#input]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Google Books API key |
| `query` | string | Yes | Search query. Supports special keywords: intitle:, inauthor:, inpublisher:, subject:, isbn: |
| `filter` | string | No | Filter results by availability (partial, full, free-ebooks, paid-ebooks, ebooks) |
| `printType` | string | No | Restrict to print type (all, books, magazines) |
| `orderBy` | string | No | Sort order (relevance, newest) |
| `startIndex` | number | No | Index of the first result to return (for pagination) |
| `maxResults` | number | No | Maximum number of results to return (1-40) |
| `langRestrict` | string | No | Restrict results to a specific language (ISO 639-1 code) |
#### Output [#output]
| Parameter | Type | Description |
| ----------------- | ------ | -------------------------------- |
| `totalItems` | number | Total number of matching results |
| `volumes` | array | List of matching volumes |
| ↳ `id` | string | Volume ID |
| ↳ `title` | string | Book title |
| ↳ `subtitle` | string | Book subtitle |
| ↳ `authors` | array | List of authors |
| ↳ `publisher` | string | Publisher name |
| ↳ `publishedDate` | string | Publication date |
| ↳ `description` | string | Book description |
| ↳ `pageCount` | number | Number of pages |
| ↳ `categories` | array | Book categories |
| ↳ `averageRating` | number | Average rating (1-5) |
| ↳ `ratingsCount` | number | Number of ratings |
| ↳ `language` | string | Language code |
| ↳ `previewLink` | string | Link to preview on Google Books |
| ↳ `infoLink` | string | Link to info page |
| ↳ `thumbnailUrl` | string | Book cover thumbnail URL |
| ↳ `isbn10` | string | ISBN-10 identifier |
| ↳ `isbn13` | string | ISBN-13 identifier |
### Google Books Volume Details [#google-books-volume-details]
Get detailed information about a specific book volume
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | -------------------------------- |
| `apiKey` | string | Yes | Google Books API key |
| `volumeId` | string | Yes | The ID of the volume to retrieve |
| `projection` | string | No | Projection level (full, lite) |
#### Output [#output-1]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------- |
| `id` | string | Volume ID |
| `title` | string | Book title |
| `subtitle` | string | Book subtitle |
| `authors` | array | List of authors |
| `publisher` | string | Publisher name |
| `publishedDate` | string | Publication date |
| `description` | string | Book description |
| `pageCount` | number | Number of pages |
| `categories` | array | Book categories |
| `averageRating` | number | Average rating (1-5) |
| `ratingsCount` | number | Number of ratings |
| `language` | string | Language code |
| `previewLink` | string | Link to preview on Google Books |
| `infoLink` | string | Link to info page |
| `thumbnailUrl` | string | Book cover thumbnail URL |
| `isbn10` | string | ISBN-10 identifier |
| `isbn13` | string | ISBN-13 identifier |
---
# Google Calendar (/integrations/google_calendar)
{/* MANUAL-CONTENT-START:intro */}
[Google Calendar](https://calendar.google.com) is Google's widely used online calendar and scheduling service, making it easy to organize meetings, events, reminders, and appointments individually or collaboratively. As a key part of Google Workspace, Google Calendar offers robust tools for managing your schedule, sending invitations, setting event reminders, and sharing calendars with others.
Google Calendar supports feature-rich integrations and automation, allowing users and teams to streamline event management and keep their workflows synchronized. Its API enables programmatic creation, modification, and listing of calendar events, empowering agents and automated workflows to interact with your schedule in real time.
Key features of Google Calendar include:
* **Event Scheduling**: Create one-time or recurring events with rich details like time, location, and guests.
* **Reminders & Notifications**: Automated email and push reminders to ensure you never miss an important event.
* **Sharing & Collaboration**: Share calendars with individuals or groups, manage permissions, and coordinate meetings seamlessly.
* **Integration**: Connect with Gmail, Meet, Docs, and external tools for a unified productivity experience.
* **Time Zone Support**: Schedule meetings across regions with full time zone awareness.
* **Mobile & Multi-Device Access**: Access your calendar from web, mobile, and desktop.
In Sim, the Google Calendar integration allows your agents to read, create, update, and list calendar events as part of automated workflows. This enables powerful scenarios such as syncing meeting information, generating reminders, tracking event changes, coordinating team schedules, and much more. By connecting Sim with Google Calendar, your agents can handle scheduling tasks, manage events intelligently, and keep your whole organization on track without manual intervention.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Google Calendar into the workflow. Can create, read, update, and list calendar events.
## Actions [#actions]
### Google Calendar Create Event [#google-calendar-create-event]
Create a new event in Google Calendar. Returns API-aligned fields only.
#### Input [#input]
| Parameter | Type | Required | Description |
| --------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `calendarId` | string | No | Google Calendar ID (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) |
| `summary` | string | Yes | Event title/summary |
| `description` | string | No | Event description |
| `location` | string | No | Event location |
| `startDateTime` | string | Yes | Start time. Use a datetime with timezone offset (2025-06-03T10:00:00-08:00) or a date (2025-06-03) for an all-day event |
| `endDateTime` | string | Yes | End time. Use a datetime with timezone offset (2025-06-03T11:00:00-08:00) or a date (2025-06-04) for an all-day event |
| `timeZone` | string | No | IANA time zone (e.g., America/Los\_Angeles). Used as-is when provided. For recurring events a time zone is required to expand the recurrence correctly; for one-off events it is only needed when the datetime omits a UTC offset (a naive datetime defaults to America/Los\_Angeles). |
| `attendees` | array | No | Array of attendee email addresses |
| `recurrence` | string | No | Recurrence rule(s) in RFC 5545 format (e.g., RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR). Separate multiple rules with newlines. |
| `addGoogleMeet` | boolean | No | Attach a Google Meet video conference link to the event |
| `sendUpdates` | string | No | How to send updates to attendees: all, externalOnly, or none |
#### Output [#output]
| Parameter | Type | Description |
| ------------- | ------ | ----------------- |
| `id` | string | Event ID |
| `htmlLink` | string | Event link |
| `hangoutLink` | string | Google Meet link |
| `status` | string | Event status |
| `summary` | string | Event title |
| `description` | string | Event description |
| `location` | string | Event location |
| `recurrence` | json | Recurrence rules |
| `start` | json | Event start |
| `end` | json | Event end |
| `attendees` | json | Event attendees |
| `creator` | json | Event creator |
| `organizer` | json | Event organizer |
### Google Calendar List Events [#google-calendar-list-events]
List events from Google Calendar. Returns API-aligned fields only.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `calendarId` | string | No | Google Calendar ID (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) |
| `timeMin` | string | No | Lower bound for events (RFC3339 timestamp, e.g., 2025-06-03T00:00:00Z) |
| `timeMax` | string | No | Upper bound for events (RFC3339 timestamp, e.g., 2025-06-04T00:00:00Z) |
| `q` | string | No | Free-text search across event summary, description, location, attendees, and organizer |
| `maxResults` | number | No | Maximum number of events to return (max 2500) |
| `pageToken` | string | No | Token for retrieving the next page of results |
| `orderBy` | string | No | Order of events: startTime (chronological, the default) or updated (last-modified). startTime is always valid here because singleEvents is set. |
| `showDeleted` | boolean | No | Include deleted events |
#### Output [#output-1]
| Parameter | Type | Description |
| --------------- | ------ | ------------------ |
| `nextPageToken` | string | Next page token |
| `timeZone` | string | Calendar time zone |
| `events` | json | List of events |
### Google Calendar Get Event [#google-calendar-get-event]
Get a specific event from Google Calendar. Returns API-aligned fields only.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------- |
| `calendarId` | string | No | Google Calendar ID (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) |
| `eventId` | string | Yes | Google Calendar event ID to retrieve |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------- | ------ | ----------------- |
| `id` | string | Event ID |
| `htmlLink` | string | Event link |
| `status` | string | Event status |
| `summary` | string | Event title |
| `description` | string | Event description |
| `location` | string | Event location |
| `start` | json | Event start |
| `end` | json | Event end |
| `attendees` | json | Event attendees |
| `creator` | json | Event creator |
| `organizer` | json | Event organizer |
### Google Calendar Update Event [#google-calendar-update-event]
Update an existing event in Google Calendar. Returns API-aligned fields only.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| --------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `calendarId` | string | No | Google Calendar ID (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) |
| `eventId` | string | Yes | Google Calendar event ID to update |
| `summary` | string | No | New event title/summary |
| `description` | string | No | New event description |
| `location` | string | No | New event location |
| `startDateTime` | string | No | New start time. Use a datetime with timezone offset (2025-06-03T10:00:00-08:00) or a date (2025-06-03) for an all-day event |
| `endDateTime` | string | No | New end time. Use a datetime with timezone offset (2025-06-03T11:00:00-08:00) or a date (2025-06-04) for an all-day event |
| `timeZone` | string | No | IANA time zone (e.g., America/Los\_Angeles) applied to the start/end times provided in this update. Provide a new start and/or end time to change the time zone; a time zone on its own is not applied. Required for recurring events to expand the recurrence correctly. |
| `attendees` | array | No | Array of attendee email addresses. When one or more emails are provided, they replace the existing attendee list. Leaving this empty keeps the current attendees unchanged (it does not clear them). |
| `recurrence` | string | No | Recurrence rule(s) in RFC 5545 format (e.g., RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR). Separate multiple rules with newlines. When provided, replaces the event's recurrence; leaving it empty keeps the existing recurrence unchanged. Requires a timeZone for timed events. |
| `addGoogleMeet` | boolean | No | Attach a Google Meet video conference link to the event |
| `sendUpdates` | string | No | How to send updates to attendees: all, externalOnly, or none |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------- | ------ | ----------------- |
| `id` | string | Event ID |
| `htmlLink` | string | Event link |
| `hangoutLink` | string | Google Meet link |
| `status` | string | Event status |
| `summary` | string | Event title |
| `description` | string | Event description |
| `location` | string | Event location |
| `recurrence` | json | Recurrence rules |
| `start` | json | Event start |
| `end` | json | Event end |
| `attendees` | json | Event attendees |
| `creator` | json | Event creator |
| `organizer` | json | Event organizer |
### Google Calendar Delete Event [#google-calendar-delete-event]
Delete an event from Google Calendar. Returns API-aligned fields only.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------- |
| `calendarId` | string | No | Google Calendar ID (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) |
| `eventId` | string | Yes | Google Calendar event ID to delete |
| `sendUpdates` | string | No | How to send updates to attendees: all, externalOnly, or none |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------- |
| `eventId` | string | Deleted event ID |
| `deleted` | boolean | Whether deletion was successful |
### Google Calendar Move Event [#google-calendar-move-event]
Move an event to a different calendar. Returns API-aligned fields only.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ----------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `calendarId` | string | No | Source Google Calendar ID (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) |
| `eventId` | string | Yes | Google Calendar event ID to move |
| `destinationCalendarId` | string | Yes | Destination Google Calendar ID |
| `sendUpdates` | string | No | How to send updates to attendees: all, externalOnly, or none |
#### Output [#output-5]
| Parameter | Type | Description |
| ------------- | ------ | ----------------- |
| `id` | string | Event ID |
| `htmlLink` | string | Event link |
| `status` | string | Event status |
| `summary` | string | Event title |
| `description` | string | Event description |
| `location` | string | Event location |
| `start` | json | Event start |
| `end` | json | Event end |
| `attendees` | json | Event attendees |
| `creator` | json | Event creator |
| `organizer` | json | Event organizer |
### Google Calendar Get Instances [#google-calendar-get-instances]
Get instances of a recurring event from Google Calendar. Returns API-aligned fields only.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------- |
| `calendarId` | string | No | Google Calendar ID (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) |
| `eventId` | string | Yes | Recurring event ID to get instances of |
| `timeMin` | string | No | Lower bound for instances (RFC3339 timestamp, e.g., 2025-06-03T00:00:00Z) |
| `timeMax` | string | No | Upper bound for instances (RFC3339 timestamp, e.g., 2025-06-04T00:00:00Z) |
| `maxResults` | number | No | Maximum number of instances to return (default 250, max 2500) |
| `pageToken` | string | No | Token for retrieving subsequent pages of results |
| `showDeleted` | boolean | No | Include deleted instances |
#### Output [#output-6]
| Parameter | Type | Description |
| --------------- | ------ | --------------------------------- |
| `nextPageToken` | string | Next page token |
| `timeZone` | string | Calendar time zone |
| `instances` | json | List of recurring event instances |
### Google Calendar List Calendars [#google-calendar-list-calendars]
List all calendars in the user's calendar list. Returns API-aligned fields only.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| --------------- | ------- | -------- | ------------------------------------------------------------------------------------ |
| `minAccessRole` | string | No | Minimum access role for returned calendars: freeBusyReader, reader, writer, or owner |
| `maxResults` | number | No | Maximum number of calendars to return (default 100, max 250) |
| `pageToken` | string | No | Token for retrieving subsequent pages of results |
| `showDeleted` | boolean | No | Include deleted calendars |
| `showHidden` | boolean | No | Include hidden calendars |
#### Output [#output-7]
| Parameter | Type | Description |
| ------------------- | ------- | ------------------------------------ |
| `nextPageToken` | string | Next page token |
| `calendars` | array | List of calendars |
| ↳ `id` | string | Calendar ID |
| ↳ `summary` | string | Calendar title |
| ↳ `description` | string | Calendar description |
| ↳ `location` | string | Calendar location |
| ↳ `timeZone` | string | Calendar time zone |
| ↳ `accessRole` | string | Access role for the calendar |
| ↳ `backgroundColor` | string | Calendar background color |
| ↳ `foregroundColor` | string | Calendar foreground color |
| ↳ `primary` | boolean | Whether this is the primary calendar |
| ↳ `hidden` | boolean | Whether the calendar is hidden |
| ↳ `selected` | boolean | Whether the calendar is selected |
### Google Calendar Quick Add [#google-calendar-quick-add]
Create events from natural language text. Returns API-aligned fields only.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------- |
| `calendarId` | string | No | Google Calendar ID (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) |
| `text` | string | Yes | Natural language text describing the event (e.g., "Meeting with John tomorrow at 3pm") |
| `attendees` | array | No | Array of attendee email addresses (comma-separated string also accepted) |
| `sendUpdates` | string | No | How to send updates to attendees: all, externalOnly, or none |
#### Output [#output-8]
| Parameter | Type | Description |
| ------------- | ------ | ----------------- |
| `id` | string | Event ID |
| `htmlLink` | string | Event link |
| `status` | string | Event status |
| `summary` | string | Event title |
| `description` | string | Event description |
| `location` | string | Event location |
| `start` | json | Event start |
| `end` | json | Event end |
| `attendees` | json | Event attendees |
| `creator` | json | Event creator |
| `organizer` | json | Event organizer |
### Google Calendar Invite Attendees [#google-calendar-invite-attendees]
Invite attendees to an existing Google Calendar event. Returns API-aligned fields only.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------- |
| `calendarId` | string | No | Google Calendar ID (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) |
| `eventId` | string | Yes | Google Calendar event ID to invite attendees to |
| `attendees` | array | Yes | Array of attendee email addresses to invite |
| `sendUpdates` | string | No | How to send updates to attendees: all, externalOnly, or none (defaults to all) |
| `replaceExisting` | boolean | No | Whether to replace existing attendees or add to them (defaults to false) |
#### Output [#output-9]
| Parameter | Type | Description |
| ------------- | ------ | ----------------- |
| `id` | string | Event ID |
| `htmlLink` | string | Event link |
| `status` | string | Event status |
| `summary` | string | Event title |
| `description` | string | Event description |
| `location` | string | Event location |
| `start` | json | Event start |
| `end` | json | Event end |
| `attendees` | json | Event attendees |
| `creator` | json | Event creator |
| `organizer` | json | Event organizer |
### Google Calendar Free/Busy [#google-calendar-freebusy]
Query free/busy information for one or more Google Calendars. Returns API-aligned fields only.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `calendarIds` | string | Yes | Comma-separated calendar IDs to query (e.g., "primary,[other@example.com](mailto:other@example.com)") |
| `timeMin` | string | Yes | Start of the time range (RFC3339 timestamp, e.g., 2025-06-03T00:00:00Z) |
| `timeMax` | string | Yes | End of the time range (RFC3339 timestamp, e.g., 2025-06-04T00:00:00Z) |
| `timeZone` | string | No | IANA time zone (e.g., "UTC", "America/New\_York"). Defaults to UTC. |
#### Output [#output-10]
| Parameter | Type | Description |
| ----------- | ------ | ------------------------------------------------------------ |
| `timeMin` | string | Start of the queried time range |
| `timeMax` | string | End of the queried time range |
| `calendars` | json | Per-calendar free/busy data with busy periods and any errors |
### Google Calendar Create Calendar [#google-calendar-create-calendar]
Create a new secondary calendar. Returns API-aligned fields only.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------------------------------------- |
| `summary` | string | Yes | Title of the new calendar |
| `description` | string | No | Description of the new calendar |
| `location` | string | No | Geographic location of the calendar as free-form text |
| `timeZone` | string | No | Time zone of the calendar as an IANA name (e.g., America/Los\_Angeles) |
#### Output [#output-11]
| Parameter | Type | Description |
| ------------- | ------ | -------------------- |
| `id` | string | Calendar ID |
| `summary` | string | Calendar title |
| `description` | string | Calendar description |
| `location` | string | Calendar location |
| `timeZone` | string | Calendar time zone |
### Google Calendar Update Calendar [#google-calendar-update-calendar]
Update a secondary calendar's metadata. Returns API-aligned fields only.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ |
| `calendarId` | string | No | Calendar ID to update (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) |
| `summary` | string | No | New title for the calendar |
| `description` | string | No | New description for the calendar |
| `location` | string | No | New geographic location of the calendar as free-form text |
| `timeZone` | string | No | New time zone of the calendar as an IANA name (e.g., America/Los\_Angeles) |
#### Output [#output-12]
| Parameter | Type | Description |
| ------------- | ------ | -------------------- |
| `id` | string | Calendar ID |
| `summary` | string | Calendar title |
| `description` | string | Calendar description |
| `location` | string | Calendar location |
| `timeZone` | string | Calendar time zone |
### Google Calendar Delete Calendar [#google-calendar-delete-calendar]
Permanently delete a secondary calendar. Returns API-aligned fields only.
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `calendarId` | string | Yes | Secondary calendar ID to delete (e.g., [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)). The primary calendar cannot be deleted. |
#### Output [#output-13]
| Parameter | Type | Description |
| ------------ | ------- | ------------------------------- |
| `calendarId` | string | Deleted calendar ID |
| `deleted` | boolean | Whether deletion was successful |
### Google Calendar Share Calendar [#google-calendar-share-calendar]
Grant a user, group, or domain access to a calendar. Returns API-aligned fields only.
#### Input [#input-14]
| Parameter | Type | Required | Description |
| ------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------- |
| `calendarId` | string | No | Calendar ID to share (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) |
| `role` | string | Yes | Access role to grant: freeBusyReader, reader, writer, or owner |
| `scopeType` | string | Yes | Type of grantee: user, group, domain, or default (public) |
| `scopeValue` | string | No | Email (user/group), domain name (domain), or empty for default. Required unless scope type is default. |
| `sendNotifications` | boolean | No | Whether to send a notification email about the change. Defaults to true. |
#### Output [#output-14]
| Parameter | Type | Description |
| --------- | ------ | ------------------------------ |
| `id` | string | ACL rule ID |
| `role` | string | Granted access role |
| `scope` | json | Grantee scope (type and value) |
### Google Calendar Update Sharing [#google-calendar-update-sharing]
Change the access role granted by an existing calendar sharing (ACL) rule. Returns API-aligned fields only.
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------ |
| `calendarId` | string | No | Calendar ID to modify (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) |
| `ruleId` | string | Yes | ACL rule ID to update (e.g., user:[person@example.com](mailto:person@example.com)) |
| `role` | string | Yes | New access role to grant: freeBusyReader, reader, writer, or owner |
| `sendNotifications` | boolean | No | Whether to send a notification email about the change. Defaults to true. |
#### Output [#output-15]
| Parameter | Type | Description |
| --------- | ------ | ------------------------------ |
| `id` | string | ACL rule ID |
| `role` | string | Granted access role |
| `scope` | json | Grantee scope (type and value) |
### Google Calendar List Sharing [#google-calendar-list-sharing]
List the access control rules (sharing) for a calendar. Returns API-aligned fields only.
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
| `calendarId` | string | No | Calendar ID to inspect (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) |
| `maxResults` | number | No | Maximum number of ACL rules to return |
| `pageToken` | string | No | Token for retrieving subsequent pages of results |
| `showDeleted` | boolean | No | Include deleted ACL rules (with role "none") |
#### Output [#output-16]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------ |
| `nextPageToken` | string | Next page token |
| `rules` | array | List of ACL rules |
| ↳ `id` | string | ACL rule ID |
| ↳ `role` | string | Access role |
| ↳ `scope` | json | Grantee scope (type and value) |
### Google Calendar Remove Sharing [#google-calendar-remove-sharing]
Revoke an access control rule (sharing) from a calendar. Returns API-aligned fields only.
#### Input [#input-17]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ |
| `calendarId` | string | No | Calendar ID to modify (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) |
| `ruleId` | string | Yes | ACL rule ID to remove (e.g., user:[person@example.com](mailto:person@example.com)) |
#### Output [#output-17]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------ |
| `ruleId` | string | Removed ACL rule ID |
| `deleted` | boolean | Whether removal was successful |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
These run on a schedule (**polling-based**) — they check for new data rather than receiving push notifications.
### Google Calendar Event Trigger [#google-calendar-event-trigger]
Triggers when events are created, updated, or cancelled in Google Calendar
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| -------------------- | ------------- | -------- | ----------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | Connect your Google account to access Google Calendar. |
| `calendarId` | file-selector | No | The calendar to monitor for event changes. |
| `manualCalendarId` | string | No | The calendar to monitor for event changes. |
| `eventTypeFilter` | string | No | Only trigger for specific event types. Defaults to all events. |
| `searchTerm` | string | No | Optional: Filter events by text match across title, description, location, and attendees. |
#### Output [#output-18]
| Parameter | Type | Description |
| -------------------- | ------ | ------------------------------------------------- |
| `event` | object | event output from the tool |
| ↳ `id` | string | Calendar event ID |
| ↳ `status` | string | Event status (confirmed, tentative, cancelled) |
| ↳ `eventType` | string | Change type: "created", "updated", or "cancelled" |
| ↳ `summary` | string | Event title |
| ↳ `eventDescription` | string | Event description |
| ↳ `location` | string | Event location |
| ↳ `htmlLink` | string | Link to event in Google Calendar |
| ↳ `start` | json | Event start time |
| ↳ `end` | json | Event end time |
| ↳ `created` | string | Event creation time |
| ↳ `updated` | string | Event last updated time |
| ↳ `attendees` | json | Event attendees |
| ↳ `creator` | json | Event creator |
| ↳ `organizer` | json | Event organizer |
| `calendarId` | string | Calendar ID |
| `timestamp` | string | Event processing timestamp in ISO format |
---
# Google Contacts (/integrations/google_contacts)
{/* MANUAL-CONTENT-START:intro */}
[Google Contacts](https://contacts.google.com/) is Google's contact management service, letting people store and organize names, emails, phone numbers, and organization details for everyone they communicate with.
With this block, you can:
* **Create and update contacts**: Add new contacts or edit existing ones with names, emails, phone numbers, organization, job title, and notes
* **Retrieve and list contacts**: Fetch a specific contact by resource name or list contacts with pagination and sort order
* **Search and delete contacts**: Find contacts by name, email, phone, or organization, or remove a contact entirely
In Sim, the Google Contacts integration allows your agents to create, read, update, delete, list, and search contacts programmatically within a workflow. This enables agents to keep a contact directory in sync, look up contact details before sending communications, or search for matching contacts by name, email, phone, or organization as part of a larger automation.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Google Contacts into the workflow. Can create, read, update, delete, list, and search contacts.
## Actions [#actions]
### Google Contacts Create [#google-contacts-create]
Create a new contact in Google Contacts
#### Input [#input]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------- |
| `givenName` | string | Yes | First name of the contact |
| `familyName` | string | No | Last name of the contact |
| `email` | string | No | Email address of the contact |
| `emailType` | string | No | Email type: home, work, or other |
| `phone` | string | No | Phone number of the contact |
| `phoneType` | string | No | Phone type: mobile, home, work, or other |
| `organization` | string | No | Organization/company name |
| `jobTitle` | string | No | Job title at the organization |
| `notes` | string | No | Notes or biography for the contact |
#### Output [#output]
| Parameter | Type | Description |
| ---------- | ------ | ------------------------------------------------------------ |
| `content` | string | Contact creation confirmation message |
| `metadata` | json | Created contact metadata including resource name and details |
### Google Contacts Get [#google-contacts-get]
Get a specific contact from Google Contacts
#### Input [#input-1]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------- |
| `resourceName` | string | Yes | Resource name of the contact (e.g., people/c1234567890) |
#### Output [#output-1]
| Parameter | Type | Description |
| ---------- | ------ | -------------------------------------------------------------- |
| `content` | string | Contact retrieval confirmation message |
| `metadata` | json | Contact details including name, email, phone, and organization |
### Google Contacts List [#google-contacts-list]
List contacts from Google Contacts
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------ |
| `pageSize` | number | No | Number of contacts to return (1-1000, default 100) |
| `pageToken` | string | No | Page token from a previous list request for pagination |
| `sortOrder` | string | No | Sort order for contacts |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------- | ------ | --------------------------------------- |
| `content` | string | Summary of found contacts count |
| `metadata` | json | List of contacts with pagination tokens |
### Google Contacts Search [#google-contacts-search]
Search contacts in Google Contacts by name, email, phone, or organization
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `query` | string | Yes | Search query to match against contact names, emails, phones, and organizations |
| `pageSize` | number | No | Number of results to return (default 10, max 30) |
#### Output [#output-3]
| Parameter | Type | Description |
| ---------- | ------ | ------------------------------------- |
| `content` | string | Summary of search results count |
| `metadata` | json | Search results with matching contacts |
### Google Contacts Update [#google-contacts-update]
Update an existing contact in Google Contacts
#### Input [#input-4]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `resourceName` | string | Yes | Resource name of the contact (e.g., people/c1234567890) |
| `etag` | string | Yes | ETag from a previous get request (required for concurrency control) |
| `givenName` | string | No | Updated first name |
| `familyName` | string | No | Updated last name |
| `email` | string | No | Updated email address |
| `emailType` | string | No | Email type: home, work, or other |
| `phone` | string | No | Updated phone number |
| `phoneType` | string | No | Phone type: mobile, home, work, or other |
| `organization` | string | No | Updated organization/company name |
| `jobTitle` | string | No | Updated job title |
| `notes` | string | No | Updated notes or biography |
#### Output [#output-4]
| Parameter | Type | Description |
| ---------- | ------ | ----------------------------------- |
| `content` | string | Contact update confirmation message |
| `metadata` | json | Updated contact metadata |
### Google Contacts Delete [#google-contacts-delete]
Delete a contact from Google Contacts
#### Input [#input-5]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ----------------------------------------------------------------- |
| `resourceName` | string | Yes | Resource name of the contact to delete (e.g., people/c1234567890) |
#### Output [#output-5]
| Parameter | Type | Description |
| ---------- | ------ | ---------------------------------------- |
| `content` | string | Contact deletion confirmation message |
| `metadata` | json | Deletion details including resource name |
---
# Google Docs (/integrations/google_docs)
{/* MANUAL-CONTENT-START:intro */}
[Google Docs](https://docs.google.com) is Google’s collaborative, cloud-based document service, enabling users to create, edit, and share documents in real time. As an integral part of Google Workspace, Docs offers rich formatting tools, commenting, version history, and seamless integration with other Google productivity tools.
Google Docs empowers individuals and teams to:
* **Create and format documents:** Develop rich text documents with advanced formatting, images, and tables.
* **Collaborate and comment:** Multiple users can edit and comment with suggestions instantly.
* **Track changes and version history:** Review, revert, and manage revisions over time.
* **Access from any device:** Work on documents from web, mobile, or desktop with full cloud synchronization.
* **Integrate across Google services:** Connect Docs with Drive, Sheets, Slides, and external platforms for powerful workflows.
In Sim, the Google Docs integration allows your agents to read document content, write new content, and create documents programmatically as part of automated workflows. This integration unlocks automation such as document generation, report writing, content extraction, and collaborative editing—bridging the gap between AI-driven workflows and document management in your organization.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Google Docs into the workflow. Read, write, and create documents, insert text, tables, images, and page breaks, find and replace text, and apply text styling.
## Actions [#actions]
### Read Google Docs Document [#read-google-docs-document]
Read content from a Google Docs document
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ----------------------- |
| `documentId` | string | Yes | Google Docs document ID |
#### Output [#output]
| Parameter | Type | Description |
| -------------- | ------ | ---------------------------------------------- |
| `content` | string | Extracted document text content |
| `metadata` | json | Document metadata including ID, title, and URL |
| ↳ `documentId` | string | Google Docs document ID |
| ↳ `title` | string | Document title |
| ↳ `mimeType` | string | Document MIME type |
| ↳ `url` | string | Document URL |
### Write to Google Docs Document [#write-to-google-docs-document]
Append content to a Google Docs document. Content is inserted literally; Markdown is not interpreted. For formatted output from Markdown, use the Create operation with the markdown toggle enabled.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------ |
| `documentId` | string | Yes | The ID of the document to write to |
| `content` | string | Yes | The content to write to the document |
#### Output [#output-1]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------------------------------------ |
| `updatedContent` | boolean | Indicates if document content was updated successfully |
| `metadata` | json | Updated document metadata including ID, title, and URL |
| ↳ `documentId` | string | Google Docs document ID |
| ↳ `title` | string | Document title |
| ↳ `mimeType` | string | Document MIME type |
| ↳ `url` | string | Document URL |
### Create Google Docs Document [#create-google-docs-document]
Create a new Google Docs document
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `title` | string | Yes | The title of the document to create |
| `content` | string | No | The content of the document to create |
| `folderSelector` | string | No | Google Drive folder ID to create the document in (e.g., 1ABCxyz...) |
| `folderId` | string | No | The ID of the folder to create the document in (internal use) |
| `markdown` | boolean | No | When true, content is interpreted as Markdown and converted to formatted Google Docs content (headings, bold/italic, lists, tables, links, code blocks, blockquotes). Default: false (content inserted as plain text). |
#### Output [#output-2]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------------------------ |
| `metadata` | json | Created document metadata including ID, title, and URL |
| ↳ `documentId` | string | Google Docs document ID |
| ↳ `title` | string | Document title |
| ↳ `mimeType` | string | Document MIME type |
| ↳ `url` | string | Document URL |
### Insert Text into Google Docs Document [#insert-text-into-google-docs-document]
Insert text at a specific index in a Google Docs document. When no index is provided, text is appended to the end of the document. Text is inserted literally; Markdown is not interpreted.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `documentId` | string | Yes | The ID of the document to insert text into |
| `text` | string | Yes | The text to insert |
| `index` | number | No | The character index (the document body starts at index 1) at which to insert the text. When omitted, text is appended to the end of the document. |
#### Output [#output-3]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------------------------------------ |
| `updatedContent` | boolean | Indicates if text was inserted successfully |
| `metadata` | json | Updated document metadata including ID, title, and URL |
| ↳ `documentId` | string | Google Docs document ID |
| ↳ `title` | string | Document title |
| ↳ `mimeType` | string | Document MIME type |
| ↳ `url` | string | Document URL |
### Find and Replace Text in Google Docs Document [#find-and-replace-text-in-google-docs-document]
Replace all occurrences of a search string with new text across a Google Docs document.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | ------------------------------------------------------------------------ |
| `documentId` | string | Yes | The ID of the document to update |
| `searchText` | string | Yes | The text to find |
| `replaceText` | string | No | The text to replace matches with. Use an empty string to delete matches. |
| `matchCase` | boolean | No | Whether the search should be case sensitive. Defaults to false. |
#### Output [#output-4]
| Parameter | Type | Description |
| -------------------- | ------ | ------------------------------------------------------ |
| `occurrencesChanged` | number | The number of occurrences that were replaced |
| `metadata` | json | Updated document metadata including ID, title, and URL |
| ↳ `documentId` | string | Google Docs document ID |
| ↳ `title` | string | Document title |
| ↳ `mimeType` | string | Document MIME type |
| ↳ `url` | string | Document URL |
### Insert Table into Google Docs Document [#insert-table-into-google-docs-document]
Insert an empty table with the given number of rows and columns into a Google Docs document. When no index is provided, the table is appended to the end of the document.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `documentId` | string | Yes | The ID of the document to insert the table into |
| `rows` | number | Yes | The number of rows in the table |
| `columns` | number | Yes | The number of columns in the table |
| `index` | number | No | The character index (the document body starts at index 1) at which to insert the table. When omitted, the table is appended to the end of the document. |
#### Output [#output-5]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------------------------------------ |
| `updatedContent` | boolean | Indicates if the table was inserted successfully |
| `metadata` | json | Updated document metadata including ID, title, and URL |
| ↳ `documentId` | string | Google Docs document ID |
| ↳ `title` | string | Document title |
| ↳ `mimeType` | string | Document MIME type |
| ↳ `url` | string | Document URL |
### Insert Image into Google Docs Document [#insert-image-into-google-docs-document]
Insert an inline image from a public URL into a Google Docs document. The image must be publicly accessible and under 50 MB. When no index is provided, the image is appended to the end of the document.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `documentId` | string | Yes | The ID of the document to insert the image into |
| `imageUrl` | string | Yes | The publicly accessible URL of the image to insert |
| `index` | number | No | The character index (the document body starts at index 1) at which to insert the image. When omitted, the image is appended to the end of the document. |
| `width` | number | No | Optional image width in points (PT) |
| `height` | number | No | Optional image height in points (PT) |
#### Output [#output-6]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------------------------ |
| `objectId` | string | The ID of the inserted inline image object |
| `metadata` | json | Updated document metadata including ID, title, and URL |
| ↳ `documentId` | string | Google Docs document ID |
| ↳ `title` | string | Document title |
| ↳ `mimeType` | string | Document MIME type |
| ↳ `url` | string | Document URL |
### Insert Page Break into Google Docs Document [#insert-page-break-into-google-docs-document]
Insert a page break into a Google Docs document. When no index is provided, the page break is appended to the end of the document.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `documentId` | string | Yes | The ID of the document to insert the page break into |
| `index` | number | No | The character index (the document body starts at index 1) at which to insert the page break. When omitted, the page break is appended to the end of the document. |
#### Output [#output-7]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------------------------------------ |
| `updatedContent` | boolean | Indicates if the page break was inserted successfully |
| `metadata` | json | Updated document metadata including ID, title, and URL |
| ↳ `documentId` | string | Google Docs document ID |
| ↳ `title` | string | Document title |
| ↳ `mimeType` | string | Document MIME type |
| ↳ `url` | string | Document URL |
### Apply Text Style in Google Docs Document [#apply-text-style-in-google-docs-document]
Apply bold, italic, underline, and/or font size to a range of text in a Google Docs document, identified by its start and end character index.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | ------------------------------------------------------------------------------------------------- |
| `documentId` | string | Yes | The ID of the document to update |
| `startIndex` | number | Yes | The start character index (the document body starts at index 1) of the range to style (inclusive) |
| `endIndex` | number | Yes | The end character index of the range to style (exclusive) |
| `bold` | boolean | No | Whether to make the text bold |
| `italic` | boolean | No | Whether to make the text italic |
| `underline` | boolean | No | Whether to underline the text |
| `fontSize` | number | No | The font size to apply, in points (PT) |
#### Output [#output-8]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------------------------------------ |
| `updatedContent` | boolean | Indicates if the text style was applied successfully |
| `metadata` | json | Updated document metadata including ID, title, and URL |
| ↳ `documentId` | string | Google Docs document ID |
| ↳ `title` | string | Document title |
| ↳ `mimeType` | string | Document MIME type |
| ↳ `url` | string | Document URL |
### Update Paragraph Style in Google Docs Document [#update-paragraph-style-in-google-docs-document]
Apply a named paragraph style (such as a heading or title) and/or alignment to the paragraphs overlapping a range of text in a Google Docs document, identified by its start and end character index.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `documentId` | string | Yes | The ID of the document to update |
| `startIndex` | number | Yes | The start character index (the document body starts at index 1) of the range to style (inclusive) |
| `endIndex` | number | Yes | The end character index of the range to style (exclusive) |
| `namedStyleType` | string | No | The named paragraph style to apply. One of: NORMAL\_TEXT, TITLE, SUBTITLE, HEADING\_1, HEADING\_2, HEADING\_3, HEADING\_4, HEADING\_5, HEADING\_6. |
| `alignment` | string | No | The paragraph alignment to apply. One of: LEFT, CENTER, RIGHT, JUSTIFY. |
#### Output [#output-9]
| Parameter | Type | Description |
| ---------------- | ------- | --------------------------------------------------------- |
| `updatedContent` | boolean | Indicates if the paragraph style was applied successfully |
| `metadata` | json | Updated document metadata including ID, title, and URL |
| ↳ `documentId` | string | Google Docs document ID |
| ↳ `title` | string | Document title |
| ↳ `mimeType` | string | Document MIME type |
| ↳ `url` | string | Document URL |
### Create Paragraph Bullets in Google Docs Document [#create-paragraph-bullets-in-google-docs-document]
Add bulleted or numbered list formatting to the paragraphs overlapping a range of text in a Google Docs document, using a chosen bullet glyph preset.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `documentId` | string | Yes | The ID of the document to update |
| `startIndex` | number | Yes | The start character index (the document body starts at index 1) of the range to bullet (inclusive) |
| `endIndex` | number | Yes | The end character index of the range to bullet (exclusive) |
| `bulletPreset` | string | No | The bullet glyph preset to apply. Defaults to BULLET\_DISC\_CIRCLE\_SQUARE. Examples: BULLET\_DISC\_CIRCLE\_SQUARE, BULLET\_CHECKBOX, NUMBERED\_DECIMAL\_ALPHA\_ROMAN, NUMBERED\_DECIMAL\_NESTED. |
#### Output [#output-10]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------------------------------------ |
| `updatedContent` | boolean | Indicates if the bullets were applied successfully |
| `metadata` | json | Updated document metadata including ID, title, and URL |
| ↳ `documentId` | string | Google Docs document ID |
| ↳ `title` | string | Document title |
| ↳ `mimeType` | string | Document MIME type |
| ↳ `url` | string | Document URL |
### Delete Paragraph Bullets in Google Docs Document [#delete-paragraph-bullets-in-google-docs-document]
Remove bullet or numbered list formatting from the paragraphs overlapping a range of text in a Google Docs document, identified by its start and end character index.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------- |
| `documentId` | string | Yes | The ID of the document to update |
| `startIndex` | number | Yes | The start character index (the document body starts at index 1) of the range to clear bullets from (inclusive) |
| `endIndex` | number | Yes | The end character index of the range to clear bullets from (exclusive) |
#### Output [#output-11]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------------------------------------ |
| `updatedContent` | boolean | Indicates if the bullets were removed successfully |
| `metadata` | json | Updated document metadata including ID, title, and URL |
| ↳ `documentId` | string | Google Docs document ID |
| ↳ `title` | string | Document title |
| ↳ `mimeType` | string | Document MIME type |
| ↳ `url` | string | Document URL |
### Delete Content Range in Google Docs Document [#delete-content-range-in-google-docs-document]
Delete all content between a start and end character index in a Google Docs document. The endIndex is exclusive and must be greater than the startIndex.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------- |
| `documentId` | string | Yes | The ID of the document to delete content from |
| `startIndex` | number | Yes | The start character index (the document body starts at index 1) of the range to delete (inclusive) |
| `endIndex` | number | Yes | The end character index of the range to delete (exclusive) |
#### Output [#output-12]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------------------------------------- |
| `updatedContent` | boolean | Indicates if the content range was deleted successfully |
| `metadata` | json | Updated document metadata including ID, title, and URL |
| ↳ `documentId` | string | Google Docs document ID |
| ↳ `title` | string | Document title |
| ↳ `mimeType` | string | Document MIME type |
| ↳ `url` | string | Document URL |
### Create Named Range in Google Docs Document [#create-named-range-in-google-docs-document]
Create a named range over a span of content in a Google Docs document so it can be referenced or deleted later. The name may be 1-256 characters and need not be unique.
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ---------------------------------------------------------------------------------------- |
| `documentId` | string | Yes | The ID of the document to update |
| `name` | string | Yes | The name of the range to create (1-256 characters) |
| `startIndex` | number | Yes | The start character index (the document body starts at index 1) of the range (inclusive) |
| `endIndex` | number | Yes | The end character index of the range (exclusive) |
#### Output [#output-13]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------------------------ |
| `namedRangeId` | string | The ID of the created named range |
| `metadata` | json | Updated document metadata including ID, title, and URL |
| ↳ `documentId` | string | Google Docs document ID |
| ↳ `title` | string | Document title |
| ↳ `mimeType` | string | Document MIME type |
| ↳ `url` | string | Document URL |
### Delete Named Range in Google Docs Document [#delete-named-range-in-google-docs-document]
Delete one or more named ranges from a Google Docs document by their ID or by name. Provide exactly one of namedRangeId or name; deleting by name removes all ranges sharing that name. The content itself is not removed.
#### Input [#input-14]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `documentId` | string | Yes | The ID of the document to update |
| `namedRangeId` | string | No | The ID of the named range to delete. Provide exactly one of namedRangeId or namedRangeName. |
| `namedRangeName` | string | No | The name of the named range(s) to delete. All ranges sharing this name are removed. Provide exactly one of namedRangeId or namedRangeName. |
#### Output [#output-14]
| Parameter | Type | Description |
| ---------------- | ------- | --------------------------------------------------------- |
| `updatedContent` | boolean | Indicates if the named range(s) were deleted successfully |
| `metadata` | json | Updated document metadata including ID, title, and URL |
| ↳ `documentId` | string | Google Docs document ID |
| ↳ `title` | string | Document title |
| ↳ `mimeType` | string | Document MIME type |
| ↳ `url` | string | Document URL |
---
# Google Drive (/integrations/google_drive)
{/* MANUAL-CONTENT-START:intro */}
[Google Drive](https://drive.google.com) is Google’s cloud-based file storage and synchronization service, making it easy to store, manage, share, and access files securely across devices and platforms. As a core element of Google Workspace, Google Drive offers robust tools for file organization, collaboration, and seamless integration with the broader productivity suite.
Google Drive enables individuals and teams to:
* **Store files in the cloud:** Access documents, images, videos, and more from anywhere with internet connectivity.
* **Organize and manage content:** Create and arrange folders, use naming conventions, and leverage search for fast retrieval.
* **Share and collaborate:** Control file and folder permissions, share with individuals or groups, and collaborate in real time.
* **Leverage powerful search:** Quickly locate files using Google’s search technology.
* **Access across devices:** Work with your files on desktop, mobile, or web with full synchronization.
* **Integrate deeply across Google services:** Connect with Google Docs, Sheets, Slides, and partner applications in your workflows.
In Sim, the Google Drive integration allows your agents to read, upload, download, list, and organize your Drive files programmatically. Agents can automate file management, streamline content workflows, and enable no-code automation around document storage and retrieval. By connecting Sim with Google Drive, you empower your agents to incorporate cloud file operations directly into intelligent business processes.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Google Drive into the workflow. Can create, upload, download, copy, move, delete, share files and manage permissions.
## Actions [#actions]
### List Google Drive Files [#list-google-drive-files]
List files and folders in Google Drive with complete metadata
#### Input [#input]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `folderSelector` | string | No | Google Drive folder ID to list files from (e.g., 1ABCxyz...) |
| `folderId` | string | No | The ID of the folder to list files from (internal use) |
| `query` | string | No | Search term to filter files by name (e.g. "budget" finds files with "budget" in the name). Do NOT use Google Drive query syntax here - just provide a plain search term. |
| `pageSize` | number | No | The maximum number of files to return (default: 100) |
| `pageToken` | string | No | The page token to use for pagination |
#### Output [#output]
| Parameter | Type | Description |
| -------------------------------- | ------- | ------------------------------------------------ |
| `files` | array | Array of file metadata objects from Google Drive |
| ↳ `id` | string | Google Drive file ID |
| ↳ `kind` | string | Resource type identifier |
| ↳ `name` | string | File name |
| ↳ `mimeType` | string | MIME type |
| ↳ `description` | string | File description |
| ↳ `originalFilename` | string | Original uploaded filename |
| ↳ `fullFileExtension` | string | Full file extension |
| ↳ `fileExtension` | string | File extension |
| ↳ `owners` | json | List of file owners |
| ↳ `permissions` | json | File permissions |
| ↳ `permissionIds` | json | Permission IDs |
| ↳ `shared` | boolean | Whether file is shared |
| ↳ `ownedByMe` | boolean | Whether owned by current user |
| ↳ `writersCanShare` | boolean | Whether writers can share |
| ↳ `viewersCanCopyContent` | boolean | Whether viewers can copy |
| ↳ `copyRequiresWriterPermission` | boolean | Whether copy requires writer permission |
| ↳ `sharingUser` | json | User who shared the file |
| ↳ `starred` | boolean | Whether file is starred |
| ↳ `trashed` | boolean | Whether file is in trash |
| ↳ `explicitlyTrashed` | boolean | Whether explicitly trashed |
| ↳ `appProperties` | json | App-specific properties |
| ↳ `createdTime` | string | File creation time |
| ↳ `modifiedTime` | string | Last modification time |
| ↳ `modifiedByMeTime` | string | When modified by current user |
| ↳ `viewedByMeTime` | string | When last viewed by current user |
| ↳ `sharedWithMeTime` | string | When shared with current user |
| ↳ `lastModifyingUser` | json | User who last modified the file |
| ↳ `viewedByMe` | boolean | Whether viewed by current user |
| ↳ `modifiedByMe` | boolean | Whether modified by current user |
| ↳ `webViewLink` | string | URL to view in browser |
| ↳ `webContentLink` | string | Direct download URL |
| ↳ `iconLink` | string | URL to file icon |
| ↳ `thumbnailLink` | string | URL to thumbnail |
| ↳ `exportLinks` | json | Export format links |
| ↳ `size` | string | File size in bytes |
| ↳ `quotaBytesUsed` | string | Storage quota used |
| ↳ `md5Checksum` | string | MD5 hash |
| ↳ `sha1Checksum` | string | SHA-1 hash |
| ↳ `sha256Checksum` | string | SHA-256 hash |
| ↳ `parents` | json | Parent folder IDs |
| ↳ `spaces` | json | Spaces containing file |
| ↳ `driveId` | string | Shared drive ID |
| ↳ `capabilities` | json | User capabilities on file |
| ↳ `version` | string | Version number |
| ↳ `headRevisionId` | string | Head revision ID |
| ↳ `hasThumbnail` | boolean | Whether has thumbnail |
| ↳ `thumbnailVersion` | string | Thumbnail version |
| ↳ `imageMediaMetadata` | json | Image-specific metadata |
| ↳ `videoMediaMetadata` | json | Video-specific metadata |
| ↳ `isAppAuthorized` | boolean | Whether created by requesting app |
| ↳ `contentRestrictions` | json | Content restrictions |
| ↳ `linkShareMetadata` | json | Link share metadata |
| `nextPageToken` | string | Token for fetching the next page of results |
### Get Google Drive File [#get-google-drive-file]
Get metadata for a specific file in Google Drive by its ID
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------ |
| `fileId` | string | Yes | The ID of the file to retrieve |
#### Output [#output-1]
| Parameter | Type | Description |
| --------------------- | ------- | ------------------------------- |
| `file` | json | The file metadata |
| ↳ `id` | string | Google Drive file ID |
| ↳ `kind` | string | Resource type identifier |
| ↳ `name` | string | File name |
| ↳ `mimeType` | string | MIME type |
| ↳ `description` | string | File description |
| ↳ `size` | string | File size in bytes |
| ↳ `starred` | boolean | Whether file is starred |
| ↳ `trashed` | boolean | Whether file is in trash |
| ↳ `webViewLink` | string | URL to view in browser |
| ↳ `webContentLink` | string | Direct download URL |
| ↳ `iconLink` | string | URL to file icon |
| ↳ `thumbnailLink` | string | URL to thumbnail |
| ↳ `parents` | json | Parent folder IDs |
| ↳ `owners` | json | List of file owners |
| ↳ `permissions` | json | File permissions |
| ↳ `createdTime` | string | File creation time |
| ↳ `modifiedTime` | string | Last modification time |
| ↳ `lastModifyingUser` | json | User who last modified the file |
| ↳ `shared` | boolean | Whether file is shared |
| ↳ `ownedByMe` | boolean | Whether owned by current user |
| ↳ `capabilities` | json | User capabilities on file |
| ↳ `md5Checksum` | string | MD5 hash |
| ↳ `version` | string | Version number |
### Get Content from Google Drive [#get-content-from-google-drive]
Get content from a file in Google Drive with complete metadata (exports Google Workspace files automatically)
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------ |
| `fileId` | string | Yes | The ID of the file to get content from |
| `mimeType` | string | No | The MIME type to export Google Workspace files to (optional) |
| `includeRevisions` | boolean | No | Whether to include revision history in the metadata (default: true, returns first 100 revisions) |
#### Output [#output-2]
| Parameter | Type | Description |
| -------------------------------- | ------- | ---------------------------------------------------------- |
| `content` | string | File content as text (Google Workspace files are exported) |
| `metadata` | object | Complete file metadata from Google Drive |
| ↳ `id` | string | Google Drive file ID |
| ↳ `kind` | string | Resource type identifier |
| ↳ `name` | string | File name |
| ↳ `mimeType` | string | MIME type |
| ↳ `description` | string | File description |
| ↳ `originalFilename` | string | Original uploaded filename |
| ↳ `fullFileExtension` | string | Full file extension |
| ↳ `fileExtension` | string | File extension |
| ↳ `owners` | json | List of file owners |
| ↳ `permissions` | json | File permissions |
| ↳ `permissionIds` | json | Permission IDs |
| ↳ `shared` | boolean | Whether file is shared |
| ↳ `ownedByMe` | boolean | Whether owned by current user |
| ↳ `writersCanShare` | boolean | Whether writers can share |
| ↳ `viewersCanCopyContent` | boolean | Whether viewers can copy |
| ↳ `copyRequiresWriterPermission` | boolean | Whether copy requires writer permission |
| ↳ `sharingUser` | json | User who shared the file |
| ↳ `starred` | boolean | Whether file is starred |
| ↳ `trashed` | boolean | Whether file is in trash |
| ↳ `explicitlyTrashed` | boolean | Whether explicitly trashed |
| ↳ `appProperties` | json | App-specific properties |
| ↳ `createdTime` | string | File creation time |
| ↳ `modifiedTime` | string | Last modification time |
| ↳ `modifiedByMeTime` | string | When modified by current user |
| ↳ `viewedByMeTime` | string | When last viewed by current user |
| ↳ `sharedWithMeTime` | string | When shared with current user |
| ↳ `lastModifyingUser` | json | User who last modified the file |
| ↳ `viewedByMe` | boolean | Whether viewed by current user |
| ↳ `modifiedByMe` | boolean | Whether modified by current user |
| ↳ `webViewLink` | string | URL to view in browser |
| ↳ `webContentLink` | string | Direct download URL |
| ↳ `iconLink` | string | URL to file icon |
| ↳ `thumbnailLink` | string | URL to thumbnail |
| ↳ `exportLinks` | json | Export format links |
| ↳ `size` | string | File size in bytes |
| ↳ `quotaBytesUsed` | string | Storage quota used |
| ↳ `md5Checksum` | string | MD5 hash |
| ↳ `sha1Checksum` | string | SHA-1 hash |
| ↳ `sha256Checksum` | string | SHA-256 hash |
| ↳ `parents` | json | Parent folder IDs |
| ↳ `spaces` | json | Spaces containing file |
| ↳ `driveId` | string | Shared drive ID |
| ↳ `capabilities` | json | User capabilities on file |
| ↳ `version` | string | Version number |
| ↳ `headRevisionId` | string | Head revision ID |
| ↳ `hasThumbnail` | boolean | Whether has thumbnail |
| ↳ `thumbnailVersion` | string | Thumbnail version |
| ↳ `imageMediaMetadata` | json | Image-specific metadata |
| ↳ `videoMediaMetadata` | json | Video-specific metadata |
| ↳ `isAppAuthorized` | boolean | Whether created by requesting app |
| ↳ `contentRestrictions` | json | Content restrictions |
| ↳ `linkShareMetadata` | json | Link share metadata |
| ↳ `revisions` | json | File revision history (first 100 revisions only) |
### Create Folder in Google Drive [#create-folder-in-google-drive]
Create a new folder in Google Drive with complete metadata returned
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------ |
| `fileName` | string | Yes | Name of the folder to create |
| `folderSelector` | string | No | Google Drive parent folder ID to create the folder in (e.g., 1ABCxyz...) |
| `folderId` | string | No | ID of the parent folder (internal use) |
#### Output [#output-3]
| Parameter | Type | Description |
| -------------------------------- | ------- | -------------------------------------------------- |
| `file` | object | Complete created folder metadata from Google Drive |
| ↳ `id` | string | Google Drive folder ID |
| ↳ `kind` | string | Resource type identifier |
| ↳ `name` | string | Folder name |
| ↳ `mimeType` | string | MIME type (application/vnd.google-apps.folder) |
| ↳ `description` | string | Folder description |
| ↳ `owners` | json | List of folder owners |
| ↳ `permissions` | json | Folder permissions |
| ↳ `permissionIds` | json | Permission IDs |
| ↳ `shared` | boolean | Whether folder is shared |
| ↳ `ownedByMe` | boolean | Whether owned by current user |
| ↳ `writersCanShare` | boolean | Whether writers can share |
| ↳ `viewersCanCopyContent` | boolean | Whether viewers can copy |
| ↳ `copyRequiresWriterPermission` | boolean | Whether copy requires writer permission |
| ↳ `sharingUser` | json | User who shared the folder |
| ↳ `starred` | boolean | Whether folder is starred |
| ↳ `trashed` | boolean | Whether folder is in trash |
| ↳ `explicitlyTrashed` | boolean | Whether explicitly trashed |
| ↳ `appProperties` | json | App-specific properties |
| ↳ `folderColorRgb` | string | Folder color |
| ↳ `createdTime` | string | Folder creation time |
| ↳ `modifiedTime` | string | Last modification time |
| ↳ `modifiedByMeTime` | string | When modified by current user |
| ↳ `viewedByMeTime` | string | When last viewed by current user |
| ↳ `sharedWithMeTime` | string | When shared with current user |
| ↳ `lastModifyingUser` | json | User who last modified the folder |
| ↳ `viewedByMe` | boolean | Whether viewed by current user |
| ↳ `modifiedByMe` | boolean | Whether modified by current user |
| ↳ `webViewLink` | string | URL to view in browser |
| ↳ `iconLink` | string | URL to folder icon |
| ↳ `parents` | json | Parent folder IDs |
| ↳ `spaces` | json | Spaces containing folder |
| ↳ `driveId` | string | Shared drive ID |
| ↳ `capabilities` | json | User capabilities on folder |
| ↳ `version` | string | Version number |
| ↳ `isAppAuthorized` | boolean | Whether created by requesting app |
| ↳ `contentRestrictions` | json | Content restrictions |
| ↳ `linkShareMetadata` | json | Link share metadata |
### Upload to Google Drive [#upload-to-google-drive]
Upload a file to Google Drive with complete metadata returned
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ----------------------------------------------------------------------------- |
| `fileName` | string | Yes | The name of the file to upload |
| `file` | file | No | Binary file to upload (UserFile object) |
| `content` | string | No | Text content to upload (use this OR file, not both) |
| `mimeType` | string | No | The MIME type of the file to upload (auto-detected from file if not provided) |
| `folderSelector` | string | No | Google Drive folder ID to upload the file to (e.g., 1ABCxyz...) |
| `folderId` | string | No | The ID of the folder to upload the file to (internal use) |
#### Output [#output-4]
| Parameter | Type | Description |
| -------------------------------- | ------- | ------------------------------------------------- |
| `file` | object | Complete uploaded file metadata from Google Drive |
| ↳ `id` | string | Google Drive file ID |
| ↳ `kind` | string | Resource type identifier |
| ↳ `name` | string | File name |
| ↳ `mimeType` | string | MIME type |
| ↳ `description` | string | File description |
| ↳ `originalFilename` | string | Original uploaded filename |
| ↳ `fullFileExtension` | string | Full file extension |
| ↳ `fileExtension` | string | File extension |
| ↳ `owners` | json | List of file owners |
| ↳ `permissions` | json | File permissions |
| ↳ `permissionIds` | json | Permission IDs |
| ↳ `shared` | boolean | Whether file is shared |
| ↳ `ownedByMe` | boolean | Whether owned by current user |
| ↳ `writersCanShare` | boolean | Whether writers can share |
| ↳ `viewersCanCopyContent` | boolean | Whether viewers can copy |
| ↳ `copyRequiresWriterPermission` | boolean | Whether copy requires writer permission |
| ↳ `sharingUser` | json | User who shared the file |
| ↳ `starred` | boolean | Whether file is starred |
| ↳ `trashed` | boolean | Whether file is in trash |
| ↳ `explicitlyTrashed` | boolean | Whether explicitly trashed |
| ↳ `appProperties` | json | App-specific properties |
| ↳ `createdTime` | string | File creation time |
| ↳ `modifiedTime` | string | Last modification time |
| ↳ `modifiedByMeTime` | string | When modified by current user |
| ↳ `viewedByMeTime` | string | When last viewed by current user |
| ↳ `sharedWithMeTime` | string | When shared with current user |
| ↳ `lastModifyingUser` | json | User who last modified the file |
| ↳ `viewedByMe` | boolean | Whether viewed by current user |
| ↳ `modifiedByMe` | boolean | Whether modified by current user |
| ↳ `webViewLink` | string | URL to view in browser |
| ↳ `webContentLink` | string | Direct download URL |
| ↳ `iconLink` | string | URL to file icon |
| ↳ `thumbnailLink` | string | URL to thumbnail |
| ↳ `exportLinks` | json | Export format links |
| ↳ `size` | string | File size in bytes |
| ↳ `quotaBytesUsed` | string | Storage quota used |
| ↳ `md5Checksum` | string | MD5 hash |
| ↳ `sha1Checksum` | string | SHA-1 hash |
| ↳ `sha256Checksum` | string | SHA-256 hash |
| ↳ `parents` | json | Parent folder IDs |
| ↳ `spaces` | json | Spaces containing file |
| ↳ `driveId` | string | Shared drive ID |
| ↳ `capabilities` | json | User capabilities on file |
| ↳ `version` | string | Version number |
| ↳ `headRevisionId` | string | Head revision ID |
| ↳ `hasThumbnail` | boolean | Whether has thumbnail |
| ↳ `thumbnailVersion` | string | Thumbnail version |
| ↳ `imageMediaMetadata` | json | Image-specific metadata |
| ↳ `videoMediaMetadata` | json | Video-specific metadata |
| ↳ `isAppAuthorized` | boolean | Whether created by requesting app |
| ↳ `contentRestrictions` | json | Content restrictions |
| ↳ `linkShareMetadata` | json | Link share metadata |
### Download File from Google Drive [#download-file-from-google-drive]
Download a file from Google Drive with complete metadata (exports Google Workspace files automatically)
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------ |
| `fileId` | string | Yes | The ID of the file to download |
| `mimeType` | string | No | The MIME type to export Google Workspace files to (optional) |
| `fileName` | string | No | Optional filename override |
| `includeRevisions` | boolean | No | Whether to include revision history in the metadata (default: true, returns first 100 revisions) |
#### Output [#output-5]
| Parameter | Type | Description |
| -------------------------------- | ------- | ------------------------------------------------ |
| `file` | file | Downloaded file stored in execution files |
| `metadata` | object | Complete file metadata from Google Drive |
| ↳ `id` | string | Google Drive file ID |
| ↳ `kind` | string | Resource type identifier |
| ↳ `name` | string | File name |
| ↳ `mimeType` | string | MIME type |
| ↳ `description` | string | File description |
| ↳ `originalFilename` | string | Original uploaded filename |
| ↳ `fullFileExtension` | string | Full file extension |
| ↳ `fileExtension` | string | File extension |
| ↳ `owners` | json | List of file owners |
| ↳ `permissions` | json | File permissions |
| ↳ `permissionIds` | json | Permission IDs |
| ↳ `shared` | boolean | Whether file is shared |
| ↳ `ownedByMe` | boolean | Whether owned by current user |
| ↳ `writersCanShare` | boolean | Whether writers can share |
| ↳ `viewersCanCopyContent` | boolean | Whether viewers can copy |
| ↳ `copyRequiresWriterPermission` | boolean | Whether copy requires writer permission |
| ↳ `sharingUser` | json | User who shared the file |
| ↳ `starred` | boolean | Whether file is starred |
| ↳ `trashed` | boolean | Whether file is in trash |
| ↳ `explicitlyTrashed` | boolean | Whether explicitly trashed |
| ↳ `appProperties` | json | App-specific properties |
| ↳ `createdTime` | string | File creation time |
| ↳ `modifiedTime` | string | Last modification time |
| ↳ `modifiedByMeTime` | string | When modified by current user |
| ↳ `viewedByMeTime` | string | When last viewed by current user |
| ↳ `sharedWithMeTime` | string | When shared with current user |
| ↳ `lastModifyingUser` | json | User who last modified the file |
| ↳ `viewedByMe` | boolean | Whether viewed by current user |
| ↳ `modifiedByMe` | boolean | Whether modified by current user |
| ↳ `webViewLink` | string | URL to view in browser |
| ↳ `webContentLink` | string | Direct download URL |
| ↳ `iconLink` | string | URL to file icon |
| ↳ `thumbnailLink` | string | URL to thumbnail |
| ↳ `exportLinks` | json | Export format links |
| ↳ `size` | string | File size in bytes |
| ↳ `quotaBytesUsed` | string | Storage quota used |
| ↳ `md5Checksum` | string | MD5 hash |
| ↳ `sha1Checksum` | string | SHA-1 hash |
| ↳ `sha256Checksum` | string | SHA-256 hash |
| ↳ `parents` | json | Parent folder IDs |
| ↳ `spaces` | json | Spaces containing file |
| ↳ `driveId` | string | Shared drive ID |
| ↳ `capabilities` | json | User capabilities on file |
| ↳ `version` | string | Version number |
| ↳ `headRevisionId` | string | Head revision ID |
| ↳ `hasThumbnail` | boolean | Whether has thumbnail |
| ↳ `thumbnailVersion` | string | Thumbnail version |
| ↳ `imageMediaMetadata` | json | Image-specific metadata |
| ↳ `videoMediaMetadata` | json | Video-specific metadata |
| ↳ `isAppAuthorized` | boolean | Whether created by requesting app |
| ↳ `contentRestrictions` | json | Content restrictions |
| ↳ `linkShareMetadata` | json | Link share metadata |
| ↳ `revisions` | json | File revision history (first 100 revisions only) |
### Copy Google Drive File [#copy-google-drive-file]
Create a copy of a file in Google Drive
#### Input [#input-6]
| Parameter | Type | Required | Description |
| --------------------- | ------ | -------- | ----------------------------------------------------------------------------- |
| `fileId` | string | Yes | The ID of the file to copy |
| `newName` | string | No | Name for the copied file (defaults to "Copy of \[original name]") |
| `destinationFolderId` | string | No | ID of the folder to place the copy in (defaults to same location as original) |
#### Output [#output-6]
| Parameter | Type | Description |
| ---------------- | ------ | -------------------------------- |
| `file` | json | The copied file metadata |
| ↳ `id` | string | Google Drive file ID of the copy |
| ↳ `kind` | string | Resource type identifier |
| ↳ `name` | string | File name |
| ↳ `mimeType` | string | MIME type |
| ↳ `webViewLink` | string | URL to view in browser |
| ↳ `parents` | json | Parent folder IDs |
| ↳ `createdTime` | string | File creation time |
| ↳ `modifiedTime` | string | Last modification time |
| ↳ `owners` | json | List of file owners |
| ↳ `size` | string | File size in bytes |
### Move Google Drive File [#move-google-drive-file]
Move a file or folder to a different folder in Google Drive
#### Input [#input-7]
| Parameter | Type | Required | Description |
| --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `fileId` | string | Yes | The ID of the file or folder to move |
| `destinationFolderId` | string | Yes | The ID of the destination folder |
| `removeFromCurrent` | boolean | No | Whether to remove the file from its current parent folder (default: true). Set to false to add the file to the destination without removing it from the current location. |
#### Output [#output-7]
| Parameter | Type | Description |
| ---------------- | ------ | ------------------------ |
| `file` | json | The moved file metadata |
| ↳ `id` | string | Google Drive file ID |
| ↳ `kind` | string | Resource type identifier |
| ↳ `name` | string | File name |
| ↳ `mimeType` | string | MIME type |
| ↳ `webViewLink` | string | URL to view in browser |
| ↳ `parents` | json | Parent folder IDs |
| ↳ `createdTime` | string | File creation time |
| ↳ `modifiedTime` | string | Last modification time |
| ↳ `owners` | json | List of file owners |
| ↳ `size` | string | File size in bytes |
### Search Google Drive Files [#search-google-drive-files]
Search for files in Google Drive using advanced query syntax (e.g., fullText contains, mimeType, modifiedTime, etc.)
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `query` | string | Yes | Google Drive query string using advanced search syntax (e.g., "fullText contains 'budget'", "mimeType = 'application/pdf'", "modifiedTime > '2024-01-01'") |
| `pageSize` | number | No | Maximum number of files to return (default: 100) |
| `pageToken` | string | No | Token for fetching the next page of results |
#### Output [#output-8]
| Parameter | Type | Description |
| --------------------- | ------- | -------------------------------------------------------- |
| `files` | array | Array of file metadata objects matching the search query |
| ↳ `id` | string | Google Drive file ID |
| ↳ `kind` | string | Resource type identifier |
| ↳ `name` | string | File name |
| ↳ `mimeType` | string | MIME type |
| ↳ `description` | string | File description |
| ↳ `originalFilename` | string | Original uploaded filename |
| ↳ `fullFileExtension` | string | Full file extension |
| ↳ `fileExtension` | string | File extension |
| ↳ `owners` | json | List of file owners |
| ↳ `permissions` | json | File permissions |
| ↳ `shared` | boolean | Whether file is shared |
| ↳ `ownedByMe` | boolean | Whether owned by current user |
| ↳ `starred` | boolean | Whether file is starred |
| ↳ `trashed` | boolean | Whether file is in trash |
| ↳ `createdTime` | string | File creation time |
| ↳ `modifiedTime` | string | Last modification time |
| ↳ `lastModifyingUser` | json | User who last modified the file |
| ↳ `webViewLink` | string | URL to view in browser |
| ↳ `webContentLink` | string | Direct download URL |
| ↳ `iconLink` | string | URL to file icon |
| ↳ `thumbnailLink` | string | URL to thumbnail |
| ↳ `size` | string | File size in bytes |
| ↳ `parents` | json | Parent folder IDs |
| ↳ `driveId` | string | Shared drive ID |
| ↳ `capabilities` | json | User capabilities on file |
| ↳ `version` | string | Version number |
| `nextPageToken` | string | Token for fetching the next page of results |
### Update Google Drive File [#update-google-drive-file]
Update file metadata in Google Drive (rename, move, star, add description)
#### Input [#input-9]
| Parameter | Type | Required | Description |
| --------------- | ------- | -------- | ------------------------------------------------------------------------------ |
| `fileId` | string | Yes | The ID of the file to update |
| `name` | string | No | New name for the file |
| `description` | string | No | New description for the file |
| `addParents` | string | No | Comma-separated list of parent folder IDs to add (moves file to these folders) |
| `removeParents` | string | No | Comma-separated list of parent folder IDs to remove |
| `starred` | boolean | No | Whether to star or unstar the file |
#### Output [#output-9]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------- |
| `file` | json | The updated file metadata |
| ↳ `id` | string | Google Drive file ID |
| ↳ `kind` | string | Resource type identifier |
| ↳ `name` | string | File name |
| ↳ `mimeType` | string | MIME type |
| ↳ `description` | string | File description |
| ↳ `starred` | boolean | Whether file is starred |
| ↳ `webViewLink` | string | URL to view in browser |
| ↳ `parents` | json | Parent folder IDs |
| ↳ `modifiedTime` | string | Last modification time |
### Trash Google Drive File [#trash-google-drive-file]
Move a file to the trash in Google Drive (can be restored later)
#### Input [#input-10]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------------- |
| `fileId` | string | Yes | The ID of the file to move to trash |
#### Output [#output-10]
| Parameter | Type | Description |
| --------------- | ------- | ----------------------------------------- |
| `file` | json | The trashed file metadata |
| ↳ `id` | string | Google Drive file ID |
| ↳ `kind` | string | Resource type identifier |
| ↳ `name` | string | File name |
| ↳ `mimeType` | string | MIME type |
| ↳ `trashed` | boolean | Whether file is in trash (should be true) |
| ↳ `trashedTime` | string | When file was trashed |
| ↳ `webViewLink` | string | URL to view in browser |
### Restore Google Drive File [#restore-google-drive-file]
Restore a file from the trash in Google Drive
#### Input [#input-11]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------- |
| `fileId` | string | Yes | The ID of the file to restore from trash |
#### Output [#output-11]
| Parameter | Type | Description |
| --------------- | ------- | ------------------------------------------ |
| `file` | json | The restored file metadata |
| ↳ `id` | string | Google Drive file ID |
| ↳ `kind` | string | Resource type identifier |
| ↳ `name` | string | File name |
| ↳ `mimeType` | string | MIME type |
| ↳ `trashed` | boolean | Whether file is in trash (should be false) |
| ↳ `webViewLink` | string | URL to view in browser |
| ↳ `parents` | json | Parent folder IDs |
### Delete Google Drive File [#delete-google-drive-file]
Permanently delete a file from Google Drive (bypasses trash)
#### Input [#input-12]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------- |
| `fileId` | string | Yes | The ID of the file to permanently delete |
#### Output [#output-12]
| Parameter | Type | Description |
| --------- | ------- | ----------------------------------------- |
| `deleted` | boolean | Whether the file was successfully deleted |
| `fileId` | string | The ID of the deleted file |
### Share Google Drive File [#share-google-drive-file]
Share a file with a user, group, domain, or make it public
#### Input [#input-13]
| Parameter | Type | Required | Description |
| --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `fileId` | string | Yes | The ID of the file to share |
| `type` | string | Yes | Type of grantee: user, group, domain, or anyone |
| `role` | string | Yes | Permission role: owner (transfer ownership), organizer (shared drive only), fileOrganizer (shared drive only), writer (edit), commenter (view and comment), reader (view only) |
| `email` | string | No | Email address of the user or group (required for type=user or type=group) |
| `domain` | string | No | Domain to share with (required for type=domain) |
| `transferOwnership` | boolean | No | Required when role is owner. Transfers ownership to the specified user. |
| `moveToNewOwnersRoot` | boolean | No | When transferring ownership, move the file to the new owner's My Drive root folder. |
| `sendNotification` | boolean | No | Whether to send an email notification (default: true) |
| `emailMessage` | string | No | Custom message to include in the notification email |
#### Output [#output-13]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------ |
| `permission` | json | The created permission details |
| ↳ `id` | string | Permission ID |
| ↳ `type` | string | Grantee type (user, group, domain, anyone) |
| ↳ `role` | string | Permission role |
| ↳ `emailAddress` | string | Email of the grantee |
| ↳ `displayName` | string | Display name of the grantee |
| ↳ `domain` | string | Domain of the grantee |
| ↳ `expirationTime` | string | Expiration time |
| ↳ `deleted` | boolean | Whether grantee is deleted |
### Unshare Google Drive File [#unshare-google-drive-file]
Remove a permission from a file (revoke access)
#### Input [#input-14]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ----------------------------------------------------------------------- |
| `fileId` | string | Yes | The ID of the file to modify permissions on |
| `permissionId` | string | Yes | The ID of the permission to remove (use list\_permissions to find this) |
#### Output [#output-14]
| Parameter | Type | Description |
| -------------- | ------- | ----------------------------------------------- |
| `removed` | boolean | Whether the permission was successfully removed |
| `fileId` | string | The ID of the file |
| `permissionId` | string | The ID of the removed permission |
### List Google Drive Permissions [#list-google-drive-permissions]
List all permissions (who has access) for a file in Google Drive
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------ |
| `fileId` | string | Yes | The ID of the file to list permissions for |
| `pageToken` | string | No | The page token to use for pagination |
#### Output [#output-15]
| Parameter | Type | Description |
| ---------------------- | ------- | ---------------------------------------------------------------------------- |
| `permissions` | array | List of permissions on the file |
| ↳ `id` | string | Permission ID (use to remove permission) |
| ↳ `type` | string | Grantee type (user, group, domain, anyone) |
| ↳ `role` | string | Permission role (owner, organizer, fileOrganizer, writer, commenter, reader) |
| ↳ `emailAddress` | string | Email of the grantee |
| ↳ `displayName` | string | Display name of the grantee |
| ↳ `photoLink` | string | Photo URL of the grantee |
| ↳ `domain` | string | Domain of the grantee |
| ↳ `expirationTime` | string | When permission expires |
| ↳ `deleted` | boolean | Whether grantee account is deleted |
| ↳ `allowFileDiscovery` | boolean | Whether file is discoverable by grantee |
| ↳ `pendingOwner` | boolean | Whether ownership transfer is pending |
| ↳ `permissionDetails` | json | Details about inherited permissions |
| `nextPageToken` | string | Token for fetching the next page of permissions |
### Export Google Drive File [#export-google-drive-file]
Export a Google Workspace file (Docs, Sheets, Slides, Drawings) to a chosen format such as PDF, DOCX, XLSX, or CSV
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------ |
| `fileId` | string | Yes | The ID of the Google Workspace file to export |
| `mimeType` | string | Yes | The target MIME type to export to (e.g. application/pdf, text/csv) |
| `fileName` | string | No | Optional filename override for the exported file |
#### Output [#output-16]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------------------- |
| `file` | file | Exported file stored in execution files |
| `exportedMimeType` | string | The MIME type the file was exported to |
### List Google Drive Revisions [#list-google-drive-revisions]
List the revision history of a file in Google Drive
#### Input [#input-17]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------- |
| `fileId` | string | Yes | The ID of the file to list revisions for |
| `pageSize` | number | No | Maximum number of revisions to return (1-1000, default 200) |
| `pageToken` | string | No | The page token to use for pagination |
#### Output [#output-17]
| Parameter | Type | Description |
| --------------------- | ------- | ------------------------------------------------- |
| `revisions` | array | List of revisions for the file (most recent last) |
| ↳ `id` | string | Revision ID |
| ↳ `mimeType` | string | MIME type of the revision |
| ↳ `modifiedTime` | string | When this revision was created |
| ↳ `keepForever` | boolean | Whether this revision is preserved forever |
| ↳ `published` | boolean | Whether this revision is published |
| ↳ `publishedLink` | string | Public link to the published revision |
| ↳ `lastModifyingUser` | json | User who created this revision |
| ↳ `originalFilename` | string | Original filename for binary revisions |
| ↳ `md5Checksum` | string | MD5 checksum for binary revisions |
| ↳ `size` | string | Size of the revision in bytes |
| ↳ `exportLinks` | json | Export format links for the revision |
| `nextPageToken` | string | Token for fetching the next page of revisions |
### Get Google Drive Revision [#get-google-drive-revision]
Get metadata for a specific revision of a file in Google Drive
#### Input [#input-18]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------ |
| `fileId` | string | Yes | The ID of the file the revision belongs to |
| `revisionId` | string | Yes | The ID of the revision to retrieve |
#### Output [#output-18]
| Parameter | Type | Description |
| --------------------- | ------- | ------------------------------------------ |
| `revision` | json | The revision metadata |
| ↳ `id` | string | Revision ID |
| ↳ `mimeType` | string | MIME type of the revision |
| ↳ `modifiedTime` | string | When this revision was created |
| ↳ `keepForever` | boolean | Whether this revision is preserved forever |
| ↳ `published` | boolean | Whether this revision is published |
| ↳ `publishedLink` | string | Public link to the published revision |
| ↳ `lastModifyingUser` | json | User who created this revision |
| ↳ `originalFilename` | string | Original filename for binary revisions |
| ↳ `md5Checksum` | string | MD5 checksum for binary revisions |
| ↳ `size` | string | Size of the revision in bytes |
| ↳ `exportLinks` | json | Export format links for the revision |
### List Google Drive Comments [#list-google-drive-comments]
List comments on a file in Google Drive
#### Input [#input-19]
| Parameter | Type | Required | Description |
| ------------------- | ------- | -------- | --------------------------------------------------------------- |
| `fileId` | string | Yes | The ID of the file to list comments for |
| `includeDeleted` | boolean | No | Whether to include deleted comments (their content is stripped) |
| `pageSize` | number | No | Maximum number of comments to return (1-100, default 20) |
| `startModifiedTime` | string | No | Only return comments modified after this RFC 3339 timestamp |
| `pageToken` | string | No | The page token to use for pagination |
#### Output [#output-19]
| Parameter | Type | Description |
| --------------------- | ------- | -------------------------------------------- |
| `comments` | array | List of comments on the file |
| ↳ `id` | string | Comment ID |
| ↳ `content` | string | Plain text content of the comment |
| ↳ `htmlContent` | string | HTML-formatted content of the comment |
| ↳ `author` | json | User who authored the comment |
| ↳ `createdTime` | string | When the comment was created |
| ↳ `modifiedTime` | string | When the comment was last modified |
| ↳ `resolved` | boolean | Whether the comment has been resolved |
| ↳ `deleted` | boolean | Whether the comment has been deleted |
| ↳ `anchor` | string | Region of the document the comment refers to |
| ↳ `quotedFileContent` | json | The file content the comment quotes |
| ↳ `replies` | json | Threaded replies to the comment |
| `nextPageToken` | string | Token for fetching the next page of comments |
### Create Google Drive Comment [#create-google-drive-comment]
Add a comment to a file in Google Drive
#### Input [#input-20]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------- |
| `fileId` | string | Yes | The ID of the file to comment on |
| `content` | string | Yes | The plain text content of the comment |
| `anchor` | string | No | A region of the document the comment refers to (JSON anchor string) |
#### Output [#output-20]
| Parameter | Type | Description |
| --------------------- | ------- | -------------------------------------------- |
| `comment` | json | The created comment |
| ↳ `id` | string | Comment ID |
| ↳ `content` | string | Plain text content of the comment |
| ↳ `htmlContent` | string | HTML-formatted content of the comment |
| ↳ `author` | json | User who authored the comment |
| ↳ `createdTime` | string | When the comment was created |
| ↳ `modifiedTime` | string | When the comment was last modified |
| ↳ `resolved` | boolean | Whether the comment has been resolved |
| ↳ `deleted` | boolean | Whether the comment has been deleted |
| ↳ `anchor` | string | Region of the document the comment refers to |
| ↳ `quotedFileContent` | json | The file content the comment quotes |
| ↳ `replies` | json | Threaded replies to the comment |
### Delete Google Drive Comment [#delete-google-drive-comment]
Delete a comment from a file in Google Drive
#### Input [#input-21]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------- |
| `fileId` | string | Yes | The ID of the file the comment belongs to |
| `commentId` | string | Yes | The ID of the comment to delete |
#### Output [#output-21]
| Parameter | Type | Description |
| ----------- | ------- | -------------------------------------------- |
| `deleted` | boolean | Whether the comment was successfully deleted |
| `fileId` | string | The ID of the file |
| `commentId` | string | The ID of the deleted comment |
### Get Google Drive Info [#get-google-drive-info]
Get information about the user and their Google Drive (storage quota, capabilities)
#### Input [#input-22]
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
#### Output [#output-22]
| Parameter | Type | Description |
| --------------------- | ------- | --------------------------------------------------------------- |
| `user` | json | Information about the authenticated user |
| ↳ `displayName` | string | User display name |
| ↳ `emailAddress` | string | User email address |
| ↳ `photoLink` | string | URL to user profile photo |
| ↳ `permissionId` | string | User permission ID |
| ↳ `me` | boolean | Whether this is the authenticated user |
| `storageQuota` | json | Storage quota information in bytes |
| ↳ `limit` | string | Total storage limit in bytes (null for unlimited) |
| ↳ `usage` | string | Total storage used in bytes |
| ↳ `usageInDrive` | string | Storage used by Drive files in bytes |
| ↳ `usageInDriveTrash` | string | Storage used by trashed files in bytes |
| `canCreateDrives` | boolean | Whether user can create shared drives |
| `importFormats` | json | Map of MIME types that can be imported and their target formats |
| `exportFormats` | json | Map of Google Workspace MIME types and their exportable formats |
| `maxUploadSize` | string | Maximum upload size in bytes |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
These run on a schedule (**polling-based**) — they check for new data rather than receiving push notifications.
### Google Drive File Trigger [#google-drive-file-trigger]
Triggers when files are created, modified, or deleted in Google Drive
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| --------------------- | ------------- | -------- | ----------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | Connect your Google account to access Google Drive. |
| `folderId` | file-selector | No | Optional: The folder to monitor. Leave empty to monitor all files in Drive. |
| `manualFolderId` | string | No | Optional: The folder ID from the Google Drive URL to monitor. Leave empty to monitor all files. |
| `mimeTypeFilter` | string | No | Optional: Only trigger for specific file types. |
| `eventTypeFilter` | string | No | Only trigger for specific change types. Defaults to all changes. |
| `includeSharedDrives` | boolean | No | Include files from shared (team) drives. |
#### Output [#output-23]
| Parameter | Type | Description |
| --------------------- | ------- | ------------------------------------------------ |
| `file` | object | file output from the tool |
| ↳ `id` | string | Google Drive file ID |
| ↳ `name` | string | File name |
| ↳ `mimeType` | string | File MIME type |
| ↳ `modifiedTime` | string | Last modified time (ISO) |
| ↳ `createdTime` | string | File creation time (ISO) |
| ↳ `size` | string | File size in bytes |
| ↳ `webViewLink` | string | URL to view file in browser |
| ↳ `parents` | json | Parent folder IDs |
| ↳ `lastModifyingUser` | json | User who last modified the file |
| ↳ `shared` | boolean | Whether file is shared |
| ↳ `starred` | boolean | Whether file is starred |
| `eventType` | string | Change type: "created", "modified", or "deleted" |
| `timestamp` | string | Event timestamp in ISO format |
---
# Google Forms (/integrations/google_forms)
{/* MANUAL-CONTENT-START:intro */}
[Google Forms](https://forms.google.com) is Google's online survey and form tool that allows users to create forms, collect responses, and analyze results. As part of Google's productivity suite, Google Forms makes it easy to gather information, feedback, and data from users.
Learn how to integrate the Google Forms tool in Sim to automatically read and process form responses in your workflows. This tutorial walks you through connecting Google Forms, retrieving responses, and using collected data to power automation. Perfect for syncing survey results, registrations, or feedback with your agents in real-time.
With Google Forms, you can:
* **Create surveys and forms**: Design custom forms for feedback, registration, quizzes, and more
* **Collect responses automatically**: Gather data from users in real-time
* **Analyze results**: View responses in Google Forms or export to Google Sheets for further analysis
* **Collaborate easily**: Share forms and work with others to build and review questions
* **Integrate with other Google services**: Connect with Google Sheets, Drive, and more
In Sim, the Google Forms integration enables your agents to programmatically access form responses. This allows for powerful automation scenarios such as processing survey data, triggering workflows based on new submissions, and syncing form results with other tools. Your agents can fetch all responses for a form, retrieve a specific response, and use the data to drive intelligent automation. By connecting Sim with Google Forms, you can automate data collection, streamline feedback processing, and incorporate form responses into your agent's capabilities.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Google Forms into your workflow. Read form structure, get responses, create forms, update content, and manage notification watches.
## Actions [#actions]
### Google Forms: Get Responses [#google-forms-get-responses]
Retrieve a single response or list responses from a Google Form
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------- |
| `formId` | string | Yes | Google Forms form ID |
| `responseId` | string | No | Response ID - if provided, returns this specific response |
| `pageSize` | number | No | Maximum number of responses to return (service may return fewer). Defaults to 5000. |
| `pageToken` | string | No | Page token from a previous list response to fetch the next page of responses |
| `filter` | string | No | Filter responses, e.g. "timestamp > 2024-01-01T00:00:00Z" (RFC3339 UTC). Only timestamp filters are supported. |
#### Output [#output]
| Parameter | Type | Description |
| --------------------- | ------ | ------------------------------------------------------------------- |
| `responses` | array | Array of form responses (when no responseId provided) |
| ↳ `responseId` | string | Unique response ID |
| ↳ `createTime` | string | When the response was created |
| ↳ `lastSubmittedTime` | string | When the response was last submitted |
| ↳ `answers` | json | Map of question IDs to answer values |
| `nextPageToken` | string | Token to fetch the next page of responses (null when no more pages) |
| `response` | object | Single form response (when responseId is provided) |
| ↳ `responseId` | string | Unique response ID |
| ↳ `createTime` | string | When the response was created |
| ↳ `lastSubmittedTime` | string | When the response was last submitted |
| ↳ `answers` | json | Map of question IDs to answer values |
| `raw` | json | Raw API response data |
### Google Forms: Get Form [#google-forms-get-form]
Retrieve a form structure including its items, settings, and metadata
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------- |
| `formId` | string | Yes | Google Forms form ID to retrieve |
#### Output [#output-1]
| Parameter | Type | Description |
| ----------------- | ------ | ------------------------------------------ |
| `formId` | string | The form ID |
| `title` | string | The form title visible to responders |
| `description` | string | The form description |
| `documentTitle` | string | The document title visible in Drive |
| `responderUri` | string | The URI to share with responders |
| `linkedSheetId` | string | The ID of the linked Google Sheet |
| `revisionId` | string | The revision ID of the form |
| `items` | array | The form items (questions, sections, etc.) |
| ↳ `itemId` | string | Item ID |
| ↳ `title` | string | Item title |
| ↳ `description` | string | Item description |
| `settings` | json | Form settings |
| `publishSettings` | json | Form publish settings |
### Google Forms: Create Form [#google-forms-create-form]
Create a new Google Form with a title
#### Input [#input-2]
| Parameter | Type | Required | Description |
| --------------- | ------- | -------- | ------------------------------------------------------------------ |
| `title` | string | Yes | The title of the form visible to responders |
| `documentTitle` | string | No | The document title visible in Drive (defaults to form title) |
| `unpublished` | boolean | No | If true, create an unpublished form that does not accept responses |
#### Output [#output-2]
| Parameter | Type | Description |
| --------------- | ------ | -------------------------------- |
| `formId` | string | The ID of the created form |
| `title` | string | The form title |
| `documentTitle` | string | The document title in Drive |
| `responderUri` | string | The URI to share with responders |
| `revisionId` | string | The revision ID of the form |
### Google Forms: Batch Update [#google-forms-batch-update]
Apply multiple updates to a form (add items, update info, change settings, etc.)
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ----------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------- |
| `formId` | string | Yes | Google Forms form ID |
| `requests` | json | Yes | Array of update requests (updateFormInfo, updateSettings, createItem, updateItem, moveItem, deleteItem) |
| `includeFormInResponse` | boolean | No | Whether to return the updated form in the response |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------------------ | ------- | ---------------------------------------------------- |
| `replies` | array | The replies from each update request |
| `writeControl` | object | Write control information with revision IDs |
| ↳ `requiredRevisionId` | string | Required revision ID for conflict detection |
| ↳ `targetRevisionId` | string | Target revision ID |
| `form` | object | The updated form (if includeFormInResponse was true) |
| ↳ `formId` | string | The form ID |
| ↳ `info` | object | Form info containing title and description |
| ↳ `title` | string | The form title visible to responders |
| ↳ `description` | string | The form description |
| ↳ `documentTitle` | string | The document title visible in Drive |
| ↳ `settings` | object | Form settings |
| ↳ `quizSettings` | object | Quiz settings |
| ↳ `isQuiz` | boolean | Whether the form is a quiz |
| ↳ `emailCollectionType` | string | Email collection type |
| ↳ `items` | array | The form items (questions, sections, etc.) |
| ↳ `itemId` | string | Item ID |
| ↳ `title` | string | Item title |
| ↳ `description` | string | Item description |
| ↳ `questionItem` | json | Question item configuration |
| ↳ `questionGroupItem` | json | Question group configuration |
| ↳ `pageBreakItem` | json | Page break configuration |
| ↳ `textItem` | json | Text item configuration |
| ↳ `imageItem` | json | Image item configuration |
| ↳ `videoItem` | json | Video item configuration |
| ↳ `revisionId` | string | The revision ID of the form |
| ↳ `responderUri` | string | The URI to share with responders |
| ↳ `linkedSheetId` | string | The ID of the linked Google Sheet |
| ↳ `publishSettings` | object | Form publish settings |
| ↳ `publishState` | object | Current publish state |
| ↳ `isPublished` | boolean | Whether the form is published |
| ↳ `isAcceptingResponses` | boolean | Whether the form is accepting responses |
### Google Forms: Set Publish Settings [#google-forms-set-publish-settings]
Update the publish settings of a form (publish/unpublish, accept responses)
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ---------------------- | ------- | -------- | ---------------------------------------------------------------------------- |
| `formId` | string | Yes | Google Forms form ID |
| `isPublished` | boolean | Yes | Whether the form is published and visible to others |
| `isAcceptingResponses` | boolean | No | Whether the form accepts responses (forced to false if isPublished is false) |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------------------ | ------- | ---------------------------------- |
| `formId` | string | The form ID |
| `publishSettings` | json | The updated publish settings |
| ↳ `publishState` | object | The publish state |
| ↳ `isPublished` | boolean | Whether the form is published |
| ↳ `isAcceptingResponses` | boolean | Whether the form accepts responses |
### Google Forms: Create Watch [#google-forms-create-watch]
Create a notification watch for form changes (schema changes or new responses)
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | -------------------------------------------------------------------------- |
| `formId` | string | Yes | Google Forms form ID to watch |
| `eventType` | string | Yes | Event type to watch: SCHEMA (form changes) or RESPONSES (new submissions) |
| `topicName` | string | Yes | The Cloud Pub/Sub topic name (format: projects/\{project}/topics/\{topic}) |
| `watchId` | string | No | Custom watch ID (4-63 chars, lowercase letters, numbers, hyphens) |
#### Output [#output-5]
| Parameter | Type | Description |
| ------------ | ------ | ---------------------------------------------- |
| `id` | string | The watch ID |
| `eventType` | string | The event type being watched |
| `topicName` | string | The Cloud Pub/Sub topic |
| `createTime` | string | When the watch was created |
| `expireTime` | string | When the watch expires (7 days after creation) |
| `state` | string | The watch state (ACTIVE, SUSPENDED) |
### Google Forms: List Watches [#google-forms-list-watches]
List all notification watches for a form
#### Input [#input-6]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------- |
| `formId` | string | Yes | Google Forms form ID |
#### Output [#output-6]
| Parameter | Type | Description |
| -------------- | ------ | -------------------------------- |
| `watches` | array | List of watches for the form |
| ↳ `id` | string | Watch ID |
| ↳ `eventType` | string | Event type (SCHEMA or RESPONSES) |
| ↳ `createTime` | string | When the watch was created |
| ↳ `expireTime` | string | When the watch expires |
| ↳ `state` | string | Watch state |
### Google Forms: Delete Watch [#google-forms-delete-watch]
Delete a notification watch from a form
#### Input [#input-7]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------- |
| `formId` | string | Yes | Google Forms form ID |
| `watchId` | string | Yes | Watch ID to delete |
#### Output [#output-7]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------------ |
| `deleted` | boolean | Whether the watch was successfully deleted |
### Google Forms: Renew Watch [#google-forms-renew-watch]
Renew a notification watch for another 7 days
#### Input [#input-8]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------- |
| `formId` | string | Yes | Google Forms form ID |
| `watchId` | string | Yes | Watch ID to renew |
#### Output [#output-8]
| Parameter | Type | Description |
| ------------ | ------ | ---------------------------- |
| `id` | string | The watch ID |
| `eventType` | string | The event type being watched |
| `expireTime` | string | The new expiration time |
| `state` | string | The watch state |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
### Google Forms Webhook [#google-forms-webhook]
Trigger workflow from Google Form submissions (via Apps Script forwarder)
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| ------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------- |
| `token` | string | Yes | We validate requests using this secret. Send it as Authorization: Bearer \ or a custom header. |
| `secretHeaderName` | string | No | If set, the webhook will validate this header equals your Shared Secret instead of Authorization. |
| `triggerFormId` | string | No | Optional, for clarity and matching in workflows. Not required for webhook to work. |
| `includeRawPayload` | boolean | No | Include the original payload from Apps Script in the workflow input. |
| `setupScript` | string | No | Copy this code and paste it into your Google Forms Apps Script editor |
#### Output [#output-9]
| Parameter | Type | Description |
| ------------------- | ------ | ----------------------------------------- |
| `responseId` | string | Unique response identifier (if available) |
| `createTime` | string | Response creation timestamp |
| `lastSubmittedTime` | string | Last submitted timestamp |
| `formId` | string | Google Form ID |
| `answers` | object | Normalized map of question -> answer |
| `raw` | object | Original payload (when enabled) |
---
# Google Groups (/integrations/google_groups)
{/* MANUAL-CONTENT-START:intro */}
[Google Groups](https://groups.google.com) is part of Google Workspace, providing email-based group communication, collaboration, and access control for teams and organizations. Google Groups lets you create mailing lists, manage membership, and control permissions for both internal and external users.
This page explains how you can use Sim to automate the management of Google Groups in your workflows. With Sim, agents can create and configure groups, add or remove members, update group settings, and keep directory lists up-to-date automatically—ideal for onboarding workflows, syncing IT systems, or dynamically managing project teams.
With Google Groups, you can:
* **Centralize communications**: Create team or project mailing lists for group conversations
* **Manage group membership**: Add, remove, or update members with granular roles (owner, manager, member)
* **Control access**: Manage who can view, post, or join; set permissions for public/private visibility
* **Collaborate across teams**: Streamline communication and document sharing via group-based access
* **Automate IT tasks**: Use Sim to keep group memberships current as teams change
In Sim, the Google Groups integration gives your agents API-driven control to automate common administrative tasks. Connect directly to your Google Workspace domain to add users to groups, manage lists, audit group settings, and ensure your organization’s access controls are always up-to-date—without manual overhead.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Connect to Google Workspace to create, update, and manage groups and their members using the Admin SDK Directory API.
## Actions [#actions]
### Google Groups List Groups [#google-groups-list-groups]
List all groups in a Google Workspace domain
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ----------------------------------------------------------------- |
| `customer` | string | No | Customer ID or "my\_customer" for the authenticated user's domain |
| `domain` | string | No | Domain name to filter groups by |
| `maxResults` | number | No | Maximum number of results to return (1-200). Example: 50 |
| `pageToken` | string | No | Token for fetching the next page of results |
| `query` | string | No | Search query to filter groups (e.g., "email:admin\*") |
#### Output [#output]
| Parameter | Type | Description |
| --------------- | ------ | --------------------------------------- |
| `groups` | json | Array of group objects |
| `nextPageToken` | string | Token for fetching next page of results |
### Google Groups Get Group [#google-groups-get-group]
Get details of a specific Google Group by email or group ID
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- |
| `groupKey` | string | Yes | Group identifier. Can be the group email address (e.g., [team@example.com](mailto:team@example.com)) or the unique group ID |
#### Output [#output-1]
| Parameter | Type | Description |
| --------- | ---- | ------------ |
| `group` | json | Group object |
### Google Groups Create Group [#google-groups-create-group]
Create a new Google Group in the domain
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ----------------------------------------------------------------------------------- |
| `email` | string | Yes | Email address for the new group (e.g., [team@example.com](mailto:team@example.com)) |
| `name` | string | Yes | Display name for the group (e.g., Engineering Team) |
| `description` | string | No | Description of the group |
#### Output [#output-2]
| Parameter | Type | Description |
| --------- | ---- | -------------------- |
| `group` | json | Created group object |
### Google Groups Update Group [#google-groups-update-group]
Update an existing Google Group
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- |
| `groupKey` | string | Yes | Group identifier. Can be the group email address (e.g., [team@example.com](mailto:team@example.com)) or the unique group ID |
| `name` | string | No | New display name for the group (e.g., Engineering Team) |
| `description` | string | No | New description for the group |
| `email` | string | No | New email address for the group (e.g., [newteam@example.com](mailto:newteam@example.com)) |
#### Output [#output-3]
| Parameter | Type | Description |
| --------- | ---- | -------------------- |
| `group` | json | Updated group object |
### Google Groups Delete Group [#google-groups-delete-group]
Delete a Google Group
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `groupKey` | string | Yes | Group identifier to delete. Can be the group email address (e.g., [team@example.com](mailto:team@example.com)) or the unique group ID |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ------ | --------------- |
| `message` | string | Success message |
### Google Groups List Members [#google-groups-list-members]
List all members of a Google Group
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- |
| `groupKey` | string | Yes | Group identifier. Can be the group email address (e.g., [team@example.com](mailto:team@example.com)) or the unique group ID |
| `maxResults` | number | No | Maximum number of results to return (1-200). Example: 50 |
| `pageToken` | string | No | Token for fetching the next page of results |
| `roles` | string | No | Filter by roles (comma-separated: OWNER, MANAGER, MEMBER) |
#### Output [#output-5]
| Parameter | Type | Description |
| --------------- | ------ | --------------------------------------- |
| `members` | json | Array of member objects |
| `nextPageToken` | string | Token for fetching next page of results |
### Google Groups Get Member [#google-groups-get-member]
Get details of a specific member in a Google Group
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `groupKey` | string | Yes | Group identifier. Can be the group email address (e.g., [team@example.com](mailto:team@example.com)) or the unique group ID |
| `memberKey` | string | Yes | Member identifier. Can be the member email address (e.g., [user@example.com](mailto:user@example.com)) or the unique member ID |
#### Output [#output-6]
| Parameter | Type | Description |
| --------- | ---- | ------------- |
| `member` | json | Member object |
### Google Groups Add Member [#google-groups-add-member]
Add a new member to a Google Group
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- |
| `groupKey` | string | Yes | Group identifier. Can be the group email address (e.g., [team@example.com](mailto:team@example.com)) or the unique group ID |
| `email` | string | Yes | Email address of the member to add (e.g., [user@example.com](mailto:user@example.com)) |
| `role` | string | No | Role for the member: MEMBER, MANAGER, or OWNER. Defaults to MEMBER |
#### Output [#output-7]
| Parameter | Type | Description |
| --------- | ---- | ------------------- |
| `member` | json | Added member object |
### Google Groups Remove Member [#google-groups-remove-member]
Remove a member from a Google Group
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `groupKey` | string | Yes | Group identifier. Can be the group email address (e.g., [team@example.com](mailto:team@example.com)) or the unique group ID |
| `memberKey` | string | Yes | Member identifier to remove. Can be the member email address (e.g., [user@example.com](mailto:user@example.com)) or the unique member ID |
#### Output [#output-8]
| Parameter | Type | Description |
| --------- | ------ | --------------- |
| `message` | string | Success message |
### Google Groups Update Member [#google-groups-update-member]
Update a member's role in a Google Group (promote or demote)
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `groupKey` | string | Yes | Group identifier. Can be the group email address (e.g., [team@example.com](mailto:team@example.com)) or the unique group ID |
| `memberKey` | string | Yes | Member identifier. Can be the member email address (e.g., [user@example.com](mailto:user@example.com)) or the unique member ID |
| `role` | string | Yes | New role for the member: MEMBER, MANAGER, or OWNER |
#### Output [#output-9]
| Parameter | Type | Description |
| --------- | ---- | --------------------- |
| `member` | json | Updated member object |
### Google Groups Has Member [#google-groups-has-member]
Check if a user is a member of a Google Group
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `groupKey` | string | Yes | Group identifier. Can be the group email address (e.g., [team@example.com](mailto:team@example.com)) or the unique group ID |
| `memberKey` | string | Yes | Member identifier to check. Can be the member email address (e.g., [user@example.com](mailto:user@example.com)) or the unique member ID |
#### Output [#output-10]
| Parameter | Type | Description |
| ---------- | ------- | ----------------------------------------- |
| `isMember` | boolean | Whether the user is a member of the group |
### Google Groups List Aliases [#google-groups-list-aliases]
List all email aliases for a Google Group
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- |
| `groupKey` | string | Yes | Group identifier. Can be the group email address (e.g., [team@example.com](mailto:team@example.com)) or the unique group ID |
#### Output [#output-11]
| Parameter | Type | Description |
| ---------------- | ------ | ----------------------------------- |
| `aliases` | array | List of email aliases for the group |
| ↳ `id` | string | Unique group identifier |
| ↳ `primaryEmail` | string | Group's primary email address |
| ↳ `alias` | string | Alias email address |
| ↳ `kind` | string | API resource type |
| ↳ `etag` | string | Resource version identifier |
### Google Groups Add Alias [#google-groups-add-alias]
Add an email alias to a Google Group
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- |
| `groupKey` | string | Yes | Group identifier. Can be the group email address (e.g., [team@example.com](mailto:team@example.com)) or the unique group ID |
| `alias` | string | Yes | The email alias to add to the group |
#### Output [#output-12]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------- |
| `id` | string | Unique group identifier |
| `primaryEmail` | string | Group's primary email address |
| `alias` | string | The alias that was added |
| `kind` | string | API resource type |
| `etag` | string | Resource version identifier |
### Google Groups Remove Alias [#google-groups-remove-alias]
Remove an email alias from a Google Group
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- |
| `groupKey` | string | Yes | Group identifier. Can be the group email address (e.g., [team@example.com](mailto:team@example.com)) or the unique group ID |
| `alias` | string | Yes | The email alias to remove from the group |
#### Output [#output-13]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------------ |
| `deleted` | boolean | Whether the alias was successfully deleted |
### Google Groups Get Settings [#google-groups-get-settings]
Get the settings for a Google Group including access permissions, moderation, and posting options
#### Input [#input-14]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ---------------------------------------------------------------------------------- |
| `groupEmail` | string | Yes | The email address of the group (e.g., [team@example.com](mailto:team@example.com)) |
#### Output [#output-14]
| Parameter | Type | Description |
| ------------------------------------ | ------ | ------------------------------------------------------------------------------------------------------------------ |
| `email` | string | The group's email address |
| `name` | string | The group name (max 75 characters) |
| `description` | string | The group description (max 4096 characters) |
| `whoCanJoin` | string | Who can join the group (ANYONE\_CAN\_JOIN, ALL\_IN\_DOMAIN\_CAN\_JOIN, INVITED\_CAN\_JOIN, CAN\_REQUEST\_TO\_JOIN) |
| `whoCanViewMembership` | string | Who can view group membership |
| `whoCanViewGroup` | string | Who can view group messages |
| `whoCanPostMessage` | string | Who can post messages to the group |
| `allowExternalMembers` | string | Whether external users can be members |
| `allowWebPosting` | string | Whether web posting is allowed |
| `primaryLanguage` | string | The group's primary language |
| `isArchived` | string | Whether messages are archived |
| `archiveOnly` | string | Whether the group is archive-only (inactive) |
| `messageModerationLevel` | string | Message moderation level |
| `spamModerationLevel` | string | Spam handling level (ALLOW, MODERATE, SILENTLY\_MODERATE, REJECT) |
| `replyTo` | string | Default reply destination |
| `customReplyTo` | string | Custom email for replies |
| `includeCustomFooter` | string | Whether to include custom footer |
| `customFooterText` | string | Custom footer text (max 1000 characters) |
| `sendMessageDenyNotification` | string | Whether to send rejection notifications |
| `defaultMessageDenyNotificationText` | string | Default rejection message text |
| `membersCanPostAsTheGroup` | string | Whether members can post as the group |
| `includeInGlobalAddressList` | string | Whether included in Global Address List |
| `whoCanLeaveGroup` | string | Who can leave the group |
| `whoCanContactOwner` | string | Who can contact the group owner |
| `favoriteRepliesOnTop` | string | Whether favorite replies appear at top |
| `whoCanApproveMembers` | string | Who can approve new members |
| `whoCanBanUsers` | string | Who can ban users |
| `whoCanModerateMembers` | string | Who can manage members |
| `whoCanModerateContent` | string | Who can moderate content |
| `whoCanAssistContent` | string | Who can assist with content metadata |
| `enableCollaborativeInbox` | string | Whether collaborative inbox is enabled |
| `whoCanDiscoverGroup` | string | Who can discover the group |
| `defaultSender` | string | Default sender identity (DEFAULT\_SELF or GROUP) |
### Google Groups Update Settings [#google-groups-update-settings]
Update the settings for a Google Group including access permissions, moderation, and posting options
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ------------------------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `groupEmail` | string | Yes | The email address of the group (e.g., [team@example.com](mailto:team@example.com)) |
| `name` | string | No | The group name (max 75 characters) |
| `description` | string | No | The group description (max 4096 characters) |
| `whoCanJoin` | string | No | Who can join: ANYONE\_CAN\_JOIN, ALL\_IN\_DOMAIN\_CAN\_JOIN, INVITED\_CAN\_JOIN, CAN\_REQUEST\_TO\_JOIN |
| `whoCanViewMembership` | string | No | Who can view membership: ALL\_IN\_DOMAIN\_CAN\_VIEW, ALL\_MEMBERS\_CAN\_VIEW, ALL\_MANAGERS\_CAN\_VIEW |
| `whoCanViewGroup` | string | No | Who can view group messages: ANYONE\_CAN\_VIEW, ALL\_IN\_DOMAIN\_CAN\_VIEW, ALL\_MEMBERS\_CAN\_VIEW, ALL\_MANAGERS\_CAN\_VIEW, ALL\_OWNERS\_CAN\_VIEW |
| `whoCanPostMessage` | string | No | Who can post: NONE\_CAN\_POST, ALL\_MANAGERS\_CAN\_POST, ALL\_MEMBERS\_CAN\_POST, ALL\_OWNERS\_CAN\_POST, ALL\_IN\_DOMAIN\_CAN\_POST, ANYONE\_CAN\_POST |
| `allowExternalMembers` | string | No | Whether external users can be members: true or false |
| `allowWebPosting` | string | No | Whether web posting is allowed: true or false |
| `primaryLanguage` | string | No | The group's primary language (e.g., en) |
| `isArchived` | string | No | Whether messages are archived: true or false |
| `archiveOnly` | string | No | Whether the group is archive-only (inactive): true or false |
| `messageModerationLevel` | string | No | Message moderation: MODERATE\_ALL\_MESSAGES, MODERATE\_NON\_MEMBERS, MODERATE\_NEW\_MEMBERS, MODERATE\_NONE |
| `spamModerationLevel` | string | No | Spam handling: ALLOW, MODERATE, SILENTLY\_MODERATE, REJECT |
| `replyTo` | string | No | Default reply: REPLY\_TO\_CUSTOM, REPLY\_TO\_SENDER, REPLY\_TO\_LIST, REPLY\_TO\_OWNER, REPLY\_TO\_IGNORE, REPLY\_TO\_MANAGERS |
| `customReplyTo` | string | No | Custom email for replies (when replyTo is REPLY\_TO\_CUSTOM) |
| `includeCustomFooter` | string | No | Whether to include custom footer: true or false |
| `customFooterText` | string | No | Custom footer text (max 1000 characters) |
| `sendMessageDenyNotification` | string | No | Whether to send rejection notifications: true or false |
| `defaultMessageDenyNotificationText` | string | No | Default rejection message text |
| `membersCanPostAsTheGroup` | string | No | Whether members can post as the group: true or false |
| `includeInGlobalAddressList` | string | No | Whether included in Global Address List: true or false |
| `whoCanLeaveGroup` | string | No | Who can leave: ALL\_MANAGERS\_CAN\_LEAVE, ALL\_MEMBERS\_CAN\_LEAVE, NONE\_CAN\_LEAVE |
| `whoCanContactOwner` | string | No | Who can contact owner: ALL\_IN\_DOMAIN\_CAN\_CONTACT, ALL\_MANAGERS\_CAN\_CONTACT, ALL\_MEMBERS\_CAN\_CONTACT, ANYONE\_CAN\_CONTACT |
| `favoriteRepliesOnTop` | string | No | Whether favorite replies appear at top: true or false |
| `whoCanApproveMembers` | string | No | Who can approve members: ALL\_OWNERS\_CAN\_APPROVE, ALL\_MANAGERS\_CAN\_APPROVE, ALL\_MEMBERS\_CAN\_APPROVE, NONE\_CAN\_APPROVE |
| `whoCanBanUsers` | string | No | Who can ban users: ALL\_MEMBERS, OWNERS\_AND\_MANAGERS, OWNERS\_ONLY, NONE |
| `whoCanModerateMembers` | string | No | Who can manage members: OWNERS\_ONLY, OWNERS\_AND\_MANAGERS, ALL\_MEMBERS, NONE |
| `whoCanModerateContent` | string | No | Who can moderate content: OWNERS\_ONLY, OWNERS\_AND\_MANAGERS, ALL\_MEMBERS, NONE |
| `whoCanAssistContent` | string | No | Who can assist with content metadata: OWNERS\_ONLY, OWNERS\_AND\_MANAGERS, ALL\_MEMBERS, NONE |
| `enableCollaborativeInbox` | string | No | Whether collaborative inbox is enabled: true or false |
| `whoCanDiscoverGroup` | string | No | Who can discover: ANYONE\_CAN\_DISCOVER, ALL\_IN\_DOMAIN\_CAN\_DISCOVER, ALL\_MEMBERS\_CAN\_DISCOVER |
| `defaultSender` | string | No | Default sender: DEFAULT\_SELF or GROUP |
#### Output [#output-15]
| Parameter | Type | Description |
| ------------------------------------ | ------ | --------------------------------------- |
| `email` | string | The group's email address |
| `name` | string | The group name |
| `description` | string | The group description |
| `whoCanJoin` | string | Who can join the group |
| `whoCanViewMembership` | string | Who can view group membership |
| `whoCanViewGroup` | string | Who can view group messages |
| `whoCanPostMessage` | string | Who can post messages to the group |
| `allowExternalMembers` | string | Whether external users can be members |
| `allowWebPosting` | string | Whether web posting is allowed |
| `primaryLanguage` | string | The group's primary language |
| `isArchived` | string | Whether messages are archived |
| `archiveOnly` | string | Whether the group is archive-only |
| `messageModerationLevel` | string | Message moderation level |
| `spamModerationLevel` | string | Spam handling level |
| `replyTo` | string | Default reply destination |
| `customReplyTo` | string | Custom email for replies |
| `includeCustomFooter` | string | Whether to include custom footer |
| `customFooterText` | string | Custom footer text |
| `sendMessageDenyNotification` | string | Whether to send rejection notifications |
| `defaultMessageDenyNotificationText` | string | Default rejection message text |
| `membersCanPostAsTheGroup` | string | Whether members can post as the group |
| `includeInGlobalAddressList` | string | Whether included in Global Address List |
| `whoCanLeaveGroup` | string | Who can leave the group |
| `whoCanContactOwner` | string | Who can contact the group owner |
| `favoriteRepliesOnTop` | string | Whether favorite replies appear at top |
| `whoCanApproveMembers` | string | Who can approve new members |
| `whoCanBanUsers` | string | Who can ban users |
| `whoCanModerateMembers` | string | Who can manage members |
| `whoCanModerateContent` | string | Who can moderate content |
| `whoCanAssistContent` | string | Who can assist with content metadata |
| `enableCollaborativeInbox` | string | Whether collaborative inbox is enabled |
| `whoCanDiscoverGroup` | string | Who can discover the group |
| `defaultSender` | string | Default sender identity |
---
# Google Maps (/integrations/google_maps)
{/* MANUAL-CONTENT-START:intro */}
[Google Maps](https://maps.google.com) is a comprehensive platform offering a wide array of APIs for mapping, geocoding, routing, places, environment data, and more. Through Sim, your agents can leverage key Google Maps Platform APIs to automate a variety of location-based workflows.
**The following Google Maps APIs are included in this integration:**
* **Geocoding API:** Convert addresses into latitude/longitude coordinates and perform reverse geocoding.
* **Directions API:** Calculate driving, walking, cycling, or transit directions and routes between locations.
* **Distance Matrix API:** Compute travel distances and times for multiple origin and destination combinations.
* **Places API:** Search for places (businesses, landmarks, establishments) by name, type, or proximity.
* **Place Details API:** Retrieve detailed information for a specific place, such as address, ratings, hours, and contact info.
* **Elevation API:** Obtain elevation data (height above sea level) for any set of locations globally.
* **Time Zone API:** Look up time zone information for any geographic location.
* **Air Quality API:** Fetch real-time air quality data for specific coordinates.
With these APIs, your Sim agents can automate location lookup and enrichment, plan optimal routes and deliveries, estimate times and distances, analyze place data, enrich records with geographic context, get environmental conditions, and more—all without manual work or external tools.
If you need capabilities beyond what's listed here or want to request support for additional Google Maps APIs, let us know!
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Google Maps Platform APIs into your workflow. Supports geocoding addresses to coordinates, reverse geocoding, getting directions between locations, calculating distance matrices, searching for places, retrieving place details, elevation data, and timezone information.
## Actions [#actions]
### Google Maps Air Quality [#google-maps-air-quality]
Get current air quality data for a location
#### Input [#input]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------- |
| `apiKey` | string | Yes | Google Maps API key with Air Quality API enabled |
| `lat` | number | Yes | Latitude coordinate |
| `lng` | number | Yes | Longitude coordinate |
| `languageCode` | string | No | Language code for the response (e.g., "en", "es") |
#### Output [#output]
| Parameter | Type | Description |
| ----------------------- | ------ | ------------------------------------------------ |
| `dateTime` | string | Timestamp of the air quality data |
| `regionCode` | string | Region code for the location |
| `indexes` | array | Array of air quality indexes |
| ↳ `code` | string | Index code (e.g., "uaqi", "usa\_epa") |
| ↳ `displayName` | string | Display name of the index |
| ↳ `aqi` | number | Air quality index value |
| ↳ `aqiDisplay` | string | Formatted AQI display string |
| ↳ `color` | object | RGB color for the AQI level |
| ↳ `category` | string | Category description (e.g., "Good", "Moderate") |
| ↳ `dominantPollutant` | string | The dominant pollutant |
| `pollutants` | array | Array of pollutant concentrations |
| ↳ `code` | string | Pollutant code (e.g., "pm25", "o3") |
| ↳ `displayName` | string | Display name |
| ↳ `fullName` | string | Full pollutant name |
| ↳ `concentration` | object | Concentration info |
| ↳ `value` | number | Concentration value |
| ↳ `units` | string | Units (e.g., "PARTS\_PER\_BILLION") |
| ↳ `additionalInfo` | object | Additional info about sources and effects |
| `healthRecommendations` | object | Health recommendations for different populations |
### Google Maps Directions [#google-maps-directions]
Get directions and route information between two locations
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------------------- |
| `apiKey` | string | Yes | Google Maps API key |
| `origin` | string | Yes | Starting location (address or lat,lng) |
| `destination` | string | Yes | Destination location (address or lat,lng) |
| `mode` | string | No | Travel mode: driving, walking, bicycling, or transit |
| `avoid` | string | No | Features to avoid: tolls, highways, or ferries |
| `waypoints` | json | No | Array of intermediate waypoints |
| `units` | string | No | Unit system: metric or imperial |
| `language` | string | No | Language code for results (e.g., en, es, fr) |
#### Output [#output-1]
| Parameter | Type | Description |
| -------------------- | ------ | ------------------------------------------------------- |
| `routes` | array | All available routes |
| ↳ `summary` | string | Route summary (main road names) |
| ↳ `legs` | array | Route legs (segments between waypoints) |
| ↳ `overviewPolyline` | string | Encoded polyline for the entire route |
| ↳ `warnings` | array | Route warnings |
| ↳ `waypointOrder` | array | Optimized waypoint order (if requested) |
| `distanceText` | string | Total distance as human-readable text (e.g., "5.2 km") |
| `distanceMeters` | number | Total distance in meters |
| `durationText` | string | Total duration as human-readable text (e.g., "15 mins") |
| `durationSeconds` | number | Total duration in seconds |
| `startAddress` | string | Resolved starting address |
| `endAddress` | string | Resolved ending address |
| `steps` | array | Turn-by-turn navigation instructions |
| ↳ `instruction` | string | Navigation instruction (HTML stripped) |
| ↳ `distanceText` | string | Step distance as text |
| ↳ `distanceMeters` | number | Step distance in meters |
| ↳ `durationText` | string | Step duration as text |
| ↳ `durationSeconds` | number | Step duration in seconds |
| ↳ `startLocation` | object | Step start coordinates |
| ↳ `endLocation` | object | Step end coordinates |
| ↳ `travelMode` | string | Travel mode for this step |
| ↳ `maneuver` | string | Maneuver type (turn-left, etc.) |
| `polyline` | string | Encoded polyline for the primary route |
### Google Maps Distance Matrix [#google-maps-distance-matrix]
Calculate travel distance and time between multiple origins and destinations
#### Input [#input-2]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------- |
| `apiKey` | string | Yes | Google Maps API key |
| `origin` | string | Yes | Origin location (address or lat,lng) |
| `destinations` | json | Yes | Array of destination locations |
| `mode` | string | No | Travel mode: driving, walking, bicycling, or transit |
| `avoid` | string | No | Features to avoid: tolls, highways, or ferries |
| `units` | string | No | Unit system: metric or imperial |
| `language` | string | No | Language code for results (e.g., en, es, fr) |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------------------------- | ------ | ---------------------------------------------- |
| `originAddresses` | array | Resolved origin addresses |
| `destinationAddresses` | array | Resolved destination addresses |
| `rows` | array | Distance matrix rows (one per origin) |
| ↳ `elements` | array | Elements (one per destination) |
| ↳ `distanceText` | string | Distance as text (e.g., "5.2 km") |
| ↳ `distanceMeters` | number | Distance in meters |
| ↳ `durationText` | string | Duration as text (e.g., "15 mins") |
| ↳ `durationSeconds` | number | Duration in seconds |
| ↳ `durationInTrafficText` | string | Duration in traffic as text |
| ↳ `durationInTrafficSeconds` | number | Duration in traffic in seconds |
| ↳ `status` | string | Element status (OK, NOT\_FOUND, ZERO\_RESULTS) |
### Google Maps Elevation [#google-maps-elevation]
Get elevation data for a location
#### Input [#input-3]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------- |
| `apiKey` | string | Yes | Google Maps API key |
| `lat` | number | Yes | Latitude coordinate |
| `lng` | number | Yes | Longitude coordinate |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------ | ------ | ----------------------------------------------------------------------------------- |
| `elevation` | number | Elevation in meters above sea level (negative for below) |
| `lat` | number | Latitude of the elevation sample |
| `lng` | number | Longitude of the elevation sample |
| `resolution` | number | Maximum distance between data points (meters) from which elevation was interpolated |
### Google Maps Geocode [#google-maps-geocode]
Convert an address into geographic coordinates (latitude and longitude)
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------- |
| `apiKey` | string | Yes | Google Maps API key |
| `address` | string | Yes | The address to geocode |
| `language` | string | No | Language code for results (e.g., en, es, fr) |
| `region` | string | No | Region bias as a ccTLD code (e.g., us, uk) |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------------- | ------ | ----------------------------------------------------------- |
| `formattedAddress` | string | The formatted address string |
| `lat` | number | Latitude coordinate |
| `lng` | number | Longitude coordinate |
| `location` | json | Location object with lat and lng |
| `placeId` | string | Google Place ID for this location |
| `addressComponents` | array | Detailed address components |
| ↳ `longName` | string | Full name of the component |
| ↳ `shortName` | string | Abbreviated name |
| ↳ `types` | array | Component types |
| `locationType` | string | Location accuracy type (ROOFTOP, RANGE\_INTERPOLATED, etc.) |
### Google Maps Geolocate [#google-maps-geolocate]
Geolocate a device using WiFi access points, cell towers, or IP address
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ----------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Google Maps API key with Geolocation API enabled |
| `homeMobileCountryCode` | number | No | Home mobile country code (MCC) |
| `homeMobileNetworkCode` | number | No | Home mobile network code (MNC) |
| `radioType` | string | No | Radio type: lte, gsm, cdma, wcdma, or nr |
| `carrier` | string | No | Carrier name |
| `considerIp` | boolean | No | Whether to use IP address for geolocation (default: true) |
| `cellTowers` | array | No | Array of cell tower objects with cellId, locationAreaCode, mobileCountryCode, mobileNetworkCode |
| `wifiAccessPoints` | array | No | Array of WiFi access point objects with macAddress (required), signalStrength, etc. |
#### Output [#output-5]
| Parameter | Type | Description |
| ---------- | ------ | ------------------------- |
| `lat` | number | Latitude coordinate |
| `lng` | number | Longitude coordinate |
| `accuracy` | number | Accuracy radius in meters |
### Google Maps Place Details [#google-maps-place-details]
Get detailed information about a specific place
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------- |
| `apiKey` | string | Yes | Google Maps API key |
| `placeId` | string | Yes | Google Place ID |
| `fields` | string | No | Comma-separated list of fields to return |
| `language` | string | No | Language code for results (e.g., en, es, fr) |
#### Output [#output-6]
| Parameter | Type | Description |
| --------------------------- | ------- | ------------------------------------------------------------------------------ |
| `placeId` | string | Google Place ID |
| `name` | string | Place name |
| `formattedAddress` | string | Formatted street address |
| `lat` | number | Latitude coordinate |
| `lng` | number | Longitude coordinate |
| `types` | array | Place types (e.g., restaurant, cafe) |
| `rating` | number | Average rating (1.0 to 5.0) |
| `userRatingsTotal` | number | Total number of user ratings |
| `priceLevel` | number | Price level (0=Free, 1=Inexpensive, 2=Moderate, 3=Expensive, 4=Very Expensive) |
| `website` | string | Place website URL |
| `phoneNumber` | string | Local formatted phone number |
| `internationalPhoneNumber` | string | International formatted phone number |
| `openNow` | boolean | Whether the place is currently open |
| `weekdayText` | array | Opening hours formatted by day of week |
| `reviews` | array | User reviews (up to 5 most relevant) |
| ↳ `authorName` | string | Reviewer name |
| ↳ `authorUrl` | string | Reviewer profile URL |
| ↳ `profilePhotoUrl` | string | Reviewer photo URL |
| ↳ `rating` | number | Rating given (1-5) |
| ↳ `text` | string | Review text |
| ↳ `time` | number | Review timestamp (Unix epoch) |
| ↳ `relativeTimeDescription` | string | Relative time (e.g., "a month ago") |
| `photos` | array | Place photos |
| ↳ `photoReference` | string | Photo reference for Place Photos API |
| ↳ `height` | number | Photo height in pixels |
| ↳ `width` | number | Photo width in pixels |
| ↳ `htmlAttributions` | array | Required attributions |
| `url` | string | Google Maps URL for the place |
| `utcOffset` | number | UTC offset in minutes |
| `vicinity` | string | Simplified address (neighborhood/street) |
| `businessStatus` | string | Business status (OPERATIONAL, CLOSED\_TEMPORARILY, CLOSED\_PERMANENTLY) |
### Google Maps Places Nearby Search [#google-maps-places-nearby-search]
Search for places of a given type within a radius of a location
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | -------------------------------------------------------------- |
| `apiKey` | string | Yes | Google Maps API key |
| `lat` | number | Yes | Latitude of the center point to search around |
| `lng` | number | Yes | Longitude of the center point to search around |
| `radius` | number | Yes | Search radius in meters (up to 50000) |
| `includedTypes` | array | No | Place types to include in the results (e.g., restaurant, cafe) |
| `maxResultCount` | number | No | Maximum number of results to return (1-20, defaults to 20) |
| `rankPreference` | string | No | How to rank results: POPULARITY (default) or DISTANCE |
| `languageCode` | string | No | Language code for the response (e.g., en, es) |
| `regionCode` | string | No | Region bias as a ccTLD code (e.g., us, uk) |
#### Output [#output-7]
| Parameter | Type | Description |
| -------------------- | ------- | -------------------------------------------- |
| `places` | array | List of places found near the given location |
| ↳ `placeId` | string | Google Place resource ID |
| ↳ `name` | string | Place name |
| ↳ `formattedAddress` | string | Formatted address |
| ↳ `lat` | number | Latitude |
| ↳ `lng` | number | Longitude |
| ↳ `types` | array | Place types |
| ↳ `rating` | number | Average rating (1-5) |
| ↳ `userRatingsTotal` | number | Number of ratings |
| ↳ `priceLevel` | string | Price level (e.g., PRICE\_LEVEL\_MODERATE) |
| ↳ `openNow` | boolean | Whether currently open |
| ↳ `businessStatus` | string | Business status |
### Google Maps Places Search [#google-maps-places-search]
Search for places using a text query
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Google Maps API key |
| `query` | string | Yes | Search query (e.g., "restaurants in Times Square") |
| `location` | json | No | Location to bias results towards (\{lat, lng}) |
| `radius` | number | No | Search radius in meters |
| `type` | string | No | Place type filter (e.g., restaurant, cafe, hotel) |
| `language` | string | No | Language code for results (e.g., en, es, fr) |
| `region` | string | No | Region bias as a ccTLD code (e.g., us, uk) |
| `pageToken` | string | No | Token from a previous search response to fetch the next page of results. Wait a couple seconds after receiving the token before using it, or the API returns INVALID\_REQUEST |
#### Output [#output-8]
| Parameter | Type | Description |
| -------------------- | ------- | ------------------------------------------- |
| `places` | array | List of places found |
| ↳ `placeId` | string | Google Place ID |
| ↳ `name` | string | Place name |
| ↳ `formattedAddress` | string | Formatted address |
| ↳ `lat` | number | Latitude |
| ↳ `lng` | number | Longitude |
| ↳ `types` | array | Place types |
| ↳ `rating` | number | Average rating (1-5) |
| ↳ `userRatingsTotal` | number | Number of ratings |
| ↳ `priceLevel` | number | Price level (0-4) |
| ↳ `openNow` | boolean | Whether currently open |
| ↳ `photoReference` | string | Photo reference for Photos API |
| ↳ `businessStatus` | string | Business status |
| `nextPageToken` | string | Token for fetching the next page of results |
### Google Maps Pollen [#google-maps-pollen]
Get a daily pollen forecast (grass, tree, weed) for a location
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ------------------- | ------- | -------- | ------------------------------------------------------ |
| `apiKey` | string | Yes | Google Maps API key with Pollen API enabled |
| `lat` | number | Yes | Latitude coordinate |
| `lng` | number | Yes | Longitude coordinate |
| `days` | number | No | Number of forecast days to return (1-5, defaults to 1) |
| `languageCode` | string | No | Language code for the response (e.g., "en", "es") |
| `plantsDescription` | boolean | No | Include detailed plant descriptions (defaults to true) |
#### Output [#output-9]
| Parameter | Type | Description |
| ------------------------- | ------- | ----------------------------------------------------- |
| `regionCode` | string | Region code (ISO 3166-1 alpha-2) for the location |
| `dailyInfo` | array | Daily pollen forecast entries |
| ↳ `date` | object | Calendar date of the forecast entry |
| ↳ `pollenTypeInfo` | array | Pollen type indices (grass, tree, weed) |
| ↳ `code` | string | Pollen type code (GRASS, TREE, WEED) |
| ↳ `displayName` | string | Display name |
| ↳ `inSeason` | boolean | Whether the pollen type is in season |
| ↳ `indexInfo` | object | Universal Pollen Index (UPI) info |
| ↳ `healthRecommendations` | array | Health recommendations |
| ↳ `plantInfo` | array | Per-plant forecast with descriptions |
| ↳ `code` | string | Plant code (e.g., BIRCH, RAGWEED) |
| ↳ `displayName` | string | Display name |
| ↳ `inSeason` | boolean | Whether the plant is in season |
| ↳ `indexInfo` | object | Universal Pollen Index (UPI) info |
| ↳ `plantDescription` | object | Plant details (type, family, season, cross-reactions) |
### Google Maps Reverse Geocode [#google-maps-reverse-geocode]
Convert geographic coordinates (latitude and longitude) into a human-readable address
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------- |
| `apiKey` | string | Yes | Google Maps API key |
| `lat` | number | Yes | Latitude coordinate |
| `lng` | number | Yes | Longitude coordinate |
| `language` | string | No | Language code for results (e.g., en, es, fr) |
#### Output [#output-10]
| Parameter | Type | Description |
| ------------------- | ------ | -------------------------------------------- |
| `formattedAddress` | string | The formatted address string |
| `placeId` | string | Google Place ID for this location |
| `addressComponents` | array | Detailed address components |
| ↳ `longName` | string | Full name of the component |
| ↳ `shortName` | string | Abbreviated name |
| ↳ `types` | array | Component types |
| `types` | array | Address types (e.g., street\_address, route) |
### Google Maps Snap to Roads [#google-maps-snap-to-roads]
Snap GPS coordinates to the nearest road segment
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | --------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Google Maps API key with Roads API enabled |
| `path` | string | Yes | Pipe-separated list of lat,lng coordinates (e.g., "60.170880,24.942795\|60.170879,24.942796") |
| `interpolate` | boolean | No | Whether to interpolate additional points along the road |
#### Output [#output-11]
| Parameter | Type | Description |
| ----------------- | ------ | ------------------------------------------------------------- |
| `snappedPoints` | array | Array of snapped points on roads |
| ↳ `location` | object | Snapped location coordinates |
| ↳ `lat` | number | Latitude |
| ↳ `lng` | number | Longitude |
| ↳ `originalIndex` | number | Index in the original path (if not interpolated) |
| ↳ `placeId` | string | Place ID for this road segment |
| `warningMessage` | string | Warning message if any (e.g., if points could not be snapped) |
### Google Maps Solar [#google-maps-solar]
Get solar potential and panel insights for the building nearest a location
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | --------------------------------------------------------- |
| `apiKey` | string | Yes | Google Maps API key with Solar API enabled |
| `lat` | number | Yes | Latitude coordinate |
| `lng` | number | Yes | Longitude coordinate |
| `requiredQuality` | string | No | Minimum imagery quality to accept (HIGH, MEDIUM, or BASE) |
#### Output [#output-12]
| Parameter | Type | Description |
| -------------------- | ------ | ---------------------------------------------------------------------------------------------- |
| `name` | string | Resource name of the building (e.g., "buildings/ChIJ...") |
| `center` | object | Center coordinate of the building |
| ↳ `lat` | number | Latitude |
| ↳ `lng` | number | Longitude |
| `imageryDate` | object | Date the underlying imagery was captured |
| `imageryQuality` | string | Quality of the imagery used (HIGH, MEDIUM, BASE) |
| `regionCode` | string | Region code (ISO 3166-1 alpha-2) for the building |
| `postalCode` | string | Postal code of the building |
| `administrativeArea` | string | Administrative area (e.g., state or province) |
| `solarPotential` | object | Solar potential: max panel count/area, sunshine hours, carbon offset, panel specs, and configs |
### Google Maps Speed Limits [#google-maps-speed-limits]
Get speed limits for road segments. Requires either path coordinates or placeIds.
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Google Maps API key with Roads API enabled |
| `path` | string | No | Pipe-separated list of lat,lng coordinates (required if placeIds not provided) |
| `placeIds` | array | No | Array of Place IDs for road segments (required if path not provided) |
| `units` | string | No | Units for the returned speed limits: KPH (default) or MPH |
#### Output [#output-13]
| Parameter | Type | Description |
| ----------------- | ------ | --------------------------------------------------------- |
| `speedLimits` | array | Array of speed limits for road segments |
| ↳ `placeId` | string | Place ID for the road segment |
| ↳ `speedLimit` | number | Speed limit value |
| ↳ `units` | string | Speed limit units (KPH or MPH) |
| `snappedPoints` | array | Array of snapped points corresponding to the speed limits |
| ↳ `location` | object | Snapped location coordinates |
| ↳ `lat` | number | Latitude |
| ↳ `lng` | number | Longitude |
| ↳ `originalIndex` | number | Index in the original path |
| ↳ `placeId` | string | Place ID for this road segment |
### Google Maps Timezone [#google-maps-timezone]
Get timezone information for a location
#### Input [#input-14]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------------- |
| `apiKey` | string | Yes | Google Maps API key |
| `lat` | number | Yes | Latitude coordinate |
| `lng` | number | Yes | Longitude coordinate |
| `timestamp` | number | No | Unix timestamp to determine DST offset (defaults to current time) |
| `language` | string | No | Language code for timezone name (e.g., en, es, fr) |
#### Output [#output-14]
| Parameter | Type | Description |
| -------------------- | ------ | ------------------------------------------------------------- |
| `timeZoneId` | string | IANA timezone ID (e.g., "America/New\_York", "Europe/London") |
| `timeZoneName` | string | Localized timezone name (e.g., "Eastern Daylight Time") |
| `rawOffset` | number | UTC offset in seconds (without DST) |
| `dstOffset` | number | Daylight Saving Time offset in seconds (0 if not in DST) |
| `totalOffsetSeconds` | number | Total UTC offset in seconds (rawOffset + dstOffset) |
| `totalOffsetHours` | number | Total UTC offset in hours (e.g., -5 for EST, -4 for EDT) |
### Google Maps Validate Address [#google-maps-validate-address]
Validate and standardize a postal address
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | ------------------------------------------------------- |
| `apiKey` | string | Yes | Google Maps API key with Address Validation API enabled |
| `address` | string | Yes | The address to validate (as a single string) |
| `regionCode` | string | No | ISO 3166-1 alpha-2 country code (e.g., "US", "CA") |
| `locality` | string | No | City or locality name |
| `enableUspsCass` | boolean | No | Enable USPS CASS validation for US addresses |
#### Output [#output-15]
| Parameter | Type | Description |
| --------------------------- | ------- | -------------------------------------------------------------- |
| `formattedAddress` | string | The standardized formatted address |
| `lat` | number | Latitude coordinate |
| `lng` | number | Longitude coordinate |
| `placeId` | string | Google Place ID for this address |
| `addressComplete` | boolean | Whether the address is complete and deliverable |
| `hasUnconfirmedComponents` | boolean | Whether some address components could not be confirmed |
| `hasInferredComponents` | boolean | Whether some components were inferred (not in input) |
| `hasReplacedComponents` | boolean | Whether some components were replaced with canonical values |
| `validationGranularity` | string | Granularity of validation (PREMISE, SUB\_PREMISE, ROUTE, etc.) |
| `geocodeGranularity` | string | Granularity of the geocode result |
| `addressComponents` | array | Detailed address components |
| ↳ `longName` | string | Full name of the component |
| ↳ `shortName` | string | Abbreviated name |
| ↳ `types` | array | Component types |
| `missingComponentTypes` | array | Types of address components that are missing |
| `unconfirmedComponentTypes` | array | Types of components that could not be confirmed |
| `unresolvedTokens` | array | Input tokens that could not be resolved |
---
# Google Meet (/integrations/google_meet)
{/* MANUAL-CONTENT-START:intro */}
[Google Meet](https://meet.google.com) is Google's video conferencing and online meeting platform, providing secure, high-quality video calls for individuals and teams. As a core component of Google Workspace, Google Meet enables real-time collaboration through video meetings, screen sharing, and integrated chat.
The Google Meet REST API (v2) allows programmatic management of meeting spaces and conference records, enabling automated workflows to create meetings, track participation, and manage active conferences without manual intervention.
Key features of the Google Meet API include:
* **Meeting Space Management**: Create, retrieve, and configure meeting spaces with customizable access controls.
* **Conference Records**: Access historical conference data including start/end times and associated spaces.
* **Participant Tracking**: View participant details for any conference including join/leave times and user types.
* **Access Controls**: Configure who can join meetings (open, trusted, or restricted) and which entry points are allowed.
* **Active Conference Management**: Programmatically end active conferences in meeting spaces.
In Sim, the Google Meet integration allows your agents to create meeting spaces on demand, monitor conference activity, track participation across meetings, and manage active conferences as part of automated workflows. This enables scenarios such as automatically provisioning meeting rooms for scheduled events, generating attendance reports, ending stale conferences, and building meeting analytics dashboards.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Google Meet into your workflow. Create meeting spaces, get space details, end conferences, list conference records, and view participants.
## Actions [#actions]
### Google Meet Create Space [#google-meet-create-space]
Create a new Google Meet meeting space
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- |
| `accessType` | string | No | Who can join the meeting without knocking: OPEN (anyone with link), TRUSTED (org members), RESTRICTED (only invited) |
| `entryPointAccess` | string | No | Entry points allowed: ALL (all entry points) or CREATOR\_APP\_ONLY (only via app) |
#### Output [#output]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------------------------------------------------------------------------------- |
| `name` | string | Resource name of the space (e.g., spaces/abc123) |
| `meetingUri` | string | Meeting URL (e.g., [https://meet.google.com/abc-defg-hij\\](https://meet.google.com/abc-defg-hij\\)) |
| `meetingCode` | string | Meeting code (e.g., abc-defg-hij) |
| `accessType` | string | Access type configuration |
| `entryPointAccess` | string | Entry point access configuration |
### Google Meet Get Space [#google-meet-get-space]
Get details of a Google Meet meeting space by name or meeting code
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------ |
| `spaceName` | string | Yes | Space resource name (spaces/abc123) or meeting code (abc-defg-hij) |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------------ | ------ | -------------------------------- |
| `name` | string | Resource name of the space |
| `meetingUri` | string | Meeting URL |
| `meetingCode` | string | Meeting code |
| `accessType` | string | Access type configuration |
| `entryPointAccess` | string | Entry point access configuration |
| `activeConference` | string | Active conference record name |
### Google Meet End Conference [#google-meet-end-conference]
End the active conference in a Google Meet space
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------- |
| `spaceName` | string | Yes | Space resource name (e.g., spaces/abc123) |
#### Output [#output-2]
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------------- |
| `ended` | boolean | Whether the conference was ended successfully |
### Google Meet List Conference Records [#google-meet-list-conference-records]
List conference records for meetings you organized
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- |
| `filter` | string | No | Filter by space name (e.g., space.name = "spaces/abc123") or time range (e.g., start\_time > "2024-01-01T00:00:00Z") |
| `pageSize` | number | No | Maximum number of conference records to return (max 100) |
| `pageToken` | string | No | Page token from a previous list request |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------------- | ------ | ---------------------------------------------------------------- |
| `conferenceRecords` | json | List of conference records with name, start/end times, and space |
| `nextPageToken` | string | Token for next page of results |
### Google Meet Get Conference Record [#google-meet-get-conference-record]
Get details of a specific conference record
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ---------------------------------------------------------------- |
| `conferenceName` | string | Yes | Conference record resource name (e.g., conferenceRecords/abc123) |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------ | ------ | --------------------------------- |
| `name` | string | Conference record resource name |
| `startTime` | string | Conference start time |
| `endTime` | string | Conference end time |
| `expireTime` | string | Conference record expiration time |
| `space` | string | Associated space resource name |
### Google Meet List Participants [#google-meet-list-participants]
List participants of a conference record
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | -------------------------------------------------------------------------- |
| `conferenceName` | string | Yes | Conference record resource name (e.g., conferenceRecords/abc123) |
| `filter` | string | No | Filter participants (e.g., earliest\_start\_time > "2024-01-01T00:00:00Z") |
| `pageSize` | number | No | Maximum number of participants to return (default 100, max 250) |
| `pageToken` | string | No | Page token from a previous list request |
#### Output [#output-5]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------------------------------------------ |
| `participants` | json | List of participants with name, times, display name, and user type |
| `nextPageToken` | string | Token for next page of results |
| `totalSize` | number | Total number of participants |
---
# Google PageSpeed (/integrations/google_pagespeed)
{/* MANUAL-CONTENT-START:intro */}
[Google PageSpeed Insights](https://pagespeed.web.dev/) is a web performance analysis tool powered by Lighthouse that evaluates the quality of web pages across multiple dimensions including performance, accessibility, SEO, and best practices.
With the Google PageSpeed integration in Sim, you can:
* **Analyze webpage performance**: Get detailed performance scores and metrics for any public URL, including First Contentful Paint, Largest Contentful Paint, and Speed Index
* **Evaluate accessibility**: Check how well a webpage meets accessibility standards and identify areas for improvement
* **Audit SEO**: Assess a page's search engine optimization and discover opportunities to improve rankings
* **Review best practices**: Verify that a webpage follows modern web development best practices
* **Compare strategies**: Run analyses using either desktop or mobile strategies to understand performance across device types
* **Localize results**: Retrieve analysis results in different locales for internationalized reporting
In Sim, the Google PageSpeed integration enables your agents to programmatically audit web pages as part of automated workflows. This is useful for monitoring site performance over time, triggering alerts when scores drop below thresholds, generating performance reports, and ensuring that deployed changes meet quality standards before release.
### Getting Your API Key [#getting-your-api-key]
1. Go to the [Google Cloud Console](https://console.cloud.google.com/)
2. Create or select a project
3. Enable the **PageSpeed Insights API** from the API Library
4. Navigate to **Credentials** and create an API key
5. Use the API key in the Sim block configuration
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Analyze web pages for performance, accessibility, SEO, and best practices using Google PageSpeed Insights API powered by Lighthouse.
## Actions [#actions]
### Google PageSpeed Analyze [#google-pagespeed-analyze]
Analyze a webpage for performance, accessibility, SEO, and best practices using Google PageSpeed Insights.
#### Input [#input]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Google PageSpeed Insights API Key |
| `url` | string | Yes | The URL of the webpage to analyze |
| `category` | string | No | Lighthouse categories to analyze (comma-separated): performance, accessibility, best-practices, seo |
| `strategy` | string | No | Analysis strategy: desktop or mobile |
| `locale` | string | No | Locale for results (e.g., en, fr, de) |
#### Output [#output]
| Parameter | Type | Description |
| ---------------------------- | ------ | ------------------------------------------------------------------ |
| `finalUrl` | string | The final URL after redirects |
| `performanceScore` | number | Performance category score (0-1) |
| `accessibilityScore` | number | Accessibility category score (0-1) |
| `bestPracticesScore` | number | Best Practices category score (0-1) |
| `seoScore` | number | SEO category score (0-1) |
| `firstContentfulPaint` | string | Time to First Contentful Paint (display value) |
| `firstContentfulPaintMs` | number | Time to First Contentful Paint in milliseconds |
| `largestContentfulPaint` | string | Time to Largest Contentful Paint (display value) |
| `largestContentfulPaintMs` | number | Time to Largest Contentful Paint in milliseconds |
| `totalBlockingTime` | string | Total Blocking Time (display value) |
| `totalBlockingTimeMs` | number | Total Blocking Time in milliseconds |
| `cumulativeLayoutShift` | string | Cumulative Layout Shift (display value) |
| `cumulativeLayoutShiftValue` | number | Cumulative Layout Shift numeric value |
| `speedIndex` | string | Speed Index (display value) |
| `speedIndexMs` | number | Speed Index in milliseconds |
| `interactive` | string | Time to Interactive (display value) |
| `interactiveMs` | number | Time to Interactive in milliseconds |
| `overallCategory` | string | Overall loading experience category (FAST, AVERAGE, SLOW, or NONE) |
| `analysisTimestamp` | string | UTC timestamp of the analysis |
| `lighthouseVersion` | string | Version of Lighthouse used for the analysis |
---
# Google Search (/integrations/google_search)
{/* MANUAL-CONTENT-START:intro */}
[Google Search](https://www.google.com) is the world's most widely used web search engine, making it easy to find information, discover new content, and answer questions in real time.
With the Google Search integration in Sim, you can:
* **Search the web**: Perform queries using Google's Custom Search API and retrieve structured search results with titles, snippets, and URLs
In Sim, the Google Search integration allows your agents to search the web and retrieve live information as part of automated workflows. This enables use cases such as automated research, fact-checking, knowledge synthesis, and dynamic content discovery.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Google Search into the workflow. Can search the web.
## Actions [#actions]
### Google Search [#google-search]
Search the web with the Custom Search API
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | -------------------------------------------------------------------------------- |
| `query` | string | Yes | The search query to execute |
| `searchEngineId` | string | Yes | Custom Search Engine ID |
| `num` | string | No | Number of results to return (1-10, default 10) |
| `start` | number | No | Index of the first result (1-based, for pagination; start + num must be \<= 100) |
| `dateRestrict` | string | No | Restrict results by recency: d\[n] days, w\[n] weeks, m\[n] months, y\[n] years |
| `fileType` | string | No | Restrict to a file extension (e.g., pdf, doc) |
| `safe` | string | No | SafeSearch level: "active" or "off" (default off) |
| `searchType` | string | No | Set to "image" to perform an image search |
| `siteSearch` | string | No | A site to include or exclude from results |
| `siteSearchFilter` | string | No | Whether to include ("i") or exclude ("e") the siteSearch site |
| `lr` | string | No | Restrict to a language, e.g. "lang\_en" |
| `gl` | string | No | Two-letter country code to boost geographically relevant results |
| `sort` | string | No | Sort expression, e.g. "date" |
| `apiKey` | string | Yes | Google API key |
#### Output [#output]
| Parameter | Type | Description |
| ------------------------- | ------ | --------------------------------------------------------------------- |
| `items` | array | Array of search results from Google |
| ↳ `title` | string | Title of the search result |
| ↳ `htmlTitle` | string | Title of the search result with HTML markup |
| ↳ `link` | string | URL of the search result |
| ↳ `displayLink` | string | Display URL (abbreviated form) |
| ↳ `snippet` | string | Snippet or description of the search result |
| ↳ `htmlSnippet` | string | Snippet of the search result with HTML markup |
| ↳ `formattedUrl` | string | Display URL shown beneath the result |
| ↳ `mime` | string | MIME type of the result |
| ↳ `fileFormat` | string | File format of the result |
| ↳ `cacheId` | string | ID of Google's cached version |
| ↳ `pagemap` | object | PageMap information for the result (structured data) |
| ↳ `image` | object | Image metadata (present when searchType is image) |
| ↳ `contextLink` | string | URL of the page hosting the image |
| ↳ `height` | number | Image height in pixels |
| ↳ `width` | number | Image width in pixels |
| ↳ `byteSize` | number | Image file size in bytes |
| ↳ `thumbnailLink` | string | Thumbnail image URL |
| ↳ `thumbnailHeight` | number | Thumbnail height in pixels |
| ↳ `thumbnailWidth` | number | Thumbnail width in pixels |
| `searchInformation` | object | Information about the search query and results |
| ↳ `totalResults` | string | Total number of search results available |
| ↳ `searchTime` | number | Time taken to perform the search in seconds |
| ↳ `formattedSearchTime` | string | Formatted search time for display |
| ↳ `formattedTotalResults` | string | Formatted total results count for display |
| `nextPageStartIndex` | number | Start index for the next page of results (null if no further results) |
---
# Google Sheets (/integrations/google_sheets)
{/* MANUAL-CONTENT-START:intro */}
[Google Sheets](https://www.google.com/sheets/about/) is a cloud-based spreadsheet platform that allows teams and individuals to create, edit, and collaborate on spreadsheets in real-time. Widely used for data tracking, reporting, and lightweight database needs, Google Sheets integrates with many tools and services.
With the Google Sheets integration in Sim, you can:
* **Read data**: Retrieve cell values from specific ranges in a spreadsheet
* **Write data**: Write values to specific cell ranges
* **Update data**: Modify existing cell values in a spreadsheet
* **Append rows**: Add new rows of data to the end of a sheet
* **Clear ranges**: Remove data from specific cell ranges
* **Manage spreadsheets**: Create new spreadsheets or retrieve metadata about existing ones
* **Batch operations**: Perform batch read, update, and clear operations across multiple ranges
* **Copy sheets**: Duplicate sheets within or between spreadsheets
In Sim, the Google Sheets integration enables your agents to read from, write to, and manage spreadsheets as part of automated workflows. This is ideal for automated reporting, data synchronization, record-keeping, and building data pipelines that use spreadsheets as a collaborative data layer.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Google Sheets into the workflow with explicit sheet selection. Can read, write, append, update, clear data, create spreadsheets, get spreadsheet info, and copy sheets.
## Actions [#actions]
### Read from Google Sheets V2 [#read-from-google-sheets-v2]
Read data from a specific sheet in a Google Sheets spreadsheet
#### Input [#input]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID |
| `sheetName` | string | Yes | The name of the sheet/tab to read from |
| `cellRange` | string | No | The cell range to read (e.g. "A1:D10"). Defaults to "A1:Z1000" if not specified. |
| `filterColumn` | string | No | Column name (from the header row) to filter on. Filtering is applied to the rows returned by the read range (the default is A1:Z1000), not the entire sheet. If not provided, no filtering is applied. |
| `filterValue` | string | No | Value to match against the filter column. |
| `filterMatchType` | string | No | How to match the filter value. Text: "contains", "not\_contains", "exact", "not\_equals", "starts\_with", "ends\_with". Numeric/ordering: "gt", "gte", "lt", "lte" (numeric when both values are numbers, otherwise lexicographic). Defaults to "contains". |
#### Output [#output]
| Parameter | Type | Description |
| ------------------ | ------ | ----------------------------------------- |
| `sheetName` | string | Name of the sheet that was read |
| `range` | string | The range of cells that was read |
| `values` | array | The cell values as a 2D array |
| `metadata` | json | Spreadsheet metadata including ID and URL |
| ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID |
| ↳ `spreadsheetUrl` | string | Spreadsheet URL |
### Write to Google Sheets V2 [#write-to-google-sheets-v2]
Write data to a specific sheet in a Google Sheets spreadsheet
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------- |
| `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID |
| `sheetName` | string | Yes | The name of the sheet/tab to write to |
| `cellRange` | string | No | The cell range to write to (e.g. "A1:D10", "A1"). Defaults to "A1" if not specified. |
| `values` | array | Yes | The data to write as a 2D array (e.g. \[\["Name", "Age"], \["Alice", 30], \["Bob", 25]]) or array of objects. |
| `valueInputOption` | string | No | The format of the data to write |
| `includeValuesInResponse` | boolean | No | Whether to include the written values in the response |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------------ | ------ | ----------------------------------------- |
| `updatedRange` | string | Range of cells that were updated |
| `updatedRows` | number | Number of rows updated |
| `updatedColumns` | number | Number of columns updated |
| `updatedCells` | number | Number of cells updated |
| `metadata` | json | Spreadsheet metadata including ID and URL |
| ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID |
| ↳ `spreadsheetUrl` | string | Spreadsheet URL |
### Update Google Sheets V2 [#update-google-sheets-v2]
Update data in a specific sheet in a Google Sheets spreadsheet
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------ |
| `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID |
| `sheetName` | string | Yes | The name of the sheet/tab to update |
| `cellRange` | string | No | The cell range to update (e.g. "A1:D10", "A1"). Defaults to "A1" if not specified. |
| `values` | array | Yes | The data to update as a 2D array (e.g. \[\["Name", "Age"], \["Alice", 30]]) or array of objects. |
| `valueInputOption` | string | No | The format of the data to update |
| `includeValuesInResponse` | boolean | No | Whether to include the updated values in the response |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------------ | ------ | ----------------------------------------- |
| `updatedRange` | string | Range of cells that were updated |
| `updatedRows` | number | Number of rows updated |
| `updatedColumns` | number | Number of columns updated |
| `updatedCells` | number | Number of cells updated |
| `metadata` | json | Spreadsheet metadata including ID and URL |
| ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID |
| ↳ `spreadsheetUrl` | string | Spreadsheet URL |
### Append to Google Sheets V2 [#append-to-google-sheets-v2]
Append data to the end of a specific sheet in a Google Sheets spreadsheet
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------- |
| `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID |
| `sheetName` | string | Yes | The name of the sheet/tab to append to |
| `values` | array | Yes | The data to append as a 2D array (e.g. \[\["Alice", 30], \["Bob", 25]]) or array of objects. |
| `valueInputOption` | string | No | The format of the data to append |
| `insertDataOption` | string | No | How to insert the data (OVERWRITE or INSERT\_ROWS) |
| `includeValuesInResponse` | boolean | No | Whether to include the appended values in the response |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------ |
| `tableRange` | string | Range of the table where data was appended |
| `updatedRange` | string | Range of cells that were updated |
| `updatedRows` | number | Number of rows updated |
| `updatedColumns` | number | Number of columns updated |
| `updatedCells` | number | Number of cells updated |
| `metadata` | json | Spreadsheet metadata including ID and URL |
| ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID |
| ↳ `spreadsheetUrl` | string | Spreadsheet URL |
### Clear Google Sheets Range V2 [#clear-google-sheets-range-v2]
Clear values from a specific range in a Google Sheets spreadsheet
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID |
| `sheetName` | string | Yes | The name of the sheet/tab to clear |
| `cellRange` | string | No | The cell range to clear (e.g. "A1:D10"). Clears entire sheet if not specified. |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------------ | ------ | ----------------------------------------- |
| `clearedRange` | string | The range that was cleared |
| `sheetName` | string | Name of the sheet that was cleared |
| `metadata` | json | Spreadsheet metadata including ID and URL |
| ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID |
| ↳ `spreadsheetUrl` | string | Spreadsheet URL |
### Get Spreadsheet Info V2 [#get-spreadsheet-info-v2]
Get metadata about a Google Sheets spreadsheet including title and sheet list
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | -------------------------------------------------------------- |
| `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID |
| `includeGridData` | boolean | No | Whether to include grid data (cell values). Defaults to false. |
#### Output [#output-5]
| Parameter | Type | Description |
| ---------------- | ------- | --------------------------------- |
| `spreadsheetId` | string | The spreadsheet ID |
| `title` | string | The title of the spreadsheet |
| `locale` | string | The locale of the spreadsheet |
| `timeZone` | string | The time zone of the spreadsheet |
| `spreadsheetUrl` | string | URL to the spreadsheet |
| `sheets` | array | List of sheets in the spreadsheet |
| ↳ `sheetId` | number | The sheet ID |
| ↳ `title` | string | The sheet title/name |
| ↳ `index` | number | The sheet index (position) |
| ↳ `rowCount` | number | Number of rows in the sheet |
| ↳ `columnCount` | number | Number of columns in the sheet |
| ↳ `hidden` | boolean | Whether the sheet is hidden |
### Create Spreadsheet V2 [#create-spreadsheet-v2]
Create a new Google Sheets spreadsheet
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `title` | string | Yes | The title of the new spreadsheet |
| `sheetTitles` | json | No | Array of sheet names to create (e.g., \["Sheet1", "Data", "Summary"]). Defaults to a single "Sheet1". |
| `locale` | string | No | The locale of the spreadsheet (e.g., "en\_US") |
| `timeZone` | string | No | The time zone of the spreadsheet (e.g., "America/New\_York") |
#### Output [#output-6]
| Parameter | Type | Description |
| ---------------- | ------ | ----------------------------------------- |
| `spreadsheetId` | string | The ID of the created spreadsheet |
| `title` | string | The title of the created spreadsheet |
| `spreadsheetUrl` | string | URL to the created spreadsheet |
| `sheets` | array | List of sheets created in the spreadsheet |
| ↳ `sheetId` | number | The sheet ID |
| ↳ `title` | string | The sheet title/name |
| ↳ `index` | number | The sheet index (position) |
### Batch Read Google Sheets V2 [#batch-read-google-sheets-v2]
Read multiple ranges from a Google Sheets spreadsheet in a single request
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- |
| `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID |
| `ranges` | json | Yes | Array of ranges to read (e.g., \["Sheet1!A1:D10", "Sheet2!A1:B5"]). Each range should include sheet name. |
| `majorDimension` | string | No | The major dimension of values: "ROWS" (default) or "COLUMNS" |
| `valueRenderOption` | string | No | How values should be rendered: "FORMATTED\_VALUE" (default), "UNFORMATTED\_VALUE", or "FORMULA" |
#### Output [#output-7]
| Parameter | Type | Description |
| ------------------ | ------ | ----------------------------------------------- |
| `spreadsheetId` | string | The spreadsheet ID |
| `valueRanges` | array | Array of value ranges read from the spreadsheet |
| ↳ `range` | string | The range that was read |
| ↳ `majorDimension` | string | Major dimension (ROWS or COLUMNS) |
| ↳ `values` | array | The cell values as a 2D array |
| `metadata` | json | Spreadsheet metadata including ID and URL |
| ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID |
| ↳ `spreadsheetUrl` | string | Spreadsheet URL |
### Batch Update Google Sheets V2 [#batch-update-google-sheets-v2]
Update multiple ranges in a Google Sheets spreadsheet in a single request
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------- |
| `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID |
| `data` | json | Yes | Array of value ranges to update. Each item should have "range" (e.g., "Sheet1!A1:D10") and "values" (2D array). |
| `valueInputOption` | string | No | How input data should be interpreted: "RAW" or "USER\_ENTERED" (default). USER\_ENTERED parses formulas. |
#### Output [#output-8]
| Parameter | Type | Description |
| --------------------- | ------ | ----------------------------------------- |
| `spreadsheetId` | string | The spreadsheet ID |
| `totalUpdatedRows` | number | Total number of rows updated |
| `totalUpdatedColumns` | number | Total number of columns updated |
| `totalUpdatedCells` | number | Total number of cells updated |
| `totalUpdatedSheets` | number | Total number of sheets updated |
| `responses` | array | Array of update responses for each range |
| ↳ `spreadsheetId` | string | The spreadsheet ID |
| ↳ `updatedRange` | string | The range that was updated |
| ↳ `updatedRows` | number | Number of rows updated in this range |
| ↳ `updatedColumns` | number | Number of columns updated in this range |
| ↳ `updatedCells` | number | Number of cells updated in this range |
| `metadata` | json | Spreadsheet metadata including ID and URL |
| ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID |
| ↳ `spreadsheetUrl` | string | Spreadsheet URL |
### Batch Clear Google Sheets V2 [#batch-clear-google-sheets-v2]
Clear multiple ranges in a Google Sheets spreadsheet in a single request
#### Input [#input-9]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------- |
| `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID |
| `ranges` | json | Yes | Array of ranges to clear (e.g., \["Sheet1!A1:D10", "Sheet2!A1:B5"]). Each range should include sheet name. |
#### Output [#output-9]
| Parameter | Type | Description |
| ------------------ | ------ | ----------------------------------------- |
| `spreadsheetId` | string | The spreadsheet ID |
| `clearedRanges` | array | Array of ranges that were cleared |
| `metadata` | json | Spreadsheet metadata including ID and URL |
| ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID |
| ↳ `spreadsheetUrl` | string | Spreadsheet URL |
### Copy Sheet V2 [#copy-sheet-v2]
Copy a sheet from one spreadsheet to another
#### Input [#input-10]
| Parameter | Type | Required | Description |
| -------------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- |
| `sourceSpreadsheetId` | string | Yes | Source Google Sheets spreadsheet ID |
| `sheetId` | number | Yes | The ID of the sheet to copy (numeric ID, not the sheet name). Use Get Spreadsheet to find sheet IDs. |
| `destinationSpreadsheetId` | string | Yes | The ID of the destination spreadsheet where the sheet will be copied |
#### Output [#output-10]
| Parameter | Type | Description |
| --------------------------- | ------ | ---------------------------------------------------- |
| `sheetId` | number | The ID of the newly created sheet in the destination |
| `title` | string | The title of the copied sheet |
| `index` | number | The index (position) of the copied sheet |
| `sheetType` | string | The type of the sheet (GRID, CHART, etc.) |
| `destinationSpreadsheetId` | string | The ID of the destination spreadsheet |
| `destinationSpreadsheetUrl` | string | URL to the destination spreadsheet |
### Delete Rows from Google Sheets V2 [#delete-rows-from-google-sheets-v2]
Delete rows from a sheet in a Google Sheets spreadsheet
#### Input [#input-11]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | -------------------------------------------------------------------------------------------- |
| `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID |
| `sheetId` | number | Yes | The numeric ID of the sheet/tab (not the sheet name). Use Get Spreadsheet to find sheet IDs. |
| `startIndex` | number | Yes | The start row index (0-based, inclusive) of the rows to delete |
| `endIndex` | number | Yes | The end row index (0-based, exclusive) of the rows to delete |
#### Output [#output-11]
| Parameter | Type | Description |
| ------------------ | ------ | ----------------------------------------- |
| `spreadsheetId` | string | Google Sheets spreadsheet ID |
| `sheetId` | number | The numeric ID of the sheet |
| `deletedRowRange` | string | Description of the deleted row range |
| `metadata` | json | Spreadsheet metadata including ID and URL |
| ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID |
| ↳ `spreadsheetUrl` | string | Spreadsheet URL |
### Delete Sheet V2 [#delete-sheet-v2]
Delete a sheet/tab from a Google Sheets spreadsheet
#### Input [#input-12]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ |
| `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID |
| `sheetId` | number | Yes | The numeric ID of the sheet/tab to delete (not the sheet name). Use Get Spreadsheet to find sheet IDs. |
#### Output [#output-12]
| Parameter | Type | Description |
| ------------------ | ------ | ----------------------------------------- |
| `spreadsheetId` | string | Google Sheets spreadsheet ID |
| `deletedSheetId` | number | The numeric ID of the deleted sheet |
| `metadata` | json | Spreadsheet metadata including ID and URL |
| ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID |
| ↳ `spreadsheetUrl` | string | Spreadsheet URL |
### Delete Spreadsheet V2 [#delete-spreadsheet-v2]
Permanently delete a Google Sheets spreadsheet using the Google Drive API
#### Input [#input-13]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------- |
| `spreadsheetId` | string | Yes | The ID of the Google Sheets spreadsheet to delete |
#### Output [#output-13]
| Parameter | Type | Description |
| --------------- | ------- | ------------------------------------------------ |
| `spreadsheetId` | string | The ID of the deleted spreadsheet |
| `deleted` | boolean | Whether the spreadsheet was successfully deleted |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
These run on a schedule (**polling-based**) — they check for new data rather than receiving push notifications.
### Google Sheets New Row Trigger [#google-sheets-new-row-trigger]
Triggers when new rows are added to a Google Sheet
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| ---------------------- | -------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | Connect your Google account to access Google Sheets. |
| `spreadsheetId` | file-selector | Yes | The spreadsheet to monitor for new rows. |
| `manualSpreadsheetId` | string | Yes | The spreadsheet to monitor for new rows. |
| `sheetName` | sheet-selector | Yes | The sheet tab to monitor for new rows. |
| `manualSheetName` | string | Yes | The sheet tab to monitor for new rows. |
| `valueRenderOption` | string | No | How values are rendered. Formatted returns display strings, Unformatted returns raw numbers/booleans, Formula returns the formula text. |
| `dateTimeRenderOption` | string | No | How dates and times are rendered. Only applies when Value Render is not "Formatted Value". |
#### Output [#output-14]
| Parameter | Type | Description |
| --------------- | ------ | -------------------------------------------- |
| `row` | json | Row data mapped to column headers from row 1 |
| `rawRow` | json | Raw row values as an array |
| `headers` | json | Column headers from row 1 |
| `rowNumber` | number | The 1-based row number of the new row |
| `spreadsheetId` | string | The spreadsheet ID |
| `sheetName` | string | The sheet tab name |
| `timestamp` | string | Event timestamp in ISO format |
---
# Google Slides (/integrations/google_slides)
{/* MANUAL-CONTENT-START:intro */}
[Google Slides](https://slides.google.com) is a dynamic cloud-based presentation application that allows users to create, edit, collaborate on, and present slideshows in real-time. As part of Google's productivity suite, Google Slides offers a flexible platform for designing engaging presentations, collaborating with others, and sharing content seamlessly through the cloud.
Learn how to integrate the Google Slides tools in Sim to effortlessly manage presentations as part of your automated workflows. With Sim, you can read, write, create, and update Google Slides presentations directly through your agents and automated processes, making it easy to deliver up-to-date information, generate custom reports, or produce branded decks programmatically.
With Google Slides, you can:
* **Create and edit presentations**: Design visually appealing slides with themes, layouts, and multimedia content
* **Collaborate in real-time**: Work simultaneously with teammates, comment, assign tasks, and receive live feedback on presentations
* **Present anywhere**: Display presentations online or offline, share links, or publish to the web
* **Add images and rich content**: Insert images, graphics, charts, and videos to make your presentations engaging
* **Integrate with other services**: Connect seamlessly with Google Drive, Docs, Sheets, and other third-party tools
* **Access from any device**: Use Google Slides on desktops, laptops, tablets, and mobile devices for maximum flexibility
In Sim, the Google Slides integration enables your agents to interact directly with presentation files programmatically. Automate tasks like reading slide content, inserting new slides or images, replacing text throughout a deck, generating new presentations, and retrieving slide thumbnails. This empowers you to scale content creation, keep presentations up-to-date, and embed them into automated document workflows. By connecting Sim with Google Slides, you facilitate AI-driven presentation management—making it easy to generate, update, or extract information from presentations without manual effort.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Build, edit, and export branded Google Slides presentations end-to-end. Copy a template, replace text and image tokens, embed Sheets charts, style text and shapes with brand fonts and colors, manage tables and layouts, group elements, run atomic batch updates, and export to PDF or PPTX.
## Actions [#actions]
### Read Google Slides Presentation [#read-google-slides-presentation]
Read content from a Google Slides presentation
#### Input [#input]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ----------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
#### Output [#output]
| Parameter | Type | Description |
| ------------------ | ------ | -------------------------------------------------- |
| `slides` | json | Array of slides with their content |
| `metadata` | json | Presentation metadata including ID, title, and URL |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `title` | string | The presentation title |
| ↳ `pageSize` | object | Presentation page size |
| ↳ `width` | json | Page width as a Dimension object |
| ↳ `height` | json | Page height as a Dimension object |
| ↳ `mimeType` | string | The mime type of the presentation |
| ↳ `url` | string | URL to open the presentation |
### Write to Google Slides Presentation [#write-to-google-slides-presentation]
Write or update content in a Google Slides presentation
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------ |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `content` | string | Yes | The content to write to the slide |
| `slideIndex` | number | No | The index of the slide to write to (defaults to first slide) |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------------ | ------- | ---------------------------------------------------------- |
| `updatedContent` | boolean | Indicates if presentation content was updated successfully |
| `metadata` | json | Updated presentation metadata including ID, title, and URL |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `title` | string | The presentation title |
| ↳ `mimeType` | string | The mime type of the presentation |
| ↳ `url` | string | URL to open the presentation |
### Create Google Slides Presentation [#create-google-slides-presentation]
Create a new Google Slides presentation
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ----------------------------------------------------------------------- |
| `title` | string | Yes | The title of the presentation to create |
| `content` | string | No | The content to add to the first slide |
| `folderSelector` | string | No | Google Drive folder ID to create the presentation in (e.g., 1ABCxyz...) |
| `folderId` | string | No | The ID of the folder to create the presentation in (internal use) |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------------------------------------- |
| `metadata` | json | Created presentation metadata including ID, title, and URL |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `title` | string | The presentation title |
| ↳ `mimeType` | string | The mime type of the presentation |
| ↳ `url` | string | URL to open the presentation |
### Replace All Text in Google Slides [#replace-all-text-in-google-slides]
Find and replace all occurrences of text throughout a Google Slides presentation
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `findText` | string | Yes | The text to find (e.g., \{\{placeholder}}) |
| `replaceText` | string | Yes | The text to replace with |
| `matchCase` | boolean | No | Whether the search should be case-sensitive (default: true) |
| `pageObjectIds` | string | No | Comma-separated list of slide object IDs to limit replacements to specific slides (leave empty for all slides) |
#### Output [#output-3]
| Parameter | Type | Description |
| -------------------- | ------ | ---------------------------------------------------- |
| `occurrencesChanged` | number | Number of text occurrences that were replaced |
| `metadata` | json | Operation metadata including presentation ID and URL |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `findText` | string | The text that was searched for |
| ↳ `replaceText` | string | The text that replaced the matches |
| ↳ `url` | string | URL to open the presentation |
### Add Slide to Google Slides [#add-slide-to-google-slides]
Add a new slide to a Google Slides presentation with a specified layout
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ----------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `layout` | string | No | The predefined layout for the slide (BLANK, TITLE, TITLE\_AND\_BODY, TITLE\_ONLY, SECTION\_HEADER, etc.). Defaults to BLANK. |
| `insertionIndex` | number | No | The optional zero-based index indicating where to insert the slide. If not specified, the slide is added at the end. |
| `placeholderIdMappings` | string | No | JSON array of placeholder mappings to assign custom object IDs to placeholders. Format: \[\{"layoutPlaceholder":\{"type":"TITLE"},"objectId":"custom\_title\_id"}] |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------------------- |
| `slideId` | string | The object ID of the newly created slide |
| `metadata` | json | Operation metadata including presentation ID, layout, and URL |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `layout` | string | The layout used for the new slide |
| ↳ `insertionIndex` | number | The zero-based index where the slide was inserted |
| ↳ `url` | string | URL to open the presentation |
### Add Image to Google Slides [#add-image-to-google-slides]
Insert an image into a specific slide in a Google Slides presentation
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `pageObjectId` | string | Yes | The object ID of the slide/page to add the image to |
| `imageUrl` | string | Yes | The publicly accessible URL of the image (must be PNG, JPEG, or GIF, max 50MB) |
| `width` | number | No | Width of the image in points (default: 300) |
| `height` | number | No | Height of the image in points (default: 200) |
| `positionX` | number | No | X position from the left edge in points (default: 100) |
| `positionY` | number | No | Y position from the top edge in points (default: 100) |
#### Output [#output-5]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------------------------------------- |
| `imageId` | string | The object ID of the newly created image |
| `metadata` | json | Operation metadata including presentation ID and image URL |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `pageObjectId` | string | The page object ID where the image was inserted |
| ↳ `imageUrl` | string | The source image URL |
| ↳ `url` | string | URL to open the presentation |
### Get Slide Thumbnail [#get-slide-thumbnail]
Generate a thumbnail image of a specific slide in a Google Slides presentation
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------ |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `pageObjectId` | string | Yes | The object ID of the slide/page to get a thumbnail for |
| `thumbnailSize` | string | No | The size of the thumbnail: SMALL (200px), MEDIUM (800px), or LARGE (1600px). Defaults to MEDIUM. |
| `mimeType` | string | No | The MIME type of the thumbnail image: PNG. Defaults to PNG. |
#### Output [#output-6]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------------------------------------------- |
| `contentUrl` | string | URL to the thumbnail image (valid for 30 minutes) |
| `width` | number | Width of the thumbnail in pixels |
| `height` | number | Height of the thumbnail in pixels |
| `metadata` | json | Operation metadata including presentation ID and page object ID |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `pageObjectId` | string | The page object ID for the thumbnail |
| ↳ `thumbnailSize` | string | The requested thumbnail size |
| ↳ `mimeType` | string | The thumbnail MIME type |
### Get Slide Page [#get-slide-page]
Get detailed information about a specific slide/page in a Google Slides presentation
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `pageObjectId` | string | Yes | The object ID of the slide/page to retrieve |
#### Output [#output-7]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------------------------ |
| `objectId` | string | The object ID of the page |
| `pageType` | string | The type of page (SLIDE, MASTER, LAYOUT, NOTES, NOTES\_MASTER) |
| `pageElements` | array | Array of page elements (shapes, images, tables, etc.) on this page |
| `slideProperties` | object | Properties specific to slides (layout, master, notes) |
| ↳ `layoutObjectId` | string | Object ID of the layout this slide is based on |
| ↳ `masterObjectId` | string | Object ID of the master this slide is based on |
| ↳ `notesPage` | json | The notes page associated with the slide |
| `metadata` | object | Operation metadata including presentation ID and URL |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Delete Object from Google Slides [#delete-object-from-google-slides]
Delete a page element (shape, image, table, etc.) or an entire slide from a Google Slides presentation
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ----------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | The object ID of the element or slide to delete |
#### Output [#output-8]
| Parameter | Type | Description |
| ------------------ | ------- | ---------------------------------------------------- |
| `deleted` | boolean | Whether the object was successfully deleted |
| `objectId` | string | The object ID that was deleted |
| `metadata` | object | Operation metadata including presentation ID and URL |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Duplicate Object in Google Slides [#duplicate-object-in-google-slides]
Duplicate an object (slide, shape, image, table, etc.) in a Google Slides presentation
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | The object ID of the element or slide to duplicate |
| `objectIds` | string | No | Optional JSON object mapping source object IDs (within the slide being duplicated) to new object IDs for the duplicates. Format: \{"sourceId1":"newId1","sourceId2":"newId2"} |
#### Output [#output-9]
| Parameter | Type | Description |
| -------------------- | ------ | ----------------------------------------------------------------- |
| `duplicatedObjectId` | string | The object ID of the newly created duplicate |
| `metadata` | object | Operation metadata including presentation ID and source object ID |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `sourceObjectId` | string | The original object ID that was duplicated |
| ↳ `url` | string | URL to the presentation |
### Reorder Slides in Google Slides [#reorder-slides-in-google-slides]
Move one or more slides to a new position in a Google Slides presentation
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `slideObjectIds` | string | Yes | Comma-separated list of slide object IDs to move. The slides will maintain their relative order. |
| `insertionIndex` | number | Yes | The zero-based index where the slides should be moved. All slides with indices greater than or equal to this will be shifted right. |
#### Output [#output-10]
| Parameter | Type | Description |
| ------------------ | ------- | ---------------------------------------------------- |
| `moved` | boolean | Whether the slides were successfully moved |
| `slideObjectIds` | array | The slide object IDs that were moved |
| `insertionIndex` | number | The index where the slides were moved to |
| `metadata` | object | Operation metadata including presentation ID and URL |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Create Table in Google Slides [#create-table-in-google-slides]
Create a new table on a slide in a Google Slides presentation
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------ |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `pageObjectId` | string | Yes | The object ID of the slide/page to add the table to |
| `rows` | number | Yes | Number of rows in the table (minimum 1) |
| `columns` | number | Yes | Number of columns in the table (minimum 1) |
| `width` | number | No | Width of the table in points (default: 400) |
| `height` | number | No | Height of the table in points (default: 200) |
| `positionX` | number | No | X position from the left edge in points (default: 100) |
| `positionY` | number | No | Y position from the top edge in points (default: 100) |
#### Output [#output-11]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------------------------------------------- |
| `tableId` | string | The object ID of the newly created table |
| `rows` | number | Number of rows in the table |
| `columns` | number | Number of columns in the table |
| `metadata` | object | Operation metadata including presentation ID and page object ID |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `pageObjectId` | string | The page object ID where the table was created |
| ↳ `url` | string | URL to the presentation |
### Create Shape in Google Slides [#create-shape-in-google-slides]
Create a shape (rectangle, ellipse, text box, arrow, etc.) on a slide in a Google Slides presentation
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `pageObjectId` | string | Yes | The object ID of the slide/page to add the shape to |
| `shapeType` | string | Yes | The type of shape to create. Common types: TEXT\_BOX, RECTANGLE, ROUND\_RECTANGLE, ELLIPSE, TRIANGLE, DIAMOND, STAR\_5, ARROW\_EAST, HEART, CLOUD |
| `width` | number | No | Width of the shape in points (default: 200) |
| `height` | number | No | Height of the shape in points (default: 100) |
| `positionX` | number | No | X position from the left edge in points (default: 100) |
| `positionY` | number | No | Y position from the top edge in points (default: 100) |
#### Output [#output-12]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------------------------------------------- |
| `shapeId` | string | The object ID of the newly created shape |
| `shapeType` | string | The type of shape that was created |
| `metadata` | object | Operation metadata including presentation ID and page object ID |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `pageObjectId` | string | The page object ID where the shape was created |
| ↳ `url` | string | URL to the presentation |
### Insert Text in Google Slides [#insert-text-in-google-slides]
Insert text into a shape or table cell in a Google Slides presentation. Use this to add text to text boxes, shapes, or table cells.
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | The object ID of the shape or table cell to insert text into. For table cells, use the cell object ID. |
| `text` | string | Yes | The text to insert |
| `insertionIndex` | number | No | The zero-based index at which to insert the text. If not specified, text is inserted at the beginning (index 0). |
#### Output [#output-13]
| Parameter | Type | Description |
| ------------------ | ------- | ---------------------------------------------------- |
| `inserted` | boolean | Whether the text was successfully inserted |
| `objectId` | string | The object ID where text was inserted |
| `text` | string | The text that was inserted |
| `metadata` | object | Operation metadata including presentation ID and URL |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Update Text Style in Google Slides [#update-text-style-in-google-slides]
Update the styling of text in a shape or table cell (bold, italic, font family, font size, foreground/background color, link, etc.). Only the fields you set are applied.
#### Input [#input-14]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | Object ID of the shape or table containing the text |
| `rowIndex` | number | No | When targeting a table cell, the zero-based row index |
| `columnIndex` | number | No | When targeting a table cell, the zero-based column index |
| `rangeType` | string | No | Range to style: ALL (default), FROM\_START\_INDEX, or FIXED\_RANGE |
| `startIndex` | number | No | Start index for FROM\_START\_INDEX or FIXED\_RANGE |
| `endIndex` | number | No | End index for FIXED\_RANGE |
| `bold` | boolean | No | Whether the text is bold |
| `italic` | boolean | No | Whether the text is italic |
| `underline` | boolean | No | Whether the text is underlined |
| `strikethrough` | boolean | No | Whether the text has strikethrough |
| `smallCaps` | boolean | No | Whether the text is rendered in small caps |
| `fontFamily` | string | No | Font family name (must be a font available to Google Slides) |
| `fontSize` | number | No | Font size in points |
| `foregroundColor` | string | No | Text color as hex (e.g. #1A73E8) |
| `backgroundColor` | string | No | Text background color as hex (e.g. #FFF8E1) |
| `linkUrl` | string | No | Convert the range to a hyperlink with this URL |
| `baselineOffset` | string | No | Baseline offset: NONE, SUPERSCRIPT, or SUBSCRIPT |
| `styleJson` | string | No | Advanced: raw TextStyle JSON merged with the simple fields above (overrides them on conflict) |
| `fields` | string | No | Advanced: explicit FieldMask. If omitted, the mask is computed from the fields you provided (or "\*" when styleJson is used without explicit fields). |
#### Output [#output-14]
| Parameter | Type | Description |
| ------------------ | ------- | ---------------------------------- |
| `updated` | boolean | Whether the text style was updated |
| `objectId` | string | The object whose text was styled |
| `fields` | string | FieldMask applied |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Update Paragraph Style in Google Slides [#update-paragraph-style-in-google-slides]
Update paragraph styling — alignment, line spacing, indents, space above/below — for text in a shape or table cell.
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------------------------------------ |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | Object ID of the shape or table containing the text |
| `rowIndex` | number | No | When targeting a table cell, the zero-based row index |
| `columnIndex` | number | No | When targeting a table cell, the zero-based column index |
| `rangeType` | string | No | Range to style: ALL (default), FROM\_START\_INDEX, or FIXED\_RANGE |
| `startIndex` | number | No | Start index for FROM\_START\_INDEX or FIXED\_RANGE |
| `endIndex` | number | No | End index for FIXED\_RANGE |
| `alignment` | string | No | Text alignment: START, CENTER, END, or JUSTIFIED |
| `lineSpacing` | number | No | Line spacing as a percentage (100 = single, 200 = double) |
| `indentStart` | number | No | Start-edge indent in points |
| `indentEnd` | number | No | End-edge indent in points |
| `indentFirstLine` | number | No | First-line indent in points |
| `spaceAbove` | number | No | Space above the paragraph in points |
| `spaceBelow` | number | No | Space below the paragraph in points |
| `direction` | string | No | Text direction: LEFT\_TO\_RIGHT or RIGHT\_TO\_LEFT |
| `spacingMode` | string | No | Spacing mode: NEVER\_COLLAPSE or COLLAPSE\_LISTS |
| `styleJson` | string | No | Advanced: raw ParagraphStyle JSON merged with the simple fields above |
| `fields` | string | No | Advanced: explicit FieldMask. If omitted, computed from provided fields. |
#### Output [#output-15]
| Parameter | Type | Description |
| ------------------ | ------- | --------------------------------------- |
| `updated` | boolean | Whether the paragraph style was updated |
| `objectId` | string | The object whose paragraph was styled |
| `fields` | string | FieldMask applied |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Delete Text in Google Slides [#delete-text-in-google-slides]
Delete text from a shape or table cell. Use range type ALL to clear all text, or FIXED\_RANGE / FROM\_START\_INDEX to delete a specific span.
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | Object ID of the shape or table containing the text |
| `rowIndex` | number | No | When targeting a table cell, the zero-based row index |
| `columnIndex` | number | No | When targeting a table cell, the zero-based column index |
| `rangeType` | string | No | Range to delete: ALL (default), FROM\_START\_INDEX, or FIXED\_RANGE |
| `startIndex` | number | No | Start index for FROM\_START\_INDEX or FIXED\_RANGE |
| `endIndex` | number | No | End index for FIXED\_RANGE |
#### Output [#output-16]
| Parameter | Type | Description |
| ------------------ | ------- | --------------------------------- |
| `deleted` | boolean | Whether the text was deleted |
| `objectId` | string | The object whose text was deleted |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Create Paragraph Bullets in Google Slides [#create-paragraph-bullets-in-google-slides]
Convert paragraphs in a shape or table cell into a bulleted or numbered list using a Google Slides bullet preset.
#### Input [#input-17]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | Object ID of the shape or table containing the text |
| `rowIndex` | number | No | When targeting a table cell, the zero-based row index |
| `columnIndex` | number | No | When targeting a table cell, the zero-based column index |
| `rangeType` | string | No | Range to apply bullets to: ALL (default), FROM\_START\_INDEX, or FIXED\_RANGE |
| `startIndex` | number | No | Start index for FROM\_START\_INDEX or FIXED\_RANGE |
| `endIndex` | number | No | End index for FIXED\_RANGE |
| `bulletPreset` | string | No | Bullet preset (e.g. BULLET\_DISC\_CIRCLE\_SQUARE, BULLET\_ARROW\_DIAMOND\_DISC, NUMBERED\_DIGIT\_ALPHA\_ROMAN, NUMBERED\_DIGIT\_ALPHA\_ROMAN\_PARENS, NUMBERED\_DIGIT\_NESTED). Defaults to BULLET\_DISC\_CIRCLE\_SQUARE. |
#### Output [#output-17]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------- |
| `created` | boolean | Whether bullets were created |
| `objectId` | string | The object where bullets were created |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Delete Paragraph Bullets in Google Slides [#delete-paragraph-bullets-in-google-slides]
Remove bullets/numbering from paragraphs in a shape or table cell.
#### Input [#input-18]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | Object ID of the shape or table containing the text |
| `rowIndex` | number | No | When targeting a table cell, the zero-based row index |
| `columnIndex` | number | No | When targeting a table cell, the zero-based column index |
| `rangeType` | string | No | Range to clear bullets from: ALL (default), FROM\_START\_INDEX, or FIXED\_RANGE |
| `startIndex` | number | No | Start index for FROM\_START\_INDEX or FIXED\_RANGE |
| `endIndex` | number | No | End index for FIXED\_RANGE |
#### Output [#output-18]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------- |
| `deleted` | boolean | Whether bullets were deleted |
| `objectId` | string | The object whose bullets were deleted |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Replace All Shapes With Image in Google Slides [#replace-all-shapes-with-image-in-google-slides]
Find every shape whose text matches the given token (e.g. \{\{cover-image}}) and replace it with an image, preserving the shape's position and bounds.
#### Input [#input-19]
| Parameter | Type | Required | Description |
| -------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `imageUrl` | string | Yes | Publicly fetchable image URL (PNG, JPEG, or GIF; max 50 MB and accessible to Google's servers) |
| `findText` | string | Yes | Text content of shapes to replace (e.g. \{\{cover-image}}) |
| `matchCase` | boolean | No | Case-sensitive match (default: true) |
| `imageReplaceMethod` | string | No | How the image fits the shape: CENTER\_INSIDE (preserve aspect, fit inside) or CENTER\_CROP (fill, crop overflow). Default: CENTER\_INSIDE. |
| `pageObjectIds` | string | No | Comma-separated slide IDs to limit replacement to specific slides |
#### Output [#output-19]
| Parameter | Type | Description |
| -------------------- | ------ | -------------------------------------------------- |
| `occurrencesChanged` | number | Number of shapes that were replaced with the image |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
| ↳ `imageUrl` | string | The image URL inserted |
| ↳ `findText` | string | The matched text token |
### Replace Image in Google Slides [#replace-image-in-google-slides]
Replace the source of an existing image with a new image URL, preserving the image's position, size, and properties.
#### Input [#input-20]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------ |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `imageObjectId` | string | Yes | Object ID of the existing image to replace |
| `imageUrl` | string | Yes | New publicly fetchable image URL (PNG, JPEG, or GIF, max 50 MB) |
| `imageReplaceMethod` | string | No | CENTER\_INSIDE (preserve aspect) or CENTER\_CROP (fill, crop overflow). Default: CENTER\_INSIDE. |
#### Output [#output-20]
| Parameter | Type | Description |
| ------------------ | ------- | ---------------------------------- |
| `replaced` | boolean | Whether the image was replaced |
| `imageObjectId` | string | The image object that was replaced |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
| ↳ `imageUrl` | string | The new image URL |
### Update Image Properties in Google Slides [#update-image-properties-in-google-slides]
Update image properties — brightness, contrast, transparency, crop, outline, link — on an existing image.
#### Input [#input-21]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ---------------------------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | Object ID of the image to update |
| `brightness` | number | No | Brightness adjustment between -1.0 and 1.0 |
| `contrast` | number | No | Contrast adjustment between -1.0 and 1.0 |
| `transparency` | number | No | Transparency between 0.0 (opaque) and 1.0 (fully transparent) |
| `linkUrl` | string | No | Make the image a hyperlink to this URL |
| `outlineColor` | string | No | Outline color as hex (e.g. #1A73E8) |
| `outlineWeight` | number | No | Outline weight in points |
| `outlineDashStyle` | string | No | Outline dash style: SOLID, DOT, DASH, DASH\_DOT, LONG\_DASH, LONG\_DASH\_DOT |
| `cropLeftOffset` | number | No | Crop offset from left edge (0.0 to 1.0) |
| `cropRightOffset` | number | No | Crop offset from right edge (0.0 to 1.0) |
| `cropTopOffset` | number | No | Crop offset from top edge (0.0 to 1.0) |
| `cropBottomOffset` | number | No | Crop offset from bottom edge (0.0 to 1.0) |
| `cropAngle` | number | No | Crop rotation angle in radians (clockwise) |
| `propertiesJson` | string | No | Advanced: raw ImageProperties JSON merged with the simple fields above |
| `fields` | string | No | Advanced: explicit FieldMask. If omitted, computed from provided fields. |
#### Output [#output-21]
| Parameter | Type | Description |
| ------------------ | ------- | ----------------------------------------- |
| `updated` | boolean | Whether the image properties were updated |
| `objectId` | string | The image object updated |
| `fields` | string | FieldMask applied |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Update Shape Properties in Google Slides [#update-shape-properties-in-google-slides]
Update a shape's appearance — background fill color, outline, link, content alignment, autofit. Pass only the properties you want to change.
#### Input [#input-22]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | ------------------------------------------------------------------------------ |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | Object ID of the shape to update |
| `fillColor` | string | No | Solid background fill color as hex (e.g. #FF6F61) |
| `fillAlpha` | number | No | Fill opacity between 0.0 (transparent) and 1.0 (opaque) |
| `fillUnset` | boolean | No | When true, removes any fill so the shape inherits its layout/master fill |
| `outlineColor` | string | No | Outline color as hex |
| `outlineWeight` | number | No | Outline weight in points |
| `outlineDashStyle` | string | No | Outline dash style: SOLID, DOT, DASH, DASH\_DOT, LONG\_DASH, LONG\_DASH\_DOT |
| `outlineUnset` | boolean | No | When true, removes any outline so the shape inherits its layout/master outline |
| `linkUrl` | string | No | Make the shape a hyperlink to this URL |
| `contentAlignment` | string | No | Vertical alignment of shape contents: TOP, MIDDLE, or BOTTOM |
| `autofitType` | string | No | Autofit behavior: NONE, TEXT\_AUTOFIT, or SHAPE\_AUTOFIT |
| `propertiesJson` | string | No | Advanced: raw ShapeProperties JSON merged with the simple fields above |
| `fields` | string | No | Advanced: explicit FieldMask. If omitted, computed from provided fields. |
#### Output [#output-22]
| Parameter | Type | Description |
| ------------------ | ------- | ----------------------------------------- |
| `updated` | boolean | Whether the shape properties were updated |
| `objectId` | string | The shape object updated |
| `fields` | string | FieldMask applied |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Update Page Properties in Google Slides [#update-page-properties-in-google-slides]
Update slide/page background — solid color or stretched picture — and other page properties.
#### Input [#input-23]
| Parameter | Type | Required | Description |
| -------------------- | ------- | -------- | ----------------------------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | Object ID of the slide/page to update |
| `backgroundColor` | string | No | Solid background color as hex (e.g. #0B1F3A) |
| `backgroundAlpha` | number | No | Background fill opacity between 0.0 and 1.0 |
| `backgroundImageUrl` | string | No | Publicly fetchable image URL to use as a stretched picture background |
| `backgroundUnset` | boolean | No | When true, removes the background so the slide inherits its layout background |
| `propertiesJson` | string | No | Advanced: raw PageProperties JSON merged with the simple fields above |
| `fields` | string | No | Advanced: explicit FieldMask. If omitted, computed from provided fields. |
#### Output [#output-23]
| Parameter | Type | Description |
| ------------------ | ------- | ---------------------------------------- |
| `updated` | boolean | Whether the page properties were updated |
| `objectId` | string | The page object updated |
| `fields` | string | FieldMask applied |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Update Slide Properties in Google Slides [#update-slide-properties-in-google-slides]
Update slide-specific properties such as whether the slide is skipped during presentation.
#### Input [#input-24]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | ------------------------------------------------------------------------ |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | Object ID of the slide to update |
| `isSkipped` | boolean | No | Whether the slide is skipped in presentation mode |
| `propertiesJson` | string | No | Advanced: raw SlideProperties JSON merged with the simple fields above |
| `fields` | string | No | Advanced: explicit FieldMask. If omitted, computed from provided fields. |
#### Output [#output-24]
| Parameter | Type | Description |
| ------------------ | ------- | ----------------------------------------- |
| `updated` | boolean | Whether the slide properties were updated |
| `objectId` | string | The slide object updated |
| `fields` | string | FieldMask applied |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Update Alt Text in Google Slides [#update-alt-text-in-google-slides]
Set the accessibility title and/or description (alt text) of a page element such as an image, shape, or group.
#### Input [#input-25]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ---------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | Object ID of the page element |
| `title` | string | No | Accessibility title for the element |
| `description` | string | No | Accessibility description (alt text) for the element |
#### Output [#output-25]
| Parameter | Type | Description |
| ------------------ | ------- | ---------------------------- |
| `updated` | boolean | Whether alt text was updated |
| `objectId` | string | The element updated |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Update Page Element Transform in Google Slides [#update-page-element-transform-in-google-slides]
Move, resize, scale, or shear a page element. Translate is specified in points; applyMode controls whether the transform is absolute (default) or relative (multiplied with the current transform).
#### Input [#input-26]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | Object ID of the page element to transform |
| `scaleX` | number | No | Horizontal scale factor (default 1) |
| `scaleY` | number | No | Vertical scale factor (default 1) |
| `shearX` | number | No | Horizontal shear factor (default 0) |
| `shearY` | number | No | Vertical shear factor (default 0) |
| `translateX` | number | No | X position in points (absolute) or delta (relative) |
| `translateY` | number | No | Y position in points (absolute) or delta (relative) |
| `applyMode` | string | No | ABSOLUTE replaces the current transform; RELATIVE multiplies with it. Default ABSOLUTE. |
#### Output [#output-26]
| Parameter | Type | Description |
| ------------------ | ------- | --------------------------------- |
| `updated` | boolean | Whether the transform was updated |
| `objectId` | string | The element transformed |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Update Z-Order in Google Slides [#update-z-order-in-google-slides]
Bring elements to front, send to back, or step them one layer forward/backward.
#### Input [#input-27]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectIds` | string | Yes | Comma-separated object IDs of the elements to reorder |
| `operation` | string | Yes | BRING\_TO\_FRONT, BRING\_FORWARD, SEND\_BACKWARD, or SEND\_TO\_BACK |
#### Output [#output-27]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------- |
| `reordered` | boolean | Whether the z-order was changed |
| `objectIds` | array | Elements reordered |
| `operation` | string | Operation applied |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Group Objects in Google Slides [#group-objects-in-google-slides]
Group two or more page elements on the same slide into a single object group.
#### Input [#input-28]
| Parameter | Type | Required | Description |
| ------------------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `childrenObjectIds` | string | Yes | Comma-separated object IDs of the elements to group (must be on the same slide) |
| `groupObjectId` | string | No | Optional object ID to assign to the new group |
#### Output [#output-28]
| Parameter | Type | Description |
| ------------------- | ------- | -------------------------------- |
| `grouped` | boolean | Whether the objects were grouped |
| `groupObjectId` | string | Object ID of the new group |
| `childrenObjectIds` | array | IDs of the grouped children |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Ungroup Objects in Google Slides [#ungroup-objects-in-google-slides]
Ungroup one or more object groups, releasing their children back to the slide.
#### Input [#input-29]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectIds` | string | Yes | Comma-separated object IDs of the groups to ungroup |
#### Output [#output-29]
| Parameter | Type | Description |
| ------------------ | ------- | ---------------------------------- |
| `ungrouped` | boolean | Whether the objects were ungrouped |
| `objectIds` | array | Group IDs that were ungrouped |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Create Line in Google Slides [#create-line-in-google-slides]
Create a line or connector on a slide.
#### Input [#input-30]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `pageObjectId` | string | Yes | Object ID of the slide to add the line to |
| `lineCategory` | string | No | STRAIGHT (default), BENT, or CURVED |
| `width` | number | No | Line width in points (default 200) |
| `height` | number | No | Line height in points (default 0 — horizontal line) |
| `positionX` | number | No | X position in points (default 100) |
| `positionY` | number | No | Y position in points (default 100) |
#### Output [#output-30]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------- |
| `lineId` | string | Object ID of the new line |
| `lineCategory` | string | Line category created |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `pageObjectId` | string | The slide ID |
| ↳ `url` | string | URL to the presentation |
### Update Line Properties in Google Slides [#update-line-properties-in-google-slides]
Update line appearance — color, weight, dash style, arrows, link.
#### Input [#input-31]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | Object ID of the line |
| `lineColor` | string | No | Line color as hex |
| `lineWeight` | number | No | Line weight in points |
| `dashStyle` | string | No | Dash style: SOLID, DOT, DASH, DASH\_DOT, LONG\_DASH, LONG\_DASH\_DOT |
| `startArrow` | string | No | Start arrow style: NONE, STEALTH\_ARROW, FILL\_ARROW, FILL\_CIRCLE, FILL\_SQUARE, FILL\_DIAMOND, OPEN\_ARROW, OPEN\_CIRCLE, OPEN\_SQUARE, OPEN\_DIAMOND |
| `endArrow` | string | No | End arrow style (same values as startArrow) |
| `linkUrl` | string | No | Hyperlink URL |
| `propertiesJson` | string | No | Advanced: raw LineProperties JSON merged with the simple fields above |
| `fields` | string | No | Advanced: explicit FieldMask. If omitted, computed from provided fields. |
#### Output [#output-31]
| Parameter | Type | Description |
| ------------------ | ------- | ---------------------------------------- |
| `updated` | boolean | Whether the line properties were updated |
| `objectId` | string | The line object updated |
| `fields` | string | FieldMask applied |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Update Line Category in Google Slides [#update-line-category-in-google-slides]
Change a connector line's category (STRAIGHT, BENT, or CURVED).
#### Input [#input-32]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | -------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | Object ID of the connector line |
| `lineCategory` | string | Yes | New line category: STRAIGHT, BENT, or CURVED |
#### Output [#output-32]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------- |
| `updated` | boolean | Whether the line category was updated |
| `objectId` | string | The line object updated |
| `lineCategory` | string | New line category |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Reroute Line in Google Slides [#reroute-line-in-google-slides]
Reroute a connector line so it efficiently connects its endpoint shapes — useful after moving the shapes the line connects.
#### Input [#input-33]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------ |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | Object ID of the connector line to reroute |
#### Output [#output-33]
| Parameter | Type | Description |
| ------------------ | ------- | ----------------------------- |
| `rerouted` | boolean | Whether the line was rerouted |
| `objectId` | string | The line object rerouted |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Insert Table Rows in Google Slides [#insert-table-rows-in-google-slides]
Insert one or more rows into a table, above or below a reference cell.
#### Input [#input-34]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | --------------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `tableObjectId` | string | Yes | Object ID of the table |
| `rowIndex` | number | Yes | Zero-based row index of the reference cell |
| `columnIndex` | number | Yes | Zero-based column index of the reference cell |
| `number` | number | Yes | Number of rows to insert (minimum 1) |
| `insertBelow` | boolean | No | Insert below the reference row instead of above (default false) |
#### Output [#output-34]
| Parameter | Type | Description |
| ------------------ | ------- | -------------------------- |
| `inserted` | boolean | Whether rows were inserted |
| `tableObjectId` | string | The table updated |
| `number` | number | Number of rows inserted |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Insert Table Columns in Google Slides [#insert-table-columns-in-google-slides]
Insert one or more columns into a table, left or right of a reference cell.
#### Input [#input-35]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | --------------------------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `tableObjectId` | string | Yes | Object ID of the table |
| `rowIndex` | number | Yes | Zero-based row index of the reference cell |
| `columnIndex` | number | Yes | Zero-based column index of the reference cell |
| `number` | number | Yes | Number of columns to insert (minimum 1) |
| `insertRight` | boolean | No | Insert to the right of the reference column instead of left (default false) |
#### Output [#output-35]
| Parameter | Type | Description |
| ------------------ | ------- | ----------------------------- |
| `inserted` | boolean | Whether columns were inserted |
| `tableObjectId` | string | The table updated |
| `number` | number | Number of columns inserted |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Delete Table Row in Google Slides [#delete-table-row-in-google-slides]
Delete the row containing the reference cell from a table.
#### Input [#input-36]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | -------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `tableObjectId` | string | Yes | Object ID of the table |
| `rowIndex` | number | Yes | Zero-based row index identifying the row to delete |
| `columnIndex` | number | Yes | Zero-based column index of any cell in the row |
#### Output [#output-36]
| Parameter | Type | Description |
| ------------------ | ------- | --------------------------- |
| `deleted` | boolean | Whether the row was deleted |
| `tableObjectId` | string | The table updated |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Delete Table Column in Google Slides [#delete-table-column-in-google-slides]
Delete the column containing the reference cell from a table.
#### Input [#input-37]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | -------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `tableObjectId` | string | Yes | Object ID of the table |
| `rowIndex` | number | Yes | Zero-based row index of any cell in the column |
| `columnIndex` | number | Yes | Zero-based column index identifying the column to delete |
#### Output [#output-37]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------ |
| `deleted` | boolean | Whether the column was deleted |
| `tableObjectId` | string | The table updated |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Merge Table Cells in Google Slides [#merge-table-cells-in-google-slides]
Merge a rectangular range of table cells into a single cell. The range starts at (rowIndex, columnIndex) and covers rowSpan × columnSpan cells.
#### Input [#input-38]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | -------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | Object ID of the table |
| `rowIndex` | number | Yes | Zero-based row index of the top-left cell |
| `columnIndex` | number | Yes | Zero-based column index of the top-left cell |
| `rowSpan` | number | Yes | Number of rows to merge (minimum 1) |
| `columnSpan` | number | Yes | Number of columns to merge (minimum 1) |
#### Output [#output-38]
| Parameter | Type | Description |
| ------------------ | ------- | ----------------------------- |
| `merged` | boolean | Whether the cells were merged |
| `objectId` | string | The table updated |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Unmerge Table Cells in Google Slides [#unmerge-table-cells-in-google-slides]
Unmerge any merged cells within the given table range.
#### Input [#input-39]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | Object ID of the table |
| `rowIndex` | number | Yes | Zero-based row index of the top-left cell of the range |
| `columnIndex` | number | Yes | Zero-based column index of the top-left cell of the range |
| `rowSpan` | number | Yes | Number of rows in the range (minimum 1) |
| `columnSpan` | number | Yes | Number of columns in the range (minimum 1) |
#### Output [#output-39]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------- |
| `unmerged` | boolean | Whether the cells were unmerged |
| `objectId` | string | The table updated |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Update Table Cell Properties in Google Slides [#update-table-cell-properties-in-google-slides]
Update background fill and content alignment for a range of table cells.
#### Input [#input-40]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | -------------------------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | Object ID of the table |
| `rowIndex` | number | Yes | Zero-based row index of the top-left cell of the range |
| `columnIndex` | number | Yes | Zero-based column index of the top-left cell of the range |
| `rowSpan` | number | Yes | Number of rows in the range (minimum 1) |
| `columnSpan` | number | Yes | Number of columns in the range (minimum 1) |
| `backgroundColor` | string | No | Cell background color as hex (e.g. #F1F3F4) |
| `backgroundAlpha` | number | No | Background fill opacity between 0.0 and 1.0 |
| `contentAlignment` | string | No | Vertical alignment of cell content: TOP, MIDDLE, or BOTTOM |
| `propertiesJson` | string | No | Advanced: raw TableCellProperties JSON merged with the simple fields above |
| `fields` | string | No | Advanced: explicit FieldMask. If omitted, computed from provided fields. |
#### Output [#output-40]
| Parameter | Type | Description |
| ------------------ | ------- | ---------------------------------------- |
| `updated` | boolean | Whether the cell properties were updated |
| `objectId` | string | The table updated |
| `fields` | string | FieldMask applied |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Update Table Border Properties in Google Slides [#update-table-border-properties-in-google-slides]
Update border color, weight, and dash style for a position (e.g. ALL, INNER, OUTER) in a table range.
#### Input [#input-41]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | Object ID of the table |
| `rowIndex` | number | Yes | Zero-based row index of the top-left cell of the range |
| `columnIndex` | number | Yes | Zero-based column index of the top-left cell of the range |
| `rowSpan` | number | Yes | Number of rows in the range (minimum 1) |
| `columnSpan` | number | Yes | Number of columns in the range (minimum 1) |
| `borderPosition` | string | No | Which borders to update: ALL (default), BOTTOM, INNER, INNER\_HORIZONTAL, INNER\_VERTICAL, LEFT, OUTER, RIGHT, TOP |
| `borderColor` | string | No | Border color as hex |
| `borderWeight` | number | No | Border weight in points |
| `dashStyle` | string | No | Dash style: SOLID, DOT, DASH, DASH\_DOT, LONG\_DASH, LONG\_DASH\_DOT |
| `propertiesJson` | string | No | Advanced: raw TableBorderProperties JSON merged with the simple fields above |
| `fields` | string | No | Advanced: explicit FieldMask. If omitted, computed from provided fields. |
#### Output [#output-41]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------ |
| `updated` | boolean | Whether the border properties were updated |
| `objectId` | string | The table updated |
| `fields` | string | FieldMask applied |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Update Table Column Properties in Google Slides [#update-table-column-properties-in-google-slides]
Update column widths and other column-level table properties.
#### Input [#input-42]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | Object ID of the table |
| `columnIndices` | string | Yes | Comma-separated zero-based column indices to update (e.g. "0,2,3") |
| `columnWidth` | number | No | Column width in points |
| `propertiesJson` | string | No | Advanced: raw TableColumnProperties JSON merged with the simple fields above |
| `fields` | string | No | Advanced: explicit FieldMask. If omitted, computed from provided fields. |
#### Output [#output-42]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------ |
| `updated` | boolean | Whether the column properties were updated |
| `objectId` | string | The table updated |
| `fields` | string | FieldMask applied |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Update Table Row Properties in Google Slides [#update-table-row-properties-in-google-slides]
Update minimum row heights and other row-level table properties.
#### Input [#input-43]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | Object ID of the table |
| `rowIndices` | string | Yes | Comma-separated zero-based row indices to update (e.g. "0,2,3") |
| `minRowHeight` | number | No | Minimum row height in points |
| `propertiesJson` | string | No | Advanced: raw TableRowProperties JSON merged with the simple fields above |
| `fields` | string | No | Advanced: explicit FieldMask. If omitted, computed from provided fields. |
#### Output [#output-43]
| Parameter | Type | Description |
| ------------------ | ------- | --------------------------------------- |
| `updated` | boolean | Whether the row properties were updated |
| `objectId` | string | The table updated |
| `fields` | string | FieldMask applied |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Embed Google Sheets Chart in Slides [#embed-google-sheets-chart-in-slides]
Embed a chart from a Google Sheets spreadsheet onto a slide. LINKED charts can be refreshed; NOT\_LINKED\_IMAGE inserts a static image of the chart.
#### Input [#input-44]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `pageObjectId` | string | Yes | Object ID of the slide to add the chart to |
| `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID containing the chart |
| `chartId` | number | Yes | Numeric chart ID within the spreadsheet |
| `linkingMode` | string | No | LINKED (default) or NOT\_LINKED\_IMAGE |
| `width` | number | No | Width in points (default 400) |
| `height` | number | No | Height in points (default 300) |
| `positionX` | number | No | X position in points (default 100) |
| `positionY` | number | No | Y position in points (default 100) |
#### Output [#output-44]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------- |
| `chartObjectId` | string | Object ID of the inserted chart |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `pageObjectId` | string | The slide ID |
| ↳ `url` | string | URL to the presentation |
### Refresh Sheets Chart in Slides [#refresh-sheets-chart-in-slides]
Refresh an embedded linked Sheets chart so it reflects the latest spreadsheet data.
#### Input [#input-45]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------ |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | Object ID of the embedded chart to refresh |
#### Output [#output-45]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------- |
| `refreshed` | boolean | Whether the chart was refreshed |
| `objectId` | string | The chart object refreshed |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Replace All Shapes With Sheets Chart in Slides [#replace-all-shapes-with-sheets-chart-in-slides]
Find every shape matching a text token (e.g. \{\{revenue-chart}}) and replace each with the same embedded Sheets chart, preserving the shape's position and bounds.
#### Input [#input-46]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | ----------------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID containing the chart |
| `chartId` | number | Yes | Numeric chart ID within the spreadsheet |
| `findText` | string | Yes | Text content of shapes to replace (e.g. \{\{revenue-chart}}) |
| `matchCase` | boolean | No | Case-sensitive match (default true) |
| `linkingMode` | string | No | LINKED (default) or NOT\_LINKED\_IMAGE |
| `pageObjectIds` | string | No | Comma-separated slide IDs to limit replacement to specific slides |
#### Output [#output-46]
| Parameter | Type | Description |
| -------------------- | ------ | ---------------------------------------- |
| `occurrencesChanged` | number | Number of shapes replaced with the chart |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
| ↳ `findText` | string | The matched text token |
| ↳ `spreadsheetId` | string | Source spreadsheet ID |
| ↳ `chartId` | number | Source chart ID |
### Embed Video in Google Slides [#embed-video-in-google-slides]
Embed a YouTube or Google Drive video on a slide.
#### Input [#input-47]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------ |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `pageObjectId` | string | Yes | Object ID of the slide to add the video to |
| `source` | string | Yes | YOUTUBE or DRIVE |
| `videoId` | string | Yes | YouTube video ID or Drive file ID |
| `width` | number | No | Width in points (default 400) |
| `height` | number | No | Height in points (default 225) |
| `positionX` | number | No | X position in points (default 100) |
| `positionY` | number | No | Y position in points (default 100) |
#### Output [#output-47]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------- |
| `videoObjectId` | string | Object ID of the inserted video |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `pageObjectId` | string | The slide ID |
| ↳ `url` | string | URL to the presentation |
### Update Video Properties in Google Slides [#update-video-properties-in-google-slides]
Update video playback options (autoPlay, mute, start/end) and outline.
#### Input [#input-48]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | ------------------------------------------------------------------------ |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `objectId` | string | Yes | Object ID of the video |
| `autoPlay` | boolean | No | Play the video automatically when the slide is shown |
| `mute` | boolean | No | Mute the video |
| `start` | number | No | Playback start time in seconds |
| `end` | number | No | Playback end time in seconds |
| `outlineColor` | string | No | Outline color as hex |
| `outlineWeight` | number | No | Outline weight in points |
| `outlineDashStyle` | string | No | Outline dash style |
| `propertiesJson` | string | No | Advanced: raw VideoProperties JSON merged with the simple fields above |
| `fields` | string | No | Advanced: explicit FieldMask. If omitted, computed from provided fields. |
#### Output [#output-48]
| Parameter | Type | Description |
| ------------------ | ------- | ----------------------------------------- |
| `updated` | boolean | Whether the video properties were updated |
| `objectId` | string | The video object updated |
| `fields` | string | FieldMask applied |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### Batch Update Google Slides (Raw) [#batch-update-google-slides-raw]
Run a raw Slides API batchUpdate with a list of Request objects. Use this when the higher-level tools do not cover an operation, or to bundle multiple operations into a single atomic batch (all-or-nothing).
#### Input [#input-49]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `requests` | string | Yes | JSON array of Slides API Request objects. Example: \[\{"replaceAllText":\{"containsText":\{"text":"\{\{title}}"},"replaceText":"Q3 Review"}}, \{"updatePageProperties":\{"objectId":"slide\_1","pageProperties":\{"pageBackgroundFill":\{"solidFill":\{"color":\{"rgbColor":\{"red":0.043,"green":0.122,"blue":0.231}}}}},"fields":"pageBackgroundFill"}}] |
| `writeControl` | string | No | Optional JSON WriteControl object for optimistic concurrency, e.g. \{"requiredRevisionId":"..."} |
#### Output [#output-49]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------------------------------------- |
| `replies` | array | Array of reply objects, one per request (parallel-indexed) |
| `writeControl` | json | WriteControl returned by the server (revision tracking) |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
| ↳ `requestCount` | number | Number of replies returned |
### Copy Google Slides Presentation [#copy-google-slides-presentation]
Copy a template presentation in Drive to a new file. Use this before merging data so the original template is never modified.
#### Input [#input-50]
| Parameter | Type | Required | Description |
| ---------------------- | ------ | -------- | ---------------------------------------------------------- |
| `sourcePresentationId` | string | Yes | Drive file ID of the source/template presentation |
| `title` | string | No | Title for the copy. Defaults to "Copy of \". |
| `folderId` | string | No | Drive folder ID where the copy should be placed |
#### Output [#output-50]
| Parameter | Type | Description |
| ------------------------ | ------ | --------------------------------- |
| `presentationId` | string | ID of the new copied presentation |
| `title` | string | Title of the new presentation |
| `metadata` | object | Operation metadata |
| ↳ `sourcePresentationId` | string | Source/template presentation ID |
| ↳ `presentationId` | string | New presentation ID |
| ↳ `title` | string | New presentation title |
| ↳ `mimeType` | string | MIME type of the presentation |
| ↳ `url` | string | URL to the new presentation |
### Export Google Slides Presentation [#export-google-slides-presentation]
Export a presentation to PDF, PPTX, ODP, TXT, PNG, JPEG, or SVG via the Drive export endpoint. Stores the exported file as an execution file when execution context is available.
#### Input [#input-51]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | -------------------------------------------------------- |
| `presentationId` | string | Yes | Google Slides presentation ID |
| `exportFormat` | string | No | Format: PDF (default), PPTX, ODP, TXT, PNG, JPEG, or SVG |
#### Output [#output-51]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------------------------------------- |
| `file` | file | Stored exported presentation file |
| `contentBase64` | string | Deprecated legacy inline content. New exports return file. |
| `mimeType` | string | MIME type of the exported content |
| `sizeBytes` | number | Size of the exported content in bytes |
| `metadata` | object | Operation metadata |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
| ↳ `exportFormat` | string | Export format used |
---
# Google Tasks (/integrations/google_tasks)
{/* MANUAL-CONTENT-START:intro */}
[Google Tasks](https://support.google.com/tasks) is Google's lightweight task management service, integrated into Gmail, Google Calendar, and the standalone Google Tasks app. It provides a simple way to create, organize, and track to-do items with support for due dates, subtasks, and task lists.
With the Google Tasks integration in Sim, you can:
* **Create tasks**: Add new to-do items to any task list with titles, notes, and due dates
* **List tasks**: Retrieve all tasks from a specific task list
* **Get task details**: Fetch detailed information about a specific task by ID
* **Update tasks**: Modify task titles, notes, due dates, or completion status
* **Delete tasks**: Remove tasks from a task list
* **List task lists**: Browse all available task lists in a Google account
In Sim, the Google Tasks integration allows your agents to manage to-do items programmatically as part of automated workflows. This enables use cases such as automated task creation from incoming data, deadline monitoring, and workflow-triggered task management.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Google Tasks into your workflow. Create, read, update, delete, and list tasks and task lists.
## Actions [#actions]
### Google Tasks Create Task [#google-tasks-create-task]
Create a new task in a Google Tasks list
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------- |
| `taskListId` | string | No | Task list ID (defaults to primary task list "@default") |
| `title` | string | Yes | Title of the task (max 1024 characters) |
| `notes` | string | No | Notes/description for the task (max 8192 characters) |
| `due` | string | No | Due date in RFC 3339 format (e.g., 2025-06-03T00:00:00.000Z) |
| `status` | string | No | Task status: "needsAction" or "completed" |
| `parent` | string | No | Parent task ID to create this task as a subtask. Omit for top-level tasks. |
| `previous` | string | No | Previous sibling task ID to position after. Omit to place first among siblings. |
#### Output [#output]
| Parameter | Type | Description |
| ------------- | ------- | -------------------------------------- |
| `id` | string | Task ID |
| `title` | string | Task title |
| `notes` | string | Task notes |
| `status` | string | Task status (needsAction or completed) |
| `due` | string | Due date |
| `updated` | string | Last modification time |
| `selfLink` | string | URL for the task |
| `webViewLink` | string | Link to task in Google Tasks UI |
| `parent` | string | Parent task ID |
| `position` | string | Position among sibling tasks |
| `completed` | string | Completion date |
| `deleted` | boolean | Whether the task is deleted |
### Google Tasks List Tasks [#google-tasks-list-tasks]
List all tasks in a Google Tasks list
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------------- | ------- | -------- | ----------------------------------------------------------- |
| `taskListId` | string | No | Task list ID (defaults to primary task list "@default") |
| `maxResults` | number | No | Maximum number of tasks to return (default 20, max 100) |
| `pageToken` | string | No | Token for pagination |
| `showCompleted` | boolean | No | Whether to show completed tasks (default true) |
| `showDeleted` | boolean | No | Whether to show deleted tasks (default false) |
| `showHidden` | boolean | No | Whether to show hidden tasks (default false) |
| `dueMin` | string | No | Lower bound for due date filter (RFC 3339 timestamp) |
| `dueMax` | string | No | Upper bound for due date filter (RFC 3339 timestamp) |
| `completedMin` | string | No | Lower bound for task completion date (RFC 3339 timestamp) |
| `completedMax` | string | No | Upper bound for task completion date (RFC 3339 timestamp) |
| `updatedMin` | string | No | Lower bound for last modification time (RFC 3339 timestamp) |
#### Output [#output-1]
| Parameter | Type | Description |
| --------------- | ------- | ----------------------------------------------------- |
| `tasks` | array | List of tasks |
| ↳ `id` | string | Task identifier |
| ↳ `title` | string | Title of the task |
| ↳ `notes` | string | Notes/description for the task |
| ↳ `status` | string | Task status: "needsAction" or "completed" |
| ↳ `due` | string | Due date (RFC 3339 timestamp) |
| ↳ `completed` | string | Completion date (RFC 3339 timestamp) |
| ↳ `updated` | string | Last modification time (RFC 3339 timestamp) |
| ↳ `selfLink` | string | URL pointing to this task |
| ↳ `webViewLink` | string | Link to task in Google Tasks UI |
| ↳ `parent` | string | Parent task identifier |
| ↳ `position` | string | Position among sibling tasks (string-based ordering) |
| ↳ `hidden` | boolean | Whether the task is hidden |
| ↳ `deleted` | boolean | Whether the task is deleted |
| ↳ `links` | array | Collection of links associated with the task |
| ↳ `type` | string | Link type (e.g., "email", "generic", "chat\_message") |
| ↳ `description` | string | Link description |
| ↳ `link` | string | The URL |
| `nextPageToken` | string | Token for retrieving the next page of results |
### Google Tasks Get Task [#google-tasks-get-task]
Retrieve a specific task by ID from a Google Tasks list
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------- |
| `taskListId` | string | No | Task list ID (defaults to primary task list "@default") |
| `taskId` | string | Yes | The ID of the task to retrieve |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------- | ------- | -------------------------------------- |
| `id` | string | Task ID |
| `title` | string | Task title |
| `notes` | string | Task notes |
| `status` | string | Task status (needsAction or completed) |
| `due` | string | Due date |
| `updated` | string | Last modification time |
| `selfLink` | string | URL for the task |
| `webViewLink` | string | Link to task in Google Tasks UI |
| `parent` | string | Parent task ID |
| `position` | string | Position among sibling tasks |
| `completed` | string | Completion date |
| `deleted` | boolean | Whether the task is deleted |
### Google Tasks Update Task [#google-tasks-update-task]
Update an existing task in a Google Tasks list
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------- |
| `taskListId` | string | No | Task list ID (defaults to primary task list "@default") |
| `taskId` | string | Yes | The ID of the task to update |
| `title` | string | No | New title for the task |
| `notes` | string | No | New notes for the task |
| `due` | string | No | New due date in RFC 3339 format |
| `status` | string | No | New status: "needsAction" or "completed" |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------- | ------- | -------------------------------------- |
| `id` | string | Task ID |
| `title` | string | Task title |
| `notes` | string | Task notes |
| `status` | string | Task status (needsAction or completed) |
| `due` | string | Due date |
| `updated` | string | Last modification time |
| `selfLink` | string | URL for the task |
| `webViewLink` | string | Link to task in Google Tasks UI |
| `parent` | string | Parent task ID |
| `position` | string | Position among sibling tasks |
| `completed` | string | Completion date |
| `deleted` | boolean | Whether the task is deleted |
### Google Tasks Delete Task [#google-tasks-delete-task]
Delete a task from a Google Tasks list
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------- |
| `taskListId` | string | No | Task list ID (defaults to primary task list "@default") |
| `taskId` | string | Yes | The ID of the task to delete |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------- |
| `taskId` | string | Deleted task ID |
| `deleted` | boolean | Whether deletion was successful |
### Google Tasks List Task Lists [#google-tasks-list-task-lists]
Retrieve all task lists for the authenticated user
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------ |
| `maxResults` | number | No | Maximum number of task lists to return (default 20, max 100) |
| `pageToken` | string | No | Token for pagination |
#### Output [#output-5]
| Parameter | Type | Description |
| --------------- | ------ | --------------------------------------------- |
| `taskLists` | array | List of task lists |
| ↳ `id` | string | Task list identifier |
| ↳ `title` | string | Title of the task list |
| ↳ `updated` | string | Last modification time (RFC 3339 timestamp) |
| ↳ `selfLink` | string | URL pointing to this task list |
| `nextPageToken` | string | Token for retrieving the next page of results |
---
# Google Translate (/integrations/google_translate)
{/* MANUAL-CONTENT-START:intro */}
[Google Translate](https://translate.google.com/) is Google's powerful translation service, supporting over 100 languages for text, documents, and websites. Backed by advanced neural machine translation, Google Translate delivers fast and accurate translations for a wide range of use cases.
With the Google Translate integration in Sim, you can:
* **Translate text**: Convert text between over 100 languages using Google Cloud Translation
* **Detect languages**: Automatically identify the language of a given text input
In Sim, the Google Translate integration allows your agents to translate text and detect languages as part of automated workflows. This enables use cases such as localization, multilingual support, content translation, and language detection at scale.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Translate and detect languages using the Google Cloud Translation API. Supports auto-detection of the source language.
## Actions [#actions]
### Google Translate [#google-translate]
Translate text between languages using the Google Cloud Translation API. Supports auto-detection of the source language.
#### Input [#input]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Google Cloud API key with Cloud Translation API enabled |
| `text` | string | Yes | The text to translate |
| `target` | string | Yes | Target language code (e.g., "es", "fr", "de", "ja") |
| `source` | string | No | Source language code. If omitted, the API will auto-detect the source language. |
| `format` | string | No | Format of the text: "text" for plain text, "html" for HTML content |
#### Output [#output]
| Parameter | Type | Description |
| ------------------------ | ------ | --------------------------------------------------------------- |
| `translatedText` | string | The translated text |
| `detectedSourceLanguage` | string | The detected source language code (if source was not specified) |
### Google Translate Detect Language [#google-translate-detect-language]
Detect the language of text using the Google Cloud Translation API.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------- |
| `apiKey` | string | Yes | Google Cloud API key with Cloud Translation API enabled |
| `text` | string | Yes | The text to detect the language of |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------ | ------ | --------------------------------------------------- |
| `language` | string | The detected language code (e.g., "en", "es", "fr") |
| `confidence` | number | Confidence score of the detection |
---
# Google Vault (/integrations/google_vault)
{/* MANUAL-CONTENT-START:intro */}
[Google Vault](https://workspace.google.com/products/vault/) is a core information governance and eDiscovery tool for organizations using Google Workspace. With Google Vault, you can retain, search, and export users' Google Workspace data (such as Gmail, Drive, Groups, and Meet) to support litigation, regulatory compliance, and internal investigations.
Vault provides administrators and legal teams with powerful controls to manage the lifecycle of business communications. You can place data on legal hold, create matters to group eDiscovery activities, search message and file content across your organization, and export relevant data for review.
Key features of Google Vault include:
* **Search & Export**: Search across Gmail, Drive, Groups, and Meet for relevant data and export the results for analysis.
* **Matters & Holds**: Create matters (cases) and apply legal holds to retain user data beyond standard retention policies.
* **Retention Rules**: Define retention rules to keep or delete data after a set period to meet business and compliance needs.
* **Audit & Review**: Monitor Vault activity and enforce compliance with organization-wide policies.
In Sim, the Google Vault integration lets your AI agents programmatically manage Vault matters, exports, and holds. This enables automated workflows for legal discovery, compliance archiving, and data retention management in your organization. Agents can initiate new exports, list available holds, manage legal matters, and retrieve exported files directly through your automated processes, ensuring your compliance and information governance needs are met efficiently and securely.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Connect Google Vault to manage the full matter lifecycle, create and manage holds and exports, and save reusable search queries for eDiscovery and compliance.
## Actions [#actions]
### Vault Create Export [#vault-create-export]
Create an export in a matter
#### Input [#input]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") |
| `exportName` | string | Yes | Name for the export (avoid special characters) |
| `corpus` | string | Yes | Data corpus to export (MAIL, DRIVE, GROUPS, HANGOUTS\_CHAT, VOICE) |
| `accountEmails` | string | No | Comma-separated list of user emails to scope export (e.g., "[user1@example.com](mailto:user1@example.com), [user2@example.com](mailto:user2@example.com)") |
| `orgUnitId` | string | No | Organization unit ID to scope export (e.g., "id:03ph8a2z1enx5q0", alternative to emails) |
| `startTime` | string | No | Start time for date filtering (ISO 8601 format, e.g., "2024-01-01T00:00:00Z") |
| `endTime` | string | No | End time for date filtering (ISO 8601 format, e.g., "2024-12-31T23:59:59Z") |
| `terms` | string | No | Search query terms to filter exported content (e.g., "from:[sender@example.com](mailto:sender@example.com) subject:invoice") |
#### Output [#output]
| Parameter | Type | Description |
| --------- | ---- | --------------------- |
| `export` | json | Created export object |
### Vault List Exports [#vault-list-exports]
List exports for a matter
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------------- |
| `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") |
| `pageSize` | number | No | Number of exports to return per page |
| `pageToken` | string | No | Token for pagination |
| `exportId` | string | No | Optional export ID to fetch a specific export (e.g., "exportId123456") |
#### Output [#output-1]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------------------------ |
| `exports` | json | Array of export objects |
| `export` | json | Single export object (when exportId is provided) |
| `nextPageToken` | string | Token for fetching next page of results |
### Vault Delete Export [#vault-delete-export]
Delete an export from a matter
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------ |
| `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") |
| `exportId` | string | Yes | The export ID to delete (e.g., "exportId123456") |
#### Output [#output-2]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------ |
| `success` | boolean | Whether the export was deleted |
### Vault Download Export File [#vault-download-export-file]
Download a single file from a Google Vault export (GCS object)
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------ |
| `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") |
| `bucketName` | string | Yes | GCS bucket name from cloudStorageSink.files.bucketName |
| `objectName` | string | Yes | GCS object name from cloudStorageSink.files.objectName |
| `fileName` | string | No | Optional filename override for the downloaded file |
#### Output [#output-3]
| Parameter | Type | Description |
| --------- | ---- | ------------------------------------------------------ |
| `file` | file | Downloaded Vault export file stored in execution files |
### Vault Create Hold [#vault-create-hold]
Create a hold in a matter
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") |
| `holdName` | string | Yes | Name for the hold |
| `corpus` | string | Yes | Data corpus to hold (MAIL, DRIVE, GROUPS, HANGOUTS\_CHAT, VOICE) |
| `accountEmails` | string | No | Comma-separated list of user emails to put on hold (e.g., "[user1@example.com](mailto:user1@example.com), [user2@example.com](mailto:user2@example.com)") |
| `orgUnitId` | string | No | Organization unit ID to put on hold (e.g., "id:03ph8a2z1enx5q0", alternative to accounts) |
| `terms` | string | No | Search terms to filter held content (e.g., "from:[sender@example.com](mailto:sender@example.com) subject:invoice", for MAIL and GROUPS corpus) |
| `startTime` | string | No | Start time for date filtering (ISO 8601 format, e.g., "2024-01-01T00:00:00Z", for MAIL and GROUPS corpus) |
| `endTime` | string | No | End time for date filtering (ISO 8601 format, e.g., "2024-12-31T23:59:59Z", for MAIL and GROUPS corpus) |
| `includeSharedDrives` | boolean | No | Include files in shared drives (for DRIVE corpus) |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ---- | ------------------- |
| `hold` | json | Created hold object |
### Vault List Holds [#vault-list-holds]
List holds for a matter
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------- |
| `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") |
| `pageSize` | number | No | Number of holds to return per page |
| `pageToken` | string | No | Token for pagination |
| `holdId` | string | No | Optional hold ID to fetch a specific hold (e.g., "holdId123456") |
#### Output [#output-5]
| Parameter | Type | Description |
| --------------- | ------ | -------------------------------------------- |
| `holds` | json | Array of hold objects |
| `hold` | json | Single hold object (when holdId is provided) |
| `nextPageToken` | string | Token for fetching next page of results |
### Vault Update Hold [#vault-update-hold]
Replace the name, query, and scope of an existing hold. This is a full-resource update: fetch the current hold first (Vault List Holds) and resupply every field you want to keep — any field left blank is cleared, not left unchanged.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") |
| `holdId` | string | Yes | The hold ID to update (e.g., "holdId123456") |
| `holdName` | string | Yes | Name for the hold |
| `corpus` | string | Yes | Data corpus of the hold (MAIL, DRIVE, GROUPS, HANGOUTS\_CHAT, VOICE) |
| `accountEmails` | string | No | Comma-separated list of user emails covered by the hold (e.g., "[user1@example.com](mailto:user1@example.com), [user2@example.com](mailto:user2@example.com)") |
| `orgUnitId` | string | No | Organization unit ID covered by the hold (e.g., "id:03ph8a2z1enx5q0", alternative to accounts) |
| `terms` | string | No | Search terms to filter held content (e.g., "from:[sender@example.com](mailto:sender@example.com) subject:invoice", for MAIL and GROUPS corpus). Resupply the hold's current terms to keep them — this replaces the hold, so leaving it blank clears any existing filter. |
| `startTime` | string | No | Start time for date filtering (ISO 8601 format, e.g., "2024-01-01T00:00:00Z", for MAIL and GROUPS corpus). Resupply the hold's current value to keep it — leaving it blank clears any existing date filter. |
| `endTime` | string | No | End time for date filtering (ISO 8601 format, e.g., "2024-12-31T23:59:59Z", for MAIL and GROUPS corpus). Resupply the hold's current value to keep it — leaving it blank clears any existing date filter. |
| `includeSharedDrives` | boolean | No | Include files in shared drives (for DRIVE corpus). Resupply true if the hold currently includes shared drives — leaving it false/blank clears that setting. |
#### Output [#output-6]
| Parameter | Type | Description |
| --------- | ---- | ------------------- |
| `hold` | json | Updated hold object |
### Vault Delete Hold [#vault-delete-hold]
Delete a hold and release its covered accounts
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------- |
| `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") |
| `holdId` | string | Yes | The hold ID to delete (e.g., "holdId123456") |
#### Output [#output-7]
| Parameter | Type | Description |
| --------- | ------- | ---------------------------- |
| `success` | boolean | Whether the hold was deleted |
### Vault Add Held Accounts [#vault-add-held-accounts]
Add accounts to an existing hold
#### Input [#input-8]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") |
| `holdId` | string | Yes | The hold ID to add accounts to (e.g., "holdId123456") |
| `accountEmails` | string | Yes | Comma-separated list of user emails to add to the hold (e.g., "[user1@example.com](mailto:user1@example.com), [user2@example.com](mailto:user2@example.com)") |
#### Output [#output-8]
| Parameter | Type | Description |
| ----------- | ----- | ---------------------------------------- |
| `responses` | array | Per-account results of the add operation |
| ↳ `account` | json | Held account (accountId, email) |
| ↳ `status` | json | Status (code, message) if the add failed |
### Vault Remove Held Accounts [#vault-remove-held-accounts]
Remove accounts from an existing hold
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------ |
| `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") |
| `holdId` | string | Yes | The hold ID to remove accounts from (e.g., "holdId123456") |
| `accountIds` | string | Yes | Comma-separated list of Admin SDK account IDs to remove from the hold (e.g., "accountId1, accountId2") |
#### Output [#output-9]
| Parameter | Type | Description |
| ---------- | ----- | -------------------------------------------- |
| `statuses` | array | Per-account removal status, in request order |
### Vault Create Matter [#vault-create-matter]
Create a new matter in Google Vault
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ----------------------------------- |
| `name` | string | Yes | Name for the new matter |
| `description` | string | No | Optional description for the matter |
#### Output [#output-10]
| Parameter | Type | Description |
| --------- | ---- | --------------------- |
| `matter` | json | Created matter object |
### Vault List Matters [#vault-list-matters]
List matters, or get a specific matter if matterId is provided
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `pageSize` | number | No | Number of matters to return per page |
| `pageToken` | string | No | Token for pagination |
| `matterId` | string | No | Optional matter ID to fetch a specific matter (e.g., "12345678901234567890") |
#### Output [#output-11]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------------------------ |
| `matters` | json | Array of matter objects |
| `matter` | json | Single matter object (when matterId is provided) |
| `nextPageToken` | string | Token for fetching next page of results |
### Vault Update Matter [#vault-update-matter]
Update the name and/or description of a matter
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------ |
| `matterId` | string | Yes | The matter ID to update (e.g., "12345678901234567890") |
| `name` | string | Yes | New name for the matter |
| `description` | string | No | New description for the matter |
#### Output [#output-12]
| Parameter | Type | Description |
| --------- | ---- | --------------------- |
| `matter` | json | Updated matter object |
### Vault Close Matter [#vault-close-matter]
Close a matter
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------------- |
| `matterId` | string | Yes | The matter ID to close (e.g., "12345678901234567890") |
#### Output [#output-13]
| Parameter | Type | Description |
| --------- | ---- | -------------------- |
| `matter` | json | Closed matter object |
### Vault Reopen Matter [#vault-reopen-matter]
Reopen a closed matter
#### Input [#input-14]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------ |
| `matterId` | string | Yes | The matter ID to reopen (e.g., "12345678901234567890") |
#### Output [#output-14]
| Parameter | Type | Description |
| --------- | ---- | ---------------------- |
| `matter` | json | Reopened matter object |
### Vault Delete Matter [#vault-delete-matter]
Permanently delete a matter (must be closed first)
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------ |
| `matterId` | string | Yes | The matter ID to delete (e.g., "12345678901234567890") |
#### Output [#output-15]
| Parameter | Type | Description |
| --------- | ---- | --------------------- |
| `matter` | json | Deleted matter object |
### Vault Undelete Matter [#vault-undelete-matter]
Restore a deleted matter
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------- |
| `matterId` | string | Yes | The matter ID to restore (e.g., "12345678901234567890") |
#### Output [#output-16]
| Parameter | Type | Description |
| --------- | ---- | ---------------------- |
| `matter` | json | Restored matter object |
### Vault Add Matter Collaborator [#vault-add-matter-collaborator]
Add a collaborator (or transfer ownership) to a matter
#### Input [#input-17]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | -------------------------------------------------------------------------------- |
| `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") |
| `accountId` | string | Yes | Admin SDK account ID of the user to add as a collaborator/owner |
| `role` | string | Yes | Permission level to grant: COLLABORATOR or OWNER |
| `sendEmails` | boolean | No | Send a notification email to the added account |
| `ccMe` | boolean | No | CC the requestor on the notification email (only relevant if sendEmails is true) |
#### Output [#output-17]
| Parameter | Type | Description |
| ------------ | ---- | ------------------------------------------- |
| `permission` | json | Created matter permission (accountId, role) |
### Vault Remove Matter Collaborator [#vault-remove-matter-collaborator]
Remove a collaborator from a matter
#### Input [#input-18]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | -------------------------------------------------- |
| `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") |
| `accountId` | string | Yes | Admin SDK account ID of the collaborator to remove |
#### Output [#output-18]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------ |
| `success` | boolean | Whether the collaborator was removed |
### Vault Create Saved Query [#vault-create-saved-query]
Save a reusable search query in a matter
#### Input [#input-19]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") |
| `displayName` | string | Yes | Name for the saved query |
| `corpus` | string | Yes | Data corpus to search (MAIL, DRIVE, GROUPS, HANGOUTS\_CHAT, VOICE) |
| `accountEmails` | string | No | Comma-separated list of user emails to scope the query (e.g., "[user1@example.com](mailto:user1@example.com), [user2@example.com](mailto:user2@example.com)") |
| `orgUnitId` | string | No | Organization unit ID to scope the query (e.g., "id:03ph8a2z1enx5q0", alternative to emails) |
| `startTime` | string | No | Start time for date filtering (ISO 8601 format, e.g., "2024-01-01T00:00:00Z") |
| `endTime` | string | No | End time for date filtering (ISO 8601 format, e.g., "2024-12-31T23:59:59Z") |
| `terms` | string | No | Search query terms (e.g., "from:[sender@example.com](mailto:sender@example.com) subject:invoice") |
#### Output [#output-19]
| Parameter | Type | Description |
| ------------ | ---- | -------------------------- |
| `savedQuery` | json | Created saved query object |
### Vault List Saved Queries [#vault-list-saved-queries]
List saved queries in a matter, or get a specific one if savedQueryId is provided
#### Input [#input-20]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------- |
| `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") |
| `pageSize` | number | No | Number of saved queries to return per page |
| `pageToken` | string | No | Token for pagination |
| `savedQueryId` | string | No | Optional saved query ID to fetch a specific saved query |
#### Output [#output-20]
| Parameter | Type | Description |
| --------------- | ------ | --------------------------------------------------------- |
| `savedQueries` | json | Array of saved query objects |
| `savedQuery` | json | Single saved query object (when savedQueryId is provided) |
| `nextPageToken` | string | Token for fetching next page of results |
### Vault Delete Saved Query [#vault-delete-saved-query]
Delete a saved query from a matter
#### Input [#input-21]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | -------------------------------------------- |
| `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") |
| `savedQueryId` | string | Yes | The saved query ID to delete |
#### Output [#output-21]
| Parameter | Type | Description |
| --------- | ------- | ----------------------------------- |
| `success` | boolean | Whether the saved query was deleted |
---
# Grafana (/integrations/grafana)
{/* MANUAL-CONTENT-START:intro */}
[Grafana](https://grafana.com/) is a leading open-source platform for monitoring, observability, and visualization. It allows users to query, visualize, alert on, and analyze data from a variety of sources, making it an essential tool for infrastructure and application monitoring.
With Grafana, you can:
* **Visualize data**: Build and customize dashboards to display metrics, logs, and traces in real time
* **Monitor health and status**: Check the health of your Grafana instance and connected data sources
* **Manage alerts and annotations**: Set up alert rules, manage notifications, and annotate dashboards with important events
* **Organize content**: Organize dashboards and data sources into folders for better access management
In Sim, the Grafana integration empowers your agents to interact directly with your Grafana instance via API, enabling actions such as:
* Checking the Grafana server, database, and data source health status
* Retrieving, listing, and managing dashboards, alert rules, annotations, data sources, and folders
* Automating the monitoring of your infrastructure by integrating Grafana data and alerts into your workflow automations
These capabilities enable Sim agents to monitor systems, proactively respond to alerts, and help ensure the reliability and visibility of your services — all as part of your automated workflows.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Grafana into workflows. Manage dashboards, alerts, annotations, data sources, folders, and monitor health status.
## Actions [#actions]
### Grafana Get Dashboard [#grafana-get-dashboard]
Get a dashboard by its UID
#### Input [#input]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
| `dashboardUid` | string | Yes | The UID of the dashboard to retrieve (e.g., abc123def) |
#### Output [#output]
| Parameter | Type | Description |
| ----------- | ---- | ----------------------------------------------- |
| `dashboard` | json | The full dashboard JSON object |
| `meta` | json | Dashboard metadata (version, permissions, etc.) |
### Grafana List Dashboards [#grafana-list-dashboards]
Search and list all dashboards
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
| `query` | string | No | Search query to filter dashboards by title |
| `tag` | string | No | Filter by tag (comma-separated for multiple tags) |
| `folderUIDs` | string | No | Filter by folder UIDs (comma-separated, e.g., abc123,def456) |
| `dashboardUIDs` | string | No | Filter by dashboard UIDs (comma-separated, e.g., abc123,def456) |
| `starred` | boolean | No | Only return starred dashboards |
| `limit` | number | No | Maximum number of dashboards to return (default 1000) |
| `page` | number | No | Page number for pagination (1-based) |
#### Output [#output-1]
| Parameter | Type | Description |
| --------------- | ------ | -------------------------------- |
| `dashboards` | array | List of dashboard search results |
| ↳ `id` | number | Dashboard ID |
| ↳ `uid` | string | Dashboard UID |
| ↳ `title` | string | Dashboard title |
| ↳ `url` | string | Dashboard URL path |
| ↳ `tags` | array | Dashboard tags |
| ↳ `folderTitle` | string | Parent folder title |
### Grafana Create Dashboard [#grafana-create-dashboard]
Create a new dashboard
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
| `title` | string | Yes | The title of the new dashboard |
| `folderUid` | string | No | The UID of the folder to create the dashboard in (e.g., folder-abc123) |
| `tags` | string | No | Comma-separated list of tags |
| `timezone` | string | No | Dashboard timezone (e.g., browser, utc) |
| `refresh` | string | No | Auto-refresh interval (e.g., 5s, 1m, 5m) |
| `panels` | string | No | JSON array of panel configurations |
| `overwrite` | boolean | No | Overwrite existing dashboard with same title |
| `message` | string | No | Commit message for the dashboard version |
#### Output [#output-2]
| Parameter | Type | Description |
| --------- | ------ | --------------------------------------- |
| `id` | number | The numeric ID of the created dashboard |
| `uid` | string | The UID of the created dashboard |
| `url` | string | The URL path to the dashboard |
| `status` | string | Status of the operation (success) |
| `version` | number | The version number of the dashboard |
| `slug` | string | URL-friendly slug of the dashboard |
### Grafana Update Dashboard [#grafana-update-dashboard]
Update an existing dashboard. Fetches the current dashboard and merges your changes.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
| `dashboardUid` | string | Yes | The UID of the dashboard to update (e.g., abc123def) |
| `title` | string | No | New title for the dashboard |
| `folderUid` | string | No | New folder UID to move the dashboard to (e.g., folder-abc123) |
| `tags` | string | No | Comma-separated list of new tags |
| `timezone` | string | No | Dashboard timezone (e.g., browser, utc) |
| `refresh` | string | No | Auto-refresh interval (e.g., 5s, 1m, 5m) |
| `panels` | string | No | JSON array of panel configurations |
| `overwrite` | boolean | No | Overwrite even if there is a version conflict (defaults to false to surface 412 conflicts) |
| `message` | string | No | Commit message for this version |
#### Output [#output-3]
| Parameter | Type | Description |
| --------- | ------ | --------------------------------------- |
| `id` | number | The numeric ID of the updated dashboard |
| `uid` | string | The UID of the updated dashboard |
| `url` | string | The URL path to the dashboard |
| `status` | string | Status of the operation (success) |
| `version` | number | The new version number of the dashboard |
| `slug` | string | URL-friendly slug of the dashboard |
### Grafana Delete Dashboard [#grafana-delete-dashboard]
Delete a dashboard by its UID
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
| `dashboardUid` | string | Yes | The UID of the dashboard to delete (e.g., abc123def) |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ------ | ---------------------------------- |
| `title` | string | The title of the deleted dashboard |
| `message` | string | Confirmation message |
| `id` | number | The ID of the deleted dashboard |
### Grafana List Alert Rules [#grafana-list-alert-rules]
List all alert rules in the Grafana instance
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
#### Output [#output-5]
| Parameter | Type | Description |
| ------------------------------- | ------- | ----------------------------------------------------- |
| `rules` | array | List of alert rules |
| ↳ `id` | number | Alert rule numeric ID |
| ↳ `uid` | string | Alert rule UID |
| ↳ `title` | string | Alert rule title |
| ↳ `condition` | string | RefId of the query used as the alert condition |
| ↳ `data` | json | Alert rule query/expression data array |
| ↳ `updated` | string | Last update timestamp |
| ↳ `noDataState` | string | State when no data is returned |
| ↳ `execErrState` | string | State on execution error |
| ↳ `for` | string | Duration the condition must hold before firing |
| ↳ `keepFiringFor` | string | Duration to keep firing after condition stops |
| ↳ `missingSeriesEvalsToResolve` | number | Number of missing series evaluations before resolving |
| ↳ `annotations` | json | Alert annotations |
| ↳ `labels` | json | Alert labels |
| ↳ `isPaused` | boolean | Whether the rule is paused |
| ↳ `folderUID` | string | Parent folder UID |
| ↳ `ruleGroup` | string | Rule group name |
| ↳ `orgID` | number | Organization ID |
| ↳ `provenance` | string | Provisioning source (empty if API-managed) |
| ↳ `notification_settings` | json | Per-rule notification settings (overrides) |
| ↳ `record` | json | Recording rule configuration (recording rules only) |
### Grafana Get Alert Rule [#grafana-get-alert-rule]
Get a specific alert rule by its UID
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
| `alertRuleUid` | string | Yes | The UID of the alert rule to retrieve |
#### Output [#output-6]
| Parameter | Type | Description |
| ----------------------------- | ------- | ----------------------------------------------------- |
| `id` | number | Alert rule numeric ID |
| `uid` | string | Alert rule UID |
| `title` | string | Alert rule title |
| `condition` | string | RefId of the query used as the alert condition |
| `data` | json | Alert rule query/expression data array |
| `updated` | string | Last update timestamp |
| `noDataState` | string | State when no data is returned |
| `execErrState` | string | State on execution error |
| `for` | string | Duration the condition must hold before firing |
| `keepFiringFor` | string | Duration to keep firing after condition stops |
| `missingSeriesEvalsToResolve` | number | Number of missing series evaluations before resolving |
| `annotations` | json | Alert annotations |
| `labels` | json | Alert labels |
| `isPaused` | boolean | Whether the rule is paused |
| `folderUID` | string | Parent folder UID |
| `ruleGroup` | string | Rule group name |
| `orgID` | number | Organization ID |
| `provenance` | string | Provisioning source (empty if API-managed) |
| `notification_settings` | json | Per-rule notification settings (overrides) |
| `record` | json | Recording rule configuration (recording rules only) |
### Grafana Create Alert Rule [#grafana-create-alert-rule]
Create a new alert rule
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ----------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
| `title` | string | Yes | The title of the alert rule |
| `folderUid` | string | Yes | The UID of the folder to create the alert in (e.g., folder-abc123) |
| `ruleGroup` | string | Yes | The name of the rule group |
| `condition` | string | No | The refId of the query or expression to use as the alert condition (required for alerting rules; omit for recording rules) |
| `data` | string | Yes | JSON array of query/expression data objects |
| `forDuration` | string | No | Duration to wait before firing (e.g., 5m, 1h) |
| `noDataState` | string | No | State when no data is returned (NoData, Alerting, OK) |
| `execErrState` | string | No | State on execution error (Error, Alerting, OK) |
| `annotations` | string | No | JSON object of annotations |
| `labels` | string | No | JSON object of labels |
| `uid` | string | No | Optional custom UID for the alert rule |
| `isPaused` | boolean | No | Whether the rule is paused on creation |
| `keepFiringFor` | string | No | Duration to keep firing after the condition stops (e.g., 5m) |
| `missingSeriesEvalsToResolve` | number | No | Number of missing series evaluations before resolving |
| `notificationSettings` | string | No | JSON object of per-rule notification settings (overrides) |
| `record` | string | No | JSON object configuring this as a recording rule (omit for alerting rules) |
| `disableProvenance` | boolean | No | Set X-Disable-Provenance header so the rule remains editable in the Grafana UI |
#### Output [#output-7]
| Parameter | Type | Description |
| ----------------------------- | ------- | ----------------------------------------------------- |
| `id` | number | Alert rule numeric ID |
| `uid` | string | Alert rule UID |
| `title` | string | Alert rule title |
| `condition` | string | RefId of the query used as the alert condition |
| `data` | json | Alert rule query/expression data array |
| `updated` | string | Last update timestamp |
| `noDataState` | string | State when no data is returned |
| `execErrState` | string | State on execution error |
| `for` | string | Duration the condition must hold before firing |
| `keepFiringFor` | string | Duration to keep firing after condition stops |
| `missingSeriesEvalsToResolve` | number | Number of missing series evaluations before resolving |
| `annotations` | json | Alert annotations |
| `labels` | json | Alert labels |
| `isPaused` | boolean | Whether the rule is paused |
| `folderUID` | string | Parent folder UID |
| `ruleGroup` | string | Rule group name |
| `orgID` | number | Organization ID |
| `provenance` | string | Provisioning source (empty if API-managed) |
| `notification_settings` | json | Per-rule notification settings (overrides) |
| `record` | json | Recording rule configuration (recording rules only) |
### Grafana Update Alert Rule [#grafana-update-alert-rule]
Update an existing alert rule. Fetches the current rule and merges your changes.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ----------------------------- | ------- | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
| `alertRuleUid` | string | Yes | The UID of the alert rule to update |
| `title` | string | No | New title for the alert rule |
| `folderUid` | string | No | New folder UID to move the alert to (e.g., folder-abc123) |
| `ruleGroup` | string | No | New rule group name |
| `condition` | string | No | New condition refId |
| `data` | string | No | New JSON array of query/expression data objects |
| `forDuration` | string | No | Duration to wait before firing (e.g., 5m, 1h) |
| `noDataState` | string | No | State when no data is returned (NoData, Alerting, OK) |
| `execErrState` | string | No | State on execution error (Error, Alerting, OK) |
| `annotations` | string | No | JSON object of annotations |
| `labels` | string | No | JSON object of labels |
| `isPaused` | boolean | No | Whether the rule is paused |
| `keepFiringFor` | string | No | Duration to keep firing after the condition stops (e.g., 5m) |
| `missingSeriesEvalsToResolve` | number | No | Number of missing series evaluations before resolving |
| `notificationSettings` | string | No | JSON object of per-rule notification settings (overrides) |
| `record` | string | No | JSON object configuring this as a recording rule |
| `disableProvenance` | boolean | No | Set X-Disable-Provenance header so the rule remains editable in the Grafana UI |
#### Output [#output-8]
| Parameter | Type | Description |
| ----------------------------- | ------- | ----------------------------------------------------- |
| `id` | number | Alert rule numeric ID |
| `uid` | string | Alert rule UID |
| `title` | string | Alert rule title |
| `condition` | string | RefId of the query used as the alert condition |
| `data` | json | Alert rule query/expression data array |
| `updated` | string | Last update timestamp |
| `noDataState` | string | State when no data is returned |
| `execErrState` | string | State on execution error |
| `for` | string | Duration the condition must hold before firing |
| `keepFiringFor` | string | Duration to keep firing after condition stops |
| `missingSeriesEvalsToResolve` | number | Number of missing series evaluations before resolving |
| `annotations` | json | Alert annotations |
| `labels` | json | Alert labels |
| `isPaused` | boolean | Whether the rule is paused |
| `folderUID` | string | Parent folder UID |
| `ruleGroup` | string | Rule group name |
| `orgID` | number | Organization ID |
| `provenance` | string | Provisioning source (empty if API-managed) |
| `notification_settings` | json | Per-rule notification settings (overrides) |
| `record` | json | Recording rule configuration (recording rules only) |
### Grafana Delete Alert Rule [#grafana-delete-alert-rule]
Delete an alert rule by its UID
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
| `alertRuleUid` | string | Yes | The UID of the alert rule to delete |
#### Output [#output-9]
| Parameter | Type | Description |
| --------- | ------ | -------------------- |
| `message` | string | Confirmation message |
### Grafana List Contact Points [#grafana-list-contact-points]
List all alert notification contact points
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
| `name` | string | No | Filter contact points by exact name match |
#### Output [#output-10]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------------ |
| `contactPoints` | array | List of contact points |
| ↳ `uid` | string | Contact point UID |
| ↳ `name` | string | Contact point name |
| ↳ `type` | string | Notification type (email, slack, etc.) |
| ↳ `settings` | object | Type-specific settings |
| ↳ `disableResolveMessage` | boolean | Whether resolve messages are disabled |
| ↳ `provenance` | string | Provisioning source (empty if API-managed) |
### Grafana Create Contact Point [#grafana-create-contact-point]
Create a notification contact point (e.g., Slack, email, PagerDuty)
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ----------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
| `name` | string | Yes | Name of the contact point (groups receivers shown in the UI) |
| `type` | string | Yes | Receiver type (e.g., slack, email, pagerduty, webhook) |
| `settings` | string | Yes | JSON object of type-specific settings (e.g., \{"addresses":"[a@b.com](mailto:a@b.com)"} for email, \{"url":"..."} for slack) |
| `disableResolveMessage` | boolean | No | Do not send a notification when the alert resolves |
| `disableProvenance` | boolean | No | Set X-Disable-Provenance header so the contact point remains editable in the UI |
#### Output [#output-11]
| Parameter | Type | Description |
| ----------------------- | ------- | -------------------------------------------- |
| `uid` | string | UID of the created contact point |
| `name` | string | Name of the contact point |
| `type` | string | Receiver type |
| `settings` | json | Type-specific settings |
| `disableResolveMessage` | boolean | Whether resolve notifications are suppressed |
| `provenance` | string | Provisioning source (empty if API-managed) |
### Grafana Create Annotation [#grafana-create-annotation]
Create an annotation on a dashboard or as a global annotation
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
| `text` | string | Yes | The text content of the annotation |
| `tags` | string | No | Comma-separated list of tags |
| `dashboardUid` | string | No | UID of the dashboard to add the annotation to (e.g., abc123def). Omit to create a global organization annotation. |
| `panelId` | number | No | ID of the panel to add the annotation to (e.g., 1, 2) |
| `time` | number | No | Start time in epoch milliseconds (e.g., 1704067200000, defaults to now) |
| `timeEnd` | number | No | End time in epoch milliseconds for range annotations (e.g., 1704153600000) |
#### Output [#output-12]
| Parameter | Type | Description |
| --------- | ------ | -------------------------------- |
| `id` | number | The ID of the created annotation |
| `message` | string | Confirmation message |
### Grafana List Annotations [#grafana-list-annotations]
Query annotations by time range, dashboard, or tags
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
| `from` | number | No | Start time in epoch milliseconds (e.g., 1704067200000) |
| `to` | number | No | End time in epoch milliseconds (e.g., 1704153600000) |
| `dashboardUid` | string | No | Dashboard UID to query annotations from (e.g., abc123def). Omit to query annotations across the organization. |
| `dashboardId` | number | No | Legacy numeric dashboard ID filter (prefer dashboardUid) |
| `panelId` | number | No | Filter by panel ID (e.g., 1, 2) |
| `alertId` | number | No | Filter by alert ID |
| `userId` | number | No | Filter by ID of the user who created the annotation |
| `tags` | string | No | Comma-separated list of tags to filter by |
| `type` | string | No | Filter by type (alert or annotation) |
| `limit` | number | No | Maximum number of annotations to return |
#### Output [#output-13]
| Parameter | Type | Description |
| ---------------- | ------ | ----------------------------------------------- |
| `annotations` | array | List of annotations |
| ↳ `id` | number | Annotation ID |
| ↳ `alertId` | number | Associated alert ID (0 if not alert-driven) |
| ↳ `dashboardId` | number | Dashboard ID |
| ↳ `dashboardUID` | string | Dashboard UID |
| ↳ `panelId` | number | Panel ID within the dashboard |
| ↳ `userId` | number | ID of the user who created the annotation |
| ↳ `userName` | string | Username of the user who created the annotation |
| ↳ `newState` | string | New alert state (alert annotations only) |
| ↳ `prevState` | string | Previous alert state (alert annotations only) |
| ↳ `time` | number | Start time in epoch ms |
| ↳ `timeEnd` | number | End time in epoch ms |
| ↳ `text` | string | Annotation text |
| ↳ `metric` | string | Metric associated with the annotation |
| ↳ `tags` | array | Annotation tags |
| ↳ `data` | json | Additional annotation data object from Grafana |
### Grafana Update Annotation [#grafana-update-annotation]
Update an existing annotation
#### Input [#input-14]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
| `annotationId` | number | Yes | The ID of the annotation to update |
| `text` | string | No | New text content for the annotation (PATCH supports partial updates) |
| `tags` | string | No | Comma-separated list of new tags |
| `time` | number | No | New start time in epoch milliseconds (e.g., 1704067200000) |
| `timeEnd` | number | No | New end time in epoch milliseconds (e.g., 1704153600000) |
#### Output [#output-14]
| Parameter | Type | Description |
| --------- | ------ | -------------------------------- |
| `id` | number | The ID of the updated annotation |
| `message` | string | Confirmation message |
### Grafana Delete Annotation [#grafana-delete-annotation]
Delete an annotation by its ID
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
| `annotationId` | number | Yes | The ID of the annotation to delete |
#### Output [#output-15]
| Parameter | Type | Description |
| --------- | ------ | -------------------- |
| `message` | string | Confirmation message |
### Grafana List Data Sources [#grafana-list-data-sources]
List all data sources configured in Grafana
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
#### Output [#output-16]
| Parameter | Type | Description |
| -------------------- | ------- | ----------------------------------------------------------- |
| `dataSources` | array | List of data sources |
| ↳ `id` | number | Data source ID |
| ↳ `uid` | string | Data source UID |
| ↳ `orgId` | number | Organization ID |
| ↳ `name` | string | Data source name |
| ↳ `type` | string | Data source type (prometheus, mysql, etc.) |
| ↳ `typeLogoUrl` | string | Logo URL for the data source type |
| ↳ `access` | string | Access mode (proxy or direct) |
| ↳ `url` | string | Data source URL |
| ↳ `user` | string | Username used to connect |
| ↳ `database` | string | Database name (if applicable) |
| ↳ `basicAuth` | boolean | Whether basic auth is enabled |
| ↳ `basicAuthUser` | string | Basic auth username |
| ↳ `withCredentials` | boolean | Whether to send credentials with cross-origin requests |
| ↳ `isDefault` | boolean | Whether this is the default data source |
| ↳ `jsonData` | object | Type-specific JSON configuration |
| ↳ `secureJsonFields` | object | Map of secure fields that are set (values are not returned) |
| ↳ `version` | number | Data source version |
| ↳ `readOnly` | boolean | Whether the data source is read-only |
### Grafana Get Data Source [#grafana-get-data-source]
Get a data source by its ID or UID
#### Input [#input-17]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
| `dataSourceId` | string | Yes | The ID or UID of the data source to retrieve (e.g., prometheus, P1234AB5678) |
#### Output [#output-17]
| Parameter | Type | Description |
| ------------------ | ------- | ----------------------------------------------------------- |
| `id` | number | Data source ID |
| `uid` | string | Data source UID |
| `orgId` | number | Organization ID |
| `name` | string | Data source name |
| `type` | string | Data source type |
| `typeLogoUrl` | string | Logo URL for the data source type |
| `access` | string | Access mode (proxy or direct) |
| `url` | string | Data source connection URL |
| `user` | string | Username used to connect |
| `database` | string | Database name (if applicable) |
| `basicAuth` | boolean | Whether basic auth is enabled |
| `basicAuthUser` | string | Basic auth username |
| `withCredentials` | boolean | Whether to send credentials with cross-origin requests |
| `isDefault` | boolean | Whether this is the default data source |
| `jsonData` | json | Additional data source configuration |
| `secureJsonFields` | object | Map of secure fields that are set (values are not returned) |
| `version` | number | Data source version |
| `readOnly` | boolean | Whether the data source is read-only |
### Grafana Check Data Source Health [#grafana-check-data-source-health]
Test connectivity to a data source by its UID
#### Input [#input-18]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
| `dataSourceUid` | string | Yes | The UID of the data source to health-check (e.g., P1234AB5678) |
#### Output [#output-18]
| Parameter | Type | Description |
| --------- | ------ | -------------------------------------------- |
| `status` | string | Health status of the data source (e.g., OK) |
| `message` | string | Detailed health message from the data source |
### Grafana List Folders [#grafana-list-folders]
List all folders in Grafana
#### Input [#input-19]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
| `limit` | number | No | Maximum number of folders to return |
| `page` | number | No | Page number for pagination |
| `parentUid` | string | No | List children of this folder UID (requires nested folders enabled) |
#### Output [#output-19]
| Parameter | Type | Description |
| ------------- | ------- | ----------------------------------------------- |
| `folders` | array | List of folders |
| ↳ `id` | number | Folder ID |
| ↳ `uid` | string | Folder UID |
| ↳ `title` | string | Folder title |
| ↳ `url` | string | Folder URL path |
| ↳ `parentUid` | string | Parent folder UID (nested folders only) |
| ↳ `parents` | array | Ancestor folder hierarchy (nested folders only) |
| ↳ `hasAcl` | boolean | Whether the folder has custom ACL permissions |
| ↳ `canSave` | boolean | Whether the current user can save the folder |
| ↳ `canEdit` | boolean | Whether the current user can edit the folder |
| ↳ `canAdmin` | boolean | Whether the current user has admin rights |
| ↳ `createdBy` | string | Username of who created the folder |
| ↳ `created` | string | Timestamp when the folder was created |
| ↳ `updatedBy` | string | Username of who last updated the folder |
| ↳ `updated` | string | Timestamp when the folder was last updated |
| ↳ `version` | number | Folder version number |
### Grafana Create Folder [#grafana-create-folder]
Create a new folder in Grafana
#### Input [#input-20]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
| `title` | string | Yes | The title of the new folder |
| `uid` | string | No | Optional UID for the folder (auto-generated if not provided) |
| `parentUid` | string | No | Parent folder UID for nested folders (requires nested folders enabled) |
#### Output [#output-20]
| Parameter | Type | Description |
| ----------- | ------- | ------------------------------------------------------- |
| `id` | number | The numeric ID of the created folder |
| `uid` | string | The UID of the created folder |
| `title` | string | The title of the created folder |
| `url` | string | The URL path to the folder |
| `parentUid` | string | Parent folder UID (nested folders only) |
| `parents` | array | Ancestor folder hierarchy (nested folders only) |
| `hasAcl` | boolean | Whether the folder has custom ACL permissions |
| `canSave` | boolean | Whether the current user can save the folder |
| `canEdit` | boolean | Whether the current user can edit the folder |
| `canAdmin` | boolean | Whether the current user has admin rights on the folder |
| `createdBy` | string | Username of who created the folder |
| `created` | string | Timestamp when the folder was created |
| `updatedBy` | string | Username of who last updated the folder |
| `updated` | string | Timestamp when the folder was last updated |
| `version` | number | Version number of the folder |
### Grafana Get Folder [#grafana-get-folder]
Get a folder by its UID
#### Input [#input-21]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
| `folderUid` | string | Yes | The UID of the folder to retrieve (e.g., folder-abc123) |
#### Output [#output-21]
| Parameter | Type | Description |
| ----------- | ------- | ------------------------------------------------------- |
| `id` | number | The numeric ID of the folder |
| `uid` | string | The UID of the folder |
| `title` | string | The title of the folder |
| `url` | string | The URL path to the folder |
| `parentUid` | string | Parent folder UID (nested folders only) |
| `parents` | array | Ancestor folder hierarchy (nested folders only) |
| `hasAcl` | boolean | Whether the folder has custom ACL permissions |
| `canSave` | boolean | Whether the current user can save the folder |
| `canEdit` | boolean | Whether the current user can edit the folder |
| `canAdmin` | boolean | Whether the current user has admin rights on the folder |
| `createdBy` | string | Username of who created the folder |
| `created` | string | Timestamp when the folder was created |
| `updatedBy` | string | Username of who last updated the folder |
| `updated` | string | Timestamp when the folder was last updated |
| `version` | number | Version number of the folder |
### Grafana Update Folder [#grafana-update-folder]
Update (rename) a folder. Fetches the current folder and merges your changes.
#### Input [#input-22]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
| `folderUid` | string | Yes | The UID of the folder to update (e.g., folder-abc123) |
| `title` | string | Yes | New title for the folder |
#### Output [#output-22]
| Parameter | Type | Description |
| ----------- | ------- | ------------------------------------------------------- |
| `id` | number | The numeric ID of the folder |
| `uid` | string | The UID of the folder |
| `title` | string | The updated title of the folder |
| `url` | string | The URL path to the folder |
| `parentUid` | string | Parent folder UID (nested folders only) |
| `parents` | array | Ancestor folder hierarchy (nested folders only) |
| `hasAcl` | boolean | Whether the folder has custom ACL permissions |
| `canSave` | boolean | Whether the current user can save the folder |
| `canEdit` | boolean | Whether the current user can edit the folder |
| `canAdmin` | boolean | Whether the current user has admin rights on the folder |
| `createdBy` | string | Username of who created the folder |
| `created` | string | Timestamp when the folder was created |
| `updatedBy` | string | Username of who last updated the folder |
| `updated` | string | Timestamp when the folder was last updated |
| `version` | number | Version number of the folder |
### Grafana Delete Folder [#grafana-delete-folder]
Delete a folder by its UID
#### Input [#input-23]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
| `folderUid` | string | Yes | The UID of the folder to delete (e.g., folder-abc123) |
| `forceDeleteRules` | boolean | No | Delete any alert rules stored in the folder along with it (default false) |
#### Output [#output-23]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------- |
| `uid` | string | The UID of the deleted folder |
| `message` | string | Confirmation message |
### Grafana Get Health [#grafana-get-health]
Check the health of the Grafana instance (version, database status)
#### Input [#input-24]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grafana Service Account Token |
| `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com\\](https://your-grafana.com\\)) |
| `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) |
#### Output [#output-24]
| Parameter | Type | Description |
| ---------- | ------ | -------------------------------------------- |
| `commit` | string | Git commit hash of the running Grafana build |
| `database` | string | Database health status (e.g., ok) |
| `version` | string | Grafana version |
---
# Grain (/integrations/grain)
{/* MANUAL-CONTENT-START:intro */}
[Grain](https://grain.com/) is a modern platform for capturing, storing, and sharing meeting recordings, transcripts, highlights, and AI-powered summaries. Grain enables teams to turn conversations into actionable insights and keep everyone aligned on key moments from meetings.
With Grain, you can:
* **Access searchable recordings and transcripts**: Find and review every meeting by keyword, participant, or topic.
* **Share highlights and clips**: Capture important moments and share short video/audio highlights across your team or workflows.
* **Get AI-generated summaries**: Automatically produce meeting summaries, action items, and key insights using Grain’s advanced AI.
* **Organize meetings by team or type**: Tag and categorize recordings for easy access and reporting.
The Sim Grain integration empowers your agents to:
* List, search, and retrieve meeting recordings and details by flexible filters (datetime, participant, team, etc).
* Access AI summaries, participants, highlights, and other metadata for meetings to power automations or analysis.
* Trigger workflows whenever new meetings are processed, summaries are generated, or highlights are created via Grain webhooks.
* Easily bridge Grain data into other tools or notify teammates the moment something important happens in a meeting.
Whether you want to automate follow-up actions, keep records of important conversations, or surface insights across your organization, Grain and Sim make it easy to connect meeting intelligence to your workflows.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Grain into your workflow. Access meeting recordings, transcripts, highlights, and AI-generated summaries. Can also trigger workflows based on Grain webhook events.
## Actions [#actions]
### Grain List Recordings [#grain-list-recordings]
List recordings from Grain with optional filters and pagination
#### Input [#input]
| Parameter | Type | Required | Description |
| ---------------------- | ------- | -------- | ---------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grain API key (Personal Access Token) |
| `cursor` | string | No | Pagination cursor for next page (returned from previous response) |
| `beforeDatetime` | string | No | Only recordings before this ISO8601 timestamp (e.g., "2024-01-15T00:00:00Z") |
| `afterDatetime` | string | No | Only recordings after this ISO8601 timestamp (e.g., "2024-01-01T00:00:00Z") |
| `participantScope` | string | No | Filter: "internal" or "external" |
| `titleSearch` | string | No | Search term to filter by recording title (e.g., "weekly standup") |
| `teamId` | string | No | Filter by team UUID (e.g., "a1b2c3d4-e5f6-7890-abcd-ef1234567890") |
| `meetingTypeId` | string | No | Filter by meeting type UUID (e.g., "a1b2c3d4-e5f6-7890-abcd-ef1234567890") |
| `includeHighlights` | boolean | No | Include highlights/clips in response |
| `includeParticipants` | boolean | No | Include participant list in response |
| `includeAiSummary` | boolean | No | Include AI-generated summary |
| `includeAiActionItems` | boolean | No | Include AI-detected action items |
#### Output [#output]
| Parameter | Type | Description |
| ------------------ | ------ | -------------------------------------- |
| `recordings` | array | Array of recording objects |
| ↳ `id` | string | Recording UUID |
| ↳ `title` | string | Recording title |
| ↳ `start_datetime` | string | ISO8601 start timestamp |
| ↳ `end_datetime` | string | ISO8601 end timestamp |
| ↳ `duration_ms` | number | Duration in milliseconds |
| ↳ `media_type` | string | audio, transcript, or video |
| ↳ `source` | string | Recording source |
| ↳ `url` | string | URL to view in Grain |
| ↳ `thumbnail_url` | string | Thumbnail URL |
| ↳ `tags` | array | Array of tags |
| ↳ `teams` | array | Teams the recording belongs to |
| ↳ `meeting_type` | object | Meeting type info |
| `cursor` | string | Cursor for next page (null if no more) |
### Grain Get Recording [#grain-get-recording]
Get details of a single recording by ID
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ---------------------- | ------- | -------- | ----------------------------------------------------------------- |
| `apiKey` | string | Yes | Grain API key (Personal Access Token) |
| `recordingId` | string | Yes | The recording UUID (e.g., "a1b2c3d4-e5f6-7890-abcd-ef1234567890") |
| `includeHighlights` | boolean | No | Include highlights/clips |
| `includeParticipants` | boolean | No | Include participant list |
| `includeAiSummary` | boolean | No | Include AI summary |
| `includeAiActionItems` | boolean | No | Include AI-detected action items |
| `includeCalendarEvent` | boolean | No | Include calendar event data |
| `includeHubspot` | boolean | No | Include HubSpot associations |
#### Output [#output-1]
| Parameter | Type | Description |
| ----------------- | ------ | ---------------------------------------------------------------------- |
| `id` | string | Recording UUID |
| `title` | string | Recording title |
| `start_datetime` | string | ISO8601 start timestamp |
| `end_datetime` | string | ISO8601 end timestamp |
| `duration_ms` | number | Duration in milliseconds |
| `media_type` | string | audio, transcript, or video |
| `source` | string | Recording source (zoom, meet, teams, etc.) |
| `url` | string | URL to view in Grain |
| `thumbnail_url` | string | Thumbnail image URL |
| `tags` | array | Array of tag strings |
| `teams` | array | Teams the recording belongs to |
| `meeting_type` | object | Meeting type info (id, name, scope) |
| `highlights` | array | Highlights (if included) |
| `participants` | array | Participants (if included) |
| `ai_summary` | object | AI summary text (if included) |
| `ai_action_items` | array | AI-detected action items with status, text, and assignee (if included) |
| `calendar_event` | object | Calendar event data (if included) |
| `hubspot` | object | HubSpot associations (if included) |
### Grain Get Transcript [#grain-get-transcript]
Get the full transcript of a recording
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ----------------------------------------------------------------- |
| `apiKey` | string | Yes | Grain API key (Personal Access Token) |
| `recordingId` | string | Yes | The recording UUID (e.g., "a1b2c3d4-e5f6-7890-abcd-ef1234567890") |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------- |
| `transcript` | array | Array of transcript sections |
| ↳ `participant_id` | string | Participant UUID (nullable) |
| ↳ `speaker` | string | Speaker name |
| ↳ `start` | number | Start timestamp in ms |
| ↳ `end` | number | End timestamp in ms |
| ↳ `text` | string | Transcript text |
### Grain List Teams [#grain-list-teams]
List all teams in the workspace
#### Input [#input-3]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------- |
| `apiKey` | string | Yes | Grain API key (Personal Access Token) |
#### Output [#output-3]
| Parameter | Type | Description |
| --------- | ------ | --------------------- |
| `teams` | array | Array of team objects |
| ↳ `id` | string | Team UUID |
| ↳ `name` | string | Team name |
### Grain List Meeting Types [#grain-list-meeting-types]
List all meeting types in the workspace
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------- |
| `apiKey` | string | Yes | Grain API key (Personal Access Token) |
#### Output [#output-4]
| Parameter | Type | Description |
| --------------- | ------ | ----------------------------- |
| `meeting_types` | array | Array of meeting type objects |
| ↳ `id` | string | Meeting type UUID |
| ↳ `name` | string | Meeting type name |
| ↳ `scope` | string | internal or external |
### Grain Create Webhook [#grain-create-webhook]
Create a webhook for a specific Grain event type (v2 API)
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grain API key (Personal or Workspace Access Token) |
| `hookUrl` | string | Yes | Webhook endpoint URL. Grain performs a reachability test on creation — the endpoint must respond 2xx. |
| `hookType` | string | Yes | Event type the hook subscribes to. One of: recording\_added, recording\_updated, recording\_deleted, highlight\_added, highlight\_updated, highlight\_deleted, story\_added, story\_updated, story\_deleted, upload\_status |
| `include` | json | No | Optional include object controlling payload richness. For recording hooks: \{"participants": true, "highlights": true, "ai\_summary": true}. For highlight hooks: \{"transcript": true, "speakers": true}. |
#### Output [#output-5]
| Parameter | Type | Description |
| ------------- | ------- | ---------------------------------------- |
| `id` | string | Hook UUID |
| `enabled` | boolean | Whether hook is active |
| `hook_url` | string | The webhook URL |
| `hook_type` | string | Event type the hook subscribes to |
| `include` | json | Include object the hook was created with |
| `inserted_at` | string | ISO8601 creation timestamp |
### Grain List Webhooks [#grain-list-webhooks]
List webhooks for the account (v2 API)
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grain API key (Personal or Workspace Access Token) |
| `hookType` | string | No | Only return hooks with this event type. One of: recording\_added, recording\_updated, recording\_deleted, highlight\_added, highlight\_updated, highlight\_deleted, story\_added, story\_updated, story\_deleted, upload\_status |
| `state` | string | No | Only return hooks that are "enabled" or "disabled" |
#### Output [#output-6]
| Parameter | Type | Description |
| --------------- | ------- | ---------------------------------------- |
| `hooks` | array | Array of hook objects |
| ↳ `id` | string | Hook UUID |
| ↳ `enabled` | boolean | Whether hook is active |
| ↳ `hook_url` | string | Webhook URL |
| ↳ `hook_type` | string | Event type the hook subscribes to |
| ↳ `include` | object | Include object the hook was created with |
| ↳ `inserted_at` | string | Creation timestamp |
### Grain Delete Webhook [#grain-delete-webhook]
Delete a webhook by ID (v2 API)
#### Input [#input-7]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------------------------- |
| `apiKey` | string | Yes | Grain API key (Personal or Workspace Access Token) |
| `hookId` | string | Yes | The hook UUID to delete (e.g., "a1b2c3d4-e5f6-7890-abcd-ef1234567890") |
#### Output [#output-7]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------------ |
| `success` | boolean | True when webhook was successfully deleted |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
### Grain All Events [#grain-all-events]
Trigger on every Grain event (recordings, highlights, stories, uploads)
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Required to create the webhook in Grain. |
#### Output [#output-8]
| Parameter | Type | Description |
| --------- | ------ | ---------------------------------------------- |
| `type` | string | Event type (e.g., recording\_added) |
| `user_id` | string | User UUID who triggered the event |
| `data` | object | Event data object (recording, highlight, etc.) |
***
### Grain Highlight Added [#grain-highlight-added]
Trigger when a new highlight/clip is created in Grain
#### Configuration [#configuration-1]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Required to create the webhook in Grain. |
#### Output [#output-9]
| Parameter | Type | Description |
| -------------------- | ------ | --------------------------------- |
| `type` | string | Event type |
| `user_id` | string | User UUID who triggered the event |
| `data` | object | data output from the tool |
| ↳ `id` | string | Highlight UUID |
| ↳ `recording_id` | string | Parent recording UUID |
| ↳ `text` | string | Highlight title/description |
| ↳ `transcript` | string | Transcript text of the clip |
| ↳ `speakers` | array | Array of speaker names |
| ↳ `timestamp` | number | Start timestamp in ms |
| ↳ `duration` | number | Duration in ms |
| ↳ `tags` | array | Array of tag strings |
| ↳ `url` | string | URL to view in Grain |
| ↳ `thumbnail_url` | string | Thumbnail URL |
| ↳ `created_datetime` | string | ISO8601 creation timestamp |
***
### Grain Highlight Deleted [#grain-highlight-deleted]
Trigger when a highlight/clip is deleted in Grain
#### Configuration [#configuration-2]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Required to create the webhook in Grain. |
#### Output [#output-10]
| Parameter | Type | Description |
| --------- | ------ | ---------------------------------------------- |
| `type` | string | Event type (e.g., recording\_added) |
| `user_id` | string | User UUID who triggered the event |
| `data` | object | Event data object (recording, highlight, etc.) |
***
### Grain Highlight Updated [#grain-highlight-updated]
Trigger when a highlight/clip is updated in Grain
#### Configuration [#configuration-3]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Required to create the webhook in Grain. |
#### Output [#output-11]
| Parameter | Type | Description |
| -------------------- | ------ | --------------------------------- |
| `type` | string | Event type |
| `user_id` | string | User UUID who triggered the event |
| `data` | object | data output from the tool |
| ↳ `id` | string | Highlight UUID |
| ↳ `recording_id` | string | Parent recording UUID |
| ↳ `text` | string | Highlight title/description |
| ↳ `transcript` | string | Transcript text of the clip |
| ↳ `speakers` | array | Array of speaker names |
| ↳ `timestamp` | number | Start timestamp in ms |
| ↳ `duration` | number | Duration in ms |
| ↳ `tags` | array | Array of tag strings |
| ↳ `url` | string | URL to view in Grain |
| ↳ `thumbnail_url` | string | Thumbnail URL |
| ↳ `created_datetime` | string | ISO8601 creation timestamp |
***
### Grain Recording Added [#grain-recording-added]
Trigger when a new recording is added in Grain
#### Configuration [#configuration-4]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Required to create the webhook in Grain. |
#### Output [#output-12]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------------------------------- |
| `type` | string | Event type |
| `user_id` | string | User UUID who triggered the event |
| `data` | object | data output from the tool |
| ↳ `id` | string | Recording UUID |
| ↳ `title` | string | Recording title |
| ↳ `start_datetime` | string | ISO8601 start timestamp |
| ↳ `end_datetime` | string | ISO8601 end timestamp |
| ↳ `duration_ms` | number | Duration in milliseconds |
| ↳ `media_type` | string | audio, transcript, or video |
| ↳ `source` | string | Recording source (zoom, meet, local\_capture, etc.) |
| ↳ `url` | string | URL to view in Grain |
| ↳ `thumbnail_url` | string | Thumbnail URL (nullable) |
| ↳ `tags` | array | Array of tag strings |
| ↳ `teams` | array | Array of team objects |
| ↳ `meeting_type` | object | Meeting type info with id, name, scope (nullable) |
***
### Grain Recording Deleted [#grain-recording-deleted]
Trigger when a recording is deleted in Grain
#### Configuration [#configuration-5]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Required to create the webhook in Grain. |
#### Output [#output-13]
| Parameter | Type | Description |
| --------- | ------ | ---------------------------------------------- |
| `type` | string | Event type (e.g., recording\_added) |
| `user_id` | string | User UUID who triggered the event |
| `data` | object | Event data object (recording, highlight, etc.) |
***
### Grain Recording Updated [#grain-recording-updated]
Trigger when a recording is updated in Grain
#### Configuration [#configuration-6]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Required to create the webhook in Grain. |
#### Output [#output-14]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------------------------------- |
| `type` | string | Event type |
| `user_id` | string | User UUID who triggered the event |
| `data` | object | data output from the tool |
| ↳ `id` | string | Recording UUID |
| ↳ `title` | string | Recording title |
| ↳ `start_datetime` | string | ISO8601 start timestamp |
| ↳ `end_datetime` | string | ISO8601 end timestamp |
| ↳ `duration_ms` | number | Duration in milliseconds |
| ↳ `media_type` | string | audio, transcript, or video |
| ↳ `source` | string | Recording source (zoom, meet, local\_capture, etc.) |
| ↳ `url` | string | URL to view in Grain |
| ↳ `thumbnail_url` | string | Thumbnail URL (nullable) |
| ↳ `tags` | array | Array of tag strings |
| ↳ `teams` | array | Array of team objects |
| ↳ `meeting_type` | object | Meeting type info with id, name, scope (nullable) |
***
### Grain Story Added [#grain-story-added]
Trigger when a new story is created in Grain
#### Configuration [#configuration-7]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Required to create the webhook in Grain. |
#### Output [#output-15]
| Parameter | Type | Description |
| -------------------- | ------ | --------------------------------- |
| `type` | string | Event type |
| `user_id` | string | User UUID who triggered the event |
| `data` | object | data output from the tool |
| ↳ `id` | string | Story UUID |
| ↳ `title` | string | Story title |
| ↳ `url` | string | URL to view in Grain |
| ↳ `created_datetime` | string | ISO8601 creation timestamp |
***
### Grain Story Deleted [#grain-story-deleted]
Trigger when a story is deleted in Grain
#### Configuration [#configuration-8]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Required to create the webhook in Grain. |
#### Output [#output-16]
| Parameter | Type | Description |
| --------- | ------ | ---------------------------------------------- |
| `type` | string | Event type (e.g., recording\_added) |
| `user_id` | string | User UUID who triggered the event |
| `data` | object | Event data object (recording, highlight, etc.) |
***
### Grain Story Updated [#grain-story-updated]
Trigger when a story is updated in Grain
#### Configuration [#configuration-9]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Required to create the webhook in Grain. |
#### Output [#output-17]
| Parameter | Type | Description |
| -------------------- | ------ | --------------------------------- |
| `type` | string | Event type |
| `user_id` | string | User UUID who triggered the event |
| `data` | object | data output from the tool |
| ↳ `id` | string | Story UUID |
| ↳ `title` | string | Story title |
| ↳ `url` | string | URL to view in Grain |
| ↳ `created_datetime` | string | ISO8601 creation timestamp |
***
### Grain Upload Status [#grain-upload-status]
Trigger on progress updates for recordings uploaded to Grain
#### Configuration [#configuration-10]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Required to create the webhook in Grain. |
#### Output [#output-18]
| Parameter | Type | Description |
| --------- | ------ | ---------------------------------------------- |
| `type` | string | Event type (e.g., recording\_added) |
| `user_id` | string | User UUID who triggered the event |
| `data` | object | Event data object (recording, highlight, etc.) |
---
# Granola (/integrations/granola)
{/* MANUAL-CONTENT-START:intro */}
[Granola](https://www.granola.ai/) is an AI notepad for meetings that automatically records and transcribes calls, then generates structured notes and summaries alongside your own typed notes.
With Granola, you can:
* **List meeting notes**: Browse notes with date filters, folder scoping, and pagination
* **Retrieve full note details**: Get summaries, attendees, calendar event details, and transcripts for a specific note
* **Organize by folders**: List and filter notes using Granola's folder structure
In Sim, the Granola integration allows your agents to pull meeting notes, summaries, and transcripts directly into a workflow. Agents can list recent notes with date or folder filters, fetch a specific note's summary text, attendees, and calendar details, retrieve the full transcript with speaker labels when needed, and browse folders to organize retrieval. This makes it possible to build workflows that surface meeting outcomes, route action items, or feed meeting context into downstream agent reasoning.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Granola into your workflow to retrieve meeting notes, summaries, attendees, and transcripts.
## Actions [#actions]
### Granola List Notes [#granola-list-notes]
Lists meeting notes from Granola with optional date filters and pagination.
#### Input [#input]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ----------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Granola API key |
| `createdBefore` | string | No | Return notes created before this date (ISO 8601) |
| `createdAfter` | string | No | Return notes created after this date (ISO 8601) |
| `updatedAfter` | string | No | Return notes updated after this date (ISO 8601) |
| `folderId` | string | No | Return notes in this folder and its child folders (e.g., fol\_4y6LduVdwSKC27) |
| `cursor` | string | No | Pagination cursor from a previous response |
| `pageSize` | number | No | Number of notes per page (1-30, default 10) |
#### Output [#output]
| Parameter | Type | Description |
| -------------- | ------- | ----------------------------------- |
| `notes` | json | List of meeting notes |
| ↳ `id` | string | Note ID |
| ↳ `title` | string | Note title |
| ↳ `ownerName` | string | Note owner name |
| ↳ `ownerEmail` | string | Note owner email |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `updatedAt` | string | Last update timestamp |
| `hasMore` | boolean | Whether more notes are available |
| `cursor` | string | Pagination cursor for the next page |
### Granola Get Note [#granola-get-note]
Retrieves a specific meeting note from Granola by ID, including summary, attendees, calendar event details, and optionally the transcript.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------------- | ------ | -------- | ----------------------------------------- |
| `apiKey` | string | Yes | Granola API key |
| `noteId` | string | Yes | The note ID (e.g., not\_1d3tmYTlCICgjy) |
| `includeTranscript` | string | No | Whether to include the meeting transcript |
#### Output [#output-1]
| Parameter | Type | Description |
| -------------------- | ------ | ------------------------------------------------------- |
| `id` | string | Note ID |
| `title` | string | Note title |
| `ownerName` | string | Note owner name |
| `ownerEmail` | string | Note owner email |
| `createdAt` | string | Creation timestamp |
| `updatedAt` | string | Last update timestamp |
| `webUrl` | string | URL to view the note in Granola |
| `summaryText` | string | Plain text summary of the meeting |
| `summaryMarkdown` | string | Markdown-formatted summary of the meeting |
| `attendees` | json | Meeting attendees |
| ↳ `name` | string | Attendee name |
| ↳ `email` | string | Attendee email |
| `folders` | json | Folders the note belongs to |
| ↳ `id` | string | Folder ID |
| ↳ `name` | string | Folder name |
| `calendarEventTitle` | string | Calendar event title |
| `calendarOrganiser` | string | Calendar event organiser email |
| `calendarEventId` | string | Calendar event ID |
| `scheduledStartTime` | string | Scheduled start time |
| `scheduledEndTime` | string | Scheduled end time |
| `invitees` | json | Calendar event invitee emails |
| `transcript` | json | Meeting transcript entries (only if requested) |
| ↳ `speaker` | string | Speaker source (microphone or speaker) |
| ↳ `speakerLabel` | string | Diarization label for the speaker (e.g., Speaker A) |
| ↳ `speakerName` | string | Resolved name of the identified speaker, when available |
| ↳ `text` | string | Transcript text |
| ↳ `startTime` | string | Segment start time |
| ↳ `endTime` | string | Segment end time |
### Granola List Folders [#granola-list-folders]
Lists folders from Granola, sorted alphabetically, with pagination.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------- |
| `apiKey` | string | Yes | Granola API key |
| `cursor` | string | No | Pagination cursor from a previous response |
| `pageSize` | number | No | Number of folders per page (1-30, default 10) |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------------ | ------- | ----------------------------------------------- |
| `folders` | json | List of folders |
| ↳ `id` | string | Folder ID |
| ↳ `name` | string | Folder name |
| ↳ `parentFolderId` | string | Parent folder ID, or null for top-level folders |
| `hasMore` | boolean | Whether more folders are available |
| `cursor` | string | Pagination cursor for the next page |
---
# Greenhouse (/integrations/greenhouse)
{/* MANUAL-CONTENT-START:intro */}
[Greenhouse](https://www.greenhouse.com/) is a leading applicant tracking system (ATS) and hiring platform designed to help companies optimize their recruiting processes. Greenhouse provides structured hiring workflows, candidate management, interview scheduling, and analytics to help organizations make better hiring decisions at scale.
With the Greenhouse integration in Sim, you can:
* **Manage candidates**: List and retrieve detailed candidate profiles including contact information, tags, and application history
* **Track jobs**: List and view job postings with details on hiring teams, openings, and confidentiality settings
* **Monitor applications**: List and retrieve applications with status, source, and interview stage information
* **Access user data**: List and look up Greenhouse users including recruiters, coordinators, and hiring managers
* **Browse organizational data**: List departments, offices, and job stages to understand your hiring pipeline structure
In Sim, the Greenhouse integration enables your agents to interact with your recruiting data as part of automated workflows. Agents can pull candidate information, monitor application pipelines, track job openings, and cross-reference hiring team data—all programmatically. This is ideal for building automated recruiting reports, candidate pipeline monitoring, hiring analytics dashboards, and workflows that react to changes in your talent pipeline.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Greenhouse into the workflow. List and retrieve candidates, jobs, applications, users, departments, offices, and job stages from your Greenhouse ATS account.
## Actions [#actions]
### Greenhouse List Candidates [#greenhouse-list-candidates]
Lists candidates from Greenhouse with optional filtering by date, job, or email
#### Input [#input]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | -------------------------------------------------------------------- |
| `apiKey` | string | Yes | Greenhouse Harvest API key |
| `per_page` | number | No | Number of results per page (1-500, default 100) |
| `page` | number | No | Page number for pagination |
| `created_after` | string | No | Return only candidates created at or after this ISO 8601 timestamp |
| `created_before` | string | No | Return only candidates created before this ISO 8601 timestamp |
| `updated_after` | string | No | Return only candidates updated at or after this ISO 8601 timestamp |
| `updated_before` | string | No | Return only candidates updated before this ISO 8601 timestamp |
| `job_id` | string | No | Filter to candidates who applied to this job ID (excludes prospects) |
| `email` | string | No | Filter to candidates with this email address |
| `candidate_ids` | string | No | Comma-separated candidate IDs to retrieve (max 50) |
#### Output [#output]
| Parameter | Type | Description |
| ------------------- | ------- | ---------------------------------- |
| `candidates` | array | List of candidates |
| ↳ `id` | number | Candidate ID |
| ↳ `first_name` | string | First name |
| ↳ `last_name` | string | Last name |
| ↳ `company` | string | Current employer |
| ↳ `title` | string | Current job title |
| ↳ `is_private` | boolean | Whether candidate is private |
| ↳ `can_email` | boolean | Whether candidate can be emailed |
| ↳ `email_addresses` | array | Email addresses |
| ↳ `value` | string | Email address |
| ↳ `type` | string | Email type (personal, work, other) |
| ↳ `tags` | array | Candidate tags |
| ↳ `application_ids` | array | Associated application IDs |
| ↳ `created_at` | string | Creation timestamp (ISO 8601) |
| ↳ `updated_at` | string | Last updated timestamp (ISO 8601) |
| ↳ `last_activity` | string | Last activity timestamp (ISO 8601) |
| `count` | number | Number of candidates returned |
### Greenhouse Get Candidate [#greenhouse-get-candidate]
Retrieves a specific candidate by ID with full details including contact info, education, and employment history
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ----------------------------------- |
| `apiKey` | string | Yes | Greenhouse Harvest API key |
| `candidateId` | string | Yes | The ID of the candidate to retrieve |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------------------ | ------- | -------------------------------------------------- |
| `id` | number | Candidate ID |
| `first_name` | string | First name |
| `last_name` | string | Last name |
| `company` | string | Current employer |
| `title` | string | Current job title |
| `is_private` | boolean | Whether candidate is private |
| `can_email` | boolean | Whether candidate can be emailed |
| `created_at` | string | Creation timestamp (ISO 8601) |
| `updated_at` | string | Last updated timestamp (ISO 8601) |
| `last_activity` | string | Last activity timestamp (ISO 8601) |
| `email_addresses` | array | Email addresses |
| ↳ `value` | string | Email address |
| ↳ `type` | string | Type (personal, work, other) |
| `phone_numbers` | array | Phone numbers |
| ↳ `value` | string | Phone number |
| ↳ `type` | string | Type (home, work, mobile, skype, other) |
| `addresses` | array | Addresses |
| ↳ `value` | string | Address |
| ↳ `type` | string | Type (home, work, other) |
| `website_addresses` | array | Website addresses |
| ↳ `value` | string | URL |
| ↳ `type` | string | Type (personal, company, portfolio, blog, other) |
| `social_media_addresses` | array | Social media profiles |
| ↳ `value` | string | URL or handle |
| `tags` | array | Tags |
| `application_ids` | array | Associated application IDs |
| `recruiter` | object | Assigned recruiter |
| ↳ `id` | number | User ID |
| ↳ `first_name` | string | First name |
| ↳ `last_name` | string | Last name |
| ↳ `name` | string | Full name |
| ↳ `employee_id` | string | Employee ID |
| `coordinator` | object | Assigned coordinator |
| ↳ `id` | number | User ID |
| ↳ `first_name` | string | First name |
| ↳ `last_name` | string | Last name |
| ↳ `name` | string | Full name |
| ↳ `employee_id` | string | Employee ID |
| `attachments` | array | File attachments (URLs expire after 7 days) |
| ↳ `filename` | string | File name |
| ↳ `url` | string | Download URL (expires after 7 days) |
| ↳ `type` | string | Type (resume, cover\_letter, offer\_packet, other) |
| ↳ `created_at` | string | Upload timestamp |
| `educations` | array | Education history |
| ↳ `id` | number | Education record ID |
| ↳ `school_name` | string | School name |
| ↳ `degree` | string | Degree type |
| ↳ `discipline` | string | Field of study |
| ↳ `start_date` | string | Start date (ISO 8601) |
| ↳ `end_date` | string | End date (ISO 8601) |
| `employments` | array | Employment history |
| ↳ `id` | number | Employment record ID |
| ↳ `company_name` | string | Company name |
| ↳ `title` | string | Job title |
| ↳ `start_date` | string | Start date (ISO 8601) |
| ↳ `end_date` | string | End date (ISO 8601) |
| `custom_fields` | object | Custom field values |
### Greenhouse List Jobs [#greenhouse-list-jobs]
Lists jobs from Greenhouse with optional filtering by status, department, or office
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------ |
| `apiKey` | string | Yes | Greenhouse Harvest API key |
| `per_page` | number | No | Number of results per page (1-500, default 100) |
| `page` | number | No | Page number for pagination |
| `status` | string | No | Filter by job status (open, closed, draft) |
| `created_after` | string | No | Return only jobs created at or after this ISO 8601 timestamp |
| `created_before` | string | No | Return only jobs created before this ISO 8601 timestamp |
| `updated_after` | string | No | Return only jobs updated at or after this ISO 8601 timestamp |
| `updated_before` | string | No | Return only jobs updated before this ISO 8601 timestamp |
| `department_id` | string | No | Filter to jobs in this department ID |
| `office_id` | string | No | Filter to jobs in this office ID |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------------- | ------- | --------------------------------- |
| `jobs` | array | List of jobs |
| ↳ `id` | number | Job ID |
| ↳ `name` | string | Job title |
| ↳ `status` | string | Job status (open, closed, draft) |
| ↳ `confidential` | boolean | Whether the job is confidential |
| ↳ `departments` | array | Associated departments |
| ↳ `id` | number | Department ID |
| ↳ `name` | string | Department name |
| ↳ `offices` | array | Associated offices |
| ↳ `id` | number | Office ID |
| ↳ `name` | string | Office name |
| ↳ `opened_at` | string | Date job was opened (ISO 8601) |
| ↳ `closed_at` | string | Date job was closed (ISO 8601) |
| ↳ `created_at` | string | Creation timestamp (ISO 8601) |
| ↳ `updated_at` | string | Last updated timestamp (ISO 8601) |
| `count` | number | Number of jobs returned |
### Greenhouse Get Job [#greenhouse-get-job]
Retrieves a specific job by ID with full details including hiring team, openings, and custom fields
#### Input [#input-3]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------- |
| `apiKey` | string | Yes | Greenhouse Harvest API key |
| `jobId` | string | Yes | The ID of the job to retrieve |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------------- | ------- | ---------------------------------------- |
| `id` | number | Job ID |
| `name` | string | Job title |
| `requisition_id` | string | External requisition ID |
| `status` | string | Job status (open, closed, draft) |
| `confidential` | boolean | Whether the job is confidential |
| `created_at` | string | Creation timestamp (ISO 8601) |
| `opened_at` | string | Date job was opened (ISO 8601) |
| `closed_at` | string | Date job was closed (ISO 8601) |
| `updated_at` | string | Last updated timestamp (ISO 8601) |
| `is_template` | boolean | Whether this is a job template |
| `notes` | string | Hiring plan notes (may contain HTML) |
| `departments` | array | Associated departments |
| ↳ `id` | number | Department ID |
| ↳ `name` | string | Department name |
| ↳ `parent_id` | number | Parent department ID |
| `offices` | array | Associated offices |
| ↳ `id` | number | Office ID |
| ↳ `name` | string | Office name |
| ↳ `location` | object | Office location |
| ↳ `name` | string | Location name |
| `hiring_team` | object | Hiring team members |
| ↳ `hiring_managers` | array | Hiring managers |
| ↳ `recruiters` | array | Recruiters (includes responsible flag) |
| ↳ `coordinators` | array | Coordinators (includes responsible flag) |
| ↳ `sourcers` | array | Sourcers |
| `openings` | array | Job openings/slots |
| ↳ `id` | number | Opening internal ID |
| ↳ `opening_id` | string | Custom opening identifier |
| ↳ `status` | string | Opening status (open, closed) |
| ↳ `opened_at` | string | Date opened (ISO 8601) |
| ↳ `closed_at` | string | Date closed (ISO 8601) |
| ↳ `application_id` | number | Hired application ID |
| ↳ `close_reason` | object | Reason for closing |
| ↳ `id` | number | Close reason ID |
| ↳ `name` | string | Close reason name |
| `custom_fields` | object | Custom field values |
### Greenhouse List Applications [#greenhouse-list-applications]
Lists applications from Greenhouse with optional filtering by job, status, or date
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------------------- | ------ | -------- | -------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Greenhouse Harvest API key |
| `per_page` | number | No | Number of results per page (1-500, default 100) |
| `page` | number | No | Page number for pagination |
| `job_id` | string | No | Filter applications by job ID |
| `status` | string | No | Filter by status (active, converted, hired, rejected) |
| `created_after` | string | No | Return only applications created at or after this ISO 8601 timestamp |
| `created_before` | string | No | Return only applications created before this ISO 8601 timestamp |
| `last_activity_after` | string | No | Return only applications with activity at or after this ISO 8601 timestamp |
#### Output [#output-4]
| Parameter | Type | Description |
| -------------------- | ------- | ------------------------------------------- |
| `applications` | array | List of applications |
| ↳ `id` | number | Application ID |
| ↳ `candidate_id` | number | Associated candidate ID |
| ↳ `prospect` | boolean | Whether this is a prospect application |
| ↳ `status` | string | Status (active, converted, hired, rejected) |
| ↳ `current_stage` | object | Current interview stage |
| ↳ `id` | number | Stage ID |
| ↳ `name` | string | Stage name |
| ↳ `jobs` | array | Associated jobs |
| ↳ `id` | number | Job ID |
| ↳ `name` | string | Job name |
| ↳ `applied_at` | string | Application date (ISO 8601) |
| ↳ `rejected_at` | string | Rejection date (ISO 8601) |
| ↳ `last_activity_at` | string | Last activity date (ISO 8601) |
| `count` | number | Number of applications returned |
### Greenhouse Get Application [#greenhouse-get-application]
Retrieves a specific application by ID with full details including source, stage, answers, and attachments
#### Input [#input-5]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------- |
| `apiKey` | string | Yes | Greenhouse Harvest API key |
| `applicationId` | string | Yes | The ID of the application to retrieve |
#### Output [#output-5]
| Parameter | Type | Description |
| ------------------ | ------- | -------------------------------------------------- |
| `id` | number | Application ID |
| `candidate_id` | number | Associated candidate ID |
| `prospect` | boolean | Whether this is a prospect application |
| `status` | string | Status (active, converted, hired, rejected) |
| `applied_at` | string | Application date (ISO 8601) |
| `rejected_at` | string | Rejection date (ISO 8601) |
| `last_activity_at` | string | Last activity date (ISO 8601) |
| `location` | object | Candidate location |
| ↳ `address` | string | Location address |
| `source` | object | Application source |
| ↳ `id` | number | Source ID |
| ↳ `public_name` | string | Source name |
| `credited_to` | object | User credited for the application |
| ↳ `id` | number | User ID |
| ↳ `first_name` | string | First name |
| ↳ `last_name` | string | Last name |
| ↳ `name` | string | Full name |
| ↳ `employee_id` | string | Employee ID |
| `recruiter` | object | Assigned recruiter |
| ↳ `id` | number | User ID |
| ↳ `first_name` | string | First name |
| ↳ `last_name` | string | Last name |
| ↳ `name` | string | Full name |
| ↳ `employee_id` | string | Employee ID |
| `coordinator` | object | Assigned coordinator |
| ↳ `id` | number | User ID |
| ↳ `first_name` | string | First name |
| ↳ `last_name` | string | Last name |
| ↳ `name` | string | Full name |
| ↳ `employee_id` | string | Employee ID |
| `current_stage` | object | Current interview stage (null when hired) |
| ↳ `id` | number | Stage ID |
| ↳ `name` | string | Stage name |
| `rejection_reason` | object | Rejection reason |
| ↳ `id` | number | Rejection reason ID |
| ↳ `name` | string | Rejection reason name |
| ↳ `type` | object | Rejection reason type |
| ↳ `id` | number | Type ID |
| ↳ `name` | string | Type name |
| `jobs` | array | Associated jobs |
| ↳ `id` | number | Job ID |
| ↳ `name` | string | Job name |
| `job_post_id` | number | Job post ID |
| `answers` | array | Application question answers |
| ↳ `question` | string | Question text |
| ↳ `answer` | string | Answer text |
| `attachments` | array | File attachments (URLs expire after 7 days) |
| ↳ `filename` | string | File name |
| ↳ `url` | string | Download URL (expires after 7 days) |
| ↳ `type` | string | Type (resume, cover\_letter, offer\_packet, other) |
| ↳ `created_at` | string | Upload timestamp |
| `custom_fields` | object | Custom field values |
### Greenhouse List Users [#greenhouse-list-users]
Lists Greenhouse users (recruiters, hiring managers, admins) with optional filtering
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------- |
| `apiKey` | string | Yes | Greenhouse Harvest API key |
| `per_page` | number | No | Number of results per page (1-500, default 100) |
| `page` | number | No | Page number for pagination |
| `created_after` | string | No | Return only users created at or after this ISO 8601 timestamp |
| `created_before` | string | No | Return only users created before this ISO 8601 timestamp |
| `updated_after` | string | No | Return only users updated at or after this ISO 8601 timestamp |
| `updated_before` | string | No | Return only users updated before this ISO 8601 timestamp |
| `email` | string | No | Filter by email address |
#### Output [#output-6]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------- |
| `users` | array | List of Greenhouse users |
| ↳ `id` | number | User ID |
| ↳ `name` | string | Full name |
| ↳ `first_name` | string | First name |
| ↳ `last_name` | string | Last name |
| ↳ `primary_email_address` | string | Primary email |
| ↳ `disabled` | boolean | Whether the user is disabled |
| ↳ `site_admin` | boolean | Whether the user is a site admin |
| ↳ `emails` | array | All email addresses |
| ↳ `employee_id` | string | Employee ID |
| ↳ `linked_candidate_ids` | array | IDs of candidates linked to this user |
| ↳ `created_at` | string | Creation timestamp (ISO 8601) |
| ↳ `updated_at` | string | Last updated timestamp (ISO 8601) |
| `count` | number | Number of users returned |
### Greenhouse Get User [#greenhouse-get-user]
Retrieves a specific Greenhouse user by ID
#### Input [#input-7]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------ |
| `apiKey` | string | Yes | Greenhouse Harvest API key |
| `userId` | string | Yes | The ID of the user to retrieve |
#### Output [#output-7]
| Parameter | Type | Description |
| ----------------------- | ------- | ------------------------------------- |
| `id` | number | User ID |
| `name` | string | Full name |
| `first_name` | string | First name |
| `last_name` | string | Last name |
| `primary_email_address` | string | Primary email address |
| `disabled` | boolean | Whether the user is disabled |
| `site_admin` | boolean | Whether the user is a site admin |
| `emails` | array | All email addresses |
| `employee_id` | string | Employee ID |
| `linked_candidate_ids` | array | IDs of candidates linked to this user |
| `created_at` | string | Creation timestamp (ISO 8601) |
| `updated_at` | string | Last updated timestamp (ISO 8601) |
### Greenhouse List Departments [#greenhouse-list-departments]
Lists all departments configured in Greenhouse
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------- |
| `apiKey` | string | Yes | Greenhouse Harvest API key |
| `per_page` | number | No | Number of results per page (1-500, default 100) |
| `page` | number | No | Page number for pagination |
#### Output [#output-8]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------ |
| `departments` | array | List of departments |
| ↳ `id` | number | Department ID |
| ↳ `name` | string | Department name |
| ↳ `parent_id` | number | Parent department ID |
| ↳ `child_ids` | array | Child department IDs |
| ↳ `external_id` | string | External system ID |
| `count` | number | Number of departments returned |
### Greenhouse List Offices [#greenhouse-list-offices]
Lists all offices configured in Greenhouse
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------- |
| `apiKey` | string | Yes | Greenhouse Harvest API key |
| `per_page` | number | No | Number of results per page (1-500, default 100) |
| `page` | number | No | Page number for pagination |
#### Output [#output-9]
| Parameter | Type | Description |
| --------------------------- | ------ | -------------------------- |
| `offices` | array | List of offices |
| ↳ `id` | number | Office ID |
| ↳ `name` | string | Office name |
| ↳ `location` | object | Office location |
| ↳ `name` | string | Location name |
| ↳ `primary_contact_user_id` | number | Primary contact user ID |
| ↳ `parent_id` | number | Parent office ID |
| ↳ `child_ids` | array | Child office IDs |
| ↳ `external_id` | string | External system ID |
| `count` | number | Number of offices returned |
### Greenhouse List Job Stages [#greenhouse-list-job-stages]
Lists all interview stages for a specific job in Greenhouse
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------- |
| `apiKey` | string | Yes | Greenhouse Harvest API key |
| `jobId` | string | Yes | The job ID to list stages for |
| `per_page` | number | No | Number of results per page (1-500, default 100) |
| `page` | number | No | Page number for pagination |
#### Output [#output-10]
| Parameter | Type | Description |
| ----------------------------- | ------- | ------------------------------------ |
| `stages` | array | List of job stages in order |
| ↳ `id` | number | Stage ID |
| ↳ `name` | string | Stage name |
| ↳ `created_at` | string | Creation timestamp (ISO 8601) |
| ↳ `updated_at` | string | Last updated timestamp (ISO 8601) |
| ↳ `job_id` | number | Associated job ID |
| ↳ `priority` | number | Stage order priority |
| ↳ `active` | boolean | Whether the stage is active |
| ↳ `interviews` | array | Interview steps in this stage |
| ↳ `id` | number | Interview ID |
| ↳ `name` | string | Interview name |
| ↳ `schedulable` | boolean | Whether the interview is schedulable |
| ↳ `estimated_minutes` | number | Estimated duration in minutes |
| ↳ `default_interviewer_users` | array | Default interviewers |
| ↳ `id` | number | User ID |
| ↳ `name` | string | Full name |
| ↳ `first_name` | string | First name |
| ↳ `last_name` | string | Last name |
| ↳ `employee_id` | string | Employee ID |
| ↳ `interview_kit` | object | Interview kit details |
| ↳ `id` | number | Kit ID |
| ↳ `content` | string | Kit content (HTML) |
| ↳ `questions` | array | Interview kit questions |
| ↳ `id` | number | Question ID |
| ↳ `question` | string | Question text |
| `count` | number | Number of stages returned |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
### Greenhouse Candidate Hired [#greenhouse-candidate-hired]
Trigger workflow when a candidate is hired
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `secretKey` | string | No | When set, requests must include a valid Signature header (HMAC-SHA256). If left empty, the endpoint does not verify signatures—only use on a private URL you fully control. |
#### Output [#output-11]
| Parameter | Type | Description |
| ------------------- | ------- | ------------------------------------------------------------------------------------------------- |
| `action` | string | The webhook event type (hire\_candidate) |
| `applicationId` | number | Application id when present (`payload.application.id` or flat `payload.application_id` on offers) |
| `candidateId` | number | Candidate id when `payload.application.candidate.id` is present |
| `jobId` | number | Job id from `payload.job.id` or flat `payload.job_id` when present |
| `payload` | object | payload output from the tool |
| ↳ `application` | object | application output from the tool |
| ↳ `id` | number | Application ID |
| ↳ `status` | string | Application status |
| ↳ `prospect` | boolean | Whether the applicant is a prospect |
| ↳ `applied_at` | string | When the application was submitted |
| ↳ `url` | string | Application URL in Greenhouse |
| ↳ `current_stage` | object | current\_stage output from the tool |
| ↳ `id` | number | Current stage ID |
| ↳ `name` | string | Current stage name |
| ↳ `candidate` | object | candidate output from the tool |
| ↳ `id` | number | Candidate ID |
| ↳ `first_name` | string | First name |
| ↳ `last_name` | string | Last name |
| ↳ `title` | string | Current title |
| ↳ `company` | string | Current company |
| ↳ `email_addresses` | json | Email addresses |
| ↳ `phone_numbers` | json | Phone numbers |
| ↳ `recruiter` | json | Assigned recruiter |
| ↳ `coordinator` | json | Assigned coordinator |
| ↳ `jobs` | json | Associated jobs (array) |
| ↳ `source` | object | source output from the tool |
| ↳ `id` | number | Source ID |
| ↳ `name` | string | Source name when provided by Greenhouse |
| ↳ `public_name` | string | Public-facing source name when provided by Greenhouse |
| ↳ `offer` | object | offer output from the tool |
| ↳ `id` | number | Offer ID |
| ↳ `version` | number | Offer version |
| ↳ `starts_at` | string | Offer start date |
| ↳ `custom_fields` | json | Offer custom fields |
| ↳ `custom_fields` | json | Application custom fields |
***
### Greenhouse Candidate Rejected [#greenhouse-candidate-rejected]
Trigger workflow when a candidate is rejected
#### Configuration [#configuration-1]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `secretKey` | string | No | When set, requests must include a valid Signature header (HMAC-SHA256). If left empty, the endpoint does not verify signatures—only use on a private URL you fully control. |
#### Output [#output-12]
| Parameter | Type | Description |
| --------------------- | ------- | ------------------------------------------------------------------------------------------------- |
| `action` | string | The webhook event type (reject\_candidate) |
| `applicationId` | number | Application id when present (`payload.application.id` or flat `payload.application_id` on offers) |
| `candidateId` | number | Candidate id when `payload.application.candidate.id` is present |
| `jobId` | number | Job id from `payload.job.id` or flat `payload.job_id` when present |
| `payload` | object | payload output from the tool |
| ↳ `application` | object | application output from the tool |
| ↳ `id` | number | Application ID |
| ↳ `status` | string | Application status (rejected) |
| ↳ `prospect` | boolean | Whether the applicant is a prospect |
| ↳ `applied_at` | string | When the application was submitted |
| ↳ `rejected_at` | string | When the candidate was rejected |
| ↳ `url` | string | Application URL in Greenhouse |
| ↳ `current_stage` | object | current\_stage output from the tool |
| ↳ `id` | number | Stage ID where rejected |
| ↳ `name` | string | Stage name where rejected |
| ↳ `candidate` | object | candidate output from the tool |
| ↳ `id` | number | Candidate ID |
| ↳ `first_name` | string | First name |
| ↳ `last_name` | string | Last name |
| ↳ `email_addresses` | json | Email addresses |
| ↳ `phone_numbers` | json | Phone numbers |
| ↳ `jobs` | json | Associated jobs (array) |
| ↳ `rejection_reason` | json | Rejection reason object with id, name, and type fields |
| ↳ `rejection_details` | json | Rejection details with custom fields |
| ↳ `custom_fields` | json | Application custom fields |
***
### Greenhouse Candidate Stage Change [#greenhouse-candidate-stage-change]
Trigger workflow when a candidate changes interview stages
#### Configuration [#configuration-2]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `secretKey` | string | No | When set, requests must include a valid Signature header (HMAC-SHA256). If left empty, the endpoint does not verify signatures—only use on a private URL you fully control. |
#### Output [#output-13]
| Parameter | Type | Description |
| ------------------- | ------- | ------------------------------------------------------------------------------------------------- |
| `action` | string | The webhook event type (candidate\_stage\_change) |
| `applicationId` | number | Application id when present (`payload.application.id` or flat `payload.application_id` on offers) |
| `candidateId` | number | Candidate id when `payload.application.candidate.id` is present |
| `jobId` | number | Job id from `payload.job.id` or flat `payload.job_id` when present |
| `payload` | object | payload output from the tool |
| ↳ `application` | object | application output from the tool |
| ↳ `id` | number | Application ID |
| ↳ `status` | string | Application status |
| ↳ `prospect` | boolean | Whether the applicant is a prospect |
| ↳ `applied_at` | string | When the application was submitted |
| ↳ `url` | string | Application URL in Greenhouse |
| ↳ `current_stage` | object | current\_stage output from the tool |
| ↳ `id` | number | Current stage ID |
| ↳ `name` | string | Current stage name |
| ↳ `interviews` | json | Interviews in this stage |
| ↳ `candidate` | object | candidate output from the tool |
| ↳ `id` | number | Candidate ID |
| ↳ `first_name` | string | First name |
| ↳ `last_name` | string | Last name |
| ↳ `title` | string | Current title |
| ↳ `company` | string | Current company |
| ↳ `email_addresses` | json | Email addresses |
| ↳ `phone_numbers` | json | Phone numbers |
| ↳ `jobs` | json | Associated jobs (array) |
| ↳ `source` | object | source output from the tool |
| ↳ `id` | number | Source ID |
| ↳ `name` | string | Source name when provided by Greenhouse |
| ↳ `public_name` | string | Public-facing source name when provided by Greenhouse |
| ↳ `custom_fields` | json | Application custom fields |
***
### Greenhouse Job Created [#greenhouse-job-created]
Trigger workflow when a new job is created
#### Configuration [#configuration-3]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `secretKey` | string | No | When set, requests must include a valid Signature header (HMAC-SHA256). If left empty, the endpoint does not verify signatures—only use on a private URL you fully control. |
#### Output [#output-14]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------------------------------------------------------------- |
| `action` | string | The webhook event type (job\_created) |
| `applicationId` | number | Application id when present (`payload.application.id` or flat `payload.application_id` on offers) |
| `candidateId` | number | Candidate id when `payload.application.candidate.id` is present |
| `jobId` | number | Job id from `payload.job.id` or flat `payload.job_id` when present |
| `payload` | object | payload output from the tool |
| ↳ `job` | object | job output from the tool |
| ↳ `id` | number | Job ID |
| ↳ `name` | string | Job title |
| ↳ `requisition_id` | string | Requisition ID |
| ↳ `status` | string | Job status (open, closed, draft) |
| ↳ `confidential` | boolean | Whether the job is confidential |
| ↳ `created_at` | string | When the job was created |
| ↳ `opened_at` | string | When the job was opened |
| ↳ `closed_at` | string | When the job was closed |
| ↳ `departments` | json | Associated departments |
| ↳ `offices` | json | Associated offices |
| ↳ `hiring_team` | json | Hiring team (managers, recruiters, etc.) |
| ↳ `openings` | json | Job openings |
| ↳ `custom_fields` | json | Custom field values |
***
### Greenhouse Job Updated [#greenhouse-job-updated]
Trigger workflow when a job is updated
#### Configuration [#configuration-4]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `secretKey` | string | No | When set, requests must include a valid Signature header (HMAC-SHA256). If left empty, the endpoint does not verify signatures—only use on a private URL you fully control. |
#### Output [#output-15]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------------------------------------------------------------- |
| `action` | string | The webhook event type (job\_updated) |
| `applicationId` | number | Application id when present (`payload.application.id` or flat `payload.application_id` on offers) |
| `candidateId` | number | Candidate id when `payload.application.candidate.id` is present |
| `jobId` | number | Job id from `payload.job.id` or flat `payload.job_id` when present |
| `payload` | object | payload output from the tool |
| ↳ `job` | object | job output from the tool |
| ↳ `id` | number | Job ID |
| ↳ `name` | string | Job title |
| ↳ `requisition_id` | string | Requisition ID |
| ↳ `status` | string | Job status (open, closed, draft) |
| ↳ `confidential` | boolean | Whether the job is confidential |
| ↳ `created_at` | string | When the job was created |
| ↳ `opened_at` | string | When the job was opened |
| ↳ `closed_at` | string | When the job was closed |
| ↳ `departments` | json | Associated departments |
| ↳ `offices` | json | Associated offices |
| ↳ `hiring_team` | json | Hiring team (managers, recruiters, etc.) |
| ↳ `openings` | json | Job openings |
| ↳ `custom_fields` | json | Custom field values |
***
### Greenhouse New Application [#greenhouse-new-application]
Trigger workflow when a new application is submitted
#### Configuration [#configuration-5]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `secretKey` | string | No | When set, requests must include a valid Signature header (HMAC-SHA256). If left empty, the endpoint does not verify signatures—only use on a private URL you fully control. |
#### Output [#output-16]
| Parameter | Type | Description |
| ------------------- | ------- | ------------------------------------------------------------------------------------------------- |
| `action` | string | The webhook event type (new\_candidate\_application) |
| `applicationId` | number | Application id when present (`payload.application.id` or flat `payload.application_id` on offers) |
| `candidateId` | number | Candidate id when `payload.application.candidate.id` is present |
| `jobId` | number | Job id from `payload.job.id` or flat `payload.job_id` when present |
| `payload` | object | payload output from the tool |
| ↳ `application` | object | application output from the tool |
| ↳ `id` | number | Application ID |
| ↳ `status` | string | Application status |
| ↳ `prospect` | boolean | Whether the applicant is a prospect |
| ↳ `applied_at` | string | When the application was submitted |
| ↳ `url` | string | Application URL in Greenhouse |
| ↳ `current_stage` | object | current\_stage output from the tool |
| ↳ `id` | number | Current stage ID |
| ↳ `name` | string | Current stage name |
| ↳ `candidate` | object | candidate output from the tool |
| ↳ `id` | number | Candidate ID |
| ↳ `first_name` | string | First name |
| ↳ `last_name` | string | Last name |
| ↳ `title` | string | Current title |
| ↳ `company` | string | Current company |
| ↳ `created_at` | string | When the candidate was created |
| ↳ `email_addresses` | json | Email addresses |
| ↳ `phone_numbers` | json | Phone numbers |
| ↳ `tags` | json | Candidate tags |
| ↳ `jobs` | json | Associated jobs (array) |
| ↳ `source` | object | source output from the tool |
| ↳ `id` | number | Source ID |
| ↳ `name` | string | Source name when provided by Greenhouse |
| ↳ `public_name` | string | Public-facing source name when provided by Greenhouse |
| ↳ `answers` | json | Application question answers |
| ↳ `attachments` | json | Application attachments |
| ↳ `custom_fields` | json | Application custom fields |
***
### Greenhouse Offer Created [#greenhouse-offer-created]
Trigger workflow when a new offer is created
#### Configuration [#configuration-6]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `secretKey` | string | No | When set, requests must include a valid Signature header (HMAC-SHA256). If left empty, the endpoint does not verify signatures—only use on a private URL you fully control. |
#### Output [#output-17]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------------------------------------------------------- |
| `action` | string | The webhook event type (offer\_created) |
| `applicationId` | number | Application id when present (`payload.application.id` or flat `payload.application_id` on offers) |
| `candidateId` | number | Candidate id when `payload.application.candidate.id` is present |
| `jobId` | number | Job id from `payload.job.id` or flat `payload.job_id` when present |
| `payload` | object | payload output from the tool |
| ↳ `id` | number | Offer ID |
| ↳ `application_id` | number | Associated application ID |
| ↳ `job_id` | number | Associated job ID |
| ↳ `user_id` | number | User who created the offer |
| ↳ `version` | number | Offer version number |
| ↳ `sent_on` | string | When the offer was sent |
| ↳ `resolved_at` | string | When the offer was resolved |
| ↳ `start_date` | string | Offer start date |
| ↳ `notes` | string | Offer notes |
| ↳ `offer_status` | string | Offer status |
| ↳ `custom_fields` | json | Custom field values |
***
### Greenhouse Webhook (Endpoint Events) [#greenhouse-webhook-endpoint-events]
Trigger on whichever event types you select for this URL in Greenhouse. Sim does not filter deliveries for this trigger.
#### Configuration [#configuration-7]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `secretKey` | string | No | When set, requests must include a valid Signature header (HMAC-SHA256). If left empty, the endpoint does not verify signatures—only use on a private URL you fully control. |
#### Output [#output-18]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------------------------------------------------------------------------- |
| `action` | string | The webhook event type |
| `applicationId` | number | Application id when present (`payload.application.id` or flat `payload.application_id` on offers) |
| `candidateId` | number | Candidate id when `payload.application.candidate.id` is present |
| `jobId` | number | Job id from `payload.job.id` or flat `payload.job_id` when present |
| `payload` | json | Full event payload |
---
# Greptile (/integrations/greptile)
{/* MANUAL-CONTENT-START:intro */}
[Greptile](https://greptile.com/) is an AI-powered developer tool for searching and querying source code across one or more repositories. Greptile enables engineers to quickly answer complex codebase questions in natural language, locate relevant files or symbols, and gain insights into unfamiliar or legacy code.
With Greptile, you can:
* **Ask complex questions about your codebase in natural language**: Get AI-generated answers about architecture, usage patterns, or specific implementations.
* **Find relevant code, files, or functions instantly**: Search using keywords or natural language queries and jump right to matching lines, files, or code blocks.
* **Understand dependencies and relationships**: Uncover where functions are called, how modules are related, or where APIs are used across large codebases.
* **Accelerate onboarding and code exploration**: Quickly ramp up on new projects or debug tricky issues without needing deep prior context.
The Sim Greptile integration allows your AI agents to:
* Query and search private and public repositories using Greptile’s advanced language models.
* Retrieve contextually relevant code snippets, file references, and explanations to support code review, documentation, and development workflows.
* Trigger automations in Sim workflows based on search/query results or embed code intelligence directly into your processes.
Whether you’re trying to accelerate developer productivity, automate documentation, or supercharge your team’s understanding of a complex codebase, Greptile and Sim provide seamless access to code intelligence and search—right where you need it.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Query and search codebases using natural language with Greptile. Get AI-generated answers about your code, find relevant files, and understand complex codebases.
## Actions [#actions]
### Greptile Query [#greptile-query]
Query repositories in natural language and get answers with relevant code references. Greptile uses AI to understand your codebase and answer questions.
#### Input [#input]
| Parameter | Type | Required | Description |
| -------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `query` | string | Yes | Natural language question about the codebase. Example: "How does authentication work?" or "Where is the payment processing logic?" |
| `repositories` | string | Yes | Comma-separated list of repositories. Format: "github:branch:owner/repo" or just "owner/repo" (defaults to github:main). Example: "facebook/react" or "github:main:facebook/react,github:main:facebook/relay" |
| `sessionId` | string | No | Session ID for conversation continuity. Use the same sessionId across multiple queries to maintain context. Example: "session-abc123" |
| `genius` | boolean | No | Enable genius mode for more thorough analysis (slower but more accurate) |
| `apiKey` | string | Yes | Greptile API key |
| `githubToken` | string | Yes | GitHub Personal Access Token with repo read access |
#### Output [#output]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------------------ |
| `message` | string | AI-generated answer to the query |
| `sources` | array | Relevant code references that support the answer |
| ↳ `repository` | string | Repository name (owner/repo) |
| ↳ `remote` | string | Git remote (github/gitlab) |
| ↳ `branch` | string | Branch name |
| ↳ `filepath` | string | Path to the file |
| ↳ `linestart` | number | Starting line number |
| ↳ `lineend` | number | Ending line number |
| ↳ `summary` | string | Summary of the code section |
| ↳ `distance` | number | Similarity score (lower = more relevant) |
### Greptile Search [#greptile-search]
Search repositories in natural language and get relevant code references without generating an answer. Useful for finding specific code locations.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| -------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `query` | string | Yes | Natural language search query to find relevant code. Example: "authentication middleware" or "database connection handling" |
| `repositories` | string | Yes | Comma-separated list of repositories. Format: "github:branch:owner/repo" or just "owner/repo" (defaults to github:main). Example: "facebook/react" or "github:main:facebook/react,github:main:facebook/relay" |
| `sessionId` | string | No | Session ID for conversation continuity. Use the same sessionId across multiple searches to maintain context. Example: "session-abc123" |
| `genius` | boolean | No | Enable genius mode for more thorough search (slower but more accurate) |
| `apiKey` | string | Yes | Greptile API key |
| `githubToken` | string | Yes | GitHub Personal Access Token with repo read access |
#### Output [#output-1]
| Parameter | Type | Description |
| -------------- | ------ | -------------------------------------------------- |
| `sources` | array | Relevant code references matching the search query |
| ↳ `repository` | string | Repository name (owner/repo) |
| ↳ `remote` | string | Git remote (github/gitlab) |
| ↳ `branch` | string | Branch name |
| ↳ `filepath` | string | Path to the file |
| ↳ `linestart` | number | Starting line number |
| ↳ `lineend` | number | Ending line number |
| ↳ `summary` | string | Summary of the code section |
| ↳ `distance` | number | Similarity score (lower = more relevant) |
### Greptile Index Repository [#greptile-index-repository]
Submit a repository to be indexed by Greptile. Indexing must complete before the repository can be queried. Small repos take 3-5 minutes, larger ones can take over an hour.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | ------------------------------------------------------------------------------ |
| `remote` | string | Yes | Git remote type: github or gitlab |
| `repository` | string | Yes | Repository in owner/repo format. Example: "facebook/react" or "vercel/next.js" |
| `branch` | string | Yes | Branch to index (e.g., "main" or "master") |
| `reload` | boolean | No | Force re-indexing even if already indexed |
| `notify` | boolean | No | Send email notification when indexing completes |
| `apiKey` | string | Yes | Greptile API key |
| `githubToken` | string | Yes | GitHub Personal Access Token with repo read access |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------------- | ------ | ------------------------------------------------------------------------------- |
| `repositoryId` | string | Unique identifier for the indexed repository (format: remote:branch:owner/repo) |
| `statusEndpoint` | string | URL endpoint to check indexing status |
| `message` | string | Status message about the indexing operation |
### Greptile Repository Status [#greptile-repository-status]
Check the indexing status of a repository. Use this to verify if a repository is ready to be queried or to monitor indexing progress.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `remote` | string | Yes | Git remote type: github or gitlab |
| `repository` | string | Yes | Repository in owner/repo format. Example: "facebook/react" or "vercel/next.js" |
| `branch` | string | Yes | Branch name (e.g., "main" or "master") |
| `apiKey` | string | Yes | Greptile API key |
| `githubToken` | string | Yes | GitHub Personal Access Token with repo read access |
#### Output [#output-3]
| Parameter | Type | Description |
| ----------------- | ------- | --------------------------------------------------------------------- |
| `repository` | string | Repository name (owner/repo) |
| `remote` | string | Git remote (github/gitlab) |
| `branch` | string | Branch name |
| `private` | boolean | Whether the repository is private |
| `status` | string | Indexing status: submitted, cloning, processing, completed, or failed |
| `filesProcessed` | number | Number of files processed so far |
| `numFiles` | number | Total number of files in the repository |
| `sampleQuestions` | array | Sample questions for the indexed repository |
| `sha` | string | Git commit SHA of the indexed version |
---
# Hex (/integrations/hex)
{/* MANUAL-CONTENT-START:intro */}
[Hex](https://hex.tech/) is a collaborative platform for analytics and data science that allows you to build, run, and share interactive data projects and notebooks. Hex lets teams work together on data exploration, transformation, and visualization, making it easy to turn analysis into shareable insights.
With Hex, you can:
* **Create and run powerful notebooks**: Blend SQL, Python, and visualizations in a single, interactive workspace.
* **Collaborate and share**: Work together with teammates in real time and publish interactive data apps for broader audiences.
* **Automate and orchestrate workflows**: Schedule notebook runs, parameterize runs with inputs, and automate data tasks.
* **Visualize and communicate results**: Turn analysis results into dashboards or interactive apps that anyone can use.
* **Integrate with your data stack**: Connect easily to data warehouses, APIs, and other sources.
The Sim Hex integration allows your AI agents or workflows to:
* List, get, and manage Hex projects directly from Sim.
* Trigger and monitor notebook runs, check their statuses, or cancel them as part of larger automation flows.
* Retrieve run results and use them within Sim-powered processes and decision-making.
* Leverage Hex’s interactive analytics capabilities right inside your automated Sim workflows.
Whether you’re empowering analysts, automating reporting, or embedding actionable data into your processes, Hex and Sim provide a seamless way to operationalize analytics and bring data-driven insights to your team.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Hex into your workflow. Run projects, check run status, manage collections and groups (including membership and deactivating users), list users, and view data connections. Requires a Hex API token.
## Actions [#actions]
### Hex Cancel Run [#hex-cancel-run]
Cancel an active Hex project run.
#### Input [#input]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------- |
| `apiKey` | string | Yes | Hex API token (Personal or Workspace) |
| `projectId` | string | Yes | The UUID of the Hex project |
| `runId` | string | Yes | The UUID of the run to cancel |
#### Output [#output]
| Parameter | Type | Description |
| ----------- | ------- | ------------------------------------------ |
| `success` | boolean | Whether the run was successfully cancelled |
| `projectId` | string | Project UUID |
| `runId` | string | Run UUID that was cancelled |
### Hex Create Collection [#hex-create-collection]
Create a new collection in the Hex workspace to organize projects.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | --------------------------------------- |
| `apiKey` | string | Yes | Hex API token (Personal or Workspace) |
| `name` | string | Yes | Name for the new collection |
| `description` | string | No | Optional description for the collection |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------- | ------ | ----------------------------- |
| `id` | string | Newly created collection UUID |
| `name` | string | Collection name |
| `description` | string | Collection description |
| `creator` | object | Collection creator |
| ↳ `email` | string | Creator email |
| ↳ `id` | string | Creator UUID |
### Hex Create Group [#hex-create-group]
Create a new group in the Hex workspace, optionally with initial members.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Hex API token (Personal or Workspace) |
| `name` | string | Yes | Name for the new group |
| `memberUserIds` | json | No | JSON array of user UUIDs to add as initial group members (e.g., \["uuid1", "uuid2"]) |
#### Output [#output-2]
| Parameter | Type | Description |
| ----------- | ------ | ------------------------ |
| `id` | string | Newly created group UUID |
| `name` | string | Group name |
| `createdAt` | string | Creation timestamp |
### Hex Deactivate User [#hex-deactivate-user]
Deactivate a user in the Hex workspace.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------- |
| `apiKey` | string | Yes | Hex API token (Personal or Workspace) |
| `userId` | string | Yes | The UUID of the user to deactivate |
#### Output [#output-3]
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------------- |
| `success` | boolean | Whether the user was successfully deactivated |
| `userId` | string | User UUID that was deactivated |
### Hex Delete Group [#hex-delete-group]
Delete a group from the Hex workspace.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------- |
| `apiKey` | string | Yes | Hex API token (Personal or Workspace) |
| `groupId` | string | Yes | The UUID of the group to delete |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------------ |
| `success` | boolean | Whether the group was successfully deleted |
| `groupId` | string | Group UUID that was deleted |
### Hex Get Collection [#hex-get-collection]
Retrieve details for a specific Hex collection by its ID.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------- |
| `apiKey` | string | Yes | Hex API token (Personal or Workspace) |
| `collectionId` | string | Yes | The UUID of the collection |
#### Output [#output-5]
| Parameter | Type | Description |
| ------------- | ------ | ---------------------- |
| `id` | string | Collection UUID |
| `name` | string | Collection name |
| `description` | string | Collection description |
| `creator` | object | Collection creator |
| ↳ `email` | string | Creator email |
| ↳ `id` | string | Creator UUID |
### Hex Get Data Connection [#hex-get-data-connection]
Retrieve details for a specific data connection including type, description, and configuration flags.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ------------------------------------- |
| `apiKey` | string | Yes | Hex API token (Personal or Workspace) |
| `dataConnectionId` | string | Yes | The UUID of the data connection |
#### Output [#output-6]
| Parameter | Type | Description |
| --------------------- | ------- | ----------------------------------------------------- |
| `id` | string | Connection UUID |
| `name` | string | Connection name |
| `type` | string | Connection type (e.g., snowflake, postgres, bigquery) |
| `description` | string | Connection description |
| `connectViaSsh` | boolean | Whether SSH tunneling is enabled |
| `includeMagic` | boolean | Whether Magic AI features are enabled |
| `allowWritebackCells` | boolean | Whether writeback cells are allowed |
### Hex Get Group [#hex-get-group]
Retrieve details for a specific Hex group.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------- |
| `apiKey` | string | Yes | Hex API token (Personal or Workspace) |
| `groupId` | string | Yes | The UUID of the group |
#### Output [#output-7]
| Parameter | Type | Description |
| ----------- | ------ | ------------------ |
| `id` | string | Group UUID |
| `name` | string | Group name |
| `createdAt` | string | Creation timestamp |
### Hex Get Project [#hex-get-project]
Get metadata and details for a specific Hex project by its ID.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------- |
| `apiKey` | string | Yes | Hex API token (Personal or Workspace) |
| `projectId` | string | Yes | The UUID of the Hex project |
#### Output [#output-8]
| Parameter | Type | Description |
| ----------------- | ------ | ------------------------------------ |
| `id` | string | Project UUID |
| `title` | string | Project title |
| `description` | string | Project description |
| `status` | object | Project status |
| ↳ `name` | string | Status name (e.g., PUBLISHED, DRAFT) |
| `type` | string | Project type (PROJECT or COMPONENT) |
| `creator` | object | Project creator |
| ↳ `email` | string | Creator email |
| `owner` | object | Project owner |
| ↳ `email` | string | Owner email |
| `categories` | array | Project categories |
| ↳ `name` | string | Category name |
| ↳ `description` | string | Category description |
| `lastEditedAt` | string | ISO 8601 last edited timestamp |
| `lastPublishedAt` | string | ISO 8601 last published timestamp |
| `createdAt` | string | ISO 8601 creation timestamp |
| `archivedAt` | string | ISO 8601 archived timestamp |
| `trashedAt` | string | ISO 8601 trashed timestamp |
### Hex Get Project Runs [#hex-get-project-runs]
Retrieve API-triggered runs for a Hex project with optional filtering by status and pagination.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Hex API token (Personal or Workspace) |
| `projectId` | string | Yes | The UUID of the Hex project |
| `limit` | number | No | Maximum number of runs to return (1-100, default: 25) |
| `offset` | number | No | Offset for paginated results (default: 0) |
| `statusFilter` | string | No | Filter by run status: PENDING, RUNNING, ERRORED, COMPLETED, KILLED, UNABLE\_TO\_ALLOCATE\_KERNEL |
| `runTriggerFilter` | string | No | Filter by how the run was triggered: ALL, API, SCHEDULED, or APP\_REFRESH |
#### Output [#output-9]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------------------------------------------------------------------- |
| `runs` | array | List of project runs |
| ↳ `projectId` | string | Project UUID |
| ↳ `runId` | string | Run UUID |
| ↳ `runUrl` | string | URL to view the run |
| ↳ `status` | string | Run status (PENDING, RUNNING, COMPLETED, ERRORED, KILLED, UNABLE\_TO\_ALLOCATE\_KERNEL) |
| ↳ `startTime` | string | Run start time |
| ↳ `endTime` | string | Run end time |
| ↳ `elapsedTime` | number | Elapsed time in seconds |
| ↳ `traceId` | string | Trace ID |
| ↳ `projectVersion` | number | Project version number |
| `total` | number | Total number of runs returned |
| `traceId` | string | Top-level trace ID |
| `nextPage` | string | Cursor for the next page of runs |
| `previousPage` | string | Cursor for the previous page of runs |
### Hex Get Queried Tables [#hex-get-queried-tables]
Return the warehouse tables queried by a Hex project, including data connection and table names.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------ |
| `apiKey` | string | Yes | Hex API token (Personal or Workspace) |
| `projectId` | string | Yes | The UUID of the Hex project |
| `limit` | number | No | Maximum number of tables to return (1-100) |
#### Output [#output-10]
| Parameter | Type | Description |
| ---------------------- | ------ | ----------------------------------------------- |
| `tables` | array | List of warehouse tables queried by the project |
| ↳ `dataConnectionId` | string | Data connection UUID |
| ↳ `dataConnectionName` | string | Data connection name |
| ↳ `tableName` | string | Table name |
| `total` | number | Total number of tables returned |
### Hex Get Run Status [#hex-get-run-status]
Check the status of a Hex project run by its run ID.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------- |
| `apiKey` | string | Yes | Hex API token (Personal or Workspace) |
| `projectId` | string | Yes | The UUID of the Hex project |
| `runId` | string | Yes | The UUID of the run to check |
#### Output [#output-11]
| Parameter | Type | Description |
| ---------------- | ------ | --------------------------------------------------------------------------------------- |
| `projectId` | string | Project UUID |
| `runId` | string | Run UUID |
| `runUrl` | string | URL to view the run |
| `status` | string | Run status (PENDING, RUNNING, COMPLETED, ERRORED, KILLED, UNABLE\_TO\_ALLOCATE\_KERNEL) |
| `startTime` | string | ISO 8601 run start time |
| `endTime` | string | ISO 8601 run end time |
| `elapsedTime` | number | Elapsed time in seconds |
| `traceId` | string | Trace ID for debugging |
| `projectVersion` | number | Project version number |
### Hex List Collections [#hex-list-collections]
List all collections in the Hex workspace.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------ |
| `apiKey` | string | Yes | Hex API token (Personal or Workspace) |
| `limit` | number | No | Maximum number of collections to return (1-500, default: 25) |
| `sortBy` | string | No | Sort by field: NAME |
| `after` | string | No | Cursor to fetch the page of results after this value |
| `before` | string | No | Cursor to fetch the page of results before this value |
#### Output [#output-12]
| Parameter | Type | Description |
| --------------- | ------ | --------------------------------------- |
| `collections` | array | List of collections |
| ↳ `id` | string | Collection UUID |
| ↳ `name` | string | Collection name |
| ↳ `description` | string | Collection description |
| ↳ `creator` | object | Collection creator |
| ↳ `email` | string | Creator email |
| ↳ `id` | string | Creator UUID |
| `total` | number | Total number of collections returned |
| `after` | string | Cursor for the next page of results |
| `before` | string | Cursor for the previous page of results |
### Hex List Data Connections [#hex-list-data-connections]
List all data connections in the Hex workspace (e.g., Snowflake, PostgreSQL, BigQuery).
#### Input [#input-13]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------ |
| `apiKey` | string | Yes | Hex API token (Personal or Workspace) |
| `limit` | number | No | Maximum number of connections to return (1-500, default: 25) |
| `sortBy` | string | No | Sort by field: CREATED\_AT or NAME |
| `sortDirection` | string | No | Sort direction: ASC or DESC |
| `after` | string | No | Cursor to fetch the page of results after this value |
| `before` | string | No | Cursor to fetch the page of results before this value |
#### Output [#output-13]
| Parameter | Type | Description |
| ----------------------- | ------- | ----------------------------------------------------------------------------------- |
| `connections` | array | List of data connections |
| ↳ `id` | string | Connection UUID |
| ↳ `name` | string | Connection name |
| ↳ `type` | string | Connection type (e.g., athena, bigquery, databricks, postgres, redshift, snowflake) |
| ↳ `description` | string | Connection description |
| ↳ `connectViaSsh` | boolean | Whether SSH tunneling is enabled |
| ↳ `includeMagic` | boolean | Whether Magic AI features are enabled |
| ↳ `allowWritebackCells` | boolean | Whether writeback cells are allowed |
| `total` | number | Total number of connections returned |
| `after` | string | Cursor for the next page of results |
| `before` | string | Cursor for the previous page of results |
### Hex List Groups [#hex-list-groups]
List all groups in the Hex workspace with optional sorting.
#### Input [#input-14]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------- |
| `apiKey` | string | Yes | Hex API token (Personal or Workspace) |
| `limit` | number | No | Maximum number of groups to return (1-500, default: 25) |
| `sortBy` | string | No | Sort by field: CREATED\_AT or NAME |
| `sortDirection` | string | No | Sort direction: ASC or DESC |
| `after` | string | No | Cursor to fetch the page of results after this value |
| `before` | string | No | Cursor to fetch the page of results before this value |
#### Output [#output-14]
| Parameter | Type | Description |
| ------------- | ------ | --------------------------------------- |
| `groups` | array | List of workspace groups |
| ↳ `id` | string | Group UUID |
| ↳ `name` | string | Group name |
| ↳ `createdAt` | string | Creation timestamp |
| `total` | number | Total number of groups returned |
| `after` | string | Cursor for the next page of results |
| `before` | string | Cursor for the previous page of results |
### Hex List Projects [#hex-list-projects]
List all projects in your Hex workspace with optional filtering by status.
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ------------------- | ------- | -------- | --------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Hex API token (Personal or Workspace) |
| `limit` | number | No | Maximum number of projects to return (1-100) |
| `includeArchived` | boolean | No | Include archived projects in results |
| `statusFilter` | string | No | Filter by status: PUBLISHED, DRAFT, or ALL |
| `includeComponents` | boolean | No | Include components in results |
| `includeTrashed` | boolean | No | Include trashed projects in results |
| `creatorEmail` | string | No | Filter by creator email |
| `ownerEmail` | string | No | Filter by owner email |
| `collectionId` | string | No | Filter by collection UUID |
| `categories` | json | No | JSON array of category names to filter by (e.g., \["Marketing", "Finance"]) |
| `sortBy` | string | No | Sort by field: CREATED\_AT, LAST\_EDITED\_AT, or LAST\_PUBLISHED\_AT |
| `sortDirection` | string | No | Sort direction: ASC or DESC |
| `after` | string | No | Cursor to fetch the page of results after this value |
| `before` | string | No | Cursor to fetch the page of results before this value |
#### Output [#output-15]
| Parameter | Type | Description |
| ------------------- | ------ | --------------------------------------- |
| `projects` | array | List of Hex projects |
| ↳ `id` | string | Project UUID |
| ↳ `title` | string | Project title |
| ↳ `description` | string | Project description |
| ↳ `status` | object | Project status |
| ↳ `name` | string | Status name (e.g., PUBLISHED, DRAFT) |
| ↳ `type` | string | Project type (PROJECT or COMPONENT) |
| ↳ `creator` | object | Project creator |
| ↳ `email` | string | Creator email |
| ↳ `owner` | object | Project owner |
| ↳ `email` | string | Owner email |
| ↳ `lastEditedAt` | string | Last edited timestamp |
| ↳ `lastPublishedAt` | string | Last published timestamp |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `archivedAt` | string | Archived timestamp |
| `total` | number | Total number of projects returned |
| `after` | string | Cursor for the next page of results |
| `before` | string | Cursor for the previous page of results |
### Hex List Users [#hex-list-users]
List all users in the Hex workspace with optional filtering and sorting.
#### Input [#input-16]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------ |
| `apiKey` | string | Yes | Hex API token (Personal or Workspace) |
| `limit` | number | No | Maximum number of users to return (1-100, default: 25) |
| `sortBy` | string | No | Sort by field: NAME or EMAIL |
| `sortDirection` | string | No | Sort direction: ASC or DESC |
| `groupId` | string | No | Filter users by group UUID |
| `userIds` | string | No | Comma-separated list of user UUIDs to filter by |
| `after` | string | No | Cursor to fetch the page of results after this value |
| `before` | string | No | Cursor to fetch the page of results before this value |
#### Output [#output-16]
| Parameter | Type | Description |
| ----------------- | ------ | -------------------------------------------------------------------------------------- |
| `users` | array | List of workspace users |
| ↳ `id` | string | User UUID |
| ↳ `name` | string | User name |
| ↳ `email` | string | User email |
| ↳ `role` | string | User role (ADMIN, MANAGER, EDITOR, EXPLORER, MEMBER, GUEST, EMBEDDED\_USER, ANONYMOUS) |
| ↳ `lastLoginDate` | string | Last login timestamp |
| `total` | number | Total number of users returned |
| `after` | string | Cursor for the next page of results |
| `before` | string | Cursor for the previous page of results |
### Hex Run Project [#hex-run-project]
Execute a published Hex project. Optionally pass input parameters and control caching behavior.
#### Input [#input-17]
| Parameter | Type | Required | Description |
| ------------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Hex API token (Personal or Workspace) |
| `projectId` | string | Yes | The UUID of the Hex project to run |
| `inputParams` | json | No | JSON object of input parameters for the project (e.g., \{"date": "2024-01-01"}) |
| `dryRun` | boolean | No | If true, perform a dry run without executing the project |
| `updateCache` | boolean | No | (Deprecated) If true, update the cached results after execution |
| `updatePublishedResults` | boolean | No | If true, update the published app results after execution |
| `useCachedSqlResults` | boolean | No | If true, use cached SQL results instead of re-running queries |
| `viewId` | string | No | Optional SavedView ID to use for the project run |
| `notifications` | json | No | JSON array of notification details to deliver once the run completes (e.g., \[\{"type": "FAILURE", "slackChannelIds": \["C0123456789"], "userIds": \[], "groupIds": \[], "includeSuccessScreenshot": false}]). type is ALL, SUCCESS, or FAILURE. |
#### Output [#output-17]
| Parameter | Type | Description |
| ---------------- | ------ | ----------------------- |
| `projectId` | string | Project UUID |
| `runId` | string | Run UUID |
| `runUrl` | string | URL to view the run |
| `runStatusUrl` | string | URL to check run status |
| `traceId` | string | Trace ID for debugging |
| `projectVersion` | number | Project version number |
### Hex Update Collection [#hex-update-collection]
Update the name or description of an existing Hex collection.
#### Input [#input-18]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------- |
| `apiKey` | string | Yes | Hex API token (Personal or Workspace) |
| `collectionId` | string | Yes | The UUID of the collection to update |
| `name` | string | No | New name for the collection |
| `description` | string | No | New description for the collection |
#### Output [#output-18]
| Parameter | Type | Description |
| ------------- | ------ | ---------------------- |
| `id` | string | Collection UUID |
| `name` | string | Collection name |
| `description` | string | Collection description |
| `creator` | object | Collection creator |
| ↳ `email` | string | Creator email |
| ↳ `id` | string | Creator UUID |
### Hex Update Group [#hex-update-group]
Rename a Hex group or add/remove members from it.
#### Input [#input-19]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ----------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Hex API token (Personal or Workspace) |
| `groupId` | string | Yes | The UUID of the group to update |
| `name` | string | No | New name for the group |
| `addUserIds` | json | No | JSON array of user UUIDs to add to the group (e.g., \["uuid1", "uuid2"]) |
| `removeUserIds` | json | No | JSON array of user UUIDs to remove from the group (e.g., \["uuid1", "uuid2"]) |
#### Output [#output-19]
| Parameter | Type | Description |
| ----------- | ------ | ------------------ |
| `id` | string | Group UUID |
| `name` | string | Group name |
| `createdAt` | string | Creation timestamp |
### Hex Update Project [#hex-update-project]
Update a Hex project status label (e.g., endorsement or custom workspace statuses).
#### Input [#input-20]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------- |
| `apiKey` | string | Yes | Hex API token (Personal or Workspace) |
| `projectId` | string | Yes | The UUID of the Hex project to update |
| `status` | string | Yes | New project status name (custom workspace status label) |
#### Output [#output-20]
| Parameter | Type | Description |
| ----------------- | ------ | ------------------------------------ |
| `id` | string | Project UUID |
| `title` | string | Project title |
| `description` | string | Project description |
| `status` | object | Updated project status |
| ↳ `name` | string | Status name (e.g., PUBLISHED, DRAFT) |
| `type` | string | Project type (PROJECT or COMPONENT) |
| `creator` | object | Project creator |
| ↳ `email` | string | Creator email |
| `owner` | object | Project owner |
| ↳ `email` | string | Owner email |
| `categories` | array | Project categories |
| ↳ `name` | string | Category name |
| ↳ `description` | string | Category description |
| `lastEditedAt` | string | Last edited timestamp |
| `lastPublishedAt` | string | Last published timestamp |
| `createdAt` | string | Creation timestamp |
| `archivedAt` | string | Archived timestamp |
| `trashedAt` | string | Trashed timestamp |
---
# HubSpot Private App Tokens (/integrations/hubspot-service-account)
HubSpot private apps let your workflows authenticate to HubSpot with a portal-level access token instead of a person's OAuth login. A super admin creates the app once, picks exactly the scopes it needs, and the token stays valid until it's rotated or revoked — no OAuth consent to expire, and permissions that are auditable from HubSpot's settings.
This is the recommended way to use HubSpot in production workflows: the token doesn't auto-expire, its scopes are explicit, and it can be rotated on a schedule without touching anyone's personal account.
## Prerequisites [#prerequisites]
You need a HubSpot **super admin** to create the private app. Private apps can only be created and managed by super admins in the portal.
The token is tied to the super admin who created the private app. If that user is later removed from the portal (or loses super admin), some API calls start failing with `USER_DOES_NOT_HAVE_PERMISSIONS` — association calls are commonly reported. Create the app from an account you expect to keep, and rotate the token if the creator ever leaves.
## Setting Up the Private App [#setting-up-the-private-app]
### 1. Create the Private App [#1-create-the-private-app]
In HubSpot, navigate to **Development** in the left sidebar, then **Legacy apps**
{/* TODO(screenshot): HubSpot navigation showing Development → Legacy apps */}
HubSpot moved private apps under a new **Development** area and relabeled them "Legacy apps". The tokens themselves remain fully supported — only the navigation changed. If you don't see **Development**, look for **Private Apps** under **Settings** → **Integrations** in older portals.
Click **Create legacy app** in the top right, select **Private**, and give it a name (e.g. `sim-hubspot-bot`) and description
Open the **Scopes** tab and select the scopes your workflows need (see the list below)
{/* TODO(screenshot): private app Scopes tab with CRM scopes selected */}
Click **Create app**, confirm, and copy the access token from the app's **Auth** tab
{/* TODO(screenshot): private app Auth tab showing the access token with the Show/Copy controls */}
### 2. Choose Scopes [#2-choose-scopes]
Private apps use the same scope catalog as HubSpot OAuth apps. Grant only what your workflows use. The full set Sim's HubSpot tools can draw on is:
**CRM objects (read/write as needed):**
```
crm.objects.contacts.read
crm.objects.contacts.write
crm.objects.companies.read
crm.objects.companies.write
crm.objects.deals.read
crm.objects.deals.write
crm.objects.line_items.read
crm.objects.line_items.write
crm.objects.appointments.read
crm.objects.appointments.write
crm.objects.owners.read
crm.objects.users.read
crm.objects.marketing_events.read
crm.objects.quotes.read
crm.objects.carts.read
```
**Tickets, emails, and lists:**
```
tickets
sales-email-read
crm.lists.read
crm.lists.write
```
Ticket tools need `tickets`, email tools need `sales-email-read`, list tools need `crm.lists.*`, and each object type's tools need its `crm.objects.*` scope. Notes and association tools need the CRM object scopes of the records involved. A missing scope surfaces at run time as a `403` error with category `MISSING_SCOPES` naming the scopes required — widen the app's scopes from the same Scopes tab, commit the change in HubSpot, and re-run the workflow. If the `403` persists, rotate the token and update the credential in Sim.
Sim's OAuth flow also requests an `oauth` scope — that one is OAuth-app-only and doesn't exist for private apps. You don't need it and can't grant it.
### 3. Copy the Token [#3-copy-the-token]
The token looks like `pat-na1-…` (North America) or `pat-eu1-…` (EU data residency). Both work — Sim calls `api.hubapi.com`, which serves both regions.
The access token is bearer credentials for your entire portal, limited only by its scopes. Treat it like a password — do not commit it to source control or share it publicly. Sim encrypts the token at rest.
## Adding the Service Account to Sim [#adding-the-service-account-to-sim]
Open **Integrations** from your workspace sidebar
Search for "HubSpot" and open it, then click **Add to Sim** and choose **Add private app token**
{/* TODO(screenshot): HubSpot integration page with the service-account connect option */}
Paste the **Private app access token**, and optionally set a display name and description
{/* TODO(screenshot): Add HubSpot private app token dialog with the private app access token filled in */}
Click **Add private app token**. Sim verifies the token against HubSpot's token-info endpoint — if it fails, you'll see a specific error explaining what went wrong.
## Using the Service Account in Workflows [#using-the-service-account-in-workflows]
Add a HubSpot block or the HubSpot CRM Trigger to your workflow. In the credential dropdown, your HubSpot service account appears alongside any OAuth credentials. Select it and configure the block as you normally would. For the polling trigger, a service account is often the better choice — the token never expires and keeps working even if the person who connected it leaves the portal.
{/* TODO(screenshot): HubSpot block in a workflow with the HubSpot service account selected as the credential */}
The block calls `api.hubapi.com` using the private app token — exactly the same requests as the OAuth flow, so every HubSpot tool works unchanged, subject to the scopes you granted.
## Rotating the Token [#rotating-the-token]
Private app tokens don't auto-expire, but HubSpot recommends rotating them every six months and emails super admins once a token hasn't rotated in about 180 days. From the app's Auth tab you can:
* **Rotate and expire now** — the old token dies immediately
* **Rotate and expire later** — the old token keeps working for 7 days while you migrate
Prefer the 7-day option: rotate in HubSpot, paste the new token into the credential in Sim, confirm your workflows run, and let the old token lapse.
---
# HubSpot setup guide (/integrations/hubspot-setup)
Sim connects your HubSpot CRM to AI workflows. Once connected, your workflows can:
* **Read and write CRM records** — create, look up, search, and update contacts, companies, deals, and tickets from any workflow.
* **React to CRM changes** — start a workflow when a contact, company, deal, or ticket is created or updated in HubSpot.
* **Combine HubSpot with AI steps** — enrich a new contact with an [Agent block](/workflows/blocks/agent), route deals with a [Condition](/workflows/blocks/condition), or sync records into [Tables](/tables).
This guide covers installing the integration, connecting a HubSpot account, configuring it in a workflow, and disconnecting or uninstalling it.
## Before you begin [#before-you-begin]
You need:
* A [Sim](https://sim.ai) account and a workspace where you have **Write** or **Admin** permission.
* A HubSpot account. To grant the requested scopes, your HubSpot user needs permission to install apps (typically a super admin).
## Install the app and connect HubSpot [#install-the-app-and-connect-hubspot]
1. Log in to Sim, open your workspace, and click **Integrations** in the sidebar.
2. Search for **HubSpot** and open it.
3. The HubSpot page lists its skills and templates. Click **+ Add to Sim** in the top right.
4. In the **Connect HubSpot** dialog, enter a **Display name** for the connection (for example "Sales HubSpot"), review the permissions requested, and click **Connect**.
5. You are redirected to HubSpot. Sign in, then choose the HubSpot account you want to connect.
6. Review the requested scopes on HubSpot's approval screen and click **Connect app**.
{/* VISUAL: screenshot of the HubSpot scope approval screen for the Sim app. */}
7. You are returned to Sim. The connection appears under **Connected** on the Integrations page.
You can connect more than one HubSpot account — for example, separate sales and support portals — and choose per workflow which one to use.
## Configure the app in a workflow [#configure-the-app-in-a-workflow]
The fastest start is from the HubSpot page itself: its **skills** (like *upsert-contact*, *create-deal-for-account*, or *triage-support-ticket*) and **templates** add ready-made HubSpot capabilities to your workspace with one click.
For your own workflows, the integration runs through the **HubSpot block**.
1. Open a workflow in the editor and add a **HubSpot** block.
2. In the block's **Account** field, select the HubSpot connection you created.
3. Pick an **Operation** — for example *Create Contact*, *Search Deals*, *Update Ticket*, or *List Companies*.
4. Fill in the operation's fields. Reference outputs from earlier blocks with [connection tags](/workflows/connections), like `` or ``.
{/* VISUAL: screenshot of a HubSpot block configured with an account and the Create Contact operation. */}
The full list of operations, with every input and output, is on the [HubSpot integration reference](/integrations/hubspot).
### Start workflows from HubSpot events [#start-workflows-from-hubspot-events]
The HubSpot block can also act as a trigger. Toggle **Use as Trigger**, select the connection, and choose which events to watch — contacts, companies, deals, or tickets, created or updated. Sim polls HubSpot for changes and runs the workflow once per changed record, with the record's fields available to downstream blocks.
Triggers run against your workflow's active [deployment](/workflows/deployment), so deploy the workflow to activate them.
## Use the app [#use-the-app]
Once configured, the integration runs automatically:
* **Workflow actions** run whenever the workflow runs — manually from the editor, on a schedule, from an API call, or from a chat.
* **Triggers** run on their own: when a watched record changes in HubSpot, the workflow starts with that record as input.
Every run is recorded in [Logs](/logs-debugging), block by block, so you can verify exactly what was read from or written to HubSpot.
## Disconnect HubSpot from Sim [#disconnect-hubspot-from-sim]
When you disconnect, workflows that use this HubSpot connection will fail at the HubSpot block on their next run, and HubSpot triggers using it stop firing. Data already written to HubSpot or stored in Sim is not affected.
1. In Sim, click **Integrations** in the sidebar.
2. Under **Connected**, open your HubSpot connection.
3. Click **Disconnect**, and confirm.
Disconnecting deletes the stored OAuth tokens. To use HubSpot again later, reconnect and update your workflows to use the new connection.
## Uninstall the app from HubSpot [#uninstall-the-app-from-hubspot]
You can also remove Sim from the HubSpot side, which revokes its access entirely:
1. In HubSpot, go to **Settings → Integrations → Connected apps**.
2. Find **Sim** and choose **Uninstall**.
See HubSpot's guide to [connecting and uninstalling apps](https://knowledge.hubspot.com/integrations/connect-apps-to-hubspot) for details. Uninstalling revokes Sim's tokens, so connected workflows fail at the HubSpot block until you reinstall and reconnect. Your HubSpot data itself is not changed or deleted.
## Troubleshooting [#troubleshooting]
* **A HubSpot block fails with an authorization error.** The connection may have been disconnected or its token revoked. Open **Integrations** in the sidebar, check the connection, and reconnect it.
* **A trigger isn't firing.** Confirm the workflow is deployed, and check [Logs](/logs-debugging) for recent runs.
* **You manage multiple portals.** Connect each HubSpot account separately and pick the right connection per block.
Need help? Contact [help@sim.ai](mailto:help@sim.ai).
---
# HubSpot (/integrations/hubspot)
{/* MANUAL-CONTENT-START:intro */}
[HubSpot](https://www.hubspot.com) is a comprehensive CRM platform that provides a full suite of marketing, sales, and customer service tools to help businesses grow. With powerful automation capabilities and an extensive API, HubSpot serves businesses of all sizes across industries.
With the HubSpot integration in Sim, you can:
* **Manage contacts**: List, get, create, update, and search contacts in your CRM
* **Manage companies**: List, get, create, update, and search company records
* **Track deals**: List deals in your sales pipeline
* **Access users**: Retrieve user information from your HubSpot account
In Sim, the HubSpot integration enables your agents to interact with your CRM data as part of automated workflows. Agents can qualify leads, enrich contact records, track deals, and synchronize data across your tech stack—enabling intelligent sales and marketing automation.
New to the integration? Follow the [HubSpot setup guide](/integrations/hubspot-setup) to install it, connect your account, and configure your first workflow.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate HubSpot into your workflow. Manage contacts, companies, deals, tickets, and other CRM objects with powerful automation capabilities. Can be used in trigger mode to start workflows when records are created, updated, a specific property changes, or a contact joins a list.
## Actions [#actions]
### Get Users from HubSpot [#get-users-from-hubspot]
Retrieve all users from HubSpot account
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ |
| `limit` | string | No | Number of results to return (default: 10, max: 100) |
| `after` | string | No | Pagination cursor for next page of results (from previous response) |
| `properties` | string | No | Comma-separated list of HubSpot user property names to return (e.g., "hs\_email,hs\_given\_name,hs\_family\_name") |
#### Output [#output]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------------------------------ |
| `users` | array | Array of HubSpot CRM records |
| ↳ `id` | string | Unique record ID (hs\_object\_id) |
| ↳ `createdAt` | string | Record creation timestamp (ISO 8601) |
| ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) |
| ↳ `archived` | boolean | Whether the record is archived |
| ↳ `properties` | object | Record properties |
| ↳ `associations` | object | Associated records |
| `paging` | object | Pagination information for fetching more results |
| ↳ `after` | string | Cursor for next page of results |
| ↳ `link` | string | Link to next page |
| `totalItems` | number | Total number of users returned |
| `success` | boolean | Operation success status |
### List Contacts from HubSpot [#list-contacts-from-hubspot]
Retrieve all contacts from HubSpot account with pagination support
#### Input [#input-1]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------- |
| `limit` | string | No | Maximum number of results per page (max 100, default 10) |
| `after` | string | No | Pagination cursor for next page of results (from previous response) |
| `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "email,firstname,lastname,phone") |
| `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "companies,deals") |
#### Output [#output-1]
| Parameter | Type | Description |
| -------------------- | ------- | ----------------------------------------------------------------------------------------------------- |
| `contacts` | array | Array of HubSpot contact records |
| ↳ `email` | string | Contact email address |
| ↳ `firstname` | string | Contact first name |
| ↳ `lastname` | string | Contact last name |
| ↳ `phone` | string | Contact phone number |
| ↳ `mobilephone` | string | Contact mobile phone number |
| ↳ `company` | string | Associated company name |
| ↳ `website` | string | Contact website URL |
| ↳ `jobtitle` | string | Contact job title |
| ↳ `lifecyclestage` | string | Lifecycle stage (subscriber, lead, marketingqualifiedlead, salesqualifiedlead, opportunity, customer) |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `createdate` | string | Contact creation date (ISO 8601) |
| ↳ `lastmodifieddate` | string | Last modified date (ISO 8601) |
| ↳ `address` | string | Street address |
| ↳ `city` | string | City |
| ↳ `state` | string | State/Region |
| ↳ `zip` | string | Postal/ZIP code |
| ↳ `country` | string | Country |
| ↳ `fax` | string | Fax number |
| ↳ `hs_timezone` | string | Contact timezone |
| `paging` | object | Pagination information for fetching more results |
| ↳ `after` | string | Cursor for next page of results |
| ↳ `link` | string | Link to next page |
| `metadata` | object | Response metadata |
| ↳ `totalReturned` | number | Number of records returned in this response |
| ↳ `hasMore` | boolean | Whether more records are available |
| `success` | boolean | Operation success status |
### Get Contact from HubSpot [#get-contact-from-hubspot]
Retrieve a single contact by ID or email from HubSpot
#### Input [#input-2]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------- |
| `contactId` | string | Yes | The HubSpot contact ID (numeric string) or email address to retrieve |
| `idProperty` | string | No | Property to use as unique identifier (e.g., "email"). If not specified, uses record ID |
| `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "email,firstname,lastname,phone") |
| `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "companies,deals") |
#### Output [#output-2]
| Parameter | Type | Description |
| -------------------- | ------- | ----------------------------------------------------------------------------------------------------- |
| `contact` | object | HubSpot contact record |
| ↳ `email` | string | Contact email address |
| ↳ `firstname` | string | Contact first name |
| ↳ `lastname` | string | Contact last name |
| ↳ `phone` | string | Contact phone number |
| ↳ `mobilephone` | string | Contact mobile phone number |
| ↳ `company` | string | Associated company name |
| ↳ `website` | string | Contact website URL |
| ↳ `jobtitle` | string | Contact job title |
| ↳ `lifecyclestage` | string | Lifecycle stage (subscriber, lead, marketingqualifiedlead, salesqualifiedlead, opportunity, customer) |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `createdate` | string | Contact creation date (ISO 8601) |
| ↳ `lastmodifieddate` | string | Last modified date (ISO 8601) |
| ↳ `address` | string | Street address |
| ↳ `city` | string | City |
| ↳ `state` | string | State/Region |
| ↳ `zip` | string | Postal/ZIP code |
| ↳ `country` | string | Country |
| ↳ `fax` | string | Fax number |
| ↳ `hs_timezone` | string | Contact timezone |
| `contactId` | string | The retrieved contact ID |
| `success` | boolean | Operation success status |
### Create Contact in HubSpot [#create-contact-in-hubspot]
Create a new contact in HubSpot. Requires at least one of: email, firstname, or lastname
#### Input [#input-3]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `properties` | object | Yes | Contact properties as JSON object. Must include at least one of: email, firstname, or lastname (e.g., \{"email": "[john@example.com](mailto:john@example.com)", "firstname": "John", "lastname": "Doe"}) |
| `associations` | array | No | Array of associations to create with the contact as JSON. Each object should have "to.id" (company/deal ID) and "types" array with "associationCategory" and "associationTypeId" |
#### Output [#output-3]
| Parameter | Type | Description |
| -------------------- | ------- | ----------------------------------------------------------------------------------------------------- |
| `contact` | object | HubSpot contact record |
| ↳ `email` | string | Contact email address |
| ↳ `firstname` | string | Contact first name |
| ↳ `lastname` | string | Contact last name |
| ↳ `phone` | string | Contact phone number |
| ↳ `mobilephone` | string | Contact mobile phone number |
| ↳ `company` | string | Associated company name |
| ↳ `website` | string | Contact website URL |
| ↳ `jobtitle` | string | Contact job title |
| ↳ `lifecyclestage` | string | Lifecycle stage (subscriber, lead, marketingqualifiedlead, salesqualifiedlead, opportunity, customer) |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `createdate` | string | Contact creation date (ISO 8601) |
| ↳ `lastmodifieddate` | string | Last modified date (ISO 8601) |
| ↳ `address` | string | Street address |
| ↳ `city` | string | City |
| ↳ `state` | string | State/Region |
| ↳ `zip` | string | Postal/ZIP code |
| ↳ `country` | string | Country |
| ↳ `fax` | string | Fax number |
| ↳ `hs_timezone` | string | Contact timezone |
| `contactId` | string | The created contact ID |
| `success` | boolean | Operation success status |
### Update Contact in HubSpot [#update-contact-in-hubspot]
Update an existing contact in HubSpot by ID or email
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------- |
| `contactId` | string | Yes | The HubSpot contact ID (numeric string) or email of the contact to update |
| `idProperty` | string | No | Property to use as unique identifier (e.g., "email"). If not specified, uses record ID |
| `properties` | object | Yes | Contact properties to update as JSON object (e.g., \{"firstname": "John", "phone": "+1234567890"}) |
#### Output [#output-4]
| Parameter | Type | Description |
| -------------------- | ------- | ----------------------------------------------------------------------------------------------------- |
| `contact` | object | HubSpot contact record |
| ↳ `email` | string | Contact email address |
| ↳ `firstname` | string | Contact first name |
| ↳ `lastname` | string | Contact last name |
| ↳ `phone` | string | Contact phone number |
| ↳ `mobilephone` | string | Contact mobile phone number |
| ↳ `company` | string | Associated company name |
| ↳ `website` | string | Contact website URL |
| ↳ `jobtitle` | string | Contact job title |
| ↳ `lifecyclestage` | string | Lifecycle stage (subscriber, lead, marketingqualifiedlead, salesqualifiedlead, opportunity, customer) |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `createdate` | string | Contact creation date (ISO 8601) |
| ↳ `lastmodifieddate` | string | Last modified date (ISO 8601) |
| ↳ `address` | string | Street address |
| ↳ `city` | string | City |
| ↳ `state` | string | State/Region |
| ↳ `zip` | string | Postal/ZIP code |
| ↳ `country` | string | Country |
| ↳ `fax` | string | Fax number |
| ↳ `hs_timezone` | string | Contact timezone |
| `contactId` | string | The updated contact ID |
| `success` | boolean | Operation success status |
### Search Contacts in HubSpot [#search-contacts-in-hubspot]
Search for contacts in HubSpot using filters, sorting, and queries
#### Input [#input-5]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `filterGroups` | array | No | Array of filter groups as JSON. Each group contains "filters" array with objects having "propertyName", "operator" (e.g., "EQ", "CONTAINS\_TOKEN", "GT"), and "value" |
| `sorts` | array | No | Array of sort objects as JSON with "propertyName" and "direction" ("ASCENDING" or "DESCENDING") |
| `query` | string | No | Search query string to match against contact name, email, and other text fields |
| `properties` | array | No | Array of HubSpot property names to return (e.g., \["email", "firstname", "lastname", "phone"]) |
| `limit` | number | No | Maximum number of results to return (max 200, default 10) |
| `after` | string | No | Pagination cursor for next page (from previous response) |
#### Output [#output-5]
| Parameter | Type | Description |
| -------------------- | ------- | ----------------------------------------------------------------------------------------------------- |
| `contacts` | array | Array of HubSpot contact records |
| ↳ `email` | string | Contact email address |
| ↳ `firstname` | string | Contact first name |
| ↳ `lastname` | string | Contact last name |
| ↳ `phone` | string | Contact phone number |
| ↳ `mobilephone` | string | Contact mobile phone number |
| ↳ `company` | string | Associated company name |
| ↳ `website` | string | Contact website URL |
| ↳ `jobtitle` | string | Contact job title |
| ↳ `lifecyclestage` | string | Lifecycle stage (subscriber, lead, marketingqualifiedlead, salesqualifiedlead, opportunity, customer) |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `createdate` | string | Contact creation date (ISO 8601) |
| ↳ `lastmodifieddate` | string | Last modified date (ISO 8601) |
| ↳ `address` | string | Street address |
| ↳ `city` | string | City |
| ↳ `state` | string | State/Region |
| ↳ `zip` | string | Postal/ZIP code |
| ↳ `country` | string | Country |
| ↳ `fax` | string | Fax number |
| ↳ `hs_timezone` | string | Contact timezone |
| `paging` | object | Pagination information for fetching more results |
| ↳ `after` | string | Cursor for next page of results |
| ↳ `link` | string | Link to next page |
| `metadata` | object | Response metadata |
| ↳ `totalReturned` | number | Number of records returned in this response |
| ↳ `hasMore` | boolean | Whether more records are available |
| `total` | number | Total number of matching contacts |
| `success` | boolean | Operation success status |
### List Companies from HubSpot [#list-companies-from-hubspot]
Retrieve all companies from HubSpot account with pagination support
#### Input [#input-6]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | -------------------------------------------------------------------------------------------- |
| `limit` | string | No | Maximum number of results per page (max 100, default 10) |
| `after` | string | No | Pagination cursor for next page of results (from previous response) |
| `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "name,domain,industry") |
| `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,deals") |
#### Output [#output-6]
| Parameter | Type | Description |
| --------------------------- | ------- | ------------------------------------------------ |
| `companies` | array | Array of HubSpot company records |
| ↳ `name` | string | Company name |
| ↳ `domain` | string | Company website domain (unique identifier) |
| ↳ `description` | string | Company description |
| ↳ `industry` | string | Industry type (e.g., Airlines/Aviation) |
| ↳ `phone` | string | Company phone number |
| ↳ `city` | string | City |
| ↳ `state` | string | State/Region |
| ↳ `zip` | string | Postal/ZIP code |
| ↳ `country` | string | Country |
| ↳ `address` | string | Street address |
| ↳ `numberofemployees` | string | Total number of employees |
| ↳ `annualrevenue` | string | Annual revenue estimate |
| ↳ `lifecyclestage` | string | Lifecycle stage |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `hs_createdate` | string | Company creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| ↳ `hs_additional_domains` | string | Additional domains (semicolon-separated) |
| ↳ `num_associated_contacts` | string | Number of associated contacts (auto-updated) |
| ↳ `num_associated_deals` | string | Number of associated deals (auto-updated) |
| ↳ `website` | string | Company website URL |
| `paging` | object | Pagination information for fetching more results |
| ↳ `after` | string | Cursor for next page of results |
| ↳ `link` | string | Link to next page |
| `metadata` | object | Response metadata |
| ↳ `totalReturned` | number | Number of records returned in this response |
| ↳ `hasMore` | boolean | Whether more records are available |
| `success` | boolean | Operation success status |
### Get Company from HubSpot [#get-company-from-hubspot]
Retrieve a single company by ID or domain from HubSpot
#### Input [#input-7]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | -------------------------------------------------------------------------------------------- |
| `companyId` | string | Yes | The HubSpot company ID (numeric string) or domain to retrieve |
| `idProperty` | string | No | Property to use as unique identifier (e.g., "domain"). If not specified, uses record ID |
| `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "name,domain,industry") |
| `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,deals") |
#### Output [#output-7]
| Parameter | Type | Description |
| --------------------------- | ------- | -------------------------------------------- |
| `company` | object | HubSpot company record |
| ↳ `name` | string | Company name |
| ↳ `domain` | string | Company website domain (unique identifier) |
| ↳ `description` | string | Company description |
| ↳ `industry` | string | Industry type (e.g., Airlines/Aviation) |
| ↳ `phone` | string | Company phone number |
| ↳ `city` | string | City |
| ↳ `state` | string | State/Region |
| ↳ `zip` | string | Postal/ZIP code |
| ↳ `country` | string | Country |
| ↳ `address` | string | Street address |
| ↳ `numberofemployees` | string | Total number of employees |
| ↳ `annualrevenue` | string | Annual revenue estimate |
| ↳ `lifecyclestage` | string | Lifecycle stage |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `hs_createdate` | string | Company creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| ↳ `hs_additional_domains` | string | Additional domains (semicolon-separated) |
| ↳ `num_associated_contacts` | string | Number of associated contacts (auto-updated) |
| ↳ `num_associated_deals` | string | Number of associated deals (auto-updated) |
| ↳ `website` | string | Company website URL |
| `companyId` | string | The retrieved company ID |
| `success` | boolean | Operation success status |
### Create Company in HubSpot [#create-company-in-hubspot]
Create a new company in HubSpot
#### Input [#input-8]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `properties` | object | Yes | Company properties as JSON object (e.g., \{"name": "Acme Inc", "domain": "acme.com", "industry": "Technology"}) |
| `associations` | array | No | Array of associations to create with the company as JSON (each with "to.id" and "types" containing "associationCategory" and "associationTypeId") |
#### Output [#output-8]
| Parameter | Type | Description |
| --------------------------- | ------- | -------------------------------------------- |
| `company` | object | HubSpot company record |
| ↳ `name` | string | Company name |
| ↳ `domain` | string | Company website domain (unique identifier) |
| ↳ `description` | string | Company description |
| ↳ `industry` | string | Industry type (e.g., Airlines/Aviation) |
| ↳ `phone` | string | Company phone number |
| ↳ `city` | string | City |
| ↳ `state` | string | State/Region |
| ↳ `zip` | string | Postal/ZIP code |
| ↳ `country` | string | Country |
| ↳ `address` | string | Street address |
| ↳ `numberofemployees` | string | Total number of employees |
| ↳ `annualrevenue` | string | Annual revenue estimate |
| ↳ `lifecyclestage` | string | Lifecycle stage |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `hs_createdate` | string | Company creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| ↳ `hs_additional_domains` | string | Additional domains (semicolon-separated) |
| ↳ `num_associated_contacts` | string | Number of associated contacts (auto-updated) |
| ↳ `num_associated_deals` | string | Number of associated deals (auto-updated) |
| ↳ `website` | string | Company website URL |
| `companyId` | string | The created company ID |
| `success` | boolean | Operation success status |
### Update Company in HubSpot [#update-company-in-hubspot]
Update an existing company in HubSpot by ID or domain
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------ |
| `companyId` | string | Yes | The HubSpot company ID (numeric string) or domain of the company to update |
| `idProperty` | string | No | Property to use as unique identifier (e.g., "domain"). If not specified, uses record ID |
| `properties` | object | Yes | Company properties to update as JSON object (e.g., \{"name": "New Name", "industry": "Finance"}) |
#### Output [#output-9]
| Parameter | Type | Description |
| --------------------------- | ------- | -------------------------------------------- |
| `company` | object | HubSpot company record |
| ↳ `name` | string | Company name |
| ↳ `domain` | string | Company website domain (unique identifier) |
| ↳ `description` | string | Company description |
| ↳ `industry` | string | Industry type (e.g., Airlines/Aviation) |
| ↳ `phone` | string | Company phone number |
| ↳ `city` | string | City |
| ↳ `state` | string | State/Region |
| ↳ `zip` | string | Postal/ZIP code |
| ↳ `country` | string | Country |
| ↳ `address` | string | Street address |
| ↳ `numberofemployees` | string | Total number of employees |
| ↳ `annualrevenue` | string | Annual revenue estimate |
| ↳ `lifecyclestage` | string | Lifecycle stage |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `hs_createdate` | string | Company creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| ↳ `hs_additional_domains` | string | Additional domains (semicolon-separated) |
| ↳ `num_associated_contacts` | string | Number of associated contacts (auto-updated) |
| ↳ `num_associated_deals` | string | Number of associated deals (auto-updated) |
| ↳ `website` | string | Company website URL |
| `companyId` | string | The updated company ID |
| `success` | boolean | Operation success status |
### Search Companies in HubSpot [#search-companies-in-hubspot]
Search for companies in HubSpot using filters, sorting, and queries
#### Input [#input-10]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `filterGroups` | array | No | Array of filter groups as JSON. Each group contains "filters" array with objects having "propertyName", "operator" (e.g., "EQ", "CONTAINS\_TOKEN", "GT"), and "value" |
| `sorts` | array | No | Array of sort objects as JSON with "propertyName" and "direction" ("ASCENDING" or "DESCENDING") |
| `query` | string | No | Search query string to match against company name, domain, and other text fields |
| `properties` | array | No | Array of HubSpot property names to return (e.g., \["name", "domain", "industry"]) |
| `limit` | number | No | Maximum number of results to return (max 200, default 10) |
| `after` | string | No | Pagination cursor for next page (from previous response) |
#### Output [#output-10]
| Parameter | Type | Description |
| --------------------------- | ------- | ------------------------------------------------ |
| `companies` | array | Array of HubSpot company records |
| ↳ `name` | string | Company name |
| ↳ `domain` | string | Company website domain (unique identifier) |
| ↳ `description` | string | Company description |
| ↳ `industry` | string | Industry type (e.g., Airlines/Aviation) |
| ↳ `phone` | string | Company phone number |
| ↳ `city` | string | City |
| ↳ `state` | string | State/Region |
| ↳ `zip` | string | Postal/ZIP code |
| ↳ `country` | string | Country |
| ↳ `address` | string | Street address |
| ↳ `numberofemployees` | string | Total number of employees |
| ↳ `annualrevenue` | string | Annual revenue estimate |
| ↳ `lifecyclestage` | string | Lifecycle stage |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `hs_createdate` | string | Company creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| ↳ `hs_additional_domains` | string | Additional domains (semicolon-separated) |
| ↳ `num_associated_contacts` | string | Number of associated contacts (auto-updated) |
| ↳ `num_associated_deals` | string | Number of associated deals (auto-updated) |
| ↳ `website` | string | Company website URL |
| `paging` | object | Pagination information for fetching more results |
| ↳ `after` | string | Cursor for next page of results |
| ↳ `link` | string | Link to next page |
| `metadata` | object | Response metadata |
| ↳ `totalReturned` | number | Number of records returned in this response |
| ↳ `hasMore` | boolean | Whether more records are available |
| `total` | number | Total number of matching companies |
| `success` | boolean | Operation success status |
### List Deals from HubSpot [#list-deals-from-hubspot]
Retrieve all deals from HubSpot account with pagination support
#### Input [#input-11]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------ |
| `limit` | string | No | Maximum number of results per page (max 100, default 10) |
| `after` | string | No | Pagination cursor for next page of results (from previous response) |
| `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "dealname,amount,dealstage") |
| `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies") |
#### Output [#output-11]
| Parameter | Type | Description |
| --------------------------- | ------- | ------------------------------------------------- |
| `deals` | array | Array of HubSpot deal records |
| ↳ `dealname` | string | Deal name |
| ↳ `amount` | string | Deal amount |
| ↳ `dealstage` | string | Current deal stage |
| ↳ `pipeline` | string | Pipeline the deal is in |
| ↳ `closedate` | string | Expected close date (ISO 8601) |
| ↳ `dealtype` | string | Deal type (New Business, Existing Business, etc.) |
| ↳ `description` | string | Deal description |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `createdate` | string | Deal creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| ↳ `num_associated_contacts` | string | Number of associated contacts |
| `paging` | object | Pagination information for fetching more results |
| ↳ `after` | string | Cursor for next page of results |
| ↳ `link` | string | Link to next page |
| `metadata` | object | Response metadata |
| ↳ `totalReturned` | number | Number of records returned in this response |
| ↳ `hasMore` | boolean | Whether more records are available |
| `success` | boolean | Operation success status |
### Get Deal from HubSpot [#get-deal-from-hubspot]
Retrieve a single deal by ID from HubSpot
#### Input [#input-12]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------ |
| `dealId` | string | Yes | The HubSpot deal ID to retrieve |
| `idProperty` | string | No | Property to use as unique identifier. If not specified, uses record ID |
| `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "dealname,amount,dealstage") |
| `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies") |
#### Output [#output-12]
| Parameter | Type | Description |
| --------------------------- | ------- | ------------------------------------------------- |
| `deal` | object | HubSpot deal record |
| ↳ `dealname` | string | Deal name |
| ↳ `amount` | string | Deal amount |
| ↳ `dealstage` | string | Current deal stage |
| ↳ `pipeline` | string | Pipeline the deal is in |
| ↳ `closedate` | string | Expected close date (ISO 8601) |
| ↳ `dealtype` | string | Deal type (New Business, Existing Business, etc.) |
| ↳ `description` | string | Deal description |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `createdate` | string | Deal creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| ↳ `num_associated_contacts` | string | Number of associated contacts |
| `dealId` | string | The retrieved deal ID |
| `success` | boolean | Operation success status |
### Create Deal in HubSpot [#create-deal-in-hubspot]
Create a new deal in HubSpot with the given properties (e.g., dealname, amount, dealstage)
#### Input [#input-13]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `properties` | object | Yes | Deal properties as JSON object. Should include dealname and dealstage, plus pipeline when the account has multiple pipelines (e.g., \{"dealname": "New Deal", "amount": "5000", "dealstage": "appointmentscheduled"}) |
| `associations` | array | No | Array of associations to create with the deal as JSON. Each object should have "to.id" and "types" array with "associationCategory" and "associationTypeId" |
#### Output [#output-13]
| Parameter | Type | Description |
| --------------------------- | ------- | ------------------------------------------------- |
| `deal` | object | HubSpot deal record |
| ↳ `dealname` | string | Deal name |
| ↳ `amount` | string | Deal amount |
| ↳ `dealstage` | string | Current deal stage |
| ↳ `pipeline` | string | Pipeline the deal is in |
| ↳ `closedate` | string | Expected close date (ISO 8601) |
| ↳ `dealtype` | string | Deal type (New Business, Existing Business, etc.) |
| ↳ `description` | string | Deal description |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `createdate` | string | Deal creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| ↳ `num_associated_contacts` | string | Number of associated contacts |
| `dealId` | string | The created deal ID |
| `success` | boolean | Operation success status |
### Update Deal in HubSpot [#update-deal-in-hubspot]
Update an existing deal in HubSpot by ID
#### Input [#input-14]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ----------------------------------------------------------------------------------------------- |
| `dealId` | string | Yes | The HubSpot deal ID to update |
| `idProperty` | string | No | Property to use as unique identifier. If not specified, uses record ID |
| `properties` | object | Yes | Deal properties to update as JSON object (e.g., \{"amount": "10000", "dealstage": "closedwon"}) |
#### Output [#output-14]
| Parameter | Type | Description |
| --------------------------- | ------- | ------------------------------------------------- |
| `deal` | object | HubSpot deal record |
| ↳ `dealname` | string | Deal name |
| ↳ `amount` | string | Deal amount |
| ↳ `dealstage` | string | Current deal stage |
| ↳ `pipeline` | string | Pipeline the deal is in |
| ↳ `closedate` | string | Expected close date (ISO 8601) |
| ↳ `dealtype` | string | Deal type (New Business, Existing Business, etc.) |
| ↳ `description` | string | Deal description |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `createdate` | string | Deal creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| ↳ `num_associated_contacts` | string | Number of associated contacts |
| `dealId` | string | The updated deal ID |
| `success` | boolean | Operation success status |
### Search Deals in HubSpot [#search-deals-in-hubspot]
Search for deals in HubSpot using filters, sorting, and queries
#### Input [#input-15]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `filterGroups` | array | No | Array of filter groups as JSON. Each group contains "filters" array with objects having "propertyName", "operator" (e.g., "EQ", "NEQ", "CONTAINS\_TOKEN", "NOT\_CONTAINS\_TOKEN"), and "value" |
| `sorts` | array | No | Array of sort objects as JSON with "propertyName" and "direction" ("ASCENDING" or "DESCENDING") |
| `query` | string | No | Search query string to match against deal name and other text fields |
| `properties` | array | No | Array of HubSpot property names to return (e.g., \["dealname", "amount", "dealstage"]) |
| `limit` | number | No | Maximum number of results to return (max 200, default 10) |
| `after` | string | No | Pagination cursor for next page (from previous response) |
#### Output [#output-15]
| Parameter | Type | Description |
| --------------------------- | ------- | ------------------------------------------------- |
| `deals` | array | Array of HubSpot deal records |
| ↳ `dealname` | string | Deal name |
| ↳ `amount` | string | Deal amount |
| ↳ `dealstage` | string | Current deal stage |
| ↳ `pipeline` | string | Pipeline the deal is in |
| ↳ `closedate` | string | Expected close date (ISO 8601) |
| ↳ `dealtype` | string | Deal type (New Business, Existing Business, etc.) |
| ↳ `description` | string | Deal description |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `createdate` | string | Deal creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| ↳ `num_associated_contacts` | string | Number of associated contacts |
| `paging` | object | Pagination information for fetching more results |
| ↳ `after` | string | Cursor for next page of results |
| ↳ `link` | string | Link to next page |
| `metadata` | object | Response metadata |
| ↳ `totalReturned` | number | Number of records returned in this response |
| ↳ `hasMore` | boolean | Whether more records are available |
| `total` | number | Total number of matching deals |
| `success` | boolean | Operation success status |
### List Tickets from HubSpot [#list-tickets-from-hubspot]
Retrieve all tickets from HubSpot account with pagination support
#### Input [#input-16]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------- |
| `limit` | string | No | Maximum number of results per page (max 100, default 10) |
| `after` | string | No | Pagination cursor for next page of results (from previous response) |
| `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "subject,content,hs\_ticket\_priority") |
| `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies") |
#### Output [#output-16]
| Parameter | Type | Description |
| ----------------------- | ------- | ------------------------------------------------ |
| `tickets` | array | Array of HubSpot ticket records |
| ↳ `subject` | string | Ticket subject/name |
| ↳ `content` | string | Ticket content/description |
| ↳ `hs_pipeline` | string | Pipeline the ticket is in |
| ↳ `hs_pipeline_stage` | string | Current pipeline stage |
| ↳ `hs_ticket_priority` | string | Ticket priority (LOW, MEDIUM, HIGH) |
| ↳ `hs_ticket_category` | string | Ticket category |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `createdate` | string | Ticket creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `paging` | object | Pagination information for fetching more results |
| ↳ `after` | string | Cursor for next page of results |
| ↳ `link` | string | Link to next page |
| `metadata` | object | Response metadata |
| ↳ `totalReturned` | number | Number of records returned in this response |
| ↳ `hasMore` | boolean | Whether more records are available |
| `success` | boolean | Operation success status |
### Get Ticket from HubSpot [#get-ticket-from-hubspot]
Retrieve a single ticket by ID from HubSpot
#### Input [#input-17]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------- |
| `ticketId` | string | Yes | The HubSpot ticket ID to retrieve |
| `idProperty` | string | No | Property to use as unique identifier. If not specified, uses record ID |
| `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "subject,content,hs\_ticket\_priority") |
| `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies") |
#### Output [#output-17]
| Parameter | Type | Description |
| ----------------------- | ------- | ------------------------------------- |
| `ticket` | object | HubSpot ticket record |
| ↳ `subject` | string | Ticket subject/name |
| ↳ `content` | string | Ticket content/description |
| ↳ `hs_pipeline` | string | Pipeline the ticket is in |
| ↳ `hs_pipeline_stage` | string | Current pipeline stage |
| ↳ `hs_ticket_priority` | string | Ticket priority (LOW, MEDIUM, HIGH) |
| ↳ `hs_ticket_category` | string | Ticket category |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `createdate` | string | Ticket creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `ticketId` | string | The retrieved ticket ID |
| `success` | boolean | Operation success status |
### Create Ticket in HubSpot [#create-ticket-in-hubspot]
Create a new ticket in HubSpot. Requires subject and hs\_pipeline\_stage properties
#### Input [#input-18]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `properties` | object | Yes | Ticket properties as JSON object. Must include subject and hs\_pipeline\_stage (e.g., \{"subject": "Support request", "hs\_pipeline\_stage": "1", "hs\_ticket\_priority": "HIGH"}) |
| `associations` | array | No | Array of associations to create with the ticket as JSON. Each object should have "to.id" and "types" array with "associationCategory" and "associationTypeId" |
#### Output [#output-18]
| Parameter | Type | Description |
| ----------------------- | ------- | ------------------------------------- |
| `ticket` | object | HubSpot ticket record |
| ↳ `subject` | string | Ticket subject/name |
| ↳ `content` | string | Ticket content/description |
| ↳ `hs_pipeline` | string | Pipeline the ticket is in |
| ↳ `hs_pipeline_stage` | string | Current pipeline stage |
| ↳ `hs_ticket_priority` | string | Ticket priority (LOW, MEDIUM, HIGH) |
| ↳ `hs_ticket_category` | string | Ticket category |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `createdate` | string | Ticket creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `ticketId` | string | The created ticket ID |
| `success` | boolean | Operation success status |
### Update Ticket in HubSpot [#update-ticket-in-hubspot]
Update an existing ticket in HubSpot by ID
#### Input [#input-19]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ |
| `ticketId` | string | Yes | The HubSpot ticket ID to update |
| `idProperty` | string | No | Property to use as unique identifier. If not specified, uses record ID |
| `properties` | object | Yes | Ticket properties to update as JSON object (e.g., \{"subject": "Updated subject", "hs\_ticket\_priority": "HIGH"}) |
#### Output [#output-19]
| Parameter | Type | Description |
| ----------------------- | ------- | ------------------------------------- |
| `ticket` | object | HubSpot ticket record |
| ↳ `subject` | string | Ticket subject/name |
| ↳ `content` | string | Ticket content/description |
| ↳ `hs_pipeline` | string | Pipeline the ticket is in |
| ↳ `hs_pipeline_stage` | string | Current pipeline stage |
| ↳ `hs_ticket_priority` | string | Ticket priority (LOW, MEDIUM, HIGH) |
| ↳ `hs_ticket_category` | string | Ticket category |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `createdate` | string | Ticket creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `ticketId` | string | The updated ticket ID |
| `success` | boolean | Operation success status |
### Search Tickets in HubSpot [#search-tickets-in-hubspot]
Search for tickets in HubSpot using filters, sorting, and queries
#### Input [#input-20]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `filterGroups` | array | No | Array of filter groups as JSON. Each group contains "filters" array with objects having "propertyName", "operator" (e.g., "EQ", "NEQ", "CONTAINS\_TOKEN", "NOT\_CONTAINS\_TOKEN"), and "value" |
| `sorts` | array | No | Array of sort objects as JSON with "propertyName" and "direction" ("ASCENDING" or "DESCENDING") |
| `query` | string | No | Search query string to match against ticket subject and other text fields |
| `properties` | array | No | Array of HubSpot property names to return (e.g., \["subject", "content", "hs\_ticket\_priority"]) |
| `limit` | number | No | Maximum number of results to return (max 200, default 10) |
| `after` | string | No | Pagination cursor for next page (from previous response) |
#### Output [#output-20]
| Parameter | Type | Description |
| ----------------------- | ------- | ------------------------------------------------ |
| `tickets` | array | Array of HubSpot ticket records |
| ↳ `subject` | string | Ticket subject/name |
| ↳ `content` | string | Ticket content/description |
| ↳ `hs_pipeline` | string | Pipeline the ticket is in |
| ↳ `hs_pipeline_stage` | string | Current pipeline stage |
| ↳ `hs_ticket_priority` | string | Ticket priority (LOW, MEDIUM, HIGH) |
| ↳ `hs_ticket_category` | string | Ticket category |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `createdate` | string | Ticket creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `paging` | object | Pagination information for fetching more results |
| ↳ `after` | string | Cursor for next page of results |
| ↳ `link` | string | Link to next page |
| `metadata` | object | Response metadata |
| ↳ `totalReturned` | number | Number of records returned in this response |
| ↳ `hasMore` | boolean | Whether more records are available |
| `total` | number | Total number of matching tickets |
| `success` | boolean | Operation success status |
### List Notes from HubSpot [#list-notes-from-hubspot]
Retrieve all notes from HubSpot account with pagination support
#### Input [#input-21]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ |
| `limit` | string | No | Maximum number of results per page (max 100, default 10) |
| `after` | string | No | Pagination cursor for next page of results (from previous response) |
| `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "hs\_note\_body,hs\_timestamp,hubspot\_owner\_id") |
| `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies,deals") |
#### Output [#output-21]
| Parameter | Type | Description |
| ----------------------- | ------- | ----------------------------------------------------- |
| `notes` | array | Array of HubSpot note records |
| ↳ `hs_note_body` | string | Note text/body (supports rich text/HTML) |
| ↳ `hs_timestamp` | string | Note activity time (ISO 8601) |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_attachment_ids` | string | Semicolon-separated IDs of files attached to the note |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `hs_createdate` | string | Note creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `paging` | object | Pagination information for fetching more results |
| ↳ `after` | string | Cursor for next page of results |
| ↳ `link` | string | Link to next page |
| `metadata` | object | Response metadata |
| ↳ `totalReturned` | number | Number of records returned in this response |
| ↳ `hasMore` | boolean | Whether more records are available |
| `success` | boolean | Operation success status |
### Get Note from HubSpot [#get-note-from-hubspot]
Retrieve a single note by ID from HubSpot
#### Input [#input-22]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ |
| `noteId` | string | Yes | The HubSpot note ID to retrieve |
| `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "hs\_note\_body,hs\_timestamp,hubspot\_owner\_id") |
| `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies,deals") |
#### Output [#output-22]
| Parameter | Type | Description |
| ----------------------- | ------- | ----------------------------------------------------- |
| `note` | object | HubSpot note record |
| ↳ `hs_note_body` | string | Note text/body (supports rich text/HTML) |
| ↳ `hs_timestamp` | string | Note activity time (ISO 8601) |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_attachment_ids` | string | Semicolon-separated IDs of files attached to the note |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `hs_createdate` | string | Note creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `noteId` | string | The retrieved note ID |
| `success` | boolean | Operation success status |
### Create Note in HubSpot [#create-note-in-hubspot]
Log a note in HubSpot and optionally associate it with contacts, companies, or deals. Requires hs\_timestamp and hs\_note\_body properties
#### Input [#input-23]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `properties` | object | Yes | Note properties as JSON object. Must include "hs\_timestamp" (ISO 8601 activity time) and "hs\_note\_body" (the note text). e.g., \{"hs\_timestamp": "2026-06-13T00:00:00Z", "hs\_note\_body": "Followed up via phone"} |
| `associations` | array | No | Array of associations as JSON. Each object has "to.id" (record ID) and "types" array with "associationCategory" ("HUBSPOT\_DEFINED") and "associationTypeId" (202 = note→contact, 190 = note→company, 214 = note→deal) |
#### Output [#output-23]
| Parameter | Type | Description |
| ----------------------- | ------- | ----------------------------------------------------- |
| `note` | object | HubSpot note record |
| ↳ `hs_note_body` | string | Note text/body (supports rich text/HTML) |
| ↳ `hs_timestamp` | string | Note activity time (ISO 8601) |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_attachment_ids` | string | Semicolon-separated IDs of files attached to the note |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `hs_createdate` | string | Note creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `noteId` | string | The created note ID |
| `success` | boolean | Operation success status |
### Search Notes in HubSpot [#search-notes-in-hubspot]
Search for notes in HubSpot using filters, sorting, and queries
#### Input [#input-24]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `filterGroups` | array | No | Array of filter groups as JSON. Each group contains "filters" array with objects having "propertyName", "operator" (e.g., "EQ", "CONTAINS\_TOKEN", "GT"), and "value" |
| `sorts` | array | No | Array of sort objects as JSON with "propertyName" and "direction" ("ASCENDING" or "DESCENDING") |
| `query` | string | No | Search query string to match against note text fields |
| `properties` | array | No | Array of HubSpot property names to return (e.g., \["hs\_note\_body", "hs\_timestamp", "hubspot\_owner\_id"]) |
| `limit` | number | No | Maximum number of results to return (max 200, default 10) |
| `after` | string | No | Pagination cursor for next page (from previous response) |
#### Output [#output-24]
| Parameter | Type | Description |
| ----------------------- | ------- | ----------------------------------------------------- |
| `notes` | array | Array of HubSpot note records |
| ↳ `hs_note_body` | string | Note text/body (supports rich text/HTML) |
| ↳ `hs_timestamp` | string | Note activity time (ISO 8601) |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_attachment_ids` | string | Semicolon-separated IDs of files attached to the note |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `hs_createdate` | string | Note creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `paging` | object | Pagination information for fetching more results |
| ↳ `after` | string | Cursor for next page of results |
| ↳ `link` | string | Link to next page |
| `metadata` | object | Response metadata |
| ↳ `totalReturned` | number | Number of records returned in this response |
| ↳ `hasMore` | boolean | Whether more records are available |
| `total` | number | Total number of matching notes |
| `success` | boolean | Operation success status |
### List Emails from HubSpot [#list-emails-from-hubspot]
Retrieve all email engagements from HubSpot account with pagination support
#### Input [#input-25]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- |
| `limit` | string | No | Maximum number of results per page (max 100, default 10) |
| `after` | string | No | Pagination cursor for next page of results (from previous response) |
| `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "hs\_email\_subject,hs\_email\_text,hs\_timestamp") |
| `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies,deals") |
#### Output [#output-25]
| Parameter | Type | Description |
| ----------------------- | ------- | --------------------------------------------------------------- |
| `emails` | array | Array of HubSpot email engagement records |
| ↳ `hs_timestamp` | string | Email activity time (ISO 8601) |
| ↳ `hs_email_direction` | string | Direction (EMAIL = outgoing, INCOMING\_EMAIL, FORWARDED\_EMAIL) |
| ↳ `hs_email_status` | string | Send status (SENT, SENDING, SCHEDULED, FAILED, BOUNCED) |
| ↳ `hs_email_subject` | string | Email subject line |
| ↳ `hs_email_text` | string | Plain-text email body |
| ↳ `hs_email_html` | string | HTML email body |
| ↳ `hs_email_headers` | string | JSON-encoded from/to/cc/bcc headers |
| ↳ `hs_email_from_email` | string | Sender email address |
| ↳ `hs_email_to_email` | string | Recipient email address(es) |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `hs_createdate` | string | Email creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `paging` | object | Pagination information for fetching more results |
| ↳ `after` | string | Cursor for next page of results |
| ↳ `link` | string | Link to next page |
| `metadata` | object | Response metadata |
| ↳ `totalReturned` | number | Number of records returned in this response |
| ↳ `hasMore` | boolean | Whether more records are available |
| `success` | boolean | Operation success status |
### Get Email from HubSpot [#get-email-from-hubspot]
Retrieve a single email engagement by ID from HubSpot (content requires the sales-email-read scope)
#### Input [#input-26]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- |
| `emailId` | string | Yes | The HubSpot email engagement ID to retrieve |
| `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "hs\_email\_subject,hs\_email\_text,hs\_timestamp") |
| `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies,deals") |
#### Output [#output-26]
| Parameter | Type | Description |
| ----------------------- | ------- | --------------------------------------------------------------- |
| `email` | object | HubSpot email engagement record |
| ↳ `hs_timestamp` | string | Email activity time (ISO 8601) |
| ↳ `hs_email_direction` | string | Direction (EMAIL = outgoing, INCOMING\_EMAIL, FORWARDED\_EMAIL) |
| ↳ `hs_email_status` | string | Send status (SENT, SENDING, SCHEDULED, FAILED, BOUNCED) |
| ↳ `hs_email_subject` | string | Email subject line |
| ↳ `hs_email_text` | string | Plain-text email body |
| ↳ `hs_email_html` | string | HTML email body |
| ↳ `hs_email_headers` | string | JSON-encoded from/to/cc/bcc headers |
| ↳ `hs_email_from_email` | string | Sender email address |
| ↳ `hs_email_to_email` | string | Recipient email address(es) |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `hs_createdate` | string | Email creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `emailId` | string | The retrieved email engagement ID |
| `success` | boolean | Operation success status |
### Create Email in HubSpot [#create-email-in-hubspot]
Log an email engagement in HubSpot and optionally associate it with contacts. Requires the hs\_timestamp property
#### Input [#input-27]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `properties` | object | Yes | Email properties as JSON object. Must include "hs\_timestamp" (ISO 8601). Common fields: "hs\_email\_direction" (EMAIL, INCOMING\_EMAIL, FORWARDED\_EMAIL), "hs\_email\_status" (SENT, SENDING, SCHEDULED, FAILED, BOUNCED), "hs\_email\_subject", "hs\_email\_text", "hs\_email\_html", "hs\_email\_headers" (JSON string) |
| `associations` | array | No | Array of associations as JSON. Each object has "to.id" (record ID) and "types" array with "associationCategory" ("HUBSPOT\_DEFINED") and "associationTypeId" (198 = email→contact) |
#### Output [#output-27]
| Parameter | Type | Description |
| ----------------------- | ------- | --------------------------------------------------------------- |
| `email` | object | HubSpot email engagement record |
| ↳ `hs_timestamp` | string | Email activity time (ISO 8601) |
| ↳ `hs_email_direction` | string | Direction (EMAIL = outgoing, INCOMING\_EMAIL, FORWARDED\_EMAIL) |
| ↳ `hs_email_status` | string | Send status (SENT, SENDING, SCHEDULED, FAILED, BOUNCED) |
| ↳ `hs_email_subject` | string | Email subject line |
| ↳ `hs_email_text` | string | Plain-text email body |
| ↳ `hs_email_html` | string | HTML email body |
| ↳ `hs_email_headers` | string | JSON-encoded from/to/cc/bcc headers |
| ↳ `hs_email_from_email` | string | Sender email address |
| ↳ `hs_email_to_email` | string | Recipient email address(es) |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `hs_createdate` | string | Email creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `emailId` | string | The created email engagement ID |
| `success` | boolean | Operation success status |
### Search Emails in HubSpot [#search-emails-in-hubspot]
Search for email engagements in HubSpot using filters, sorting, and queries
#### Input [#input-28]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `filterGroups` | array | No | Array of filter groups as JSON. Each group contains "filters" array with objects having "propertyName", "operator" (e.g., "EQ", "CONTAINS\_TOKEN", "GT"), and "value" |
| `sorts` | array | No | Array of sort objects as JSON with "propertyName" and "direction" ("ASCENDING" or "DESCENDING") |
| `query` | string | No | Search query string to match against email text fields |
| `properties` | array | No | Array of HubSpot property names to return (e.g., \["hs\_email\_subject", "hs\_email\_text", "hs\_timestamp"]) |
| `limit` | number | No | Maximum number of results to return (max 200, default 10) |
| `after` | string | No | Pagination cursor for next page (from previous response) |
#### Output [#output-28]
| Parameter | Type | Description |
| ----------------------- | ------- | --------------------------------------------------------------- |
| `emails` | array | Array of HubSpot email engagement records |
| ↳ `hs_timestamp` | string | Email activity time (ISO 8601) |
| ↳ `hs_email_direction` | string | Direction (EMAIL = outgoing, INCOMING\_EMAIL, FORWARDED\_EMAIL) |
| ↳ `hs_email_status` | string | Send status (SENT, SENDING, SCHEDULED, FAILED, BOUNCED) |
| ↳ `hs_email_subject` | string | Email subject line |
| ↳ `hs_email_text` | string | Plain-text email body |
| ↳ `hs_email_html` | string | HTML email body |
| ↳ `hs_email_headers` | string | JSON-encoded from/to/cc/bcc headers |
| ↳ `hs_email_from_email` | string | Sender email address |
| ↳ `hs_email_to_email` | string | Recipient email address(es) |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `hs_createdate` | string | Email creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `paging` | object | Pagination information for fetching more results |
| ↳ `after` | string | Cursor for next page of results |
| ↳ `link` | string | Link to next page |
| `metadata` | object | Response metadata |
| ↳ `totalReturned` | number | Number of records returned in this response |
| ↳ `hasMore` | boolean | Whether more records are available |
| `total` | number | Total number of matching emails |
| `success` | boolean | Operation success status |
### Get Properties from HubSpot [#get-properties-from-hubspot]
Read property definitions and their enumeration (picklist) options for a HubSpot object type, e.g. the values for lifecyclestage or hs\_lead\_status on contacts
#### Input [#input-29]
| Parameter | Type | Required | Description |
| -------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `objectType` | string | Yes | Object type to read properties for (e.g., "contacts", "companies", "deals", "tickets", "line\_items", "quotes") |
| `propertyName` | string | No | Internal name of a single property to retrieve (e.g., "hs\_lead\_status"). Omit to return all properties for the object type |
| `archived` | boolean | No | Whether to return only archived properties (default false) |
#### Output [#output-29]
| Parameter | Type | Description |
| ----------------- | ------- | ---------------------------------------------- |
| `properties` | array | Array of HubSpot property definitions |
| ↳ `label` | string | Human-readable option label |
| ↳ `value` | string | Internal value used when setting the property |
| ↳ `displayOrder` | number | Display order (-1 sorts last) |
| ↳ `hidden` | boolean | Whether the option is hidden in the HubSpot UI |
| ↳ `description` | string | Option description |
| `metadata` | object | Response metadata |
| ↳ `totalReturned` | number | Number of property definitions returned |
| ↳ `objectType` | string | Object type the properties belong to |
| `success` | boolean | Operation success status |
### List Associations in HubSpot [#list-associations-in-hubspot]
List records of one object type associated with a given record, e.g. all emails or notes logged on a contact
#### Input [#input-30]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ----------------------------------------------------------------------------- |
| `objectType` | string | Yes | Source object type (e.g., "contacts", "companies", "deals") |
| `objectId` | string | Yes | ID of the source record |
| `toObjectType` | string | Yes | Target object type to list associations to (e.g., "emails", "notes", "deals") |
| `limit` | string | No | Maximum number of associated records per page (default 500) |
| `after` | string | No | Pagination cursor for next page (from previous response) |
#### Output [#output-30]
| Parameter | Type | Description |
| -------------------- | ------- | --------------------------------------------------------------------------- |
| `results` | array | Array of associated records |
| ↳ `toObjectId` | string | ID of the associated (target) record |
| ↳ `associationTypes` | array | Association types linking the two records |
| ↳ `category` | string | Association category (HUBSPOT\_DEFINED, USER\_DEFINED, INTEGRATOR\_DEFINED) |
| ↳ `typeId` | number | Association type ID |
| ↳ `label` | string | Association label |
| `paging` | object | Pagination information for fetching more results |
| ↳ `after` | string | Cursor for next page of results |
| ↳ `link` | string | Link to next page |
| `metadata` | object | Response metadata |
| ↳ `totalReturned` | number | Number of records returned in this response |
| ↳ `hasMore` | boolean | Whether more records are available |
| `success` | boolean | Operation success status |
### Create Association in HubSpot [#create-association-in-hubspot]
Associate two HubSpot records. Creates the default (unlabeled) association unless an association type ID is provided
#### Input [#input-31]
| Parameter | Type | Required | Description |
| --------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectType` | string | Yes | Source object type (e.g., "emails", "notes", "contacts") |
| `objectId` | string | Yes | ID of the source record |
| `toObjectType` | string | Yes | Target object type to associate to (e.g., "contacts", "companies", "deals") |
| `toObjectId` | string | Yes | ID of the target record |
| `associationCategory` | string | No | Association category for a labeled association (HUBSPOT\_DEFINED, USER\_DEFINED, INTEGRATOR\_DEFINED). Defaults to HUBSPOT\_DEFINED when an association type ID is provided |
| `associationTypeId` | number | No | Specific association type ID for a labeled association. Omit to create the default association for the object pair |
#### Output [#output-31]
| Parameter | Type | Description |
| -------------- | ------- | --------------------------------------------------- |
| `fromObjectId` | string | ID of the source record |
| `toObjectId` | string | ID of the associated target record |
| `labels` | array | Association labels (empty for default associations) |
| `success` | boolean | Operation success status |
### Delete Association in HubSpot [#delete-association-in-hubspot]
Remove all associations between two HubSpot records
#### Input [#input-32]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------- |
| `objectType` | string | Yes | The source object type (e.g., "contacts", "companies", "deals") |
| `objectId` | string | Yes | The ID of the source record |
| `toObjectType` | string | Yes | The target object type (e.g., "emails", "notes", "contacts") |
| `toObjectId` | string | Yes | The ID of the target record |
#### Output [#output-32]
| Parameter | Type | Description |
| -------------- | ------- | ------------------------------------- |
| `fromObjectId` | string | Source record ID |
| `toObjectId` | string | Target record ID |
| `deleted` | boolean | Whether the associations were removed |
| `success` | boolean | Operation success status |
### Get Association Labels from HubSpot [#get-association-labels-from-hubspot]
Retrieve the association types (category, typeId, label) defined between two HubSpot object types
#### Input [#input-33]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------- |
| `objectType` | string | Yes | The source object type (e.g., "contacts", "companies", "deals") |
| `toObjectType` | string | Yes | The target object type (e.g., "emails", "notes", "contacts") |
#### Output [#output-33]
| Parameter | Type | Description |
| ------------ | ------- | -------------------------------------------------------- |
| `labels` | array | Association types defined between the two object types |
| ↳ `category` | string | Association category (HUBSPOT\_DEFINED or USER\_DEFINED) |
| ↳ `typeId` | number | Association type ID |
| ↳ `label` | string | Human-readable label (null for unlabeled defaults) |
| `success` | boolean | Operation success status |
### Delete Contact from HubSpot [#delete-contact-from-hubspot]
Archive a contact in HubSpot by ID (moves it to the recycling bin)
#### Input [#input-34]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------- |
| `contactId` | string | Yes | The numeric ID of the contact to delete |
#### Output [#output-34]
| Parameter | Type | Description |
| ----------- | ------- | -------------------------------- |
| `contactId` | string | ID of the deleted contact |
| `deleted` | boolean | Whether the contact was archived |
| `success` | boolean | Operation success status |
### Delete Company from HubSpot [#delete-company-from-hubspot]
Archive a company in HubSpot by ID (moves it to the recycling bin)
#### Input [#input-35]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------- |
| `companyId` | string | Yes | The numeric ID of the company to delete |
#### Output [#output-35]
| Parameter | Type | Description |
| ----------- | ------- | -------------------------------- |
| `companyId` | string | ID of the deleted company |
| `deleted` | boolean | Whether the company was archived |
| `success` | boolean | Operation success status |
### Delete Deal from HubSpot [#delete-deal-from-hubspot]
Archive a deal in HubSpot by ID (moves it to the recycling bin)
#### Input [#input-36]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------ |
| `dealId` | string | Yes | The numeric ID of the deal to delete |
#### Output [#output-36]
| Parameter | Type | Description |
| --------- | ------- | ----------------------------- |
| `dealId` | string | ID of the deleted deal |
| `deleted` | boolean | Whether the deal was archived |
| `success` | boolean | Operation success status |
### Delete Ticket from HubSpot [#delete-ticket-from-hubspot]
Archive a ticket in HubSpot by ID (moves it to the recycling bin)
#### Input [#input-37]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------- |
| `ticketId` | string | Yes | The numeric ID of the ticket to delete |
#### Output [#output-37]
| Parameter | Type | Description |
| ---------- | ------- | ------------------------------- |
| `ticketId` | string | ID of the deleted ticket |
| `deleted` | boolean | Whether the ticket was archived |
| `success` | boolean | Operation success status |
### Delete Line Item from HubSpot [#delete-line-item-from-hubspot]
Archive a line item in HubSpot by ID (moves it to the recycling bin)
#### Input [#input-38]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ----------------------------------------- |
| `lineItemId` | string | Yes | The numeric ID of the line item to delete |
#### Output [#output-38]
| Parameter | Type | Description |
| ------------ | ------- | ---------------------------------- |
| `lineItemId` | string | ID of the deleted line item |
| `deleted` | boolean | Whether the line item was archived |
| `success` | boolean | Operation success status |
### Search Line Items in HubSpot [#search-line-items-in-hubspot]
Search for line items in HubSpot using filters, sorting, and queries
#### Input [#input-39]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `filterGroups` | array | No | Array of filter groups as JSON. Each group contains "filters" array with objects having "propertyName", "operator" (e.g., "EQ", "NEQ", "CONTAINS\_TOKEN", "NOT\_CONTAINS\_TOKEN"), and "value" |
| `sorts` | array | No | Array of sort objects as JSON with "propertyName" and "direction" ("ASCENDING" or "DESCENDING") |
| `query` | string | No | Search query string to match against line item name and other text fields |
| `properties` | array | No | Array of HubSpot property names to return (e.g., \["name", "quantity", "price"]) |
| `limit` | number | No | Maximum number of results to return (max 200, default 10) |
| `after` | string | No | Pagination cursor for next page (from previous response) |
#### Output [#output-39]
| Parameter | Type | Description |
| ----------------------------------- | ------- | ------------------------------------------------ |
| `lineItems` | array | Array of HubSpot line item records |
| ↳ `name` | string | Line item name |
| ↳ `description` | string | Full description of the product |
| ↳ `hs_sku` | string | Unique product identifier (SKU) |
| ↳ `quantity` | string | Number of units included |
| ↳ `price` | string | Unit price |
| ↳ `amount` | string | Total cost (quantity \* unit price) |
| ↳ `hs_line_item_currency_code` | string | Currency code |
| ↳ `recurringbillingfrequency` | string | Recurring billing frequency |
| ↳ `hs_recurring_billing_start_date` | string | Recurring billing start date |
| ↳ `hs_recurring_billing_end_date` | string | Recurring billing end date |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `createdate` | string | Creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `paging` | object | Pagination information for fetching more results |
| ↳ `after` | string | Cursor for next page of results |
| ↳ `link` | string | Link to next page |
| `metadata` | object | Response metadata |
| ↳ `totalReturned` | number | Number of records returned in this response |
| ↳ `hasMore` | boolean | Whether more records are available |
| `total` | number | Total number of matching line items |
| `success` | boolean | Operation success status |
### Search Quotes in HubSpot [#search-quotes-in-hubspot]
Search for quotes in HubSpot using filters, sorting, and queries
#### Input [#input-40]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `filterGroups` | array | No | Array of filter groups as JSON. Each group contains "filters" array with objects having "propertyName", "operator" (e.g., "EQ", "NEQ", "CONTAINS\_TOKEN", "NOT\_CONTAINS\_TOKEN"), and "value" |
| `sorts` | array | No | Array of sort objects as JSON with "propertyName" and "direction" ("ASCENDING" or "DESCENDING") |
| `query` | string | No | Search query string to match against quote title and other text fields |
| `properties` | array | No | Array of HubSpot property names to return (e.g., \["hs\_title", "hs\_expiration\_date"]) |
| `limit` | number | No | Maximum number of results to return (max 200, default 10) |
| `after` | string | No | Pagination cursor for next page (from previous response) |
#### Output [#output-40]
| Parameter | Type | Description |
| ----------------------- | ------- | ------------------------------------------------ |
| `quotes` | array | Array of HubSpot quote records |
| ↳ `hs_title` | string | Quote name/title |
| ↳ `hs_expiration_date` | string | Expiration date |
| ↳ `hs_status` | string | Quote status |
| ↳ `hs_esign_enabled` | string | Whether e-signatures are enabled |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `createdate` | string | Creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `paging` | object | Pagination information for fetching more results |
| ↳ `after` | string | Cursor for next page of results |
| ↳ `link` | string | Link to next page |
| `metadata` | object | Response metadata |
| ↳ `totalReturned` | number | Number of records returned in this response |
| ↳ `hasMore` | boolean | Whether more records are available |
| `total` | number | Total number of matching quotes |
| `success` | boolean | Operation success status |
### Get List Members from HubSpot [#get-list-members-from-hubspot]
Retrieve the record IDs that are members of a HubSpot list, ordered by record ID
#### Input [#input-41]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------- |
| `listId` | string | Yes | The ID of the list to read members from |
| `limit` | string | No | Maximum number of results per page (max 250, default 100) |
| `after` | string | No | Pagination cursor for next page of results (from previous response) |
#### Output [#output-41]
| Parameter | Type | Description |
| ----------------------- | ------- | ------------------------------------------------ |
| `paging` | object | Pagination information for fetching more results |
| ↳ `after` | string | Cursor for next page of results |
| ↳ `link` | string | Link to next page |
| `metadata` | object | Response metadata |
| ↳ `totalReturned` | number | Number of records returned in this response |
| ↳ `hasMore` | boolean | Whether more records are available |
| `memberships` | array | Records that are members of the list |
| ↳ `recordId` | string | ID of the member record |
| ↳ `membershipTimestamp` | string | When the record was added to the list |
| `success` | boolean | Operation success status |
### Add List Members in HubSpot [#add-list-members-in-hubspot]
Add records to a manual (static) HubSpot list by record ID
#### Input [#input-42]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------- |
| `listId` | string | Yes | The ID of the list to add records to (MANUAL or SNAPSHOT lists only) |
| `recordIds` | array | Yes | Record IDs to add to the list, as a JSON array (e.g., \["123","456"]) or comma-separated string |
#### Output [#output-42]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------------ |
| `recordIdsAdded` | array | IDs of the records that were added to the list |
| `recordIdsMissing` | array | IDs of the requested records that were not found |
| `success` | boolean | Operation success status |
### Remove List Members in HubSpot [#remove-list-members-in-hubspot]
Remove records from a manual (static) HubSpot list by record ID
#### Input [#input-43]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- |
| `listId` | string | Yes | The ID of the list to remove records from (MANUAL or SNAPSHOT lists only) |
| `recordIds` | array | Yes | Record IDs to remove from the list, as a JSON array (e.g., \["123","456"]) or comma-separated string |
#### Output [#output-43]
| Parameter | Type | Description |
| ------------------ | ------- | -------------------------------------------------- |
| `recordIdsRemoved` | array | IDs of the records that were removed from the list |
| `recordIdsMissing` | array | IDs of the requested records that were not found |
| `success` | boolean | Operation success status |
### List Line Items from HubSpot [#list-line-items-from-hubspot]
Retrieve all line items from HubSpot account with pagination support
#### Input [#input-44]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------------- |
| `limit` | string | No | Maximum number of results per page (max 100, default 10) |
| `after` | string | No | Pagination cursor for next page of results (from previous response) |
| `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "name,quantity,price,amount") |
| `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "deals,quotes") |
#### Output [#output-44]
| Parameter | Type | Description |
| ----------------------------------- | ------- | ------------------------------------------------ |
| `lineItems` | array | Array of HubSpot line item records |
| ↳ `name` | string | Line item name |
| ↳ `description` | string | Full description of the product |
| ↳ `hs_sku` | string | Unique product identifier (SKU) |
| ↳ `quantity` | string | Number of units included |
| ↳ `price` | string | Unit price |
| ↳ `amount` | string | Total cost (quantity \* unit price) |
| ↳ `hs_line_item_currency_code` | string | Currency code |
| ↳ `recurringbillingfrequency` | string | Recurring billing frequency |
| ↳ `hs_recurring_billing_start_date` | string | Recurring billing start date |
| ↳ `hs_recurring_billing_end_date` | string | Recurring billing end date |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `createdate` | string | Creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `paging` | object | Pagination information for fetching more results |
| ↳ `after` | string | Cursor for next page of results |
| ↳ `link` | string | Link to next page |
| `metadata` | object | Response metadata |
| ↳ `totalReturned` | number | Number of records returned in this response |
| ↳ `hasMore` | boolean | Whether more records are available |
| `success` | boolean | Operation success status |
### Get Line Item from HubSpot [#get-line-item-from-hubspot]
Retrieve a single line item by ID from HubSpot
#### Input [#input-45]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------------- |
| `lineItemId` | string | Yes | The HubSpot line item ID to retrieve |
| `idProperty` | string | No | Property to use as unique identifier. If not specified, uses record ID |
| `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "name,quantity,price,amount") |
| `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "deals,quotes") |
#### Output [#output-45]
| Parameter | Type | Description |
| ----------------------------------- | ------- | ------------------------------------- |
| `lineItem` | object | HubSpot line item record |
| ↳ `name` | string | Line item name |
| ↳ `description` | string | Full description of the product |
| ↳ `hs_sku` | string | Unique product identifier (SKU) |
| ↳ `quantity` | string | Number of units included |
| ↳ `price` | string | Unit price |
| ↳ `amount` | string | Total cost (quantity \* unit price) |
| ↳ `hs_line_item_currency_code` | string | Currency code |
| ↳ `recurringbillingfrequency` | string | Recurring billing frequency |
| ↳ `hs_recurring_billing_start_date` | string | Recurring billing start date |
| ↳ `hs_recurring_billing_end_date` | string | Recurring billing end date |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `createdate` | string | Creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `lineItemId` | string | The retrieved line item ID |
| `success` | boolean | Operation success status |
### Create Line Item in HubSpot [#create-line-item-in-hubspot]
Create a new line item in HubSpot. Requires at least a name property
#### Input [#input-46]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `properties` | object | Yes | Line item properties as JSON object (e.g., \{"name": "Product A", "quantity": "2", "price": "50.00", "hs\_sku": "SKU-001"}) |
| `associations` | array | No | Array of associations to create with the line item as JSON. Each object should have "to.id" and "types" array with "associationCategory" and "associationTypeId" |
#### Output [#output-46]
| Parameter | Type | Description |
| ----------------------------------- | ------- | ------------------------------------- |
| `lineItem` | object | HubSpot line item record |
| ↳ `name` | string | Line item name |
| ↳ `description` | string | Full description of the product |
| ↳ `hs_sku` | string | Unique product identifier (SKU) |
| ↳ `quantity` | string | Number of units included |
| ↳ `price` | string | Unit price |
| ↳ `amount` | string | Total cost (quantity \* unit price) |
| ↳ `hs_line_item_currency_code` | string | Currency code |
| ↳ `recurringbillingfrequency` | string | Recurring billing frequency |
| ↳ `hs_recurring_billing_start_date` | string | Recurring billing start date |
| ↳ `hs_recurring_billing_end_date` | string | Recurring billing end date |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `createdate` | string | Creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `lineItemId` | string | The created line item ID |
| `success` | boolean | Operation success status |
### Update Line Item in HubSpot [#update-line-item-in-hubspot]
Update an existing line item in HubSpot by ID
#### Input [#input-47]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------ |
| `lineItemId` | string | Yes | The HubSpot line item ID to update |
| `idProperty` | string | No | Property to use as unique identifier. If not specified, uses record ID |
| `properties` | object | Yes | Line item properties to update as JSON object (e.g., \{"quantity": "5", "price": "25.00"}) |
#### Output [#output-47]
| Parameter | Type | Description |
| ----------------------------------- | ------- | ------------------------------------- |
| `lineItem` | object | HubSpot line item record |
| ↳ `name` | string | Line item name |
| ↳ `description` | string | Full description of the product |
| ↳ `hs_sku` | string | Unique product identifier (SKU) |
| ↳ `quantity` | string | Number of units included |
| ↳ `price` | string | Unit price |
| ↳ `amount` | string | Total cost (quantity \* unit price) |
| ↳ `hs_line_item_currency_code` | string | Currency code |
| ↳ `recurringbillingfrequency` | string | Recurring billing frequency |
| ↳ `hs_recurring_billing_start_date` | string | Recurring billing start date |
| ↳ `hs_recurring_billing_end_date` | string | Recurring billing end date |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `createdate` | string | Creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `lineItemId` | string | The updated line item ID |
| `success` | boolean | Operation success status |
### List Quotes from HubSpot [#list-quotes-from-hubspot]
Retrieve all quotes from HubSpot account with pagination support
#### Input [#input-48]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ |
| `limit` | string | No | Maximum number of results per page (max 100, default 10) |
| `after` | string | No | Pagination cursor for next page of results (from previous response) |
| `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "hs\_title,hs\_expiration\_date,hs\_status") |
| `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "deals,line\_items") |
#### Output [#output-48]
| Parameter | Type | Description |
| ----------------------- | ------- | ------------------------------------------------ |
| `quotes` | array | Array of HubSpot quote records |
| ↳ `hs_title` | string | Quote name/title |
| ↳ `hs_expiration_date` | string | Expiration date |
| ↳ `hs_status` | string | Quote status |
| ↳ `hs_esign_enabled` | string | Whether e-signatures are enabled |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `createdate` | string | Creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `paging` | object | Pagination information for fetching more results |
| ↳ `after` | string | Cursor for next page of results |
| ↳ `link` | string | Link to next page |
| `metadata` | object | Response metadata |
| ↳ `totalReturned` | number | Number of records returned in this response |
| ↳ `hasMore` | boolean | Whether more records are available |
| `success` | boolean | Operation success status |
### Get Quote from HubSpot [#get-quote-from-hubspot]
Retrieve a single quote by ID from HubSpot
#### Input [#input-49]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ |
| `quoteId` | string | Yes | The HubSpot quote ID to retrieve |
| `idProperty` | string | No | Property to use as unique identifier. If not specified, uses record ID |
| `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "hs\_title,hs\_expiration\_date,hs\_status") |
| `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "deals,line\_items") |
#### Output [#output-49]
| Parameter | Type | Description |
| ----------------------- | ------- | ------------------------------------- |
| `quote` | object | HubSpot quote record |
| ↳ `hs_title` | string | Quote name/title |
| ↳ `hs_expiration_date` | string | Expiration date |
| ↳ `hs_status` | string | Quote status |
| ↳ `hs_esign_enabled` | string | Whether e-signatures are enabled |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `createdate` | string | Creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `quoteId` | string | The retrieved quote ID |
| `success` | boolean | Operation success status |
### List Appointments from HubSpot [#list-appointments-from-hubspot]
Retrieve all appointments from HubSpot account with pagination support
#### Input [#input-50]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------- |
| `limit` | string | No | Maximum number of results per page (max 100, default 10) |
| `after` | string | No | Pagination cursor for next page of results (from previous response) |
| `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "hs\_appointment\_name,hs\_appointment\_start") |
| `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies") |
#### Output [#output-50]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------------------ |
| `appointments` | array | Array of HubSpot appointment records |
| ↳ `hs_appointment_name` | string | Appointment title/name |
| ↳ `hs_appointment_start` | string | Start time (ISO 8601) |
| ↳ `hs_appointment_end` | string | End time (ISO 8601) |
| ↳ `hs_appointment_status` | string | Appointment status (e.g., SCHEDULED) |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `hs_createdate` | string | Creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `paging` | object | Pagination information for fetching more results |
| ↳ `after` | string | Cursor for next page of results |
| ↳ `link` | string | Link to next page |
| `metadata` | object | Response metadata |
| ↳ `totalReturned` | number | Number of records returned in this response |
| ↳ `hasMore` | boolean | Whether more records are available |
| `success` | boolean | Operation success status |
### Get Appointment from HubSpot [#get-appointment-from-hubspot]
Retrieve a single appointment by ID from HubSpot
#### Input [#input-51]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------- |
| `appointmentId` | string | Yes | The HubSpot appointment ID to retrieve |
| `idProperty` | string | No | Property to use as unique identifier. If not specified, uses record ID |
| `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "hs\_appointment\_name,hs\_appointment\_start") |
| `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies") |
#### Output [#output-51]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------- |
| `appointment` | object | HubSpot appointment record |
| ↳ `hs_appointment_name` | string | Appointment title/name |
| ↳ `hs_appointment_start` | string | Start time (ISO 8601) |
| ↳ `hs_appointment_end` | string | End time (ISO 8601) |
| ↳ `hs_appointment_status` | string | Appointment status (e.g., SCHEDULED) |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `hs_createdate` | string | Creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `appointmentId` | string | The retrieved appointment ID |
| `success` | boolean | Operation success status |
### Create Appointment in HubSpot [#create-appointment-in-hubspot]
Create a new appointment in HubSpot
#### Input [#input-52]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `properties` | object | Yes | Appointment properties as JSON object. Must include hs\_appointment\_start (e.g., \{"hs\_appointment\_name": "Discovery Call", "hs\_appointment\_start": "2024-01-15T10:00:00Z", "hs\_appointment\_end": "2024-01-15T11:00:00Z"}) |
| `associations` | array | No | Array of associations to create with the appointment as JSON. Each object should have "to.id" and "types" array with "associationCategory" and "associationTypeId" |
#### Output [#output-52]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------- |
| `appointment` | object | HubSpot appointment record |
| ↳ `hs_appointment_name` | string | Appointment title/name |
| ↳ `hs_appointment_start` | string | Start time (ISO 8601) |
| ↳ `hs_appointment_end` | string | End time (ISO 8601) |
| ↳ `hs_appointment_status` | string | Appointment status (e.g., SCHEDULED) |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `hs_createdate` | string | Creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `appointmentId` | string | The created appointment ID |
| `success` | boolean | Operation success status |
### Update Appointment in HubSpot [#update-appointment-in-hubspot]
Update an existing appointment in HubSpot by ID
#### Input [#input-53]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `appointmentId` | string | Yes | The HubSpot appointment ID to update |
| `idProperty` | string | No | Property to use as unique identifier. If not specified, uses record ID |
| `properties` | object | Yes | Appointment properties to update as JSON object (e.g., \{"hs\_appointment\_name": "Updated Call", "hs\_appointment\_start": "2024-01-15T10:00:00Z"}) |
#### Output [#output-53]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------- |
| `appointment` | object | HubSpot appointment record |
| ↳ `hs_appointment_name` | string | Appointment title/name |
| ↳ `hs_appointment_start` | string | Start time (ISO 8601) |
| ↳ `hs_appointment_end` | string | End time (ISO 8601) |
| ↳ `hs_appointment_status` | string | Appointment status (e.g., SCHEDULED) |
| ↳ `hubspot_owner_id` | string | HubSpot owner ID |
| ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) |
| ↳ `hs_createdate` | string | Creation date (ISO 8601) |
| ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) |
| `appointmentId` | string | The updated appointment ID |
| `success` | boolean | Operation success status |
### List Carts from HubSpot [#list-carts-from-hubspot]
Retrieve all carts from HubSpot account with pagination support
#### Input [#input-54]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `limit` | string | No | Maximum number of results per page (max 100, default 10) |
| `after` | string | No | Pagination cursor for next page of results (from previous response) |
| `properties` | string | No | Comma-separated list of HubSpot property names to return |
| `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for |
#### Output [#output-54]
| Parameter | Type | Description |
| ----------------- | ------- | ------------------------------------------------ |
| `carts` | array | Array of HubSpot CRM records |
| ↳ `id` | string | Unique record ID (hs\_object\_id) |
| ↳ `createdAt` | string | Record creation timestamp (ISO 8601) |
| ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) |
| ↳ `archived` | boolean | Whether the record is archived |
| ↳ `properties` | object | Record properties |
| ↳ `associations` | object | Associated records |
| `paging` | object | Pagination information for fetching more results |
| ↳ `after` | string | Cursor for next page of results |
| ↳ `link` | string | Link to next page |
| `metadata` | object | Response metadata |
| ↳ `totalReturned` | number | Number of records returned in this response |
| ↳ `hasMore` | boolean | Whether more records are available |
| `success` | boolean | Operation success status |
### Get Cart from HubSpot [#get-cart-from-hubspot]
Retrieve a single cart by ID from HubSpot
#### Input [#input-55]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `cartId` | string | Yes | The HubSpot cart ID to retrieve |
| `properties` | string | No | Comma-separated list of HubSpot property names to return |
| `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for |
#### Output [#output-55]
| Parameter | Type | Description |
| ---------------- | ------- | ---------------------------------------- |
| `cart` | object | HubSpot CRM record |
| ↳ `id` | string | Unique record ID (hs\_object\_id) |
| ↳ `createdAt` | string | Record creation timestamp (ISO 8601) |
| ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) |
| ↳ `archived` | boolean | Whether the record is archived |
| ↳ `properties` | object | Record properties |
| ↳ `associations` | object | Associated records |
| `cartId` | string | The retrieved cart ID |
| `success` | boolean | Operation success status |
### List Owners from HubSpot [#list-owners-from-hubspot]
Retrieve all owners from HubSpot account with pagination support
#### Input [#input-56]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------- |
| `limit` | string | No | Maximum number of results per page (max 100, default 100) |
| `after` | string | No | Pagination cursor for next page of results (from previous response) |
| `email` | string | No | Filter owners by email address |
#### Output [#output-56]
| Parameter | Type | Description |
| ----------------- | ------- | ------------------------------------------------ |
| `owners` | array | Array of HubSpot owner objects |
| ↳ `id` | string | Owner ID |
| ↳ `email` | string | Owner email address |
| ↳ `firstName` | string | Owner first name |
| ↳ `lastName` | string | Owner last name |
| ↳ `userId` | number | Associated user ID |
| ↳ `teams` | array | Teams the owner belongs to |
| ↳ `id` | string | Team ID |
| ↳ `name` | string | Team name |
| ↳ `createdAt` | string | Creation date (ISO 8601) |
| ↳ `updatedAt` | string | Last updated date (ISO 8601) |
| ↳ `archived` | boolean | Whether the owner is archived |
| `paging` | object | Pagination information for fetching more results |
| ↳ `after` | string | Cursor for next page of results |
| ↳ `link` | string | Link to next page |
| `metadata` | object | Response metadata |
| ↳ `totalReturned` | number | Number of records returned in this response |
| ↳ `hasMore` | boolean | Whether more records are available |
| `success` | boolean | Operation success status |
### List Marketing Events from HubSpot [#list-marketing-events-from-hubspot]
Retrieve all marketing events from HubSpot account with pagination support
#### Input [#input-57]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------- |
| `limit` | string | No | Maximum number of results per page (max 100, default 10) |
| `after` | string | No | Pagination cursor for next page of results (from previous response) |
#### Output [#output-57]
| Parameter | Type | Description |
| -------------------- | ------- | ------------------------------------------------ |
| `events` | array | Array of HubSpot marketing event objects |
| ↳ `objectId` | string | Unique event ID (HubSpot internal) |
| ↳ `eventName` | string | Event name |
| ↳ `eventType` | string | Event type |
| ↳ `eventStatus` | string | Event status |
| ↳ `eventDescription` | string | Event description |
| ↳ `eventUrl` | string | Event URL |
| ↳ `eventOrganizer` | string | Event organizer |
| ↳ `startDateTime` | string | Start date/time (ISO 8601) |
| ↳ `endDateTime` | string | End date/time (ISO 8601) |
| ↳ `eventCancelled` | boolean | Whether event is cancelled |
| ↳ `eventCompleted` | boolean | Whether event is completed |
| ↳ `registrants` | number | Number of registrants |
| ↳ `attendees` | number | Number of attendees |
| ↳ `cancellations` | number | Number of cancellations |
| ↳ `noShows` | number | Number of no-shows |
| ↳ `externalEventId` | string | External event ID |
| ↳ `createdAt` | string | Creation date (ISO 8601) |
| ↳ `updatedAt` | string | Last updated date (ISO 8601) |
| `paging` | object | Pagination information for fetching more results |
| ↳ `after` | string | Cursor for next page of results |
| ↳ `link` | string | Link to next page |
| `metadata` | object | Response metadata |
| ↳ `totalReturned` | number | Number of records returned in this response |
| ↳ `hasMore` | boolean | Whether more records are available |
| `success` | boolean | Operation success status |
### Get Marketing Event from HubSpot [#get-marketing-event-from-hubspot]
Retrieve a single marketing event by ID from HubSpot
#### Input [#input-58]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------ |
| `eventId` | string | Yes | The HubSpot marketing event objectId to retrieve |
#### Output [#output-58]
| Parameter | Type | Description |
| -------------------- | ------- | ---------------------------------- |
| `event` | object | HubSpot marketing event |
| ↳ `objectId` | string | Unique event ID (HubSpot internal) |
| ↳ `eventName` | string | Event name |
| ↳ `eventType` | string | Event type |
| ↳ `eventStatus` | string | Event status |
| ↳ `eventDescription` | string | Event description |
| ↳ `eventUrl` | string | Event URL |
| ↳ `eventOrganizer` | string | Event organizer |
| ↳ `startDateTime` | string | Start date/time (ISO 8601) |
| ↳ `endDateTime` | string | End date/time (ISO 8601) |
| ↳ `eventCancelled` | boolean | Whether event is cancelled |
| ↳ `eventCompleted` | boolean | Whether event is completed |
| ↳ `registrants` | number | Number of registrants |
| ↳ `attendees` | number | Number of attendees |
| ↳ `cancellations` | number | Number of cancellations |
| ↳ `noShows` | number | Number of no-shows |
| ↳ `externalEventId` | string | External event ID |
| ↳ `createdAt` | string | Creation date (ISO 8601) |
| ↳ `updatedAt` | string | Last updated date (ISO 8601) |
| `eventId` | string | The retrieved marketing event ID |
| `success` | boolean | Operation success status |
### List Lists from HubSpot [#list-lists-from-hubspot]
Search and retrieve lists from HubSpot account
#### Input [#input-59]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------------------------------------------- |
| `query` | string | No | Search query to filter lists by name. Leave empty to return all lists. |
| `count` | string | No | Maximum number of results to return (default 20, max 500) |
| `offset` | string | No | Pagination offset for next page of results (use the offset value from previous response) |
#### Output [#output-59]
| Parameter | Type | Description |
| -------------------- | ------- | ------------------------------------------------ |
| `lists` | array | Array of HubSpot list objects |
| ↳ `listId` | string | List ID |
| ↳ `name` | string | List name |
| ↳ `objectTypeId` | string | Object type ID (e.g., 0-1 for contacts) |
| ↳ `processingType` | string | Processing type (MANUAL, DYNAMIC, SNAPSHOT) |
| ↳ `processingStatus` | string | Processing status (COMPLETE, PROCESSING) |
| ↳ `listVersion` | number | List version number |
| ↳ `createdAt` | string | Creation date (ISO 8601) |
| ↳ `updatedAt` | string | Last updated date (ISO 8601) |
| `paging` | object | Pagination information for fetching more results |
| ↳ `after` | string | Cursor for next page of results |
| ↳ `link` | string | Link to next page |
| `metadata` | object | Response metadata |
| ↳ `totalReturned` | number | Number of records returned in this response |
| ↳ `hasMore` | boolean | Whether more records are available |
| ↳ `total` | number | Total number of lists matching the query |
| `success` | boolean | Operation success status |
### Get List from HubSpot [#get-list-from-hubspot]
Retrieve a single list by ID from HubSpot
#### Input [#input-60]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------- |
| `listId` | string | Yes | The HubSpot list ID to retrieve |
#### Output [#output-60]
| Parameter | Type | Description |
| -------------------- | ------- | ------------------------------------------- |
| `list` | object | HubSpot list |
| ↳ `listId` | string | List ID |
| ↳ `name` | string | List name |
| ↳ `objectTypeId` | string | Object type ID (e.g., 0-1 for contacts) |
| ↳ `processingType` | string | Processing type (MANUAL, DYNAMIC, SNAPSHOT) |
| ↳ `processingStatus` | string | Processing status (COMPLETE, PROCESSING) |
| ↳ `listVersion` | number | List version number |
| ↳ `createdAt` | string | Creation date (ISO 8601) |
| ↳ `updatedAt` | string | Last updated date (ISO 8601) |
| `listId` | string | The retrieved list ID |
| `success` | boolean | Operation success status |
### Create List in HubSpot [#create-list-in-hubspot]
Create a new list in HubSpot. Specify the object type and processing type (MANUAL or DYNAMIC)
#### Input [#input-61]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------ |
| `name` | string | Yes | Name of the list |
| `objectTypeId` | string | Yes | Object type ID (e.g., "0-1" for contacts, "0-2" for companies) |
| `processingType` | string | Yes | Processing type: "MANUAL" for static lists or "DYNAMIC" for active lists |
#### Output [#output-61]
| Parameter | Type | Description |
| -------------------- | ------- | ------------------------------------------- |
| `list` | object | HubSpot list |
| ↳ `listId` | string | List ID |
| ↳ `name` | string | List name |
| ↳ `objectTypeId` | string | Object type ID (e.g., 0-1 for contacts) |
| ↳ `processingType` | string | Processing type (MANUAL, DYNAMIC, SNAPSHOT) |
| ↳ `processingStatus` | string | Processing status (COMPLETE, PROCESSING) |
| ↳ `listVersion` | number | List version number |
| ↳ `createdAt` | string | Creation date (ISO 8601) |
| ↳ `updatedAt` | string | Last updated date (ISO 8601) |
| `listId` | string | The created list ID |
| `success` | boolean | Operation success status |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
These run on a schedule (**polling-based**) — they check for new data rather than receiving push notifications.
### HubSpot CRM Trigger [#hubspot-crm-trigger]
Triggers when HubSpot CRM records (contacts, companies, deals, tickets, custom objects) are created or updated, or when contacts join a list
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `triggerCredentials` | string | Yes | Connect a HubSpot account so Sim can poll your CRM on your behalf. |
| `objectType` | string | Yes | What you want to watch. |
| `customObjectTypeId` | string | No | HubSpot custom object type ID (e.g. "2-12345"). Find it in HubSpot Settings → Objects → Custom Objects. |
| `listId` | string | No | The HubSpot list to watch for new members. |
| `eventType` | string | No | Created fires once per new record. Updated fires on any modification. Property Changed fires only when the chosen property changes value. |
| `targetPropertyName` | string | No | Fires only when this specific property changes value on a record. |
| `properties` | string | No | Properties to include on each record. Leave empty to use sensible defaults. Sim always includes the timestamps it needs internally. |
| `pipelineId` | string | No | Restrict to a single pipeline. |
| `stageId` | string | No | Restrict to a single stage within the selected pipeline. |
| `ownerId` | string | No | Restrict to records owned by a specific HubSpot user. |
| `filters` | string | No | JSON array of HubSpot search filters, AND-combined. Each item: \{"propertyName":"...","operator":"EQ","value":"..."}. Operators: EQ, NEQ, CONTAINS\_TOKEN, NOT\_CONTAINS\_TOKEN, GT, GTE, LT, LTE, BETWEEN, IN, NOT\_IN, HAS\_PROPERTY, NOT\_HAS\_PROPERTY. |
| `maxRecordsPerPoll` | string | No | Soft cap on records emitted per poll (default 50, max 1000). Excess rolls over to the next poll. |
#### Output [#output-62]
| Parameter | Type | Description |
| --------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectType` | string | HubSpot object type (contact, company, deal, ticket, custom object id, or list\_membership) |
| `eventType` | string | Event type (created, updated, property\_changed, or joined) |
| `objectId` | string | HubSpot ID of the affected record (or contact id for list memberships) |
| `occurredAt` | string | ISO timestamp of when the change happened in HubSpot |
| `properties` | json | HubSpot properties on the record as a key-value object (property internal name → value). Default keys per object type (override via "Properties to Fetch"): Contact → firstname, lastname, email, phone, company, lifecyclestage, hs\_lead\_status, hubspot\_owner\_id, createdate, lastmodifieddate. Company → name, domain, industry, lifecyclestage, hubspot\_owner\_id, createdate, hs\_lastmodifieddate. Deal → dealname, amount, dealstage, pipeline, closedate, hubspot\_owner\_id, createdate, hs\_lastmodifieddate. Ticket → subject, content, hs\_pipeline, hs\_pipeline\_stage, hs\_ticket\_priority, hubspot\_owner\_id, createdate, hs\_lastmodifieddate. Custom and user-requested properties appear keyed by their HubSpot internal name. |
| `createdAt` | string | ISO timestamp when the record was created in HubSpot |
| `updatedAt` | string | ISO timestamp when the record was last updated in HubSpot |
| `archived` | boolean | Whether the record is archived |
| `propertyName` | string | Name of the property that changed (property\_changed events only) |
| `propertyValue` | string | New value of the changed property (property\_changed events only) |
| `previousValue` | string | Previous value before the change (property\_changed events only) |
| `listId` | string | HubSpot list ID (list\_membership events only) |
| `timestamp` | string | ISO timestamp when Sim emitted the event |
---
# Hugging Face (/integrations/huggingface)
{/* MANUAL-CONTENT-START:intro */}
[Hugging Face](https://huggingface.co/) is a leading AI platform that provides access to thousands of pre-trained machine learning models and powerful inference capabilities. With its extensive model hub and robust API, Hugging Face offers comprehensive tools for both research and production AI applications.
With the Hugging Face integration in Sim, you can:
* **Generate completions**: Create text content using state-of-the-art language models through the Hugging Face Inference API, with support for custom prompts and model selection
In Sim, the Hugging Face integration enables your agents to generate AI completions as part of automated workflows. This allows for content generation, text analysis, code completion, and creative writing using models from the Hugging Face model hub.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Hugging Face into the workflow. Can generate completions using the Hugging Face Inference API.
## Actions [#actions]
### Hugging Face Chat [#hugging-face-chat]
Generate completions using Hugging Face Inference API
#### Input [#input]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------- |
| `systemPrompt` | string | No | System prompt to guide the model behavior |
| `content` | string | Yes | The user message content to send to the model |
| `provider` | string | Yes | The provider to use for the API request (e.g., novita, cerebras, etc.) |
| `model` | string | Yes | Model to use for chat completions (e.g., "deepseek/deepseek-v3-0324", "meta-llama/Llama-3.3-70B-Instruct") |
| `maxTokens` | number | No | Maximum number of tokens to generate |
| `temperature` | number | No | Sampling temperature (0-2). Higher values make output more random |
| `apiKey` | string | Yes | Hugging Face API token |
#### Output [#output]
| Parameter | Type | Description |
| --------------------- | ------- | ---------------------------------- |
| `success` | boolean | Operation success status |
| `output` | object | Chat completion results |
| ↳ `content` | string | Generated text content |
| ↳ `model` | string | Model used for generation |
| ↳ `usage` | object | Token usage information |
| ↳ `prompt_tokens` | number | Number of tokens in the prompt |
| ↳ `completion_tokens` | number | Number of tokens in the completion |
| ↳ `total_tokens` | number | Total number of tokens used |
---
# Hunter.io (/integrations/hunter)
{/* MANUAL-CONTENT-START:intro */}
[Hunter.io](https://hunter.io/) is a leading platform for finding and verifying professional email addresses, discovering companies, and enriching contact data. Hunter.io provides robust APIs for domain search, email finding, verification, and company discovery, making it an essential tool for sales, recruiting, and business development.
With Hunter.io, you can:
* **Find email addresses by domain:** Search for all publicly available email addresses associated with a specific company domain.
* **Discover companies:** Use advanced filters and AI-powered search to find companies matching your criteria.
* **Find a specific email address:** Locate the most likely email address for a person at a company using their name and domain.
* **Verify email addresses:** Check the deliverability and validity of any email address.
* **Enrich company data:** Retrieve detailed information about companies, including size, technologies used, and more.
In Sim, the Hunter.io integration enables your agents to programmatically search for and verify email addresses, discover companies, and enrich contact data using Hunter.io’s API. This allows you to automate lead generation, contact enrichment, and email verification directly within your workflows. Your agents can leverage Hunter.io’s tools to streamline outreach, keep your CRM up-to-date, and power intelligent automation scenarios for sales, recruiting, and more.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Hunter into the workflow. Can search domains, find email addresses, verify email addresses, discover companies, find companies, and count email addresses.
## Actions [#actions]
### Hunter Discover [#hunter-discover]
Returns companies matching a set of criteria using Hunter.io AI-powered search.
#### Input [#input]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `query` | string | No | Natural language search query for companies |
| `domain` | string | No | Company domain name to filter by (e.g., "stripe.com", "company.io") |
| `headcount` | string | No | Company size filter (e.g., "1-10", "11-50") |
| `company_type` | string | No | Type of organization |
| `technology` | string | No | Technology used by companies |
| `apiKey` | string | Yes | Hunter.io API Key |
#### Output [#output]
| Parameter | Type | Description |
| ------------------- | ------ | ---------------------------------------------- |
| `results` | array | List of companies matching the search criteria |
| ↳ `domain` | string | Company domain |
| ↳ `organization` | string | Organization name |
| ↳ `personal_emails` | number | Count of personal emails |
| ↳ `generic_emails` | number | Count of generic (role-based) emails |
| ↳ `total_emails` | number | Total emails found for the company |
### Hunter Domain Search [#hunter-domain-search]
Returns all the email addresses found using one given domain name, with sources.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------- |
| `domain` | string | Yes | Domain name to search for email addresses (e.g., "stripe.com", "company.io") |
| `limit` | number | No | Maximum email addresses to return (e.g., 10, 25, 50). Default: 10 |
| `offset` | number | No | Number of email addresses to skip for pagination (e.g., 0, 10, 20) |
| `type` | string | No | Filter for personal or generic emails (e.g., "personal", "generic", "all") |
| `seniority` | string | No | Filter by seniority level (e.g., "junior", "senior", "executive") |
| `department` | string | No | Filter by specific department (e.g., "sales", "marketing", "engineering", "hr") |
| `apiKey` | string | Yes | Hunter.io API Key |
#### Output [#output-1]
| Parameter | Type | Description |
| ----------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `emails` | array | List of email addresses found for the domain (up to 100 per request) |
| ↳ `value` | string | The email address |
| ↳ `type` | string | Email type: personal or generic (role-based) |
| ↳ `confidence` | number | Probability score (0-100) that the email is correct |
| ↳ `first_name` | string | Person's first name |
| ↳ `last_name` | string | Person's last name |
| ↳ `position` | string | Job title/position |
| ↳ `position_raw` | string | Raw job title as found |
| ↳ `seniority` | string | Seniority level (junior, senior, executive) |
| ↳ `department` | string | Department (executive, it, finance, management, sales, legal, support, hr, marketing, communication, education, design, health, operations) |
| ↳ `linkedin` | string | LinkedIn profile URL |
| ↳ `twitter` | string | Twitter handle |
| ↳ `phone_number` | string | Phone number |
| ↳ `sources` | array | List of sources where the email was found (limited to 20) |
| ↳ `domain` | string | Domain where the email was found |
| ↳ `uri` | string | Full URL of the source page |
| ↳ `extracted_on` | string | Date when the email was first extracted (YYYY-MM-DD) |
| ↳ `last_seen_on` | string | Date when the email was last seen (YYYY-MM-DD) |
| ↳ `still_on_page` | boolean | Whether the email is still present on the source page |
| ↳ `verification` | object | Email verification information |
| ↳ `date` | string | Date when the email was verified (YYYY-MM-DD) |
| ↳ `status` | string | Verification status (valid, invalid, accept\_all, webmail, disposable, unknown) |
| `domain` | string | The searched domain name |
| `disposable` | boolean | Whether the domain is a disposable email service |
| `webmail` | boolean | Whether the domain is a webmail provider (e.g., Gmail) |
| `accept_all` | boolean | Whether the server accepts all email addresses (may cause false positives) |
| `pattern` | string | The email pattern used by the organization (e.g., \{first}, \{first}.\{last}) |
| `organization` | string | The organization/company name |
| `linked_domains` | array | Other domains linked to the organization |
### Hunter Email Finder [#hunter-email-finder]
Finds the most likely email address for a person given their name and company domain.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------ |
| `domain` | string | Yes | Company domain name (e.g., "stripe.com", "company.io") |
| `first_name` | string | Yes | Person's first name (e.g., "John", "Sarah") |
| `last_name` | string | Yes | Person's last name (e.g., "Smith", "Johnson") |
| `company` | string | No | Company name (e.g., "Stripe", "Acme Inc") |
| `apiKey` | string | Yes | Hunter.io API Key |
#### Output [#output-2]
| Parameter | Type | Description |
| ----------------- | ------- | ------------------------------------------------------------------------------- |
| `sources` | array | List of sources where the email was found (limited to 20) |
| ↳ `domain` | string | Domain where the email was found |
| ↳ `uri` | string | Full URL of the source page |
| ↳ `extracted_on` | string | Date when the email was first extracted (YYYY-MM-DD) |
| ↳ `last_seen_on` | string | Date when the email was last seen (YYYY-MM-DD) |
| ↳ `still_on_page` | boolean | Whether the email is still present on the source page |
| `verification` | object | Email verification information |
| ↳ `date` | string | Date when the email was verified (YYYY-MM-DD) |
| ↳ `status` | string | Verification status (valid, invalid, accept\_all, webmail, disposable, unknown) |
| `first_name` | string | Person's first name |
| `last_name` | string | Person's last name |
| `email` | string | The found email address |
| `score` | number | Confidence score (0-100) for the found email address |
| `domain` | string | Domain that was searched |
| `accept_all` | boolean | Whether the server accepts all email addresses (may cause false positives) |
| `position` | string | Job title/position |
| `twitter` | string | Twitter handle |
| `linkedin_url` | string | LinkedIn profile URL |
| `phone_number` | string | Phone number |
| `company` | string | Company name |
### Hunter Email Verifier [#hunter-email-verifier]
Verifies the deliverability of an email address and provides detailed verification status.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------- |
| `email` | string | Yes | The email address to verify |
| `apiKey` | string | Yes | Hunter.io API Key |
#### Output [#output-3]
| Parameter | Type | Description |
| ----------------- | ------- | ------------------------------------------------------------------------------------------------------------ |
| `sources` | array | List of sources where the email was found (limited to 20) |
| ↳ `domain` | string | Domain where the email was found |
| ↳ `uri` | string | Full URL of the source page |
| ↳ `extracted_on` | string | Date when the email was first extracted (YYYY-MM-DD) |
| ↳ `last_seen_on` | string | Date when the email was last seen (YYYY-MM-DD) |
| ↳ `still_on_page` | boolean | Whether the email is still present on the source page |
| `result` | string | Deliverability result: deliverable, undeliverable, or risky |
| `score` | number | Deliverability score (0-100). Webmail and disposable emails receive an arbitrary score of 50. |
| `email` | string | The verified email address |
| `regexp` | boolean | Whether the email passes regular expression validation |
| `gibberish` | boolean | Whether the email appears to be auto-generated (e.g., [e65rc109q@company.com](mailto:e65rc109q@company.com)) |
| `disposable` | boolean | Whether the email is from a disposable email service |
| `webmail` | boolean | Whether the email is from a webmail provider (e.g., Gmail) |
| `mx_records` | boolean | Whether MX records exist for the domain |
| `smtp_server` | boolean | Whether connection to the SMTP server was successful |
| `smtp_check` | boolean | Whether the email address doesn't bounce |
| `accept_all` | boolean | Whether the server accepts all email addresses (may cause false positives) |
| `block` | boolean | Whether the domain is blocking verification (validity could not be determined) |
| `status` | string | Verification status: valid, invalid, accept\_all, webmail, disposable, unknown, or blocked |
### Hunter Companies Find [#hunter-companies-find]
Enriches company data using domain name.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------ |
| `domain` | string | Yes | Domain to find company data for (e.g., "stripe.com", "company.io") |
| `apiKey` | string | Yes | Hunter.io API Key |
#### Output [#output-4]
| Parameter | Type | Description |
| -------------- | ------ | ---------------------------------------- |
| `name` | string | Company name |
| `domain` | string | Company domain |
| `description` | string | Company description |
| `industry` | string | Industry classification |
| `sector` | string | Business sector |
| `size` | string | Employee headcount range (e.g., "11-50") |
| `founded_year` | number | Year founded |
| `location` | string | Headquarters location (formatted) |
| `country` | string | Country (full name) |
| `country_code` | string | ISO 3166-1 alpha-2 country code |
| `state` | string | State/province |
| `city` | string | City |
| `linkedin` | string | LinkedIn handle (e.g., company/hunterio) |
| `twitter` | string | Twitter handle |
| `facebook` | string | Facebook handle |
| `logo` | string | Company logo URL |
| `phone` | string | Company phone number |
| `tech` | array | Technologies used by the company |
### Hunter Email Count [#hunter-email-count]
Returns the total number of email addresses found for a domain or company.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------------------------------------------------- |
| `domain` | string | No | Domain to count emails for (e.g., "stripe.com"). Required if company not provided |
| `company` | string | No | Company name to count emails for (e.g., "Stripe", "Acme Inc"). Required if domain not provided |
| `type` | string | No | Filter for personal or generic emails only (e.g., "personal", "generic", "all") |
| `apiKey` | string | Yes | Hunter.io API Key |
#### Output [#output-5]
| Parameter | Type | Description |
| ----------------- | ------ | -------------------------------------------------------------------- |
| `department` | object | Email count breakdown by department |
| ↳ `executive` | number | Number of executive department emails |
| ↳ `it` | number | Number of IT department emails |
| ↳ `finance` | number | Number of finance department emails |
| ↳ `management` | number | Number of management department emails |
| ↳ `sales` | number | Number of sales department emails |
| ↳ `legal` | number | Number of legal department emails |
| ↳ `support` | number | Number of support department emails |
| ↳ `hr` | number | Number of HR department emails |
| ↳ `marketing` | number | Number of marketing department emails |
| ↳ `communication` | number | Number of communication department emails |
| ↳ `education` | number | Number of education department emails |
| ↳ `design` | number | Number of design department emails |
| ↳ `health` | number | Number of health department emails |
| ↳ `operations` | number | Number of operations department emails |
| `seniority` | object | Email count breakdown by seniority level |
| ↳ `junior` | number | Number of junior-level emails |
| ↳ `senior` | number | Number of senior-level emails |
| ↳ `executive` | number | Number of executive-level emails |
| `total` | number | Total number of email addresses found |
| `personal_emails` | number | Number of personal email addresses (individual employees) |
| `generic_emails` | number | Number of generic/role-based email addresses (e.g., contact@, info@) |
---
# AWS IAM (/integrations/iam)
{/* MANUAL-CONTENT-START:intro */}
[AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/) is a web service that helps you securely control access to AWS resources. IAM lets you manage permissions that control which AWS resources users, groups, and roles can access.
With AWS IAM, you can:
* **Manage users**: Create and manage IAM users, assign them individual security credentials, and grant them permissions to access AWS services and resources
* **Create roles**: Define IAM roles with specific permissions that can be assumed by users, services, or applications for temporary access
* **Attach policies**: Assign managed policies to users and roles to define what actions they can perform on which resources
* **Organize with groups**: Create IAM groups to manage permissions for collections of users, simplifying access management at scale
* **Control access keys**: Generate and manage programmatic access key pairs for API and CLI access to AWS services
In Sim, the AWS IAM integration allows your workflows to automate identity management tasks such as provisioning new users, assigning roles and permissions, managing group memberships, and rotating access keys. This is particularly useful for onboarding automation, security compliance workflows, access reviews, and incident response — enabling your agents to manage AWS access control programmatically.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate AWS Identity and Access Management into your workflow. Create and manage users, roles, policies, groups, and access keys.
## Actions [#actions]
### IAM List Users [#iam-list-users]
List IAM users in your AWS account
#### Input [#input]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `pathPrefix` | string | No | Path prefix to filter users (e.g., /division\_abc/) |
| `maxItems` | number | No | Maximum number of users to return (1-1000, default 100) |
| `marker` | string | No | Pagination marker from a previous request |
#### Output [#output]
| Parameter | Type | Description |
| ------------- | ------- | ------------------------------------------------------------- |
| `users` | json | List of IAM users with userName, userId, arn, path, and dates |
| `isTruncated` | boolean | Whether there are more results available |
| `marker` | string | Pagination marker for the next page of results |
| `count` | number | Number of users returned |
### IAM Get User [#iam-get-user]
Get detailed information about an IAM user
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------------------------------------ |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `userName` | string | No | The name of the IAM user to retrieve (defaults to the caller if omitted) |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------------------ | ------ | -------------------------------------------- |
| `userName` | string | The name of the user |
| `userId` | string | The unique ID of the user |
| `arn` | string | The ARN of the user |
| `path` | string | The path to the user |
| `createDate` | string | Date the user was created |
| `passwordLastUsed` | string | Date the password was last used |
| `permissionsBoundaryArn` | string | ARN of the permissions boundary policy |
| `tags` | json | Tags attached to the user (key, value pairs) |
### IAM Create User [#iam-create-user]
Create a new IAM user
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | -------------------------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `userName` | string | Yes | Name for the new IAM user (1-64 characters) |
| `path` | string | No | Path for the user (e.g., /division\_abc/), defaults to / |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------ | ------ | --------------------------------- |
| `message` | string | Operation status message |
| `userName` | string | The name of the created user |
| `userId` | string | The unique ID of the created user |
| `arn` | string | The ARN of the created user |
| `path` | string | The path of the created user |
| `createDate` | string | Date the user was created |
### IAM Delete User [#iam-delete-user]
Delete an IAM user
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `userName` | string | Yes | The name of the IAM user to delete |
#### Output [#output-3]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### IAM List Roles [#iam-list-roles]
List IAM roles in your AWS account
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `pathPrefix` | string | No | Path prefix to filter roles (e.g., /application/) |
| `maxItems` | number | No | Maximum number of roles to return (1-1000, default 100) |
| `marker` | string | No | Pagination marker from a previous request |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------- | ------- | ------------------------------------------------------------- |
| `roles` | json | List of IAM roles with roleName, roleId, arn, path, and dates |
| `isTruncated` | boolean | Whether there are more results available |
| `marker` | string | Pagination marker for the next page of results |
| `count` | number | Number of roles returned |
### IAM Get Role [#iam-get-role]
Get detailed information about an IAM role
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------ |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `roleName` | string | Yes | The name of the IAM role to retrieve |
#### Output [#output-5]
| Parameter | Type | Description |
| -------------------------- | ------ | --------------------------------------- |
| `roleName` | string | The name of the role |
| `roleId` | string | The unique ID of the role |
| `arn` | string | The ARN of the role |
| `path` | string | The path to the role |
| `createDate` | string | Date the role was created |
| `description` | string | Description of the role |
| `maxSessionDuration` | number | Maximum session duration in seconds |
| `assumeRolePolicyDocument` | string | The trust policy document (JSON) |
| `roleLastUsedDate` | string | Date the role was last used |
| `roleLastUsedRegion` | string | AWS region where the role was last used |
### IAM Create Role [#iam-create-role]
Create a new IAM role with a trust policy
#### Input [#input-6]
| Parameter | Type | Required | Description |
| -------------------------- | ------ | -------- | -------------------------------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `roleName` | string | Yes | Name for the new IAM role (1-64 characters) |
| `assumeRolePolicyDocument` | string | Yes | Trust policy JSON specifying who can assume this role |
| `description` | string | No | Description of the role |
| `path` | string | No | Path for the role (e.g., /application/), defaults to / |
| `maxSessionDuration` | number | No | Maximum session duration in seconds (3600-43200, default 3600) |
#### Output [#output-6]
| Parameter | Type | Description |
| ------------ | ------ | --------------------------------- |
| `message` | string | Operation status message |
| `roleName` | string | The name of the created role |
| `roleId` | string | The unique ID of the created role |
| `arn` | string | The ARN of the created role |
| `path` | string | The path of the created role |
| `createDate` | string | Date the role was created |
### IAM Delete Role [#iam-delete-role]
Delete an IAM role
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `roleName` | string | Yes | The name of the IAM role to delete |
#### Output [#output-7]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### IAM Attach User Policy [#iam-attach-user-policy]
Attach a managed policy to an IAM user
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | --------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `userName` | string | Yes | The name of the IAM user |
| `policyArn` | string | Yes | The ARN of the managed policy to attach |
#### Output [#output-8]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### IAM Detach User Policy [#iam-detach-user-policy]
Remove a managed policy from an IAM user
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | --------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `userName` | string | Yes | The name of the IAM user |
| `policyArn` | string | Yes | The ARN of the managed policy to detach |
#### Output [#output-9]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### IAM Attach Role Policy [#iam-attach-role-policy]
Attach a managed policy to an IAM role
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | --------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `roleName` | string | Yes | The name of the IAM role |
| `policyArn` | string | Yes | The ARN of the managed policy to attach |
#### Output [#output-10]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### IAM Detach Role Policy [#iam-detach-role-policy]
Remove a managed policy from an IAM role
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | --------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `roleName` | string | Yes | The name of the IAM role |
| `policyArn` | string | Yes | The ARN of the managed policy to detach |
#### Output [#output-11]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### IAM List Policies [#iam-list-policies]
List managed IAM policies
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | -------------------------------------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `scope` | string | No | Filter by scope: All, AWS (AWS-managed), or Local (customer-managed) |
| `onlyAttached` | boolean | No | If true, only return policies attached to an entity |
| `pathPrefix` | string | No | Path prefix to filter policies |
| `maxItems` | number | No | Maximum number of policies to return (1-1000, default 100) |
| `marker` | string | No | Pagination marker from a previous request |
#### Output [#output-12]
| Parameter | Type | Description |
| ------------- | ------- | ----------------------------------------------------------------- |
| `policies` | json | List of policies with policyName, arn, attachmentCount, and dates |
| `isTruncated` | boolean | Whether there are more results available |
| `marker` | string | Pagination marker for the next page of results |
| `count` | number | Number of policies returned |
### IAM Create Access Key [#iam-create-access-key]
Create a new access key pair for an IAM user
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `userName` | string | No | The IAM user to create the key for (defaults to current user) |
#### Output [#output-13]
| Parameter | Type | Description |
| ----------------- | ------ | ------------------------------------------- |
| `message` | string | Operation status message |
| `accessKeyId` | string | The new access key ID |
| `secretAccessKey` | string | The new secret access key (only shown once) |
| `userName` | string | The user the key was created for |
| `status` | string | Status of the access key (Active) |
| `createDate` | string | Date the key was created |
### IAM Delete Access Key [#iam-delete-access-key]
Delete an access key pair for an IAM user
#### Input [#input-14]
| Parameter | Type | Required | Description |
| --------------------- | ------ | -------- | ----------------------------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `accessKeyIdToDelete` | string | Yes | The access key ID to delete |
| `userName` | string | No | The IAM user whose key to delete (defaults to current user) |
#### Output [#output-14]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### IAM List Groups [#iam-list-groups]
List IAM groups in your AWS account
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | -------------------------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `pathPrefix` | string | No | Path prefix to filter groups |
| `maxItems` | number | No | Maximum number of groups to return (1-1000, default 100) |
| `marker` | string | No | Pagination marker from a previous request |
#### Output [#output-15]
| Parameter | Type | Description |
| ------------- | ------- | --------------------------------------------------------- |
| `groups` | json | List of IAM groups with groupName, groupId, arn, and path |
| `isTruncated` | boolean | Whether there are more results available |
| `marker` | string | Pagination marker for the next page of results |
| `count` | number | Number of groups returned |
### IAM Add User to Group [#iam-add-user-to-group]
Add an IAM user to a group
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `userName` | string | Yes | The name of the IAM user |
| `groupName` | string | Yes | The name of the IAM group |
#### Output [#output-16]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### IAM Remove User from Group [#iam-remove-user-from-group]
Remove an IAM user from a group
#### Input [#input-17]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `userName` | string | Yes | The name of the IAM user |
| `groupName` | string | Yes | The name of the IAM group |
#### Output [#output-17]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### IAM List Attached Role Policies [#iam-list-attached-role-policies]
List all managed policies attached to an IAM role
#### Input [#input-18]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `roleName` | string | Yes | Name of the IAM role |
| `pathPrefix` | string | No | Path prefix to filter policies (e.g., /application/) |
| `maxItems` | number | No | Maximum number of policies to return (1-1000) |
| `marker` | string | No | Pagination marker from a previous request |
#### Output [#output-18]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------------------- |
| `attachedPolicies` | json | List of attached policies with policyName and policyArn |
| `isTruncated` | boolean | Whether there are more results available |
| `marker` | string | Pagination marker for the next page of results |
| `count` | number | Number of attached policies returned |
### IAM List Attached User Policies [#iam-list-attached-user-policies]
List all managed policies attached to an IAM user
#### Input [#input-19]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `userName` | string | Yes | Name of the IAM user |
| `pathPrefix` | string | No | Path prefix to filter policies (e.g., /application/) |
| `maxItems` | number | No | Maximum number of policies to return (1-1000) |
| `marker` | string | No | Pagination marker from a previous request |
#### Output [#output-19]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------------------- |
| `attachedPolicies` | json | List of attached policies with policyName and policyArn |
| `isTruncated` | boolean | Whether there are more results available |
| `marker` | string | Pagination marker for the next page of results |
| `count` | number | Number of attached policies returned |
### IAM Simulate Principal Policy [#iam-simulate-principal-policy]
Simulate whether a user, role, or group is allowed to perform specific AWS actions — useful for pre-flight access checks
#### Input [#input-20]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------ |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `policySourceArn` | string | Yes | ARN of the user, group, or role to simulate (e.g., arn:aws:iam::123456789012:user/alice) |
| `actionNames` | string | Yes | Comma-separated list of AWS actions to simulate (e.g., s3:GetObject,ec2:DescribeInstances) |
| `resourceArns` | string | No | Comma-separated list of resource ARNs to simulate against (defaults to \* if not provided) |
| `maxResults` | number | No | Maximum number of simulation results to return (1-1000) |
| `marker` | string | No | Pagination marker from a previous request |
#### Output [#output-20]
| Parameter | Type | Description |
| ------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `evaluationResults` | json | Simulation results per action: evalActionName, evalResourceName, evalDecision (allowed/explicitDeny/implicitDeny), matchedStatements (sourcePolicyId, sourcePolicyType), missingContextValues |
| `isTruncated` | boolean | Whether there are more results available |
| `marker` | string | Pagination marker for the next page of results |
| `count` | number | Number of evaluation results returned |
---
# Icypeas (/integrations/icypeas)
{/* MANUAL-CONTENT-START:intro */}
[Icypeas](https://icypeas.com/) is a B2B prospecting platform for finding and verifying professional email addresses at scale, with results returned asynchronously via polling.
With Icypeas, you can:
* **Find professional emails:** Resolve a likely professional email from a person's name and their company domain.
* **Verify existing emails:** Check whether an email address is valid and deliverable before adding it to your outreach.
In Sim, the Icypeas integration lets your agents find and verify professional emails inside a workflow — automating lead enrichment and keeping outreach lists accurate without manual lookups.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Icypeas to find a professional email address from a name and company domain, or verify whether an existing email is valid and deliverable. Results are returned asynchronously via polling.
## Actions [#actions]
### Icypeas Find Email [#icypeas-find-email]
Find a professional email address from a first name, last name, and company domain or name. Submits the search and polls until a result is available. Costs 1 credit per found email ([https://www.icypeas.com/pricing](https://www.icypeas.com/pricing)).
#### Input [#input]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | --------------------------------------------------------------------- |
| `apiKey` | string | Yes | Icypeas API key |
| `firstname` | string | No | Target person's first name |
| `lastname` | string | No | Target person's last name |
| `domainOrCompany` | string | Yes | Target company domain (e.g. stripe.com) or company name (e.g. Stripe) |
#### Output [#output]
| Parameter | Type | Description |
| ----------- | ------ | ----------------------------------------------------------------------------------------------------------------------------- |
| `searchId` | string | Icypeas internal search ID |
| `status` | string | Terminal search status: FOUND \| DEBITED \| NOT\_FOUND \| DEBITED\_NOT\_FOUND \| BAD\_INPUT \| INSUFFICIENT\_FUNDS \| ABORTED |
| `email` | string | Email address found or verified |
| `item` | json | Full raw item object returned by the Icypeas results endpoint |
| `firstname` | string | Found person's first name |
| `lastname` | string | Found person's last name |
### Icypeas Verify Email [#icypeas-verify-email]
Verify whether an email address is valid and deliverable. Submits the verification and polls until a result is available. Costs 0.1 credit per verification ([https://www.icypeas.com/pricing](https://www.icypeas.com/pricing)).
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Icypeas API key |
| `email` | string | Yes | Email address to verify (e.g. [john@stripe.com](mailto:john@stripe.com)) |
#### Output [#output-1]
| Parameter | Type | Description |
| ---------- | ------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `searchId` | string | Icypeas internal search ID |
| `status` | string | Terminal search status: FOUND \| DEBITED \| NOT\_FOUND \| DEBITED\_NOT\_FOUND \| BAD\_INPUT \| INSUFFICIENT\_FUNDS \| ABORTED |
| `email` | string | Email address found or verified |
| `item` | json | Full raw item object returned by the Icypeas results endpoint |
| `valid` | boolean | Whether the email is valid/deliverable (true for FOUND/DEBITED status) |
---
# AWS Identity Center (/integrations/identity_center)
{/* MANUAL-CONTENT-START:intro */}
[AWS IAM Identity Center](https://aws.amazon.com/iam/identity-center/) (formerly AWS Single Sign-On) is the recommended service for managing workforce access to multiple AWS accounts and applications. It provides a central place to assign users and groups temporary, permission-scoped access to AWS accounts using permission sets — without creating long-lived IAM credentials.
With AWS IAM Identity Center, you can:
* **Provision account assignments**: Grant a user or group access to a specific AWS account with a specific permission set — the core primitive of temporary elevated access
* **Revoke access on demand**: Delete account assignments to immediately remove elevated permissions when they are no longer needed
* **Look up users by email**: Resolve a federated identity (email address) to an Identity Store user ID for programmatic access provisioning
* **List permission sets**: Enumerate the available permission sets (e.g., ReadOnly, PowerUser, AdministratorAccess) defined in your Identity Center instance
* **Monitor assignment status**: Poll the provisioning status of create/delete operations, which are asynchronous in AWS
* **List accounts in your organization**: Enumerate all AWS accounts in your AWS Organizations structure to populate access request dropdowns
* **Manage groups**: List groups and resolve group IDs by display name for group-based access grants
In Sim, the AWS Identity Center integration is designed to power **TEAM (Temporary Elevated Access Management)** workflows — automated pipelines where users request elevated access, approvers approve or deny it, access is provisioned with a time limit, and auto-revocation removes it when the window expires. This replaces manual console-based access management with auditable, agent-driven workflows that integrate with Slack, email, ticketing systems, and CloudTrail for full traceability.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Provision and revoke temporary access to AWS accounts via IAM Identity Center (SSO). Assign permission sets to users or groups, look up users by email, and list accounts and permission sets for access request workflows.
## Actions [#actions]
### Identity Center List Instances [#identity-center-list-instances]
List all AWS IAM Identity Center instances in your account
#### Input [#input]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | --------------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `maxResults` | number | No | Maximum number of instances to return (1-100) |
| `nextToken` | string | No | Pagination token from a previous request |
#### Output [#output]
| Parameter | Type | Description |
| ----------- | ------ | ----------------------------------------------------------------------------------------------- |
| `instances` | json | List of Identity Center instances with instanceArn, identityStoreId, name, status, statusReason |
| `nextToken` | string | Pagination token for the next page of results |
| `count` | number | Number of instances returned |
### Identity Center List Accounts [#identity-center-list-accounts]
List all AWS accounts in your organization
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `maxResults` | number | No | Maximum number of accounts to return |
| `nextToken` | string | No | Pagination token from a previous request |
#### Output [#output-1]
| Parameter | Type | Description |
| ----------- | ------ | ------------------------------------------------------ |
| `accounts` | json | List of AWS accounts with id, arn, name, email, status |
| `nextToken` | string | Pagination token for the next page of results |
| `count` | number | Number of accounts returned |
### Identity Center Describe Account [#identity-center-describe-account]
Retrieve details about a specific AWS account by its ID
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `accountId` | string | Yes | AWS account ID to describe |
#### Output [#output-2]
| Parameter | Type | Description |
| ----------------- | ------ | ---------------------------------------- |
| `id` | string | AWS account ID |
| `arn` | string | AWS account ARN |
| `name` | string | Account name |
| `email` | string | Root email address of the account |
| `status` | string | Account status (ACTIVE, SUSPENDED, etc.) |
| `joinedTimestamp` | string | Date the account joined the organization |
### Identity Center List Permission Sets [#identity-center-list-permission-sets]
List all permission sets defined in an IAM Identity Center instance
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `instanceArn` | string | Yes | ARN of the Identity Center instance |
| `maxResults` | number | No | Maximum number of permission sets to return |
| `nextToken` | string | No | Pagination token from a previous request |
#### Output [#output-3]
| Parameter | Type | Description |
| ---------------- | ------ | --------------------------------------------------------------------------------- |
| `permissionSets` | json | List of permission sets with permissionSetArn, name, description, sessionDuration |
| `nextToken` | string | Pagination token for the next page of results |
| `count` | number | Number of permission sets returned |
### Identity Center Get User [#identity-center-get-user]
Look up a user in the Identity Store by email address
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ----------------------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `identityStoreId` | string | Yes | Identity Store ID (from the Identity Center instance) |
| `email` | string | Yes | Email address of the user to look up |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------- | ------ | ------------------------------------------- |
| `userId` | string | Identity Store user ID (use as principalId) |
| `userName` | string | Username in the Identity Store |
| `displayName` | string | Display name of the user |
| `email` | string | Email address of the user |
### Identity Center Get Group [#identity-center-get-group]
Look up a group in the Identity Store by display name
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ----------------------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `identityStoreId` | string | Yes | Identity Store ID (from the Identity Center instance) |
| `displayName` | string | Yes | Display name of the group to look up |
#### Output [#output-5]
| Parameter | Type | Description |
| ------------- | ------ | -------------------------------------------- |
| `groupId` | string | Identity Store group ID (use as principalId) |
| `displayName` | string | Display name of the group |
| `description` | string | Group description |
### Identity Center List Groups [#identity-center-list-groups]
List all groups in the Identity Store
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ----------------------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `identityStoreId` | string | Yes | Identity Store ID (from the Identity Center instance) |
| `maxResults` | number | No | Maximum number of groups to return |
| `nextToken` | string | No | Pagination token from a previous request |
#### Output [#output-6]
| Parameter | Type | Description |
| ----------- | ------ | ----------------------------------------------------- |
| `groups` | json | List of groups with groupId, displayName, description |
| `nextToken` | string | Pagination token for the next page of results |
| `count` | number | Number of groups returned |
### Identity Center Create Account Assignment [#identity-center-create-account-assignment]
Grant a user or group access to an AWS account via a permission set (temporary elevated access)
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | -------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `instanceArn` | string | Yes | ARN of the Identity Center instance |
| `accountId` | string | Yes | AWS account ID to grant access to |
| `permissionSetArn` | string | Yes | ARN of the permission set to assign |
| `principalType` | string | Yes | Type of principal: USER or GROUP |
| `principalId` | string | Yes | Identity Store ID of the user or group |
#### Output [#output-7]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------------- |
| `message` | string | Status message |
| `status` | string | Provisioning status: IN\_PROGRESS, FAILED, or SUCCEEDED |
| `requestId` | string | Request ID to use with Check Assignment Status |
| `accountId` | string | Target AWS account ID |
| `permissionSetArn` | string | Permission set ARN |
| `principalType` | string | Principal type (USER or GROUP) |
| `principalId` | string | Principal ID |
| `failureReason` | string | Reason for failure if status is FAILED |
| `createdDate` | string | Date the request was created |
### Identity Center Delete Account Assignment [#identity-center-delete-account-assignment]
Revoke a user or group access to an AWS account by removing a permission set assignment
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | -------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `instanceArn` | string | Yes | ARN of the Identity Center instance |
| `accountId` | string | Yes | AWS account ID to revoke access from |
| `permissionSetArn` | string | Yes | ARN of the permission set to remove |
| `principalType` | string | Yes | Type of principal: USER or GROUP |
| `principalId` | string | Yes | Identity Store ID of the user or group |
#### Output [#output-8]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------------------------------------- |
| `message` | string | Status message |
| `status` | string | Deprovisioning status: IN\_PROGRESS, FAILED, or SUCCEEDED |
| `requestId` | string | Request ID to use with Check Assignment Status |
| `accountId` | string | Target AWS account ID |
| `permissionSetArn` | string | Permission set ARN |
| `principalType` | string | Principal type (USER or GROUP) |
| `principalId` | string | Principal ID |
| `failureReason` | string | Reason for failure if status is FAILED |
| `createdDate` | string | Date the request was created |
### Identity Center Check Assignment Status [#identity-center-check-assignment-status]
Check the provisioning status of an account assignment creation request
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------------------------ |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `instanceArn` | string | Yes | ARN of the Identity Center instance |
| `requestId` | string | Yes | Request ID returned from Create or Delete Account Assignment |
#### Output [#output-9]
| Parameter | Type | Description |
| ------------------ | ------ | -------------------------------------------------- |
| `message` | string | Human-readable status message |
| `status` | string | Current status: IN\_PROGRESS, FAILED, or SUCCEEDED |
| `requestId` | string | The request ID that was checked |
| `accountId` | string | Target AWS account ID |
| `permissionSetArn` | string | Permission set ARN |
| `principalType` | string | Principal type (USER or GROUP) |
| `principalId` | string | Principal ID |
| `failureReason` | string | Reason for failure if status is FAILED |
| `createdDate` | string | Date the request was created |
### Identity Center Check Assignment Deletion Status [#identity-center-check-assignment-deletion-status]
Check the deprovisioning status of an account assignment deletion request
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | -------------------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `instanceArn` | string | Yes | ARN of the Identity Center instance |
| `requestId` | string | Yes | Request ID returned from Delete Account Assignment |
#### Output [#output-10]
| Parameter | Type | Description |
| ------------------ | ------ | ----------------------------------------------------------- |
| `message` | string | Human-readable status message |
| `status` | string | Current deletion status: IN\_PROGRESS, FAILED, or SUCCEEDED |
| `requestId` | string | The deletion request ID that was checked |
| `accountId` | string | Target AWS account ID |
| `permissionSetArn` | string | Permission set ARN |
| `principalType` | string | Principal type (USER or GROUP) |
| `principalId` | string | Principal ID |
| `failureReason` | string | Reason for failure if status is FAILED |
| `createdDate` | string | Date the request was created |
### Identity Center List Account Assignments [#identity-center-list-account-assignments]
List all account assignments for a specific user or group across all accounts
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------------------- |
| `region` | string | Yes | AWS region (e.g., us-east-1) |
| `accessKeyId` | string | Yes | AWS access key ID |
| `secretAccessKey` | string | Yes | AWS secret access key |
| `instanceArn` | string | Yes | ARN of the Identity Center instance |
| `principalId` | string | Yes | Identity Store ID of the user or group |
| `principalType` | string | Yes | Type of principal: USER or GROUP |
| `maxResults` | number | No | Maximum number of assignments to return |
| `nextToken` | string | No | Pagination token from a previous request |
#### Output [#output-11]
| Parameter | Type | Description |
| ------------- | ------ | ---------------------------------------------------------------------------------------- |
| `assignments` | json | List of account assignments with accountId, permissionSetArn, principalType, principalId |
| `nextToken` | string | Pagination token for the next page of results |
| `count` | number | Number of assignments returned |
---
# IMAP (/integrations/imap)
{/* MANUAL-CONTENT-START:intro */}
The IMAP Email trigger allows your Sim workflows to start automatically whenever a new email is received in any mailbox that supports the IMAP protocol. This works with Gmail, Outlook, Yahoo, and most other email providers.
With the IMAP trigger, you can:
* **Automate email processing**: Start workflows in real time when new messages arrive in your inbox.
* **Filter by sender, subject, or folder**: Configure your trigger to react only to emails that match certain conditions.
* **Extract and process attachments**: Automatically download and use file attachments in your automated flows.
* **Parse and use email content**: Access the subject, sender, recipients, full body, and other metadata in downstream workflow steps.
* **Integrate with any email provider**: Works with any service that provides standard IMAP access, without vendor lock-in.
* **Trigger on unread, flagged, or custom criteria**: Set up advanced filters for the kinds of emails that start your workflows.
With Sim, the IMAP integration gives you the power to turn email into an actionable source of automation. Respond to customer inquiries, process notifications, kick off data pipelines, and more—directly from your email inbox, with no manual intervention.
{/* MANUAL-CONTENT-END */}
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
These run on a schedule (**polling-based**) — they check for new data rather than receiving push notifications.
### IMAP Email Trigger [#imap-email-trigger]
Triggers when new emails are received via IMAP (works with any email provider)
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| -------------------- | ------- | -------- | --------------------------------------------------------------------------------------- |
| `host` | string | Yes | IMAP server hostname (e.g., imap.gmail.com, outlook.office365.com) |
| `port` | string | Yes | IMAP port (993 for SSL/TLS, 143 for STARTTLS) |
| `secure` | boolean | No | Enable SSL/TLS encryption (recommended for port 993) |
| `username` | string | Yes | Email address or username for authentication |
| `password` | string | Yes | Password or app-specific password (for Gmail, use an App Password) |
| `mailbox` | string | No | Choose which mailbox/folder(s) to monitor for new emails. Leave empty to monitor INBOX. |
| `searchCriteria` | string | No | ImapFlow search criteria as JSON object. Default: unseen messages only. |
| `markAsRead` | boolean | No | Automatically mark emails as read (SEEN) after processing |
| `includeAttachments` | boolean | No | Download and include email attachments in the trigger payload |
#### Output [#output]
| Parameter | Type | Description |
| ------------------ | ------- | ---------------------------------------------------------------------- |
| `email` | object | email output from the tool |
| ↳ `messageId` | string | RFC Message-ID header |
| ↳ `subject` | string | Email subject line |
| ↳ `from` | string | Sender email address |
| ↳ `to` | string | Recipient email address |
| ↳ `cc` | string | CC recipients |
| ↳ `date` | string | Email date in ISO format |
| ↳ `bodyText` | string | Plain text email body |
| ↳ `bodyHtml` | string | HTML email body |
| ↳ `mailbox` | string | Mailbox/folder where email was received |
| ↳ `hasAttachments` | boolean | Whether email has attachments |
| ↳ `attachments` | file\[] | Array of email attachments as files (if includeAttachments is enabled) |
| `timestamp` | string | Event timestamp |
---
# incident.io (/integrations/incidentio)
{/* MANUAL-CONTENT-START:intro */}
Supercharge your incident management with [incident.io](https://incident.io) – the leading platform for orchestrating incidents, streamlining response processes, and tracking action items all in one place. Seamlessly integrate incident.io into your automated workflows to take command of incident creation, real-time collaboration, follow-ups, scheduling, escalations, and much more.
With the incident.io tool, you can:
* **List and search incidents**: Quickly retrieve a list of ongoing or historical incidents, complete with metadata such as severity, status, and timestamps, using `incidentio_incidents_list`.
* **Create new incidents**: Trigger new incident creation programmatically via `incidentio_incidents_create`, specifying severity, name, type, and custom details to ensure nothing slows your response down.
* **Automate incident follow-ups**: Leverage incident.io’s powerful automation to ensure important action items and learnings aren't missed, helping teams resolve issues and improve processes.
* **Customize workflows**: Integrate bespoke incident types, severities, and custom fields tailored to your organization’s needs.
* **Enforce best practices with schedules & escalations**: Streamline on-call and incident management by automatically assigning, notifying, and escalating as situations evolve.
incident.io empowers modern organizations to respond faster, coordinate teams, and capture learnings for continuous improvement. Whether you manage SRE, DevOps, Security, or IT incidents, incident.io brings centralized, best-in-class incident response programmatically to your agent workflows.
**Key operations available**:
* `incidentio_incidents_list`: List, paginate and filter incidents with full detail.
* `incidentio_incidents_create`: Programmatically open new incidents with custom attributes and control over duplication (idempotency).
* ...and more to come!
Enhance your reliability, accountability, and operational excellence by integrating incident.io with your workflow automations today.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate incident.io into the workflow. Manage incidents, actions, follow-ups, workflows, schedules, escalations, custom fields, and more.
## Actions [#actions]
### incident.io Incidents List [#incidentio-incidents-list]
List incidents from incident.io. Returns a list of incidents with their details including severity, status, and timestamps.
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `page_size` | number | No | Number of incidents to return per page (e.g., 10, 25, 50). Default: 25 |
| `after` | string | No | Pagination cursor to fetch the next page of results (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
| `sort_by` | string | No | Sort order for incidents: created\_at\_newest\_first or created\_at\_oldest\_first |
| `filter_mode` | string | No | How to combine filters: all or any |
#### Output [#output]
| Parameter | Type | Description |
| ---------------------- | ------- | ------------------------------------------------------- |
| `incidents` | array | List of incidents |
| ↳ `id` | string | Incident ID |
| ↳ `name` | string | Incident name/title |
| ↳ `summary` | string | Incident summary |
| ↳ `description` | string | Incident description |
| ↳ `mode` | string | Incident mode (standard, retrospective, test) |
| ↳ `call_url` | string | Video call URL |
| ↳ `severity` | object | Incident severity |
| ↳ `id` | string | Severity ID |
| ↳ `name` | string | Severity name (e.g., Critical, Major, Minor) |
| ↳ `description` | string | Severity description |
| ↳ `rank` | number | Severity rank (lower = more severe) |
| ↳ `status` | object | Current incident status |
| ↳ `id` | string | Status ID |
| ↳ `name` | string | Status name |
| ↳ `description` | string | Status description |
| ↳ `category` | string | Status category (triage, active, post-incident, closed) |
| ↳ `incident_type` | object | Incident type |
| ↳ `id` | string | Incident type ID |
| ↳ `name` | string | Incident type name |
| ↳ `description` | string | Incident type description |
| ↳ `is_default` | boolean | Whether this is the default incident type |
| ↳ `created_at` | string | When the incident was created (ISO 8601) |
| ↳ `updated_at` | string | When the incident was last updated (ISO 8601) |
| ↳ `incident_url` | string | URL to the incident page |
| ↳ `slack_channel_id` | string | Slack channel ID |
| ↳ `slack_channel_name` | string | Slack channel name |
| ↳ `visibility` | string | Incident visibility (public, private) |
| `pagination_meta` | object | Pagination metadata |
| ↳ `after` | string | Cursor for next page |
| ↳ `page_size` | number | Number of items per page |
| ↳ `total_record_count` | number | Total number of records |
### incident.io Incidents Create [#incidentio-incidents-create]
Create a new incident in incident.io. Requires idempotency\_key, severity\_id, and visibility. Optionally accepts name, summary, type, and status.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `idempotency_key` | string | Yes | Unique identifier to prevent duplicate incident creation. Use a UUID or unique string. |
| `name` | string | No | Name of the incident (e.g., "Database connection issues") |
| `summary` | string | No | Brief summary of the incident (e.g., "Intermittent connection failures to primary database") |
| `severity_id` | string | Yes | ID of the severity level (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
| `incident_type_id` | string | No | ID of the incident type |
| `incident_status_id` | string | No | ID of the initial incident status |
| `visibility` | string | Yes | Visibility of the incident: "public" or "private" (required) |
#### Output [#output-1]
| Parameter | Type | Description |
| ---------------------- | ------ | --------------------------------------------- |
| `incident` | object | The created incident object |
| ↳ `id` | string | Incident ID |
| ↳ `name` | string | Incident name |
| ↳ `summary` | string | Brief summary of the incident |
| ↳ `description` | string | Detailed description of the incident |
| ↳ `mode` | string | Incident mode (e.g., standard, retrospective) |
| ↳ `call_url` | string | URL for the incident call/bridge |
| ↳ `severity` | object | Severity of the incident |
| ↳ `id` | string | Severity ID |
| ↳ `name` | string | Severity name |
| ↳ `rank` | number | Severity rank |
| ↳ `status` | object | Current status of the incident |
| ↳ `id` | string | Status ID |
| ↳ `name` | string | Status name |
| ↳ `category` | string | Status category |
| ↳ `incident_type` | object | Type of the incident |
| ↳ `id` | string | Type ID |
| ↳ `name` | string | Type name |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `updated_at` | string | Last update timestamp |
| ↳ `incident_url` | string | URL to the incident |
| ↳ `slack_channel_id` | string | Associated Slack channel ID |
| ↳ `slack_channel_name` | string | Associated Slack channel name |
| ↳ `visibility` | string | Incident visibility |
### incident.io Incidents Show [#incidentio-incidents-show]
Retrieve detailed information about a specific incident from incident.io by its ID. Returns full incident details including custom fields and role assignments.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | ID of the incident to retrieve (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
#### Output [#output-2]
| Parameter | Type | Description |
| ----------------------------- | ------ | --------------------------------------------- |
| `incident` | object | Detailed incident information |
| ↳ `id` | string | Incident ID |
| ↳ `name` | string | Incident name |
| ↳ `summary` | string | Brief summary of the incident |
| ↳ `description` | string | Detailed description of the incident |
| ↳ `mode` | string | Incident mode (e.g., standard, retrospective) |
| ↳ `call_url` | string | URL for the incident call/bridge |
| ↳ `permalink` | string | Permanent link to the incident |
| ↳ `severity` | object | Severity of the incident |
| ↳ `id` | string | Severity ID |
| ↳ `name` | string | Severity name |
| ↳ `rank` | number | Severity rank |
| ↳ `status` | object | Current status of the incident |
| ↳ `id` | string | Status ID |
| ↳ `name` | string | Status name |
| ↳ `category` | string | Status category |
| ↳ `incident_type` | object | Type of the incident |
| ↳ `id` | string | Type ID |
| ↳ `name` | string | Type name |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `updated_at` | string | Last update timestamp |
| ↳ `incident_url` | string | URL to the incident |
| ↳ `slack_channel_id` | string | Associated Slack channel ID |
| ↳ `slack_channel_name` | string | Associated Slack channel name |
| ↳ `visibility` | string | Incident visibility |
| ↳ `custom_field_entries` | array | Custom field values for the incident |
| ↳ `incident_role_assignments` | array | Role assignments for the incident |
### incident.io Incidents Update [#incidentio-incidents-update]
Update an existing incident in incident.io. Can update name, summary, severity, status, or type.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ------------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | ID of the incident to update (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
| `name` | string | No | Updated name of the incident (e.g., "Database connection issues") |
| `summary` | string | No | Updated summary of the incident (e.g., "Intermittent connection failures to primary database") |
| `severity_id` | string | No | Updated severity ID for the incident (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
| `incident_status_id` | string | No | Updated status ID for the incident (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
| `incident_type_id` | string | No | Updated incident type ID |
| `notify_incident_channel` | boolean | Yes | Whether to notify the incident channel about this update |
#### Output [#output-3]
| Parameter | Type | Description |
| ---------------------- | ------ | --------------------------------------------- |
| `incident` | object | The updated incident object |
| ↳ `id` | string | Incident ID |
| ↳ `name` | string | Incident name |
| ↳ `summary` | string | Brief summary of the incident |
| ↳ `description` | string | Detailed description of the incident |
| ↳ `mode` | string | Incident mode (e.g., standard, retrospective) |
| ↳ `call_url` | string | URL for the incident call/bridge |
| ↳ `severity` | object | Severity of the incident |
| ↳ `id` | string | Severity ID |
| ↳ `name` | string | Severity name |
| ↳ `rank` | number | Severity rank |
| ↳ `status` | object | Current status of the incident |
| ↳ `id` | string | Status ID |
| ↳ `name` | string | Status name |
| ↳ `category` | string | Status category |
| ↳ `incident_type` | object | Type of the incident |
| ↳ `id` | string | Type ID |
| ↳ `name` | string | Type name |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `updated_at` | string | Last update timestamp |
| ↳ `incident_url` | string | URL to the incident |
| ↳ `slack_channel_id` | string | Associated Slack channel ID |
| ↳ `slack_channel_name` | string | Associated Slack channel name |
| ↳ `visibility` | string | Incident visibility |
### incident.io Actions List [#incidentio-actions-list]
List actions from incident.io. Optionally filter by incident ID.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | incident.io API Key |
| `incident_id` | string | No | Filter actions by incident ID (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
| `incident_mode` | string | No | Filter actions by incident mode (standard, retrospective, test, tutorial, or stream) |
#### Output [#output-4]
| Parameter | Type | Description |
| ---------------------------- | ------ | -------------------------------------------- |
| `actions` | array | List of actions |
| ↳ `id` | string | Action ID |
| ↳ `description` | string | Action description |
| ↳ `assignee` | object | Assigned user |
| ↳ `id` | string | User ID |
| ↳ `name` | string | User name |
| ↳ `email` | string | User email |
| ↳ `status` | string | Action status |
| ↳ `due_at` | string | Due date/time |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `updated_at` | string | Last update timestamp |
| ↳ `incident_id` | string | Associated incident ID |
| ↳ `creator` | object | User who created the action |
| ↳ `id` | string | User ID |
| ↳ `name` | string | User name |
| ↳ `email` | string | User email |
| ↳ `completed_at` | string | Completion timestamp |
| ↳ `external_issue_reference` | object | External issue tracking reference |
| ↳ `provider` | string | Issue tracking provider (e.g., Jira, Linear) |
| ↳ `issue_name` | string | Issue identifier |
| ↳ `issue_permalink` | string | URL to the external issue |
### incident.io Actions Show [#incidentio-actions-show]
Get detailed information about a specific action from incident.io.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | Action ID (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
#### Output [#output-5]
| Parameter | Type | Description |
| ---------------------------- | ------ | -------------------------------------------- |
| `action` | object | Action details |
| ↳ `id` | string | Action ID |
| ↳ `description` | string | Action description |
| ↳ `assignee` | object | Assigned user |
| ↳ `id` | string | User ID |
| ↳ `name` | string | User name |
| ↳ `email` | string | User email |
| ↳ `status` | string | Action status |
| ↳ `due_at` | string | Due date/time |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `updated_at` | string | Last update timestamp |
| ↳ `incident_id` | string | Associated incident ID |
| ↳ `creator` | object | User who created the action |
| ↳ `id` | string | User ID |
| ↳ `name` | string | User name |
| ↳ `email` | string | User email |
| ↳ `completed_at` | string | Completion timestamp |
| ↳ `external_issue_reference` | object | External issue tracking reference |
| ↳ `provider` | string | Issue tracking provider (e.g., Jira, Linear) |
| ↳ `issue_name` | string | Issue identifier |
| ↳ `issue_permalink` | string | URL to the external issue |
### incident.io Follow-ups List [#incidentio-follow-ups-list]
List follow-ups from incident.io. Optionally filter by incident ID.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | --------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `incident_id` | string | No | Filter follow-ups by incident ID (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
| `incident_mode` | string | No | Filter follow-ups by incident mode (standard, retrospective, test, tutorial, or stream) |
#### Output [#output-6]
| Parameter | Type | Description |
| ---------------------------- | ------ | ------------------------------------ |
| `follow_ups` | array | List of follow-ups |
| ↳ `id` | string | Follow-up ID |
| ↳ `title` | string | Follow-up title |
| ↳ `description` | string | Follow-up description |
| ↳ `assignee` | object | Assigned user |
| ↳ `id` | string | User ID |
| ↳ `name` | string | User name |
| ↳ `email` | string | User email |
| ↳ `status` | string | Follow-up status |
| ↳ `priority` | object | Follow-up priority |
| ↳ `id` | string | Priority ID |
| ↳ `name` | string | Priority name |
| ↳ `description` | string | Priority description |
| ↳ `rank` | number | Priority rank |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `updated_at` | string | Last update timestamp |
| ↳ `incident_id` | string | Associated incident ID |
| ↳ `creator` | object | User who created the follow-up |
| ↳ `id` | string | User ID |
| ↳ `name` | string | User name |
| ↳ `email` | string | User email |
| ↳ `completed_at` | string | Completion timestamp |
| ↳ `labels` | array | Labels associated with the follow-up |
| ↳ `external_issue_reference` | object | External issue tracking reference |
| ↳ `provider` | string | External provider name |
| ↳ `issue_name` | string | External issue name or ID |
| ↳ `issue_permalink` | string | Permalink to external issue |
### incident.io Follow-ups Show [#incidentio-follow-ups-show]
Get detailed information about a specific follow-up from incident.io.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | Follow-up ID (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
#### Output [#output-7]
| Parameter | Type | Description |
| ---------------------------- | ------ | ------------------------------------ |
| `follow_up` | object | Follow-up details |
| ↳ `id` | string | Follow-up ID |
| ↳ `title` | string | Follow-up title |
| ↳ `description` | string | Follow-up description |
| ↳ `assignee` | object | Assigned user |
| ↳ `id` | string | User ID |
| ↳ `name` | string | User name |
| ↳ `email` | string | User email |
| ↳ `status` | string | Follow-up status |
| ↳ `priority` | object | Follow-up priority |
| ↳ `id` | string | Priority ID |
| ↳ `name` | string | Priority name |
| ↳ `description` | string | Priority description |
| ↳ `rank` | number | Priority rank |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `updated_at` | string | Last update timestamp |
| ↳ `incident_id` | string | Associated incident ID |
| ↳ `creator` | object | User who created the follow-up |
| ↳ `id` | string | User ID |
| ↳ `name` | string | User name |
| ↳ `email` | string | User email |
| ↳ `completed_at` | string | Completion timestamp |
| ↳ `labels` | array | Labels associated with the follow-up |
| ↳ `external_issue_reference` | object | External issue tracking reference |
| ↳ `provider` | string | External provider name |
| ↳ `issue_name` | string | External issue name or ID |
| ↳ `issue_permalink` | string | Permalink to external issue |
### Incident.io Users List [#incidentio-users-list]
List all users in your Incident.io workspace. Returns user details including id, name, email, and role.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | -------------------------------------------------------------------- |
| `apiKey` | string | Yes | Incident.io API Key |
| `page_size` | number | No | Number of results to return per page (e.g., 10, 25, 50). Default: 25 |
| `after` | string | No | Pagination cursor to fetch the next page of results |
| `email` | string | No | Filter users by email address |
| `slack_user_id` | string | No | Filter users by Slack user ID |
#### Output [#output-8]
| Parameter | Type | Description |
| ---------------------- | ------ | --------------------------------- |
| `users` | array | List of users in the workspace |
| ↳ `id` | string | Unique identifier for the user |
| ↳ `name` | string | Full name of the user |
| ↳ `email` | string | Email address of the user |
| ↳ `role` | string | Role of the user in the workspace |
| `pagination_meta` | object | Pagination metadata |
| ↳ `after` | string | Cursor for next page |
| ↳ `page_size` | number | Number of items per page |
| ↳ `total_record_count` | number | Total number of records |
### Incident.io Users Show [#incidentio-users-show]
Get detailed information about a specific user in your Incident.io workspace by their ID.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Incident.io API Key |
| `id` | string | Yes | The unique identifier of the user to retrieve (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
#### Output [#output-9]
| Parameter | Type | Description |
| --------- | ------ | --------------------------------- |
| `user` | object | Details of the requested user |
| ↳ `id` | string | Unique identifier for the user |
| ↳ `name` | string | Full name of the user |
| ↳ `email` | string | Email address of the user |
| ↳ `role` | string | Role of the user in the workspace |
### incident.io Workflows List [#incidentio-workflows-list]
List all workflows in your incident.io workspace.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------- |
| `apiKey` | string | Yes | incident.io API Key |
#### Output [#output-10]
| Parameter | Type | Description |
| ------------------------------- | ------- | ------------------------------------------------- |
| `workflows` | array | List of workflows |
| ↳ `id` | string | Workflow ID |
| ↳ `name` | string | Workflow name |
| ↳ `trigger` | string | Workflow trigger |
| ↳ `once_for` | array | Fields that make the workflow run once |
| ↳ `version` | number | Workflow version |
| ↳ `expressions` | array | Workflow expressions |
| ↳ `condition_groups` | array | Workflow condition groups |
| ↳ `steps` | array | Workflow steps |
| ↳ `include_private_incidents` | boolean | Whether the workflow includes private incidents |
| ↳ `include_private_escalations` | boolean | Whether the workflow includes private escalations |
| ↳ `runs_on_incident_modes` | array | Incident modes the workflow runs on |
| ↳ `continue_on_step_error` | boolean | Whether execution continues after a step error |
| ↳ `runs_on_incidents` | string | Incident lifecycle filter |
| ↳ `state` | string | Workflow state (active, draft, disabled) |
| ↳ `delay` | object | Workflow delay configuration |
| ↳ `folder` | string | Workflow folder |
| ↳ `runs_from` | string | When the workflow runs from |
| ↳ `shortform` | string | Workflow shortform identifier |
### incident.io Workflows Create [#incidentio-workflows-create]
Create a new workflow in incident.io.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| --------------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `name` | string | Yes | Name of the workflow (e.g., "Notify on Critical Incidents") |
| `folder` | string | No | Folder to organize the workflow in |
| `state` | string | No | State of the workflow (active, draft, or disabled) |
| `trigger` | string | No | Trigger type for the workflow (e.g., "incident.updated", "incident.created") |
| `steps` | string | No | Array of workflow steps as JSON string. Example: \[\{"label": "Notify team", "name": "slack.post\_message"}] |
| `condition_groups` | string | No | Array of condition groups as JSON string to control when the workflow runs. Example: \[\{"conditions": \[\{"operation": "one\_of", "param\_bindings": \[], "subject": "incident.severity"}]}] |
| `runs_on_incidents` | string | No | When to run the workflow: "newly\_created" (only new incidents), "newly\_created\_and\_active" (new and active incidents), "active" (only active incidents), or "all" (all incidents) |
| `runs_on_incident_modes` | string | No | Array of incident modes to run on as JSON string. Example: \["standard", "retrospective"] |
| `include_private_incidents` | boolean | No | Whether to include private incidents |
| `continue_on_step_error` | boolean | No | Whether to continue executing subsequent steps if a step fails |
| `once_for` | string | No | Array of fields to ensure the workflow runs only once per unique combination of these fields, as JSON string. Example: \["incident.id"] |
| `expressions` | string | No | Array of workflow expressions as JSON string for advanced workflow logic. Example: \[\{"label": "My expression", "operations": \[]}] |
| `delay` | string | No | Delay configuration as JSON string. Example: \{"for\_seconds": 60, "conditions\_apply\_over\_delay": false} |
#### Output [#output-11]
| Parameter | Type | Description |
| ------------------------------- | ------- | ------------------------------------------------- |
| `workflow` | object | The created workflow |
| ↳ `id` | string | Workflow ID |
| ↳ `name` | string | Workflow name |
| ↳ `trigger` | string | Workflow trigger |
| ↳ `once_for` | array | Fields that make the workflow run once |
| ↳ `version` | number | Workflow version |
| ↳ `expressions` | array | Workflow expressions |
| ↳ `condition_groups` | array | Workflow condition groups |
| ↳ `steps` | array | Workflow steps |
| ↳ `include_private_incidents` | boolean | Whether the workflow includes private incidents |
| ↳ `include_private_escalations` | boolean | Whether the workflow includes private escalations |
| ↳ `runs_on_incident_modes` | array | Incident modes the workflow runs on |
| ↳ `continue_on_step_error` | boolean | Whether execution continues after a step error |
| ↳ `runs_on_incidents` | string | Incident lifecycle filter |
| ↳ `state` | string | Workflow state (active, draft, disabled) |
| ↳ `delay` | object | Workflow delay configuration |
| ↳ `folder` | string | Workflow folder |
| ↳ `runs_from` | string | When the workflow runs from |
| ↳ `shortform` | string | Workflow shortform identifier |
| `management_meta` | json | Workflow management metadata |
### incident.io Workflows Show [#incidentio-workflows-show]
Get details of a specific workflow in incident.io.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| -------------------- | ------- | -------- | -------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | The ID of the workflow to retrieve (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
| `skip_step_upgrades` | boolean | No | Skip workflow step upgrades when existing workflow step parameters changed |
#### Output [#output-12]
| Parameter | Type | Description |
| ------------------------------- | ------- | ------------------------------------------------- |
| `workflow` | object | The workflow details |
| ↳ `id` | string | Workflow ID |
| ↳ `name` | string | Workflow name |
| ↳ `trigger` | string | Workflow trigger |
| ↳ `once_for` | array | Fields that make the workflow run once |
| ↳ `version` | number | Workflow version |
| ↳ `expressions` | array | Workflow expressions |
| ↳ `condition_groups` | array | Workflow condition groups |
| ↳ `steps` | array | Workflow steps |
| ↳ `include_private_incidents` | boolean | Whether the workflow includes private incidents |
| ↳ `include_private_escalations` | boolean | Whether the workflow includes private escalations |
| ↳ `runs_on_incident_modes` | array | Incident modes the workflow runs on |
| ↳ `continue_on_step_error` | boolean | Whether execution continues after a step error |
| ↳ `runs_on_incidents` | string | Incident lifecycle filter |
| ↳ `state` | string | Workflow state (active, draft, disabled) |
| ↳ `delay` | object | Workflow delay configuration |
| ↳ `folder` | string | Workflow folder |
| ↳ `runs_from` | string | When the workflow runs from |
| ↳ `shortform` | string | Workflow shortform identifier |
| `management_meta` | json | Workflow management metadata |
### incident.io Workflows Update [#incidentio-workflows-update]
Update an existing workflow in incident.io.
#### Input [#input-13]
| Parameter | Type | Required | Description |
| --------------------------- | ------- | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | The ID of the workflow to update (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
| `name` | string | Yes | New name for the workflow (e.g., "Notify on Critical Incidents") |
| `steps` | string | Yes | Complete array of workflow steps as a JSON string |
| `condition_groups` | string | Yes | Complete array of workflow condition groups as a JSON string |
| `runs_on_incidents` | string | Yes | When to run the workflow: newly\_created, newly\_created\_and\_active, active, or all |
| `runs_on_incident_modes` | string | Yes | Complete array of incident modes to run on as a JSON string |
| `include_private_incidents` | boolean | Yes | Whether to include private incidents |
| `continue_on_step_error` | boolean | Yes | Whether to continue executing subsequent steps if a step fails |
| `once_for` | string | Yes | Complete array of fields that make the workflow run once as a JSON string |
| `expressions` | string | Yes | Complete array of workflow expressions as a JSON string |
| `state` | string | No | New state for the workflow (active, draft, or disabled) |
| `folder` | string | No | New folder for the workflow |
| `delay` | string | No | Delay configuration as a JSON string |
#### Output [#output-13]
| Parameter | Type | Description |
| ------------------------------- | ------- | ------------------------------------------------- |
| `workflow` | object | The updated workflow |
| ↳ `id` | string | Workflow ID |
| ↳ `name` | string | Workflow name |
| ↳ `trigger` | string | Workflow trigger |
| ↳ `once_for` | array | Fields that make the workflow run once |
| ↳ `version` | number | Workflow version |
| ↳ `expressions` | array | Workflow expressions |
| ↳ `condition_groups` | array | Workflow condition groups |
| ↳ `steps` | array | Workflow steps |
| ↳ `include_private_incidents` | boolean | Whether the workflow includes private incidents |
| ↳ `include_private_escalations` | boolean | Whether the workflow includes private escalations |
| ↳ `runs_on_incident_modes` | array | Incident modes the workflow runs on |
| ↳ `continue_on_step_error` | boolean | Whether execution continues after a step error |
| ↳ `runs_on_incidents` | string | Incident lifecycle filter |
| ↳ `state` | string | Workflow state (active, draft, disabled) |
| ↳ `delay` | object | Workflow delay configuration |
| ↳ `folder` | string | Workflow folder |
| ↳ `runs_from` | string | When the workflow runs from |
| ↳ `shortform` | string | Workflow shortform identifier |
| `management_meta` | json | Workflow management metadata |
### incident.io Workflows Delete [#incidentio-workflows-delete]
Delete a workflow in incident.io.
#### Input [#input-14]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | The ID of the workflow to delete (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
#### Output [#output-14]
| Parameter | Type | Description |
| --------- | ------ | --------------- |
| `message` | string | Success message |
### List Schedules [#list-schedules]
List all schedules in incident.io
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `page_size` | number | No | Number of results per page (e.g., 10, 25, 50). Default: 25 |
| `after` | string | No | Pagination cursor to fetch the next page of results (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
#### Output [#output-15]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------------------------------------------------------------------------- |
| `schedules` | array | List of schedules |
| ↳ `id` | string | The schedule ID |
| ↳ `name` | string | The schedule name |
| ↳ `timezone` | string | The schedule timezone |
| ↳ `created_at` | string | When the schedule was created |
| ↳ `updated_at` | string | When the schedule was last updated |
| ↳ `current_shifts` | array | Shifts that are ongoing right now, naming who is on call |
| ↳ `start_at` | string | When the shift starts |
| ↳ `end_at` | string | When the shift ends |
| ↳ `entry_id` | string | Schedule entry ID |
| ↳ `rotation_id` | string | Rotation ID |
| ↳ `layer_id` | string | Layer ID |
| ↳ `user` | object | The on-call user |
| ↳ `next_shifts` | array | Shifts that take over at the next changeover. Only returned when the page size is 25 or lower |
| ↳ `start_at` | string | When the shift starts |
| ↳ `end_at` | string | When the shift ends |
| ↳ `entry_id` | string | Schedule entry ID |
| ↳ `rotation_id` | string | Rotation ID |
| ↳ `layer_id` | string | Layer ID |
| ↳ `user` | object | The on-call user |
| ↳ `permalink` | string | Link to the schedule in the incident.io dashboard |
| ↳ `team_ids` | array | IDs of teams that own this schedule |
| `pagination_meta` | object | Pagination metadata |
| ↳ `after` | string | Cursor for next page |
| ↳ `page_size` | number | Number of results per page |
### Create Schedule [#create-schedule]
Create a new schedule in incident.io
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `name` | string | Yes | Name of the schedule (e.g., "Primary On-Call") |
| `timezone` | string | Yes | Timezone for the schedule (e.g., America/New\_York) |
| `config` | string | Yes | Schedule configuration as JSON string with rotations. Example: \{"rotations": \[\{"name": "Primary", "users": \[\{"id": "user\_id"}], "handover\_start\_at": "2024-01-01T09:00:00Z", "handovers": \[\{"interval": 1, "interval\_type": "weekly"}]}]} |
#### Output [#output-16]
| Parameter | Type | Description |
| -------------- | ------ | ---------------------------------- |
| `schedule` | object | The created schedule |
| ↳ `id` | string | The schedule ID |
| ↳ `name` | string | The schedule name |
| ↳ `timezone` | string | The schedule timezone |
| ↳ `created_at` | string | When the schedule was created |
| ↳ `updated_at` | string | When the schedule was last updated |
### Show Schedule [#show-schedule]
Get details of a specific schedule in incident.io
#### Input [#input-17]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | The ID of the schedule (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
#### Output [#output-17]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------------------------------------------------------------------------- |
| `schedule` | object | The schedule details |
| ↳ `id` | string | The schedule ID |
| ↳ `name` | string | The schedule name |
| ↳ `timezone` | string | The schedule timezone |
| ↳ `created_at` | string | When the schedule was created |
| ↳ `updated_at` | string | When the schedule was last updated |
| ↳ `current_shifts` | array | Shifts that are ongoing right now, naming who is on call |
| ↳ `start_at` | string | When the shift starts |
| ↳ `end_at` | string | When the shift ends |
| ↳ `entry_id` | string | Schedule entry ID |
| ↳ `rotation_id` | string | Rotation ID |
| ↳ `layer_id` | string | Layer ID |
| ↳ `user` | object | The on-call user |
| ↳ `next_shifts` | array | Shifts that take over at the next changeover. Only returned when the page size is 25 or lower |
| ↳ `start_at` | string | When the shift starts |
| ↳ `end_at` | string | When the shift ends |
| ↳ `entry_id` | string | Schedule entry ID |
| ↳ `rotation_id` | string | Rotation ID |
| ↳ `layer_id` | string | Layer ID |
| ↳ `user` | object | The on-call user |
| ↳ `permalink` | string | Link to the schedule in the incident.io dashboard |
| ↳ `team_ids` | array | IDs of teams that own this schedule |
### Update Schedule [#update-schedule]
Update an existing schedule in incident.io
#### Input [#input-18]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | The ID of the schedule to update (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
| `name` | string | No | New name for the schedule (e.g., "Primary On-Call") |
| `timezone` | string | No | New timezone for the schedule (e.g., America/New\_York) |
| `config` | string | No | Schedule configuration as JSON string with rotations. Example: \{"rotations": \[\{"name": "Primary", "users": \[\{"id": "user\_id"}], "handover\_start\_at": "2024-01-01T09:00:00Z", "handovers": \[\{"interval": 1, "interval\_type": "weekly"}]}]} |
#### Output [#output-18]
| Parameter | Type | Description |
| -------------- | ------ | ---------------------------------- |
| `schedule` | object | The updated schedule |
| ↳ `id` | string | The schedule ID |
| ↳ `name` | string | The schedule name |
| ↳ `timezone` | string | The schedule timezone |
| ↳ `created_at` | string | When the schedule was created |
| ↳ `updated_at` | string | When the schedule was last updated |
### Delete Schedule [#delete-schedule]
Delete a schedule in incident.io
#### Input [#input-19]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | The ID of the schedule to delete (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
#### Output [#output-19]
| Parameter | Type | Description |
| --------- | ------ | --------------- |
| `message` | string | Success message |
### List Escalations [#list-escalations]
List all escalation policies in incident.io
#### Input [#input-20]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `page_size` | number | No | Number of escalations to return per page |
| `after` | string | No | Pagination cursor to fetch the next page of results |
#### Output [#output-20]
| Parameter | Type | Description |
| ----------------- | ------ | ------------------------------------------- |
| `escalations` | array | List of escalation policies |
| ↳ `id` | string | The escalation policy ID |
| ↳ `name` | string | The escalation policy name |
| ↳ `created_at` | string | When the escalation policy was created |
| ↳ `updated_at` | string | When the escalation policy was last updated |
| `pagination_meta` | object | Pagination metadata |
| ↳ `after` | string | Cursor for next page |
| ↳ `page_size` | number | Number of results per page |
### Create Escalation [#create-escalation]
Create a new escalation policy in incident.io
#### Input [#input-21]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | incident.io API Key |
| `idempotency_key` | string | Yes | Unique identifier to prevent duplicate escalation creation. Use a UUID or unique string. |
| `title` | string | Yes | Title of the escalation (e.g., "Database Critical Alert") |
| `escalation_path_id` | string | No | ID of the escalation path to use (required if user\_ids not provided) |
| `user_ids` | string | No | Comma-separated list of user IDs to notify (required if escalation\_path\_id not provided) |
#### Output [#output-21]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------------- |
| `escalation` | object | The created escalation policy |
| ↳ `id` | string | The escalation policy ID |
| ↳ `name` | string | The escalation policy name |
| ↳ `created_at` | string | When the escalation policy was created |
| ↳ `updated_at` | string | When the escalation policy was last updated |
### Show Escalation [#show-escalation]
Get details of a specific escalation policy in incident.io
#### Input [#input-22]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | The ID of the escalation policy (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
#### Output [#output-22]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------------- |
| `escalation` | object | The escalation policy details |
| ↳ `id` | string | The escalation policy ID |
| ↳ `name` | string | The escalation policy name |
| ↳ `created_at` | string | When the escalation policy was created |
| ↳ `updated_at` | string | When the escalation policy was last updated |
### incident.io Custom Fields List [#incidentio-custom-fields-list]
List all custom fields from incident.io.
#### Input [#input-23]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------- |
| `apiKey` | string | Yes | incident.io API Key |
#### Output [#output-23]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------ |
| `custom_fields` | array | List of custom fields |
| ↳ `id` | string | Custom field ID |
| ↳ `name` | string | Custom field name |
| ↳ `description` | string | Custom field description |
| ↳ `field_type` | string | Custom field type |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `updated_at` | string | Last update timestamp |
### incident.io Custom Fields Create [#incidentio-custom-fields-create]
Create a new custom field in incident.io.
#### Input [#input-24]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `name` | string | Yes | Name of the custom field (e.g., "Affected Service") |
| `description` | string | Yes | Description of the custom field (required) |
| `field_type` | string | Yes | Type of the custom field (e.g., text, single\_select, multi\_select, numeric, datetime, link, user, team) |
#### Output [#output-24]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------ |
| `custom_field` | object | Created custom field |
| ↳ `id` | string | Custom field ID |
| ↳ `name` | string | Custom field name |
| ↳ `description` | string | Custom field description |
| ↳ `field_type` | string | Custom field type |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `updated_at` | string | Last update timestamp |
### incident.io Custom Fields Show [#incidentio-custom-fields-show]
Get detailed information about a specific custom field from incident.io.
#### Input [#input-25]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | Custom field ID (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
#### Output [#output-25]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------ |
| `custom_field` | object | Custom field details |
| ↳ `id` | string | Custom field ID |
| ↳ `name` | string | Custom field name |
| ↳ `description` | string | Custom field description |
| ↳ `field_type` | string | Custom field type |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `updated_at` | string | Last update timestamp |
### incident.io Custom Fields Update [#incidentio-custom-fields-update]
Update an existing custom field in incident.io.
#### Input [#input-26]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | -------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | Custom field ID (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
| `name` | string | Yes | New name for the custom field (e.g., "Affected Service") |
| `description` | string | Yes | New description for the custom field (required) |
#### Output [#output-26]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------ |
| `custom_field` | object | Updated custom field |
| ↳ `id` | string | Custom field ID |
| ↳ `name` | string | Custom field name |
| ↳ `description` | string | Custom field description |
| ↳ `field_type` | string | Custom field type |
| ↳ `created_at` | string | Creation timestamp |
| ↳ `updated_at` | string | Last update timestamp |
### incident.io Custom Fields Delete [#incidentio-custom-fields-delete]
Delete a custom field from incident.io.
#### Input [#input-27]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | Custom field ID (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
#### Output [#output-27]
| Parameter | Type | Description |
| --------- | ------ | --------------- |
| `message` | string | Success message |
### Incident.io Severities List [#incidentio-severities-list]
List all severity levels configured in your Incident.io workspace. Returns severity details including id, name, description, and rank.
#### Input [#input-28]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------- |
| `apiKey` | string | Yes | Incident.io API Key |
#### Output [#output-28]
| Parameter | Type | Description |
| --------------- | ------ | ---------------------------------------- |
| `severities` | array | List of severity levels |
| ↳ `id` | string | Unique identifier for the severity level |
| ↳ `name` | string | Name of the severity level |
| ↳ `description` | string | Description of the severity level |
| ↳ `rank` | number | Rank/order of the severity level |
### Incident.io Incident Statuses List [#incidentio-incident-statuses-list]
List all incident statuses configured in your Incident.io workspace. Returns status details including id, name, description, and category.
#### Input [#input-29]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------- |
| `apiKey` | string | Yes | Incident.io API Key |
#### Output [#output-29]
| Parameter | Type | Description |
| ------------------- | ------ | ----------------------------------------- |
| `incident_statuses` | array | List of incident statuses |
| ↳ `id` | string | Unique identifier for the incident status |
| ↳ `name` | string | Name of the incident status |
| ↳ `description` | string | Description of the incident status |
| ↳ `category` | string | Category of the incident status |
### Incident.io Incident Types List [#incidentio-incident-types-list]
List all incident types configured in your Incident.io workspace. Returns type details including id, name, description, and default flag.
#### Input [#input-30]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------- |
| `apiKey` | string | Yes | Incident.io API Key |
#### Output [#output-30]
| Parameter | Type | Description |
| ---------------- | ------- | ----------------------------------------- |
| `incident_types` | array | List of incident types |
| ↳ `id` | string | Unique identifier for the incident type |
| ↳ `name` | string | Name of the incident type |
| ↳ `description` | string | Description of the incident type |
| ↳ `is_default` | boolean | Whether this is the default incident type |
### List Incident Roles [#list-incident-roles]
List all incident roles in incident.io
#### Input [#input-31]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------- |
| `apiKey` | string | Yes | incident.io API Key |
#### Output [#output-31]
| Parameter | Type | Description |
| ---------------- | ------- | ----------------------------------- |
| `incident_roles` | array | List of incident roles |
| ↳ `id` | string | The incident role ID |
| ↳ `name` | string | The incident role name |
| ↳ `description` | string | The incident role description |
| ↳ `instructions` | string | Instructions for the role |
| ↳ `shortform` | string | Short form abbreviation of the role |
| ↳ `role_type` | string | The type of role |
| ↳ `required` | boolean | Whether the role is required |
| ↳ `created_at` | string | When the role was created |
| ↳ `updated_at` | string | When the role was last updated |
### Create Incident Role [#create-incident-role]
Create a new incident role in incident.io
#### Input [#input-32]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------ |
| `apiKey` | string | Yes | incident.io API Key |
| `name` | string | Yes | Name of the incident role (e.g., "Incident Commander") |
| `description` | string | Yes | Description of the incident role |
| `instructions` | string | Yes | Instructions for the incident role |
| `shortform` | string | Yes | Short form abbreviation for the role |
#### Output [#output-32]
| Parameter | Type | Description |
| ---------------- | ------- | ----------------------------------- |
| `incident_role` | object | The created incident role |
| ↳ `id` | string | The incident role ID |
| ↳ `name` | string | The incident role name |
| ↳ `description` | string | The incident role description |
| ↳ `instructions` | string | Instructions for the role |
| ↳ `shortform` | string | Short form abbreviation of the role |
| ↳ `role_type` | string | The type of role |
| ↳ `required` | boolean | Whether the role is required |
| ↳ `created_at` | string | When the role was created |
| ↳ `updated_at` | string | When the role was last updated |
### Show Incident Role [#show-incident-role]
Get details of a specific incident role in incident.io
#### Input [#input-33]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | The ID of the incident role (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
#### Output [#output-33]
| Parameter | Type | Description |
| ---------------- | ------- | ----------------------------------- |
| `incident_role` | object | The incident role details |
| ↳ `id` | string | The incident role ID |
| ↳ `name` | string | The incident role name |
| ↳ `description` | string | The incident role description |
| ↳ `instructions` | string | Instructions for the role |
| ↳ `shortform` | string | Short form abbreviation of the role |
| ↳ `role_type` | string | The type of role |
| ↳ `required` | boolean | Whether the role is required |
| ↳ `created_at` | string | When the role was created |
| ↳ `updated_at` | string | When the role was last updated |
### Update Incident Role [#update-incident-role]
Update an existing incident role in incident.io
#### Input [#input-34]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | -------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | The ID of the incident role to update (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
| `name` | string | Yes | Name of the incident role (e.g., "Incident Commander") |
| `description` | string | Yes | Description of the incident role |
| `instructions` | string | Yes | Instructions for the incident role |
| `shortform` | string | Yes | Short form abbreviation for the role |
#### Output [#output-34]
| Parameter | Type | Description |
| ---------------- | ------- | ----------------------------------- |
| `incident_role` | object | The updated incident role |
| ↳ `id` | string | The incident role ID |
| ↳ `name` | string | The incident role name |
| ↳ `description` | string | The incident role description |
| ↳ `instructions` | string | Instructions for the role |
| ↳ `shortform` | string | Short form abbreviation of the role |
| ↳ `role_type` | string | The type of role |
| ↳ `required` | boolean | Whether the role is required |
| ↳ `created_at` | string | When the role was created |
| ↳ `updated_at` | string | When the role was last updated |
### Delete Incident Role [#delete-incident-role]
Delete an incident role in incident.io
#### Input [#input-35]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | The ID of the incident role to delete (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
#### Output [#output-35]
| Parameter | Type | Description |
| --------- | ------ | --------------- |
| `message` | string | Success message |
### List Incident Timestamps [#list-incident-timestamps]
List all incident timestamp definitions in incident.io
#### Input [#input-36]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------- |
| `apiKey` | string | Yes | incident.io API Key |
#### Output [#output-36]
| Parameter | Type | Description |
| --------------------- | ------ | -------------------------------------- |
| `incident_timestamps` | array | List of incident timestamp definitions |
| ↳ `id` | string | The timestamp ID |
| ↳ `name` | string | The timestamp name |
| ↳ `rank` | number | The rank/order of the timestamp |
| ↳ `created_at` | string | When the timestamp was created |
| ↳ `updated_at` | string | When the timestamp was last updated |
### Show Incident Timestamp [#show-incident-timestamp]
Get details of a specific incident timestamp definition in incident.io
#### Input [#input-37]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | The ID of the incident timestamp (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
#### Output [#output-37]
| Parameter | Type | Description |
| -------------------- | ------ | ----------------------------------- |
| `incident_timestamp` | object | The incident timestamp details |
| ↳ `id` | string | The timestamp ID |
| ↳ `name` | string | The timestamp name |
| ↳ `rank` | number | The rank/order of the timestamp |
| ↳ `created_at` | string | When the timestamp was created |
| ↳ `updated_at` | string | When the timestamp was last updated |
### List Incident Updates [#list-incident-updates]
List all updates for a specific incident in incident.io
#### Input [#input-38]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `incident_id` | string | No | The ID of the incident to get updates for (e.g., "01FCNDV6P870EA6S7TK1DSYDG0"). If not provided, returns all updates |
| `page_size` | number | No | Number of results to return per page (e.g., 10, 25, 50) |
| `after` | string | No | Cursor for pagination (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
#### Output [#output-38]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------------- |
| `incident_updates` | array | List of incident updates |
| ↳ `id` | string | The update ID |
| ↳ `incident_id` | string | The incident ID |
| ↳ `message` | string | The update message |
| ↳ `new_severity` | object | New severity if changed |
| ↳ `id` | string | Severity ID |
| ↳ `name` | string | Severity name |
| ↳ `rank` | number | Severity rank |
| ↳ `new_status` | object | New status if changed |
| ↳ `id` | string | Status ID |
| ↳ `name` | string | Status name |
| ↳ `category` | string | Status category |
| ↳ `updater` | object | User who created the update |
| ↳ `id` | string | User ID |
| ↳ `name` | string | User name |
| ↳ `email` | string | User email |
| ↳ `created_at` | string | When the update was created |
| ↳ `updated_at` | string | When the update was last modified |
| `pagination_meta` | object | Pagination information |
| ↳ `after` | string | Cursor for next page |
| ↳ `page_size` | number | Number of results per page |
### List Schedule Entries [#list-schedule-entries]
List all entries for a specific schedule in incident.io
#### Input [#input-39]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `schedule_id` | string | Yes | The ID of the schedule to get entries for (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
| `entry_window_start` | string | No | Start date/time to filter entries in ISO 8601 format (e.g., "2024-01-15T09:00:00Z") |
| `entry_window_end` | string | No | End date/time to filter entries in ISO 8601 format (e.g., "2024-01-22T09:00:00Z") |
#### Output [#output-39]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------------------------- |
| `schedule_entries` | object | Schedule entries grouped by final, overrides, and scheduled entries |
| ↳ `final` | array | Final computed schedule entries |
| ↳ `overrides` | array | Override schedule entries |
| ↳ `scheduled` | array | Scheduled entries before overrides are applied |
| `pagination_meta` | object | Pagination information |
| ↳ `after` | string | Cursor for next page |
| ↳ `after_url` | string | URL for next page |
### Create Schedule Override [#create-schedule-override]
Create a new schedule override in incident.io
#### Input [#input-40]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `rotation_id` | string | Yes | The ID of the rotation to override (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
| `layer_id` | string | Yes | The ID of the layer this override applies to |
| `schedule_id` | string | Yes | The ID of the schedule (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
| `user_id` | string | No | The ID of the user to assign (provide one of: user\_id, user\_email, or user\_slack\_id) |
| `user_email` | string | No | The email of the user to assign (provide one of: user\_id, user\_email, or user\_slack\_id) |
| `user_slack_id` | string | No | The Slack ID of the user to assign (provide one of: user\_id, user\_email, or user\_slack\_id) |
| `start_at` | string | Yes | When the override starts in ISO 8601 format (e.g., "2024-01-15T09:00:00Z") |
| `end_at` | string | Yes | When the override ends in ISO 8601 format (e.g., "2024-01-22T09:00:00Z") |
#### Output [#output-40]
| Parameter | Type | Description |
| --------------- | ------ | ---------------------------------- |
| `override` | object | The created schedule override |
| ↳ `id` | string | The override ID |
| ↳ `layer_id` | string | The schedule layer ID |
| ↳ `rotation_id` | string | The rotation ID |
| ↳ `schedule_id` | string | The schedule ID |
| ↳ `user` | object | User assigned to this override |
| ↳ `id` | string | User ID |
| ↳ `name` | string | User name |
| ↳ `email` | string | User email |
| ↳ `start_at` | string | When the override starts |
| ↳ `end_at` | string | When the override ends |
| ↳ `created_at` | string | When the override was created |
| ↳ `updated_at` | string | When the override was last updated |
### List Escalation Paths [#list-escalation-paths]
List escalation paths in incident.io
#### Input [#input-41]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `page_size` | number | No | Number of escalation paths to return per page |
| `after` | string | No | Pagination cursor to fetch the next page of results |
#### Output [#output-41]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------- |
| `escalation_paths` | array | List of escalation paths |
| ↳ `id` | string | The escalation path ID |
| ↳ `name` | string | The escalation path name |
| ↳ `path` | array | Array of escalation levels |
| ↳ `working_hours` | array | Working hours configuration |
| `pagination_meta` | object | Pagination metadata |
| ↳ `after` | string | Cursor for next page |
| ↳ `page_size` | number | Number of results per page |
### Create Escalation Path [#create-escalation-path]
Create a new escalation path in incident.io
#### Input [#input-42]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `name` | string | Yes | Name of the escalation path (e.g., "Critical Incident Path") |
| `path` | json | Yes | Array of escalation levels with targets and time to acknowledge in seconds. Each level should have: targets (array of \{id, type, schedule\_id?, user\_id?, urgency}) and time\_to\_ack\_seconds (number) |
| `working_hours` | json | No | Optional working hours configuration. Array of \{weekday, start\_time, end\_time} |
#### Output [#output-42]
| Parameter | Type | Description |
| ----------------------- | ------ | ------------------------------- |
| `escalation_path` | object | The created escalation path |
| ↳ `id` | string | The escalation path ID |
| ↳ `name` | string | The escalation path name |
| ↳ `path` | array | Array of escalation levels |
| ↳ `targets` | array | Targets for this level |
| ↳ `id` | string | Target ID |
| ↳ `type` | string | Target type |
| ↳ `schedule_id` | string | Schedule ID if type is schedule |
| ↳ `user_id` | string | User ID if type is user |
| ↳ `urgency` | string | Urgency level |
| ↳ `time_to_ack_seconds` | number | Time to acknowledge in seconds |
| ↳ `working_hours` | array | Working hours configuration |
| ↳ `weekday` | string | Day of week |
| ↳ `start_time` | string | Start time |
| ↳ `end_time` | string | End time |
### Show Escalation Path [#show-escalation-path]
Get details of a specific escalation path in incident.io
#### Input [#input-43]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------ |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | The ID of the escalation path (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
#### Output [#output-43]
| Parameter | Type | Description |
| ----------------------- | ------ | ------------------------------- |
| `escalation_path` | object | The escalation path details |
| ↳ `id` | string | The escalation path ID |
| ↳ `name` | string | The escalation path name |
| ↳ `path` | array | Array of escalation levels |
| ↳ `targets` | array | Targets for this level |
| ↳ `id` | string | Target ID |
| ↳ `type` | string | Target type |
| ↳ `schedule_id` | string | Schedule ID if type is schedule |
| ↳ `user_id` | string | User ID if type is user |
| ↳ `urgency` | string | Urgency level |
| ↳ `time_to_ack_seconds` | number | Time to acknowledge in seconds |
| ↳ `working_hours` | array | Working hours configuration |
| ↳ `weekday` | string | Day of week |
| ↳ `start_time` | string | Start time |
| ↳ `end_time` | string | End time |
### Update Escalation Path [#update-escalation-path]
Update an existing escalation path in incident.io
#### Input [#input-44]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | The ID of the escalation path to update (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
| `name` | string | Yes | New name for the escalation path (e.g., "Critical Incident Path") |
| `path` | json | Yes | New escalation path configuration. Array of escalation levels with targets and time\_to\_ack\_seconds |
| `working_hours` | json | No | New working hours configuration. Array of \{weekday, start\_time, end\_time} |
#### Output [#output-44]
| Parameter | Type | Description |
| ----------------------- | ------ | ------------------------------- |
| `escalation_path` | object | The updated escalation path |
| ↳ `id` | string | The escalation path ID |
| ↳ `name` | string | The escalation path name |
| ↳ `path` | array | Array of escalation levels |
| ↳ `targets` | array | Targets for this level |
| ↳ `id` | string | Target ID |
| ↳ `type` | string | Target type |
| ↳ `schedule_id` | string | Schedule ID if type is schedule |
| ↳ `user_id` | string | User ID if type is user |
| ↳ `urgency` | string | Urgency level |
| ↳ `time_to_ack_seconds` | number | Time to acknowledge in seconds |
| ↳ `working_hours` | array | Working hours configuration |
| ↳ `weekday` | string | Day of week |
| ↳ `start_time` | string | Start time |
| ↳ `end_time` | string | End time |
### Delete Escalation Path [#delete-escalation-path]
Delete an escalation path in incident.io
#### Input [#input-45]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | The ID of the escalation path to delete (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
#### Output [#output-45]
| Parameter | Type | Description |
| --------- | ------ | --------------- |
| `message` | string | Success message |
### Get Who Is On Call [#get-who-is-on-call]
Get who is currently on call in incident.io, as one row per ongoing shift across every schedule (or a single schedule). Also returns the shifts that take over at the next changeover.
#### Input [#input-46]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `schedule_id` | string | No | Limit the result to a single schedule by ID (e.g., "01FCNDV6P870EA6S7TK1DSYDG0"). Leave empty to return who is on call across every schedule. |
| `page_size` | number | No | Number of schedules to scan per page when no schedule ID is given (e.g., 10, 25). Defaults to 25; upcoming shifts are only returned at 25 or lower. |
| `after` | string | No | Pagination cursor to fetch the next page of schedules (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
#### Output [#output-46]
| Parameter | Type | Description |
| ---------------------- | ------ | ---------------------------------------------------------------------------------------------- |
| `on_call` | array | Shifts that are ongoing right now, one row per on-call person per schedule |
| `next_on_call` | array | Shifts that take over at the next changeover. Only populated when the page size is 25 or lower |
| `pagination_meta` | object | Pagination metadata, returned when scanning every schedule |
| ↳ `after` | string | Cursor for next page |
| ↳ `page_size` | number | Number of results per page |
| ↳ `total_record_count` | number | Total number of schedules |
### List Schedule Overrides [#list-schedule-overrides]
List the one-off overrides layered on top of a schedule in incident.io, such as someone covering a colleague’s shift
#### Input [#input-47]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `schedule_id` | string | Yes | The ID of the schedule to get overrides for (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
| `rotation_id` | string | No | Only return overrides on this rotation |
| `layer_id` | string | No | Only return overrides on this layer |
| `page_size` | number | No | Number of results per page (e.g., 10, 25, 50) |
| `after` | string | No | Pagination cursor to fetch the next page of results (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
#### Output [#output-47]
| Parameter | Type | Description |
| ----------------- | ------ | ---------------------------------- |
| `overrides` | array | List of schedule overrides |
| ↳ `id` | string | Override ID |
| ↳ `schedule_id` | string | Schedule the override applies to |
| ↳ `rotation_id` | string | Rotation the override applies to |
| ↳ `layer_id` | string | Layer the override applies to |
| ↳ `start_at` | string | Start of the override |
| ↳ `end_at` | string | End of the override |
| ↳ `created_at` | string | When the override was created |
| ↳ `updated_at` | string | When the override was last updated |
| ↳ `user` | object | The user covering the override |
| ↳ `id` | string | User ID |
| ↳ `name` | string | User display name |
| ↳ `email` | string | User email address |
| ↳ `role` | string | User role |
| ↳ `slack_user_id` | string | Slack user ID |
| `pagination_meta` | object | Pagination metadata |
| ↳ `after` | string | Cursor for next page |
| ↳ `page_size` | number | Number of results per page |
### List Alerts [#list-alerts]
List alerts in incident.io, optionally filtered by status, source, or created date
#### Input [#input-48]
| Parameter | Type | Required | Description |
| ---------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | incident.io API Key |
| `page_size` | number | No | Number of results per page (e.g., 10, 25, 50). Default: 25 |
| `after` | string | No | Pagination cursor to fetch the next page of results (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
| `status` | string | No | Filter by alert status: "firing" or "resolved" |
| `status_operator` | string | No | How to apply the status filter: "one\_of" to match it, "not\_in" to exclude it. Default: one\_of |
| `alert_source_id` | string | No | Filter by alert source ID (e.g., "01GBSQF3FHF7FWZQNWGHAVQ804") |
| `alert_source_operator` | string | No | How to apply the alert source filter: "one\_of" to match it, "not\_in" to exclude it. Default: one\_of |
| `deduplication_key` | string | No | Filter to the single alert with this deduplication key |
| `created_at_gte` | string | No | Only return alerts created on or after this date (e.g., "2025-01-01") |
| `created_at_lte` | string | No | Only return alerts created on or before this date (e.g., "2025-02-01") |
| `has_notes` | boolean | No | Filter to alerts that do (true) or do not (false) have notes attached |
| `include_maintenance_window` | boolean | No | Whether to include alerts held by a maintenance window. Defaults to true on the API |
#### Output [#output-48]
| Parameter | Type | Description |
| --------------------- | ------ | ------------------------------------------------------- |
| `alerts` | array | List of alerts |
| ↳ `id` | string | Alert ID |
| ↳ `title` | string | Alert title, parsed from the alert payload |
| ↳ `status` | string | Alert status (firing, resolved) |
| ↳ `alert_source_id` | string | ID of the alert source this alert fired on |
| ↳ `deduplication_key` | string | Key that uniquely references this alert from its source |
| ↳ `description` | string | Alert description |
| ↳ `source_url` | string | Link to the alert in the upstream system |
| ↳ `resolved_at` | string | When this alert was resolved |
| ↳ `created_at` | string | When this alert was created |
| ↳ `updated_at` | string | When this alert was last updated |
| ↳ `alert_group_ids` | array | IDs of every alert group this alert belongs to |
| ↳ `attributes` | array | Attribute values parsed from the alert payload |
| `pagination_meta` | object | Pagination metadata |
| ↳ `after` | string | Cursor for next page |
| ↳ `page_size` | number | Number of results per page |
### Show Alert [#show-alert]
Get a single alert by ID from incident.io
#### Input [#input-49]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | The ID of the alert to fetch (e.g., "01GW2G3V0S59R238FAHPDS1R66") |
#### Output [#output-49]
| Parameter | Type | Description |
| --------------------- | ------ | ------------------------------------------------------- |
| `alert` | object | The alert details |
| ↳ `id` | string | Alert ID |
| ↳ `title` | string | Alert title, parsed from the alert payload |
| ↳ `status` | string | Alert status (firing, resolved) |
| ↳ `alert_source_id` | string | ID of the alert source this alert fired on |
| ↳ `deduplication_key` | string | Key that uniquely references this alert from its source |
| ↳ `description` | string | Alert description |
| ↳ `source_url` | string | Link to the alert in the upstream system |
| ↳ `resolved_at` | string | When this alert was resolved |
| ↳ `created_at` | string | When this alert was created |
| ↳ `updated_at` | string | When this alert was last updated |
| ↳ `alert_group_ids` | array | IDs of every alert group this alert belongs to |
| ↳ `attributes` | array | Attribute values parsed from the alert payload |
### Resolve Alert [#resolve-alert]
Resolve a currently firing alert in incident.io. Resolving an already-resolved alert is a no-op and returns it unchanged.
#### Input [#input-50]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | The ID of the alert to resolve (e.g., "01GW2G3V0S59R238FAHPDS1R66") |
#### Output [#output-50]
| Parameter | Type | Description |
| --------------------- | ------ | ------------------------------------------------------- |
| `alert` | object | The resolved alert |
| ↳ `id` | string | Alert ID |
| ↳ `title` | string | Alert title, parsed from the alert payload |
| ↳ `status` | string | Alert status (firing, resolved) |
| ↳ `alert_source_id` | string | ID of the alert source this alert fired on |
| ↳ `deduplication_key` | string | Key that uniquely references this alert from its source |
| ↳ `description` | string | Alert description |
| ↳ `source_url` | string | Link to the alert in the upstream system |
| ↳ `resolved_at` | string | When this alert was resolved |
| ↳ `created_at` | string | When this alert was created |
| ↳ `updated_at` | string | When this alert was last updated |
| ↳ `alert_group_ids` | array | IDs of every alert group this alert belongs to |
| ↳ `attributes` | array | Attribute values parsed from the alert payload |
### Create Alert Event [#create-alert-event]
Fire an alert into incident.io through an HTTP alert source. Send the same deduplication key with status "resolved" to close the alert you opened.
#### Input [#input-51]
| Parameter | Type | Required | Description |
| ------------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- |
| `alert_source_config_id` | string | Yes | The ID of the HTTP alert source config to fire into (e.g., "01GW2G3V0S59R238FAHPDS1R66") |
| `alert_source_token` | string | Yes | The token generated when configuring the HTTP alert source. This is not the incident.io API key. |
| `title` | string | Yes | Title of the alert (e.g., "Payments service error rate above 5%") |
| `status` | string | Yes | Current status of the alert: "firing" or "resolved" |
| `description` | string | No | Detail to add below the title. Supports Markdown. |
| `deduplication_key` | string | No | Key that uniquely identifies this alert. Reuse it to update or resolve the same alert instead of creating a new one. |
| `source_url` | string | No | Link back to the alert in the upstream system |
| `metadata` | string | No | Additional metadata as a JSON object, parsed according to the alert source config (e.g., \{"service": "payments"}) |
#### Output [#output-51]
| Parameter | Type | Description |
| ------------------- | ------ | ---------------------------------------------------- |
| `deduplication_key` | string | The deduplication key the event was processed with |
| `message` | string | Human readable message giving detail about the event |
| `status` | string | Status of the event |
### List Incident Alerts [#list-incident-alerts]
List the connections between incidents and alerts in incident.io — which alerts triggered an incident, or which incident an alert was attached to
#### Input [#input-52]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `page_size` | number | No | Number of results per page (e.g., 10, 25, 50). Default: 25 |
| `after` | string | No | Pagination cursor to fetch the next page of results (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
| `incident_id` | string | No | Only return alerts attached to this incident (e.g., "01FDAG4SAP5TYPT98WGR2N7W91") |
| `alert_id` | string | No | Only return connections for this alert (e.g., "01GW2G3V0S59R238FAHPDS1R66") |
#### Output [#output-52]
| Parameter | Type | Description |
| --------------------- | ------ | ------------------------------------------------------- |
| `incident_alerts` | array | List of incident-to-alert connections |
| ↳ `id` | string | ID of this incident alert connection |
| ↳ `alert_route_id` | string | ID of the alert route that created this connection |
| ↳ `alert` | object | The connected alert |
| ↳ `id` | string | Alert ID |
| ↳ `title` | string | Alert title |
| ↳ `status` | string | Alert status (firing, resolved) |
| ↳ `alert_source_id` | string | ID of the alert source this alert fired on |
| ↳ `deduplication_key` | string | Key that uniquely references this alert from its source |
| ↳ `description` | string | Alert description |
| ↳ `source_url` | string | Link to the alert in the upstream system |
| ↳ `resolved_at` | string | When this alert was resolved |
| ↳ `created_at` | string | When this alert was created |
| ↳ `updated_at` | string | When this alert was last updated |
| ↳ `incident` | object | The incident the alert is attached to |
| ↳ `id` | string | Incident ID |
| ↳ `name` | string | Incident name |
| ↳ `reference` | string | Incident reference (e.g., INC-123) |
| ↳ `external_id` | number | External incident identifier |
| ↳ `status_category` | string | Category of the incident status |
| ↳ `visibility` | string | Incident visibility (public, private) |
| ↳ `summary` | string | Incident summary |
| `pagination_meta` | object | Pagination metadata |
| ↳ `after` | string | Cursor for next page |
| ↳ `page_size` | number | Number of results per page |
### Cancel Escalation [#cancel-escalation]
Cancel an escalation in incident.io. Notifications stop, and the escalation will not advance to further levels or repeat.
#### Input [#input-53]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | The ID of the escalation to cancel (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
#### Output [#output-53]
| Parameter | Type | Description |
| --------- | ------ | --------------- |
| `message` | string | Success message |
### List Catalog Types [#list-catalog-types]
List all catalog types in incident.io, including those synced from external resources. Use this to find the catalog type ID needed to list entries.
#### Input [#input-54]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------- |
| `apiKey` | string | Yes | incident.io API Key |
#### Output [#output-54]
| Parameter | Type | Description |
| -------------------------- | ------- | ------------------------------------------------------------------ |
| `catalog_types` | array | List of catalog types |
| ↳ `id` | string | Catalog type ID |
| ↳ `name` | string | Human readable name of this type |
| ↳ `description` | string | Human readable description of this type |
| ↳ `type_name` | string | Type name used when defining attributes (e.g., Custom\["Service"]) |
| ↳ `engine_resource_type` | string | How this resource type is referenced in the incident.io engine |
| ↳ `categories` | array | Categories this type is considered part of |
| ↳ `color` | string | Display color of this type in the dashboard |
| ↳ `icon` | string | Display icon of this type in the dashboard |
| ↳ `ranked` | boolean | Whether entries of this type are ranked |
| ↳ `is_editable` | boolean | Whether this type can be edited (types synced externally cannot) |
| ↳ `use_name_as_identifier` | boolean | Whether entries can be referenced by name as well as external ID |
| ↳ `estimated_count` | number | Estimated number of entries for this type |
| ↳ `is_team_type` | boolean | Whether this is the designated team type in team settings |
| ↳ `registry_type` | string | The registry resource this type is synced from, if any |
| ↳ `last_synced_at` | string | When this type was last synced |
| ↳ `owning_team_ids` | array | IDs of the teams that own this catalog type |
| ↳ `schema` | object | Attribute schema for this catalog type |
| ↳ `version` | number | Version number of this schema |
| ↳ `attributes` | array | Attributes of this catalog type |
| ↳ `annotations` | json | Metadata annotations tracked about this type |
| ↳ `created_at` | string | When this type was created |
| ↳ `updated_at` | string | When this type was last updated |
### List Catalog Entries [#list-catalog-entries]
List the entries of a catalog type in incident.io — for example every service, team, or customer recorded in the catalog
#### Input [#input-55]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `catalog_type_id` | string | Yes | The ID of the catalog type to list entries for (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
| `page_size` | number | No | Number of results per page (e.g., 10, 25, 50). Default: 25 |
| `after` | string | No | Pagination cursor to fetch the next page of results (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
| `identifier` | string | No | Only return entries matching this identifier. Searches by ID, external ID, and alias. |
#### Output [#output-55]
| Parameter | Type | Description |
| -------------------------- | ------- | ------------------------------------------------------------------ |
| `catalog_entries` | array | List of catalog entries |
| ↳ `id` | string | Catalog entry ID |
| ↳ `name` | string | Human readable name of this entry |
| ↳ `catalog_type_id` | string | ID of the catalog type |
| ↳ `external_id` | string | Alternative ID for this entry, unique within the type |
| ↳ `aliases` | array | Alternative names this entry can be referenced by |
| ↳ `rank` | number | Ordering rank, used when the type is ranked |
| ↳ `attribute_values` | json | Attribute values of this entry |
| ↳ `archived_at` | string | When this entry was archived |
| ↳ `created_at` | string | When this entry was created |
| ↳ `updated_at` | string | When this entry was last updated |
| `catalog_type` | object | The catalog type these entries belong to |
| ↳ `id` | string | Catalog type ID |
| ↳ `name` | string | Human readable name of this type |
| ↳ `description` | string | Human readable description of this type |
| ↳ `type_name` | string | Type name used when defining attributes (e.g., Custom\["Service"]) |
| ↳ `engine_resource_type` | string | How this resource type is referenced in the incident.io engine |
| ↳ `categories` | array | Categories this type is considered part of |
| ↳ `color` | string | Display color of this type in the dashboard |
| ↳ `icon` | string | Display icon of this type in the dashboard |
| ↳ `ranked` | boolean | Whether entries of this type are ranked |
| ↳ `is_editable` | boolean | Whether this type can be edited (types synced externally cannot) |
| ↳ `use_name_as_identifier` | boolean | Whether entries can be referenced by name as well as external ID |
| ↳ `estimated_count` | number | Estimated number of entries for this type |
| ↳ `is_team_type` | boolean | Whether this is the designated team type in team settings |
| ↳ `registry_type` | string | The registry resource this type is synced from, if any |
| ↳ `last_synced_at` | string | When this type was last synced |
| ↳ `owning_team_ids` | array | IDs of the teams that own this catalog type |
| ↳ `schema` | object | Attribute schema for this catalog type |
| ↳ `version` | number | Version number of this schema |
| ↳ `attributes` | array | Attributes of this catalog type |
| ↳ `annotations` | json | Metadata annotations tracked about this type |
| ↳ `created_at` | string | When this type was created |
| ↳ `updated_at` | string | When this type was last updated |
| `pagination_meta` | object | Pagination metadata |
| ↳ `after` | string | Cursor for next page |
| ↳ `page_size` | number | Number of results per page |
| ↳ `total_record_count` | number | Total number of entries |
### List Teams [#list-teams]
List all teams in the incident.io organisation, along with their members
#### Input [#input-56]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `page_size` | number | No | Number of results per page (e.g., 10, 25, 50) |
| `after` | string | No | Pagination cursor to fetch the next page of results (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
#### Output [#output-56]
| Parameter | Type | Description |
| ----------------- | ------ | ----------------------------------------------------- |
| `teams` | array | List of teams |
| ↳ `id` | string | Team ID |
| ↳ `name` | string | Team name |
| ↳ `members` | array | Members of the team |
| ↳ `id` | string | User ID |
| ↳ `name` | string | User display name |
| ↳ `email` | string | User email address |
| ↳ `slack_user_id` | string | Slack user ID |
| ↳ `catalog_entry` | object | The catalog entry backing this team |
| ↳ `id` | string | Catalog entry ID |
| ↳ `name` | string | Catalog entry name |
| ↳ `external_id` | string | Alternative ID for this entry, unique within the type |
| `pagination_meta` | object | Pagination metadata |
| ↳ `after` | string | Cursor for next page |
| ↳ `page_size` | number | Number of results per page |
### Show Team [#show-team]
Get a single team by ID from incident.io, along with its members
#### Input [#input-57]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | The ID of the team to fetch (e.g., "01JPQA75EPNEES4479P16P4XAB") |
#### Output [#output-57]
| Parameter | Type | Description |
| ----------------- | ------ | ----------------------------------------------------- |
| `team` | object | The team details |
| ↳ `id` | string | Team ID |
| ↳ `name` | string | Team name |
| ↳ `members` | array | Members of the team |
| ↳ `id` | string | User ID |
| ↳ `name` | string | User display name |
| ↳ `email` | string | User email address |
| ↳ `slack_user_id` | string | Slack user ID |
| ↳ `catalog_entry` | object | The catalog entry backing this team |
| ↳ `id` | string | Catalog entry ID |
| ↳ `name` | string | Catalog entry name |
| ↳ `external_id` | string | Alternative ID for this entry, unique within the type |
### Create Follow-up [#create-follow-up]
Create a new follow-up on an incident in incident.io
#### Input [#input-58]
| Parameter | Type | Required | Description |
| ------------------------------ | ------ | -------- | ------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | incident.io API Key |
| `incident_id` | string | Yes | The ID of the incident the follow-up belongs to (e.g., "01FDAG4SAP5TYPT98WGR2N7W91") |
| `title` | string | Yes | Title of the follow-up (e.g., "Add alerting on connection pool saturation") |
| `description` | string | No | Description of the follow-up. Supports Markdown. |
| `assignee_id` | string | No | ID of the user to assign this follow-up to |
| `assignee_team_id` | string | No | ID of the team to assign this follow-up to |
| `follow_up_category_id` | string | No | ID of the category for this follow-up |
| `follow_up_priority_option_id` | string | No | ID of the priority for this follow-up |
| `external_issue_reference_id` | string | No | ID of the external issue this follow-up relates to |
| `labels` | string | No | Comma-separated list of labels (e.g., "bug,urgent") |
#### Output [#output-58]
| Parameter | Type | Description |
| ----------------- | ------ | -------------------------------------------------------------- |
| `follow_up` | object | The created follow-up |
| ↳ `id` | string | Follow-up ID |
| ↳ `incident_id` | string | ID of the incident the follow-up belongs to |
| ↳ `title` | string | Follow-up title |
| ↳ `status` | string | Follow-up status (outstanding, completed, deleted, not\_doing) |
| ↳ `description` | string | Follow-up description |
| ↳ `labels` | array | Labels associated with this follow-up |
| ↳ `assignee_team` | object | The team the follow-up is assigned to |
| ↳ `id` | string | Team ID |
| ↳ `name` | string | Team name |
| ↳ `priority` | object | Follow-up priority |
| ↳ `id` | string | Priority ID |
| ↳ `name` | string | Priority name |
| ↳ `rank` | number | Priority rank |
| ↳ `description` | string | Priority description |
| ↳ `creator` | object | Who created the follow-up |
| ↳ `completed_at` | string | When the follow-up was completed |
| ↳ `created_at` | string | When the follow-up was created |
| ↳ `updated_at` | string | When the follow-up was last updated |
### Update Follow-up [#update-follow-up]
Update an existing follow-up in incident.io, for example to mark it completed or reassign it
#### Input [#input-59]
| Parameter | Type | Required | Description |
| ------------------------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | The ID of the follow-up to update (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
| `title` | string | Yes | Title of the follow-up. This endpoint replaces the title, so always send it. |
| `status` | string | Yes | Status of the follow-up: "outstanding", "completed", or "not\_doing". Deleting is not supported here. |
| `description` | string | No | Description of the follow-up. Supports Markdown. |
| `assignee_id` | string | No | ID of the user to assign this follow-up to |
| `assignee_team_id` | string | No | ID of the team to assign this follow-up to |
| `follow_up_category_id` | string | No | ID of the category for this follow-up |
| `follow_up_priority_option_id` | string | No | ID of the priority for this follow-up |
| `labels` | string | No | Comma-separated list of labels (e.g., "bug,urgent") |
#### Output [#output-59]
| Parameter | Type | Description |
| ----------------- | ------ | -------------------------------------------------------------- |
| `follow_up` | object | The updated follow-up |
| ↳ `id` | string | Follow-up ID |
| ↳ `incident_id` | string | ID of the incident the follow-up belongs to |
| ↳ `title` | string | Follow-up title |
| ↳ `status` | string | Follow-up status (outstanding, completed, deleted, not\_doing) |
| ↳ `description` | string | Follow-up description |
| ↳ `labels` | array | Labels associated with this follow-up |
| ↳ `assignee_team` | object | The team the follow-up is assigned to |
| ↳ `id` | string | Team ID |
| ↳ `name` | string | Team name |
| ↳ `priority` | object | Follow-up priority |
| ↳ `id` | string | Priority ID |
| ↳ `name` | string | Priority name |
| ↳ `rank` | number | Priority rank |
| ↳ `description` | string | Priority description |
| ↳ `creator` | object | Who created the follow-up |
| ↳ `completed_at` | string | When the follow-up was completed |
| ↳ `created_at` | string | When the follow-up was created |
| ↳ `updated_at` | string | When the follow-up was last updated |
### Create Action [#create-action]
Create a new action on an incident in incident.io
#### Input [#input-60]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | --------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `incident_id` | string | Yes | The ID of the incident the action belongs to (e.g., "01FDAG4SAP5TYPT98WGR2N7W91") |
| `description` | string | Yes | Description of the action. Supports Markdown. |
| `assignee_id` | string | No | ID of the user to assign this action to |
#### Output [#output-60]
| Parameter | Type | Description |
| ---------------- | ------ | ----------------------------------------------------------- |
| `action` | object | The created action |
| ↳ `id` | string | Action ID |
| ↳ `incident_id` | string | ID of the incident the action belongs to |
| ↳ `description` | string | Action description |
| ↳ `status` | string | Action status (outstanding, completed, deleted, not\_doing) |
| ↳ `creator` | object | Who created the action |
| ↳ `completed_at` | string | When the action was completed |
| ↳ `created_at` | string | When the action was created |
| ↳ `updated_at` | string | When the action was last updated |
### Update Action [#update-action]
Update an existing action in incident.io, for example to mark it completed or reassign it
#### Input [#input-61]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | -------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `id` | string | Yes | The ID of the action to update (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
| `description` | string | Yes | Description of the action. This endpoint replaces the description, so always send it. |
| `status` | string | Yes | Status of the action: "outstanding", "completed", or "not\_doing". Deleting is not supported here. |
| `assignee_id` | string | No | ID of the user to assign this action to |
#### Output [#output-61]
| Parameter | Type | Description |
| ---------------- | ------ | ----------------------------------------------------------- |
| `action` | object | The updated action |
| ↳ `id` | string | Action ID |
| ↳ `incident_id` | string | ID of the incident the action belongs to |
| ↳ `description` | string | Action description |
| ↳ `status` | string | Action status (outstanding, completed, deleted, not\_doing) |
| ↳ `creator` | object | Who created the action |
| ↳ `completed_at` | string | When the action was completed |
| ↳ `created_at` | string | When the action was created |
| ↳ `updated_at` | string | When the action was last updated |
### List Incident Participants [#list-incident-participants]
List the participants of an incident in incident.io, split into those actively helping and those just observing
#### Input [#input-62]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ----------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `incident_id` | string | Yes | The ID of the incident to find participants of (e.g., "01FDAG4SAP5TYPT98WGR2N7W91") |
#### Output [#output-62]
| Parameter | Type | Description |
| --------- | ----- | ------------------------------------------------------- |
| `active` | array | Participants who are actively helping with the incident |
| `passive` | array | Participants who are just observing the incident |
### Grant Incident Membership [#grant-incident-membership]
Make a user a member of a private incident in incident.io
#### Input [#input-63]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | -------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `incident_id` | string | Yes | The ID of the private incident (e.g., "01FCNDV6P870EA6S7TK1DSYD5H") |
| `user_id` | string | Yes | The ID of the user to grant access to (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
#### Output [#output-63]
| Parameter | Type | Description |
| --------------------- | ------ | ------------------------------------ |
| `incident_membership` | object | The created incident membership |
| ↳ `id` | string | Incident membership ID |
| ↳ `incident_id` | string | ID of the incident |
| ↳ `created_at` | string | When the membership was created |
| ↳ `updated_at` | string | When the membership was last updated |
| ↳ `user` | object | The user who was granted access |
| ↳ `id` | string | User ID |
| ↳ `name` | string | User display name |
| ↳ `email` | string | User email address |
| ↳ `role` | string | User role |
| ↳ `slack_user_id` | string | Slack user ID |
### Revoke Incident Membership [#revoke-incident-membership]
Revoke a user's membership of a private incident in incident.io
#### Input [#input-64]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ----------------------------------------------------------------------------- |
| `apiKey` | string | Yes | incident.io API Key |
| `incident_id` | string | Yes | The ID of the private incident (e.g., "01FCNDV6P870EA6S7TK1DSYD5H") |
| `user_id` | string | Yes | The ID of the user to revoke access from (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") |
#### Output [#output-64]
| Parameter | Type | Description |
| --------- | ------ | --------------- |
| `message` | string | Success message |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
### incident.io Alert Created [#incidentio-alert-created]
Trigger workflow when an alert is created in incident.io
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | --------------------------------------------------------------------------------- |
| `signingSecret` | string | Yes | The signing secret from your incident.io webhook endpoint. Used to verify events. |
#### Output [#output-65]
| Parameter | Type | Description |
| ------------------- | ------ | ---------------------------------------------------------------------------------------------------- |
| `event_type` | string | incident.io event type (e.g., public\_incident.incident\_created\_v2). Top-level `event_type` field. |
| `payload` | json | Full raw webhook body as delivered by incident.io (the entire Svix envelope). |
| `alert` | json | The full alert object from the webhook payload. |
| `alert_id` | string | Unique alert ID. |
| `title` | string | Alert title. |
| `description` | string | Alert description, when set. |
| `status` | string | Alert status (e.g., firing, resolved). |
| `alert_source_id` | string | ID of the alert source that raised the alert. |
| `deduplication_key` | string | Deduplication key for the alert, when set. |
| `source_url` | string | URL to the alert in the originating system, when set. |
| `created_at` | string | ISO 8601 timestamp when the alert was created. |
| `updated_at` | string | ISO 8601 timestamp when the alert was last updated. |
| `resolved_at` | string | ISO 8601 timestamp when the alert was resolved, when applicable. |
***
### incident.io Incident Created [#incidentio-incident-created]
Trigger workflow when an incident is created in incident.io
#### Configuration [#configuration-1]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | --------------------------------------------------------------------------------- |
| `signingSecret` | string | Yes | The signing secret from your incident.io webhook endpoint. Used to verify events. |
#### Output [#output-66]
| Parameter | Type | Description |
| ----------------- | ------ | ---------------------------------------------------------------------------------------------------- |
| `event_type` | string | incident.io event type (e.g., public\_incident.incident\_created\_v2). Top-level `event_type` field. |
| `payload` | json | Full raw webhook body as delivered by incident.io (the entire Svix envelope). |
| `incident` | json | The full incident object from the webhook payload. |
| `incident_id` | string | Unique incident ID (e.g., 01FDAG4SAP5TYPT98WGR2N7W91). |
| `name` | string | Incident name. |
| `reference` | string | Human-readable incident reference (e.g., INC-123). |
| `summary` | string | Incident summary, when set. |
| `incident_status` | json | The incident status object (id, name, category, rank). |
| `severity` | json | The incident severity object (id, name, rank), when set. |
| `mode` | string | Incident mode (standard, retrospective, test, tutorial, stream). |
| `visibility` | string | Incident visibility (public or private). |
| `permalink` | string | Link to the incident in incident.io, when present. |
| `created_at` | string | ISO 8601 timestamp when the incident was created. |
| `updated_at` | string | ISO 8601 timestamp when the incident was last updated. |
| `new_status` | json | New status object (status-updated events only; null otherwise). |
| `previous_status` | json | Previous status object (status-updated events only; null otherwise). |
| `update_message` | string | Update message accompanying a status change (status-updated events only; null otherwise). |
***
### incident.io Incident Status Updated [#incidentio-incident-status-updated]
Trigger workflow when an incident
#### Configuration [#configuration-2]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | --------------------------------------------------------------------------------- |
| `signingSecret` | string | Yes | The signing secret from your incident.io webhook endpoint. Used to verify events. |
#### Output [#output-67]
| Parameter | Type | Description |
| ----------------- | ------ | ---------------------------------------------------------------------------------------------------- |
| `event_type` | string | incident.io event type (e.g., public\_incident.incident\_created\_v2). Top-level `event_type` field. |
| `payload` | json | Full raw webhook body as delivered by incident.io (the entire Svix envelope). |
| `incident` | json | The full incident object from the webhook payload. |
| `incident_id` | string | Unique incident ID (e.g., 01FDAG4SAP5TYPT98WGR2N7W91). |
| `name` | string | Incident name. |
| `reference` | string | Human-readable incident reference (e.g., INC-123). |
| `summary` | string | Incident summary, when set. |
| `incident_status` | json | The incident status object (id, name, category, rank). |
| `severity` | json | The incident severity object (id, name, rank), when set. |
| `mode` | string | Incident mode (standard, retrospective, test, tutorial, stream). |
| `visibility` | string | Incident visibility (public or private). |
| `permalink` | string | Link to the incident in incident.io, when present. |
| `created_at` | string | ISO 8601 timestamp when the incident was created. |
| `updated_at` | string | ISO 8601 timestamp when the incident was last updated. |
| `new_status` | json | New status object (status-updated events only; null otherwise). |
| `previous_status` | json | Previous status object (status-updated events only; null otherwise). |
| `update_message` | string | Update message accompanying a status change (status-updated events only; null otherwise). |
***
### incident.io Incident Updated [#incidentio-incident-updated]
Trigger workflow when an incident is updated in incident.io
#### Configuration [#configuration-3]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | --------------------------------------------------------------------------------- |
| `signingSecret` | string | Yes | The signing secret from your incident.io webhook endpoint. Used to verify events. |
#### Output [#output-68]
| Parameter | Type | Description |
| ----------------- | ------ | ---------------------------------------------------------------------------------------------------- |
| `event_type` | string | incident.io event type (e.g., public\_incident.incident\_created\_v2). Top-level `event_type` field. |
| `payload` | json | Full raw webhook body as delivered by incident.io (the entire Svix envelope). |
| `incident` | json | The full incident object from the webhook payload. |
| `incident_id` | string | Unique incident ID (e.g., 01FDAG4SAP5TYPT98WGR2N7W91). |
| `name` | string | Incident name. |
| `reference` | string | Human-readable incident reference (e.g., INC-123). |
| `summary` | string | Incident summary, when set. |
| `incident_status` | json | The incident status object (id, name, category, rank). |
| `severity` | json | The incident severity object (id, name, rank), when set. |
| `mode` | string | Incident mode (standard, retrospective, test, tutorial, stream). |
| `visibility` | string | Incident visibility (public or private). |
| `permalink` | string | Link to the incident in incident.io, when present. |
| `created_at` | string | ISO 8601 timestamp when the incident was created. |
| `updated_at` | string | ISO 8601 timestamp when the incident was last updated. |
| `new_status` | json | New status object (status-updated events only; null otherwise). |
| `previous_status` | json | Previous status object (status-updated events only; null otherwise). |
| `update_message` | string | Update message accompanying a status change (status-updated events only; null otherwise). |
---
# Integrations (/integrations)
Integrations are authenticated connections to third-party services like Gmail, Slack, GitHub, and HubSpot. Sim handles the OAuth flow, token storage, and automatic token refresh — you connect once and select the account in any block that needs it.
You can connect **multiple accounts per service** — for example, two separate Gmail accounts for different workflows.
## The Integrations page [#the-integrations-page]
Click **Integrations** in the workspace sidebar. The page shows your **Connected** accounts, a **Featured** list, and a search box covering every available service.
The page's second tab, **Skills**, holds your workspace's [agent skills](/agents/skills).
Open a service to see what it offers:
* **Skills** — ready-made capabilities you add with one click, like *upsert-contact* for HubSpot.
* **Templates** — starter workflows built around the service.
* **+ Add to Sim** — connects your account.
## Connecting an account [#connecting-an-account]
1. Open the service's page and click **+ Add to Sim**.
2. Enter a **Display name** to identify this connection (e.g. "Work Gmail" or "Sales HubSpot"), and optionally a **Description**.
3. Review the **Permissions requested** — these are the scopes Sim will ask the provider for.
4. Click **Connect** and complete the provider's sign-in and approval flow.
When the provider redirects you back, the connection appears under **Connected**.
## Using integrations in workflows [#using-integrations-in-workflows]
Blocks that require authentication (e.g. Gmail, Slack, HubSpot) display an account selector. Select the connected account you want that block to use.
You can also connect another account directly from the block by selecting **Connect another \[service] account** at the bottom of the dropdown.
If a block requires an integration and none is selected, the workflow will fail at that step.
## Using a credential ID [#using-a-credential-id]
Each connection has a unique credential ID you can use to reference it dynamically. This is useful when you have multiple accounts for the same service and want to switch between them programmatically — for example, routing different workflow runs to different Gmail accounts based on a variable.
To copy a credential ID, open the connection from the **Connected** list and use the copy control next to its name.
In any block that requires an integration, click **Switch to manual ID** next to the account selector to switch from the dropdown to a text field.
Paste or reference the credential ID in that field. You can use a `{{SECRET}}` reference or a block output variable to make it dynamic.
## Managing a connection [#managing-a-connection]
Open a connection from the **Connected** list to manage it:
{/* VISUAL: the connection detail view in the new Integrations page — display name, members, reconnect, disconnect. */}
* Edit the **Display name** and **Description**.
* Manage **Members** — invite teammates and assign them an **Admin** or **Member** role. Admins can edit, reconnect, disconnect, and manage access; Members can use the connection in workflows. When you connect an account, you are its Admin.
* **Reconnect** — re-authorize if the connection expired or you need updated permissions.
* **Disconnect** — remove the connection entirely.
If you disconnect an integration that is used in a workflow, that workflow will fail at any block referencing it. Update blocks before disconnecting.
---
# Infisical (/integrations/infisical)
{/* MANUAL-CONTENT-START:intro */}
[Infisical](https://infisical.com/) is an open-source secrets management platform that helps teams centralize and manage application secrets, environment variables, and sensitive configuration data across their infrastructure. This integration brings Infisical's secrets management capabilities directly into Sim workflows.
With Infisical in Sim, you can:
* **List secrets**: Retrieve all secrets from a project environment with filtering by path, tags, and recursive subdirectory support
* **Get a secret**: Fetch a specific secret by name, with optional version pinning and secret reference expansion
* **Create secrets**: Add new secrets to any project environment with support for comments, paths, and tag assignments
* **Update secrets**: Modify existing secret values, comments, names, and tags
* **Delete secrets**: Remove secrets from a project environment
In Sim, the Infisical integration enables your agents to programmatically manage secrets as part of automated workflows — for example, rotating credentials, syncing environment variables across environments, or auditing secret usage. Simply configure the Infisical block with your API key, select the operation, and provide the project ID and environment slug to get started.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Infisical into your workflow. List, get, create, update, and delete secrets across project environments.
## Actions [#actions]
### Infisical List Secrets [#infisical-list-secrets]
List all secrets in a project environment. Returns secret keys, values, comments, tags, and metadata.
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------------------ | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Infisical API token |
| `baseUrl` | string | No | Infisical instance URL (default: "[https://us.infisical.com"\\](https://us.infisical.com"\\)). Use "[https://eu.infisical.com](https://eu.infisical.com)" for EU Cloud or your self-hosted URL. |
| `projectId` | string | Yes | The ID of the project to list secrets from |
| `environment` | string | Yes | The environment slug (e.g., "dev", "staging", "prod") |
| `secretPath` | string | No | The path of the secrets (default: "/") |
| `recursive` | boolean | No | Whether to fetch secrets recursively from subdirectories |
| `expandSecretReferences` | boolean | No | Whether to expand secret references (default: true) |
| `viewSecretValue` | boolean | No | Whether to include secret values in the response (default: true) |
| `includeImports` | boolean | No | Whether to include imported secrets (default: true) |
| `tagSlugs` | string | No | Comma-separated tag slugs to filter secrets by |
#### Output [#output]
| Parameter | Type | Description |
| ---------------------------- | ------- | ----------------------------------------------------- |
| `secrets` | array | Array of secrets |
| ↳ `id` | string | Secret ID |
| ↳ `workspace` | string | Workspace/project ID |
| ↳ `secretKey` | string | Secret name/key |
| ↳ `secretValue` | string | Secret value |
| ↳ `secretComment` | string | Secret comment |
| ↳ `secretPath` | string | Secret path |
| ↳ `version` | number | Secret version |
| ↳ `type` | string | Secret type (shared or personal) |
| ↳ `environment` | string | Environment slug |
| ↳ `secretValueHidden` | boolean | Whether the secret value was hidden in the response |
| ↳ `isRotatedSecret` | boolean | Whether the secret is managed by secret rotation |
| ↳ `rotationId` | string | Secret rotation ID |
| ↳ `secretReminderNote` | string | Rotation reminder note |
| ↳ `secretReminderRepeatDays` | number | Rotation reminder interval in days |
| ↳ `skipMultilineEncoding` | boolean | Whether multiline encoding is skipped for this secret |
| ↳ `tags` | array | Tags attached to the secret |
| ↳ `id` | string | Tag ID |
| ↳ `slug` | string | Tag slug |
| ↳ `color` | string | Tag color |
| ↳ `name` | string | Tag name |
| ↳ `secretMetadata` | array | Custom metadata key-value pairs |
| ↳ `key` | string | Metadata key |
| ↳ `value` | string | Metadata value |
| ↳ `isEncrypted` | boolean | Whether the metadata value is encrypted |
| ↳ `actor` | object | Identity that last modified the secret |
| ↳ `actorId` | string | Actor ID |
| ↳ `actorType` | string | Actor type |
| ↳ `name` | string | Actor name |
| ↳ `membershipId` | string | Membership ID |
| ↳ `groupId` | string | Group ID |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `updatedAt` | string | Last update timestamp |
| `count` | number | Total number of secrets returned |
### Infisical Get Secret [#infisical-get-secret]
Retrieve a single secret by name from a project environment.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------------------ | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Infisical API token |
| `baseUrl` | string | No | Infisical instance URL (default: "[https://us.infisical.com"\\](https://us.infisical.com"\\)). Use "[https://eu.infisical.com](https://eu.infisical.com)" for EU Cloud or your self-hosted URL. |
| `projectId` | string | Yes | The ID of the project |
| `environment` | string | Yes | The environment slug (e.g., "dev", "staging", "prod") |
| `secretName` | string | Yes | The name of the secret to retrieve |
| `secretPath` | string | No | The path of the secret (default: "/") |
| `version` | number | No | Specific version of the secret to retrieve |
| `type` | string | No | Secret type: "shared" or "personal" (default: "shared") |
| `viewSecretValue` | boolean | No | Whether to include the secret value in the response (default: true) |
| `expandSecretReferences` | boolean | No | Whether to expand secret references (default: true) |
#### Output [#output-1]
| Parameter | Type | Description |
| ---------------------------- | ------- | ----------------------------------------------------- |
| `secret` | object | The retrieved secret |
| ↳ `id` | string | Secret ID |
| ↳ `workspace` | string | Workspace/project ID |
| ↳ `secretKey` | string | Secret name/key |
| ↳ `secretValue` | string | Secret value |
| ↳ `secretComment` | string | Secret comment |
| ↳ `secretPath` | string | Secret path |
| ↳ `version` | number | Secret version |
| ↳ `type` | string | Secret type (shared or personal) |
| ↳ `environment` | string | Environment slug |
| ↳ `secretValueHidden` | boolean | Whether the secret value was hidden in the response |
| ↳ `isRotatedSecret` | boolean | Whether the secret is managed by secret rotation |
| ↳ `rotationId` | string | Secret rotation ID |
| ↳ `secretReminderNote` | string | Rotation reminder note |
| ↳ `secretReminderRepeatDays` | number | Rotation reminder interval in days |
| ↳ `skipMultilineEncoding` | boolean | Whether multiline encoding is skipped for this secret |
| ↳ `tags` | array | Tags attached to the secret |
| ↳ `id` | string | Tag ID |
| ↳ `slug` | string | Tag slug |
| ↳ `color` | string | Tag color |
| ↳ `name` | string | Tag name |
| ↳ `secretMetadata` | array | Custom metadata key-value pairs |
| ↳ `key` | string | Metadata key |
| ↳ `value` | string | Metadata value |
| ↳ `isEncrypted` | boolean | Whether the metadata value is encrypted |
| ↳ `actor` | object | Identity that last modified the secret |
| ↳ `actorId` | string | Actor ID |
| ↳ `actorType` | string | Actor type |
| ↳ `name` | string | Actor name |
| ↳ `membershipId` | string | Membership ID |
| ↳ `groupId` | string | Group ID |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `updatedAt` | string | Last update timestamp |
### Infisical Create Secret [#infisical-create-secret]
Create a new secret in a project environment.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Infisical API token |
| `baseUrl` | string | No | Infisical instance URL (default: "[https://us.infisical.com"\\](https://us.infisical.com"\\)). Use "[https://eu.infisical.com](https://eu.infisical.com)" for EU Cloud or your self-hosted URL. |
| `projectId` | string | Yes | The ID of the project |
| `environment` | string | Yes | The environment slug (e.g., "dev", "staging", "prod") |
| `secretName` | string | Yes | The name of the secret to create |
| `secretValue` | string | Yes | The value of the secret |
| `secretPath` | string | No | The path for the secret (default: "/") |
| `secretComment` | string | No | A comment for the secret |
| `type` | string | No | Secret type: "shared" or "personal" (default: "shared") |
| `tagIds` | string | No | Comma-separated tag IDs to attach to the secret |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------------------------- | ------- | ----------------------------------------------------- |
| `secret` | object | The created secret |
| ↳ `id` | string | Secret ID |
| ↳ `workspace` | string | Workspace/project ID |
| ↳ `secretKey` | string | Secret name/key |
| ↳ `secretValue` | string | Secret value |
| ↳ `secretComment` | string | Secret comment |
| ↳ `secretPath` | string | Secret path |
| ↳ `version` | number | Secret version |
| ↳ `type` | string | Secret type (shared or personal) |
| ↳ `environment` | string | Environment slug |
| ↳ `secretValueHidden` | boolean | Whether the secret value was hidden in the response |
| ↳ `isRotatedSecret` | boolean | Whether the secret is managed by secret rotation |
| ↳ `rotationId` | string | Secret rotation ID |
| ↳ `secretReminderNote` | string | Rotation reminder note |
| ↳ `secretReminderRepeatDays` | number | Rotation reminder interval in days |
| ↳ `skipMultilineEncoding` | boolean | Whether multiline encoding is skipped for this secret |
| ↳ `tags` | array | Tags attached to the secret |
| ↳ `id` | string | Tag ID |
| ↳ `slug` | string | Tag slug |
| ↳ `color` | string | Tag color |
| ↳ `name` | string | Tag name |
| ↳ `secretMetadata` | array | Custom metadata key-value pairs |
| ↳ `key` | string | Metadata key |
| ↳ `value` | string | Metadata value |
| ↳ `isEncrypted` | boolean | Whether the metadata value is encrypted |
| ↳ `actor` | object | Identity that last modified the secret |
| ↳ `actorId` | string | Actor ID |
| ↳ `actorType` | string | Actor type |
| ↳ `name` | string | Actor name |
| ↳ `membershipId` | string | Membership ID |
| ↳ `groupId` | string | Group ID |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `updatedAt` | string | Last update timestamp |
### Infisical Update Secret [#infisical-update-secret]
Update an existing secret in a project environment.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Infisical API token |
| `baseUrl` | string | No | Infisical instance URL (default: "[https://us.infisical.com"\\](https://us.infisical.com"\\)). Use "[https://eu.infisical.com](https://eu.infisical.com)" for EU Cloud or your self-hosted URL. |
| `projectId` | string | Yes | The ID of the project |
| `environment` | string | Yes | The environment slug (e.g., "dev", "staging", "prod") |
| `secretName` | string | Yes | The name of the secret to update |
| `secretValue` | string | No | The new value for the secret |
| `secretPath` | string | No | The path of the secret (default: "/") |
| `secretComment` | string | No | A comment for the secret |
| `newSecretName` | string | No | New name for the secret (to rename it) |
| `type` | string | No | Secret type: "shared" or "personal" (default: "shared") |
| `tagIds` | string | No | Comma-separated tag IDs to set on the secret |
#### Output [#output-3]
| Parameter | Type | Description |
| ---------------------------- | ------- | ----------------------------------------------------- |
| `secret` | object | The updated secret |
| ↳ `id` | string | Secret ID |
| ↳ `workspace` | string | Workspace/project ID |
| ↳ `secretKey` | string | Secret name/key |
| ↳ `secretValue` | string | Secret value |
| ↳ `secretComment` | string | Secret comment |
| ↳ `secretPath` | string | Secret path |
| ↳ `version` | number | Secret version |
| ↳ `type` | string | Secret type (shared or personal) |
| ↳ `environment` | string | Environment slug |
| ↳ `secretValueHidden` | boolean | Whether the secret value was hidden in the response |
| ↳ `isRotatedSecret` | boolean | Whether the secret is managed by secret rotation |
| ↳ `rotationId` | string | Secret rotation ID |
| ↳ `secretReminderNote` | string | Rotation reminder note |
| ↳ `secretReminderRepeatDays` | number | Rotation reminder interval in days |
| ↳ `skipMultilineEncoding` | boolean | Whether multiline encoding is skipped for this secret |
| ↳ `tags` | array | Tags attached to the secret |
| ↳ `id` | string | Tag ID |
| ↳ `slug` | string | Tag slug |
| ↳ `color` | string | Tag color |
| ↳ `name` | string | Tag name |
| ↳ `secretMetadata` | array | Custom metadata key-value pairs |
| ↳ `key` | string | Metadata key |
| ↳ `value` | string | Metadata value |
| ↳ `isEncrypted` | boolean | Whether the metadata value is encrypted |
| ↳ `actor` | object | Identity that last modified the secret |
| ↳ `actorId` | string | Actor ID |
| ↳ `actorType` | string | Actor type |
| ↳ `name` | string | Actor name |
| ↳ `membershipId` | string | Membership ID |
| ↳ `groupId` | string | Group ID |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `updatedAt` | string | Last update timestamp |
### Infisical Delete Secret [#infisical-delete-secret]
Delete a secret from a project environment.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Infisical API token |
| `baseUrl` | string | No | Infisical instance URL (default: "[https://us.infisical.com"\\](https://us.infisical.com"\\)). Use "[https://eu.infisical.com](https://eu.infisical.com)" for EU Cloud or your self-hosted URL. |
| `projectId` | string | Yes | The ID of the project |
| `environment` | string | Yes | The environment slug (e.g., "dev", "staging", "prod") |
| `secretName` | string | Yes | The name of the secret to delete |
| `secretPath` | string | No | The path of the secret (default: "/") |
| `type` | string | No | Secret type: "shared" or "personal" (default: "shared") |
#### Output [#output-4]
| Parameter | Type | Description |
| ---------------------------- | ------- | ----------------------------------------------------- |
| `secret` | object | The deleted secret |
| ↳ `id` | string | Secret ID |
| ↳ `workspace` | string | Workspace/project ID |
| ↳ `secretKey` | string | Secret name/key |
| ↳ `secretValue` | string | Secret value |
| ↳ `secretComment` | string | Secret comment |
| ↳ `secretPath` | string | Secret path |
| ↳ `version` | number | Secret version |
| ↳ `type` | string | Secret type (shared or personal) |
| ↳ `environment` | string | Environment slug |
| ↳ `secretValueHidden` | boolean | Whether the secret value was hidden in the response |
| ↳ `isRotatedSecret` | boolean | Whether the secret is managed by secret rotation |
| ↳ `rotationId` | string | Secret rotation ID |
| ↳ `secretReminderNote` | string | Rotation reminder note |
| ↳ `secretReminderRepeatDays` | number | Rotation reminder interval in days |
| ↳ `skipMultilineEncoding` | boolean | Whether multiline encoding is skipped for this secret |
| ↳ `tags` | array | Tags attached to the secret |
| ↳ `id` | string | Tag ID |
| ↳ `slug` | string | Tag slug |
| ↳ `color` | string | Tag color |
| ↳ `name` | string | Tag name |
| ↳ `secretMetadata` | array | Custom metadata key-value pairs |
| ↳ `key` | string | Metadata key |
| ↳ `value` | string | Metadata value |
| ↳ `isEncrypted` | boolean | Whether the metadata value is encrypted |
| ↳ `actor` | object | Identity that last modified the secret |
| ↳ `actorId` | string | Actor ID |
| ↳ `actorType` | string | Actor type |
| ↳ `name` | string | Actor name |
| ↳ `membershipId` | string | Membership ID |
| ↳ `groupId` | string | Group ID |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `updatedAt` | string | Last update timestamp |
---
# Instantly (/integrations/instantly)
{/* MANUAL-CONTENT-START:intro */}
[Instantly](https://instantly.ai/) is a cold email outreach platform used to send, manage, and scale email campaigns to leads. It provides tools for lead management, campaign scheduling, and reply tracking through its Unibox inbox.
With Instantly, you can:
* **Manage leads**: Create, update, search, and delete leads across campaigns and lead lists
* **Run campaigns**: Create, update, activate, pause, and delete email campaigns with custom schedules and sequences
* **Handle replies**: List Unibox emails and reply to leads directly from a connected sending account
* **Organize lead lists**: Create and list lead lists, and track lead interest status
In Sim, the Instantly integration allows your agents to manage leads and campaigns programmatically — retrieving and creating leads, updating lead interest status, listing and controlling campaigns (create, patch, activate, pause, delete), reading and replying to Unibox emails, and creating or listing lead lists. This lets your agents automate outbound email workflows, such as syncing new leads into campaigns, monitoring campaign status, and responding to replies without leaving the workflow.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Instantly API V2 into workflows. Create, update, and list leads, manage lead interest status, delete leads in bulk, list, create, patch, activate, pause, and delete campaigns, reply to emails, and manage lead lists.
## Actions [#actions]
### Instantly List Leads [#instantly-list-leads]
Retrieves Instantly V2 leads with search, campaign, list, and pagination filters.
#### Input [#input]
| Parameter | Type | Required | Description |
| ----------------------- | ------- | -------- | ---------------------------------------------------------------------------------- |
| `search` | string | No | Search by first name, last name, or email |
| `filter` | string | No | Instantly lead filter value, such as FILTER\_VAL\_CONTACTED or FILTER\_VAL\_ACTIVE |
| `campaign` | string | No | Campaign ID to filter leads |
| `list_id` | string | No | Lead list ID to filter leads |
| `in_campaign` | boolean | No | Whether the lead is in a campaign |
| `in_list` | boolean | No | Whether the lead is in a list |
| `ids` | array | No | Lead IDs to include |
| `excluded_ids` | array | No | Lead IDs to exclude |
| `organization_user_ids` | array | No | Organization user IDs to filter leads |
| `smart_view_id` | string | No | Smart view ID to filter leads |
| `contacts` | array | No | Lead email addresses to include |
| `limit` | number | No | Number of leads to return, from 1 to 100 |
| `starting_after` | string | No | Forward pagination cursor from next\_starting\_after |
| `distinct_contacts` | boolean | No | Whether to return distinct contacts |
| `is_website_visitor` | boolean | No | Whether the lead is a website visitor |
| `enrichment_status` | number | No | Enrichment status filter |
| `esg_code` | string | No | Email security gateway code filter |
#### Output [#output]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------------------------------------------------------------------------------- |
| `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) |
| `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) |
| `campaigns` | array | List of campaigns (id, name, status, daily\_limit) |
| `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) |
| `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) |
| `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) |
| `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) |
| `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) |
| `count` | number | Returned or affected record count |
| `next_starting_after` | string | Cursor for the next page |
| `id` | string | Record ID |
| `name` | string | Record name |
| `email_address` | string | Lead email address |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `status` | number | Lead or campaign status |
| `subject` | string | Email subject |
| `thread_id` | string | Email thread ID |
| `message` | string | Operation message |
### Instantly Get Lead [#instantly-get-lead]
Retrieves an Instantly V2 lead by ID.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------- |
| `leadId` | string | Yes | Lead ID |
#### Output [#output-1]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------------------------------------------------------------------------------- |
| `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) |
| `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) |
| `campaigns` | array | List of campaigns (id, name, status, daily\_limit) |
| `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) |
| `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) |
| `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) |
| `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) |
| `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) |
| `count` | number | Returned or affected record count |
| `next_starting_after` | string | Cursor for the next page |
| `id` | string | Record ID |
| `name` | string | Record name |
| `email_address` | string | Lead email address |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `status` | number | Lead or campaign status |
| `subject` | string | Email subject |
| `thread_id` | string | Email thread ID |
| `message` | string | Operation message |
### Instantly Create Lead [#instantly-create-lead]
Creates an Instantly V2 lead in a campaign or lead list.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------------------------ | ------- | -------- | ------------------------------------------------------------------- |
| `campaign` | string | No | Campaign ID associated with the lead |
| `list_id` | string | No | Lead list ID associated with the lead |
| `email` | string | No | Lead email address. Required when adding to a campaign. |
| `first_name` | string | No | Lead first name |
| `last_name` | string | No | Lead last name |
| `company_name` | string | No | Lead company name |
| `job_title` | string | No | Lead job title |
| `phone` | string | No | Lead phone number |
| `website` | string | No | Lead website |
| `personalization` | string | No | Lead personalization text |
| `lt_interest_status` | number | No | Lead interest status value |
| `pl_value_lead` | string | No | Potential value of the lead |
| `assigned_to` | string | No | Organization user ID assigned to the lead |
| `skip_if_in_workspace` | boolean | No | Skip if the lead already exists in the workspace |
| `skip_if_in_campaign` | boolean | No | Skip if the lead already exists in the campaign |
| `skip_if_in_list` | boolean | No | Skip if the lead already exists in the list |
| `blocklist_id` | string | No | Blocklist ID to check for the lead |
| `verify_leads_for_lead_finder` | boolean | No | Whether to verify leads imported from Lead Finder |
| `verify_leads_on_import` | boolean | No | Whether to verify leads on import |
| `custom_variables` | json | No | Custom variable object with string, number, boolean, or null values |
#### Output [#output-2]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------------------------------------------------------------------------------- |
| `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) |
| `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) |
| `campaigns` | array | List of campaigns (id, name, status, daily\_limit) |
| `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) |
| `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) |
| `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) |
| `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) |
| `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) |
| `count` | number | Returned or affected record count |
| `next_starting_after` | string | Cursor for the next page |
| `id` | string | Record ID |
| `name` | string | Record name |
| `email_address` | string | Lead email address |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `status` | number | Lead or campaign status |
| `subject` | string | Email subject |
| `thread_id` | string | Email thread ID |
| `message` | string | Operation message |
### Instantly Patch Lead [#instantly-patch-lead]
Updates fields on an existing Instantly V2 lead.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------------------------------------------------------------- |
| `leadId` | string | Yes | Lead ID |
| `first_name` | string | No | Lead first name |
| `last_name` | string | No | Lead last name |
| `company_name` | string | No | Lead company name |
| `job_title` | string | No | Lead job title |
| `phone` | string | No | Lead phone number |
| `website` | string | No | Lead website |
| `personalization` | string | No | Lead personalization text |
| `lt_interest_status` | number | No | Lead interest status value |
| `pl_value_lead` | string | No | Potential value of the lead |
| `assigned_to` | string | No | ID of the user assigned to the lead |
| `custom_variables` | json | No | Custom variable object with string, number, boolean, or null values |
#### Output [#output-3]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------------------------------------------------------------------------------- |
| `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) |
| `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) |
| `campaigns` | array | List of campaigns (id, name, status, daily\_limit) |
| `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) |
| `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) |
| `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) |
| `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) |
| `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) |
| `count` | number | Returned or affected record count |
| `next_starting_after` | string | Cursor for the next page |
| `id` | string | Record ID |
| `name` | string | Record name |
| `email_address` | string | Lead email address |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `status` | number | Lead or campaign status |
| `subject` | string | Email subject |
| `thread_id` | string | Email thread ID |
| `message` | string | Operation message |
### Instantly Delete Leads [#instantly-delete-leads]
Deletes Instantly V2 leads in bulk from a campaign or lead list.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `campaign_id` | string | No | Campaign ID to delete leads from. Required if list\_id is not provided. |
| `list_id` | string | No | Lead list ID to delete leads from. Required if campaign\_id is not provided. |
| `status` | number | No | Optional lead status filter |
| `ids` | array | No | Specific lead IDs to delete |
| `limit` | number | No | Maximum number of matching leads to delete, up to 10000 |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ------ | ----------------------- |
| `count` | number | Number of leads deleted |
### Instantly Update Lead Interest Status [#instantly-update-lead-interest-status]
Submits an Instantly V2 background job to update a lead interest status.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ----------------------- | ------- | -------- | ------------------------------------------------------------------------------ |
| `lead_email` | string | Yes | Lead email address |
| `interest_value` | number | No | Interest status value. Leave empty in the block or pass null to reset to Lead. |
| `campaign_id` | string | No | Campaign ID for the lead |
| `list_id` | string | No | Lead list ID for the lead |
| `ai_interest_value` | number | No | AI interest value to set for the lead |
| `disable_auto_interest` | boolean | No | Whether to disable auto interest |
#### Output [#output-5]
| Parameter | Type | Description |
| --------- | ------ | --------------------------------- |
| `message` | string | Background job submission message |
### Instantly List Campaigns [#instantly-list-campaigns]
Retrieves Instantly V2 campaigns with search, status, tag, and pagination filters.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ------------------- | ------ | -------- | -------------------------------------------- |
| `limit` | number | No | Number of campaigns to return, from 1 to 100 |
| `starting_after` | string | No | Pagination cursor from next\_starting\_after |
| `search` | string | No | Search by campaign name |
| `tag_ids` | string | No | Comma-separated campaign tag IDs |
| `ai_sales_agent_id` | string | No | Filter campaigns by AI Sales Agent ID |
| `status` | number | No | Campaign status enum value |
#### Output [#output-6]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------------------------------------------------------------------------------- |
| `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) |
| `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) |
| `campaigns` | array | List of campaigns (id, name, status, daily\_limit) |
| `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) |
| `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) |
| `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) |
| `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) |
| `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) |
| `count` | number | Returned or affected record count |
| `next_starting_after` | string | Cursor for the next page |
| `id` | string | Record ID |
| `name` | string | Record name |
| `email_address` | string | Lead email address |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `status` | number | Lead or campaign status |
| `subject` | string | Email subject |
| `thread_id` | string | Email thread ID |
| `message` | string | Operation message |
### Instantly Create Campaign [#instantly-create-campaign]
Creates an Instantly V2 campaign using the documented campaign schedule schema.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ------------------- | ------- | -------- | --------------------------------------------- |
| `name` | string | Yes | Campaign name |
| `campaign_schedule` | json | Yes | Campaign schedule object with schedules array |
| `sequences` | array | No | Campaign sequence definitions |
| `email_list` | array | No | Sending email accounts |
| `daily_limit` | number | No | Daily sending limit |
| `daily_max_leads` | number | No | Daily maximum new leads to contact |
| `open_tracking` | boolean | No | Whether to track opens |
| `stop_on_reply` | boolean | No | Whether to stop the campaign on reply |
| `link_tracking` | boolean | No | Whether to track links |
| `text_only` | boolean | No | Whether the campaign is text only |
| `email_gap` | number | No | Gap between emails in minutes |
| `pl_value` | number | No | Value of every positive lead |
#### Output [#output-7]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------------------------------------------------------------------------------- |
| `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) |
| `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) |
| `campaigns` | array | List of campaigns (id, name, status, daily\_limit) |
| `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) |
| `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) |
| `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) |
| `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) |
| `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) |
| `count` | number | Returned or affected record count |
| `next_starting_after` | string | Cursor for the next page |
| `id` | string | Record ID |
| `name` | string | Record name |
| `email_address` | string | Lead email address |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `status` | number | Lead or campaign status |
| `subject` | string | Email subject |
| `thread_id` | string | Email thread ID |
| `message` | string | Operation message |
### Instantly Patch Campaign [#instantly-patch-campaign]
Updates documented Instantly V2 campaign fields.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ------------------- | ------- | -------- | --------------------------------------------- |
| `campaignId` | string | Yes | Campaign ID |
| `name` | string | No | Campaign name |
| `campaign_schedule` | json | No | Campaign schedule object with schedules array |
| `sequences` | array | No | Campaign sequence definitions |
| `email_list` | array | No | Sending email accounts |
| `daily_limit` | number | No | Daily sending limit |
| `daily_max_leads` | number | No | Daily maximum new leads to contact |
| `open_tracking` | boolean | No | Whether to track opens |
| `stop_on_reply` | boolean | No | Whether to stop the campaign on reply |
| `link_tracking` | boolean | No | Whether to track links |
| `text_only` | boolean | No | Whether the campaign is text only |
| `email_gap` | number | No | Gap between emails in minutes |
| `pl_value` | number | No | Value of every positive lead |
#### Output [#output-8]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------------------------------------------------------------------------------- |
| `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) |
| `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) |
| `campaigns` | array | List of campaigns (id, name, status, daily\_limit) |
| `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) |
| `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) |
| `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) |
| `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) |
| `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) |
| `count` | number | Returned or affected record count |
| `next_starting_after` | string | Cursor for the next page |
| `id` | string | Record ID |
| `name` | string | Record name |
| `email_address` | string | Lead email address |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `status` | number | Lead or campaign status |
| `subject` | string | Email subject |
| `thread_id` | string | Email thread ID |
| `message` | string | Operation message |
### Instantly Activate Campaign [#instantly-activate-campaign]
Activates, starts, or resumes an Instantly V2 campaign.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ----------- |
| `campaignId` | string | Yes | Campaign ID |
#### Output [#output-9]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------------------------------------------------------------------------------- |
| `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) |
| `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) |
| `campaigns` | array | List of campaigns (id, name, status, daily\_limit) |
| `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) |
| `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) |
| `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) |
| `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) |
| `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) |
| `count` | number | Returned or affected record count |
| `next_starting_after` | string | Cursor for the next page |
| `id` | string | Record ID |
| `name` | string | Record name |
| `email_address` | string | Lead email address |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `status` | number | Lead or campaign status |
| `subject` | string | Email subject |
| `thread_id` | string | Email thread ID |
| `message` | string | Operation message |
### Instantly Pause Campaign [#instantly-pause-campaign]
Pauses a running Instantly V2 campaign, stopping further email sends.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ----------- |
| `campaignId` | string | Yes | Campaign ID |
#### Output [#output-10]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------------------------------------------------------------------------------- |
| `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) |
| `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) |
| `campaigns` | array | List of campaigns (id, name, status, daily\_limit) |
| `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) |
| `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) |
| `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) |
| `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) |
| `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) |
| `count` | number | Returned or affected record count |
| `next_starting_after` | string | Cursor for the next page |
| `id` | string | Record ID |
| `name` | string | Record name |
| `email_address` | string | Lead email address |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `status` | number | Lead or campaign status |
| `subject` | string | Email subject |
| `thread_id` | string | Email thread ID |
| `message` | string | Operation message |
### Instantly Delete Campaign [#instantly-delete-campaign]
Permanently deletes an Instantly V2 campaign.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ----------- |
| `campaignId` | string | Yes | Campaign ID |
#### Output [#output-11]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------------------------------------------------------------------------------- |
| `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) |
| `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) |
| `campaigns` | array | List of campaigns (id, name, status, daily\_limit) |
| `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) |
| `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) |
| `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) |
| `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) |
| `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) |
| `count` | number | Returned or affected record count |
| `next_starting_after` | string | Cursor for the next page |
| `id` | string | Record ID |
| `name` | string | Record name |
| `email_address` | string | Lead email address |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `status` | number | Lead or campaign status |
| `subject` | string | Email subject |
| `thread_id` | string | Email thread ID |
| `message` | string | Operation message |
### Instantly List Emails [#instantly-list-emails]
Retrieves Instantly V2 Unibox emails with search and pagination filters.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | --------------------------------------------------- |
| `limit` | number | No | Number of emails to return, from 1 to 100 |
| `starting_after` | string | No | Pagination cursor from next\_starting\_after |
| `search` | string | No | Search query, email address, or thread:\ |
| `campaign_id` | string | No | Campaign ID filter |
| `list_id` | string | No | Lead list ID filter |
| `i_status` | number | No | Email interest status filter |
| `eaccount` | string | No | Sending email account filter |
| `lead` | string | No | Lead email address filter |
| `is_unread` | boolean | No | Unread status filter |
#### Output [#output-12]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------------------------------------------------------------------------------- |
| `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) |
| `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) |
| `campaigns` | array | List of campaigns (id, name, status, daily\_limit) |
| `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) |
| `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) |
| `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) |
| `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) |
| `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) |
| `count` | number | Returned or affected record count |
| `next_starting_after` | string | Cursor for the next page |
| `id` | string | Record ID |
| `name` | string | Record name |
| `email_address` | string | Lead email address |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `status` | number | Lead or campaign status |
| `subject` | string | Email subject |
| `thread_id` | string | Email thread ID |
| `message` | string | Operation message |
### Instantly Reply To Email [#instantly-reply-to-email]
Sends an Instantly V2 reply to an existing Unibox email.
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ------------------------ | ------ | -------- | ---------------------------------------------- |
| `eaccount` | string | Yes | Connected email account used to send the reply |
| `reply_to_uuid` | string | Yes | Email ID to reply to |
| `subject` | string | Yes | Reply subject |
| `body` | json | Yes | Reply body object with text and/or html |
| `cc_address_email_list` | string | No | Comma-separated CC email addresses |
| `bcc_address_email_list` | string | No | Comma-separated BCC email addresses |
#### Output [#output-13]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------------------------------------------------------------------------------- |
| `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) |
| `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) |
| `campaigns` | array | List of campaigns (id, name, status, daily\_limit) |
| `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) |
| `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) |
| `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) |
| `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) |
| `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) |
| `count` | number | Returned or affected record count |
| `next_starting_after` | string | Cursor for the next page |
| `id` | string | Record ID |
| `name` | string | Record name |
| `email_address` | string | Lead email address |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `status` | number | Lead or campaign status |
| `subject` | string | Email subject |
| `thread_id` | string | Email thread ID |
| `message` | string | Operation message |
### Instantly List Lead Lists [#instantly-list-lead-lists]
Retrieves Instantly V2 lead lists with search and pagination filters.
#### Input [#input-14]
| Parameter | Type | Required | Description |
| --------------------- | ------- | -------- | --------------------------------------------- |
| `limit` | number | No | Number of lead lists to return, from 1 to 100 |
| `starting_after` | string | No | Starting-after timestamp cursor |
| `has_enrichment_task` | boolean | No | Filter by enrichment task setting |
| `search` | string | No | Search query to filter lead lists by name |
#### Output [#output-14]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------------------------------------------------------------------------------- |
| `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) |
| `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) |
| `campaigns` | array | List of campaigns (id, name, status, daily\_limit) |
| `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) |
| `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) |
| `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) |
| `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) |
| `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) |
| `count` | number | Returned or affected record count |
| `next_starting_after` | string | Cursor for the next page |
| `id` | string | Record ID |
| `name` | string | Record name |
| `email_address` | string | Lead email address |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `status` | number | Lead or campaign status |
| `subject` | string | Email subject |
| `thread_id` | string | Email thread ID |
| `message` | string | Operation message |
### Instantly Create Lead List [#instantly-create-lead-list]
Creates an Instantly V2 lead list.
#### Input [#input-15]
| Parameter | Type | Required | Description |
| --------------------- | ------- | -------- | ------------------------------------------------------ |
| `name` | string | Yes | Lead list name |
| `has_enrichment_task` | boolean | No | Whether this list runs enrichment for every added lead |
| `owned_by` | string | No | User ID of the lead list owner |
#### Output [#output-15]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------------------------------------------------------------------------------- |
| `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) |
| `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) |
| `campaigns` | array | List of campaigns (id, name, status, daily\_limit) |
| `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) |
| `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) |
| `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) |
| `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) |
| `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) |
| `count` | number | Returned or affected record count |
| `next_starting_after` | string | Cursor for the next page |
| `id` | string | Record ID |
| `name` | string | Record name |
| `email_address` | string | Lead email address |
| `first_name` | string | Lead first name |
| `last_name` | string | Lead last name |
| `status` | number | Lead or campaign status |
| `subject` | string | Email subject |
| `thread_id` | string | Email thread ID |
| `message` | string | Operation message |
---
# Intercom (/integrations/intercom)
{/* MANUAL-CONTENT-START:intro */}
Supercharge your customer communications and relationship management with [Intercom](https://www.intercom.com/) – the all-in-one messaging platform for engaging, supporting, and retaining your customers. Integrate Intercom into your workflows to centralize conversations, contacts, support tickets, and more, all seamlessly accessible via automation.
With the Intercom tool, you can:
* **Create and manage contacts**: Easily add, update, search, list, and delete contacts to maintain a clean, actionable customer database.
* **Organize companies**: Create, get, and list companies to understand and support your customer organizations at scale.
* **Centralize customer conversations**: Retrieve, list, reply to, and search customer conversations to ensure no message slips through the cracks and support responses are always timely.
* **Manage tickets and messages**: Create and fetch tickets, as well as compose outbound messages, to deliver proactive, high-quality support experiences.
* **Automate and extend workflows**: Connect Intercom operations with your automations to trigger follow-ups, orchestrate customer journeys, and sync data with your stack.
Intercom empowers sales, support, and success teams to deliver personalized, efficient, and scalable customer experiences—whether you need to onboard new users, troubleshoot issues, or engage your customer base in real time.
Drive deeper relationships, faster response times, and smarter workflows by integrating Intercom with your automated processes today.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Intercom into the workflow. Can create, get, update, list, search, and delete contacts; create, get, and list companies; get, list, reply, and search conversations; create and get tickets; and create messages.
## Actions [#actions]
### Create Contact in Intercom [#create-contact-in-intercom]
Create a new contact in Intercom with email, external\_id, or role. Returns API-aligned fields only.
#### Input [#input]
| Parameter | Type | Required | Description |
| -------------------------- | ------- | -------- | --------------------------------------------------------------------------------------- |
| `role` | string | No | The role of the contact. Accepts 'user' or 'lead'. Defaults to 'lead' if not specified. |
| `email` | string | No | The contact's email address |
| `external_id` | string | No | A unique identifier for the contact provided by the client |
| `phone` | string | No | The contact's phone number |
| `name` | string | No | The contact's name |
| `avatar` | string | No | An avatar image URL for the contact |
| `signed_up_at` | number | No | The time the user signed up as a Unix timestamp |
| `last_seen_at` | number | No | The time the user was last seen as a Unix timestamp |
| `owner_id` | string | No | The id of an admin that has been assigned account ownership of the contact |
| `unsubscribed_from_emails` | boolean | No | Whether the contact is unsubscribed from emails |
| `custom_attributes` | string | No | Custom attributes as JSON object (e.g., \{"attribute\_name": "value"}) |
| `company_id` | string | No | Company ID to associate the contact with during creation |
#### Output [#output]
| Parameter | Type | Description |
| ---------------------------- | ------- | -------------------------------------------- |
| `contact` | object | Created contact object |
| ↳ `id` | string | Unique identifier for the contact |
| ↳ `type` | string | Object type (contact) |
| ↳ `role` | string | Role of the contact (user or lead) |
| ↳ `email` | string | Email address of the contact |
| ↳ `phone` | string | Phone number of the contact |
| ↳ `name` | string | Name of the contact |
| ↳ `avatar` | string | Avatar URL of the contact |
| ↳ `owner_id` | string | ID of the admin assigned to this contact |
| ↳ `external_id` | string | External identifier for the contact |
| ↳ `created_at` | number | Unix timestamp when contact was created |
| ↳ `updated_at` | number | Unix timestamp when contact was last updated |
| ↳ `signed_up_at` | number | Unix timestamp when user signed up |
| ↳ `last_seen_at` | number | Unix timestamp when user was last seen |
| ↳ `workspace_id` | string | Workspace ID the contact belongs to |
| ↳ `custom_attributes` | object | Custom attributes set on the contact |
| ↳ `tags` | object | Tags associated with the contact |
| ↳ `type` | string | List type |
| ↳ `url` | string | URL to fetch tags |
| ↳ `data` | array | Array of tag objects |
| ↳ `has_more` | boolean | Whether there are more tags |
| ↳ `total_count` | number | Total number of tags |
| ↳ `notes` | object | Notes associated with the contact |
| ↳ `type` | string | List type |
| ↳ `url` | string | URL to fetch notes |
| ↳ `data` | array | Array of note objects |
| ↳ `has_more` | boolean | Whether there are more notes |
| ↳ `total_count` | number | Total number of notes |
| ↳ `companies` | object | Companies associated with the contact |
| ↳ `type` | string | List type |
| ↳ `url` | string | URL to fetch companies |
| ↳ `data` | array | Array of company objects |
| ↳ `has_more` | boolean | Whether there are more companies |
| ↳ `total_count` | number | Total number of companies |
| ↳ `location` | object | Location information for the contact |
| ↳ `type` | string | Location type |
| ↳ `city` | string | City |
| ↳ `region` | string | Region/State |
| ↳ `country` | string | Country |
| ↳ `country_code` | string | Country code |
| ↳ `continent_code` | string | Continent code |
| ↳ `social_profiles` | object | Social profiles of the contact |
| ↳ `type` | string | List type |
| ↳ `data` | array | Array of social profile objects |
| ↳ `unsubscribed_from_emails` | boolean | Whether contact is unsubscribed from emails |
| `contactId` | string | ID of the created contact |
### Get Single Contact from Intercom [#get-single-contact-from-intercom]
Get a single contact by ID from Intercom. Returns API-aligned fields only.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------- |
| `contactId` | string | Yes | Contact ID to retrieve |
#### Output [#output-1]
| Parameter | Type | Description |
| ---------------------------- | ------- | ---------------------------------------------------------- |
| `contact` | object | Contact object |
| ↳ `id` | string | Unique identifier for the contact |
| ↳ `type` | string | Object type (contact) |
| ↳ `role` | string | Role of the contact (user or lead) |
| ↳ `email` | string | Email address of the contact |
| ↳ `email_domain` | string | Email domain of the contact |
| ↳ `phone` | string | Phone number of the contact |
| ↳ `name` | string | Name of the contact |
| ↳ `avatar` | string | Avatar URL of the contact |
| ↳ `owner_id` | string | ID of the admin assigned account ownership |
| ↳ `external_id` | string | External identifier provided by the client |
| ↳ `workspace_id` | string | Workspace ID the contact belongs to |
| ↳ `created_at` | number | Unix timestamp when contact was created |
| ↳ `updated_at` | number | Unix timestamp when contact was last updated |
| ↳ `signed_up_at` | number | Unix timestamp when user signed up |
| ↳ `last_seen_at` | number | Unix timestamp when user was last seen |
| ↳ `last_contacted_at` | number | Unix timestamp when contact was last contacted |
| ↳ `last_replied_at` | number | Unix timestamp when contact last replied |
| ↳ `last_email_opened_at` | number | Unix timestamp when contact last opened an email |
| ↳ `last_email_clicked_at` | number | Unix timestamp when contact last clicked an email link |
| ↳ `has_hard_bounced` | boolean | Whether email to this contact has hard bounced |
| ↳ `marked_email_as_spam` | boolean | Whether contact marked email as spam |
| ↳ `unsubscribed_from_emails` | boolean | Whether contact is unsubscribed from emails |
| ↳ `browser` | string | Browser used by contact |
| ↳ `browser_version` | string | Browser version |
| ↳ `browser_language` | string | Browser language setting |
| ↳ `os` | string | Operating system |
| ↳ `language_override` | string | Language override setting |
| ↳ `custom_attributes` | object | Custom attributes set on the contact |
| ↳ `tags` | object | Tags associated with the contact (up to 10 displayed) |
| ↳ `type` | string | List type identifier |
| ↳ `url` | string | URL to fetch full list |
| ↳ `data` | array | Array of objects (up to 10) |
| ↳ `has_more` | boolean | Whether there are more items beyond this list |
| ↳ `total_count` | number | Total number of items |
| ↳ `notes` | object | Notes associated with the contact (up to 10 displayed) |
| ↳ `type` | string | List type identifier |
| ↳ `url` | string | URL to fetch full list |
| ↳ `data` | array | Array of objects (up to 10) |
| ↳ `has_more` | boolean | Whether there are more items beyond this list |
| ↳ `total_count` | number | Total number of items |
| ↳ `companies` | object | Companies associated with the contact (up to 10 displayed) |
| ↳ `type` | string | List type identifier |
| ↳ `url` | string | URL to fetch full list |
| ↳ `data` | array | Array of objects (up to 10) |
| ↳ `has_more` | boolean | Whether there are more items beyond this list |
| ↳ `total_count` | number | Total number of items |
| ↳ `location` | object | Location information for the contact |
| ↳ `type` | string | Object type (location) |
| ↳ `city` | string | City name |
| ↳ `region` | string | Region or state name |
| ↳ `country` | string | Country name |
| ↳ `country_code` | string | ISO country code |
| ↳ `continent_code` | string | Continent code |
| ↳ `social_profiles` | object | Social profiles of the contact |
| ↳ `type` | string | Social network type (e.g., twitter, facebook) |
| ↳ `name` | string | Social network name |
| ↳ `url` | string | Profile URL |
| ↳ `username` | string | Username on the social network |
| ↳ `id` | string | User ID on the social network |
### Update Contact in Intercom [#update-contact-in-intercom]
Update an existing contact in Intercom. Returns API-aligned fields only.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| -------------------------- | ------- | -------- | -------------------------------------------------------------------------- |
| `contactId` | string | Yes | Contact ID to update |
| `role` | string | No | The role of the contact. Accepts 'user' or 'lead'. |
| `external_id` | string | No | A unique identifier for the contact provided by the client |
| `email` | string | No | The contact's email address |
| `phone` | string | No | The contact's phone number |
| `name` | string | No | The contact's name |
| `avatar` | string | No | An avatar image URL for the contact |
| `signed_up_at` | number | No | The time the user signed up as a Unix timestamp |
| `last_seen_at` | number | No | The time the user was last seen as a Unix timestamp |
| `owner_id` | string | No | The id of an admin that has been assigned account ownership of the contact |
| `unsubscribed_from_emails` | boolean | No | Whether the contact is unsubscribed from emails |
| `custom_attributes` | string | No | Custom attributes as JSON object (e.g., \{"attribute\_name": "value"}) |
| `company_id` | string | No | Company ID to associate the contact with |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------------------------- | ------- | -------------------------------------------- |
| `contact` | object | Updated contact object |
| ↳ `id` | string | Unique identifier for the contact |
| ↳ `type` | string | Object type (contact) |
| ↳ `role` | string | Role of the contact (user or lead) |
| ↳ `email` | string | Email address of the contact |
| ↳ `phone` | string | Phone number of the contact |
| ↳ `name` | string | Name of the contact |
| ↳ `avatar` | string | Avatar URL of the contact |
| ↳ `owner_id` | string | ID of the admin assigned to this contact |
| ↳ `external_id` | string | External identifier for the contact |
| ↳ `created_at` | number | Unix timestamp when contact was created |
| ↳ `updated_at` | number | Unix timestamp when contact was last updated |
| ↳ `workspace_id` | string | Workspace ID the contact belongs to |
| ↳ `custom_attributes` | object | Custom attributes set on the contact |
| ↳ `tags` | object | Tags associated with the contact |
| ↳ `notes` | object | Notes associated with the contact |
| ↳ `companies` | object | Companies associated with the contact |
| ↳ `location` | object | Location information for the contact |
| ↳ `social_profiles` | object | Social profiles of the contact |
| ↳ `unsubscribed_from_emails` | boolean | Whether contact is unsubscribed from emails |
| `contactId` | string | ID of the updated contact |
### List Contacts from Intercom [#list-contacts-from-intercom]
List all contacts from Intercom with pagination support
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ----------------------------------------- |
| `per_page` | number | No | Number of results per page (max: 150) |
| `starting_after` | string | No | Cursor for pagination - ID to start after |
#### Output [#output-3]
| Parameter | Type | Description |
| --------------------- | ------ | -------------------------------------------- |
| `contacts` | array | Array of contact objects |
| ↳ `id` | string | Unique identifier for the contact |
| ↳ `type` | string | Object type (contact) |
| ↳ `role` | string | Role of the contact (user or lead) |
| ↳ `email` | string | Email address of the contact |
| ↳ `phone` | string | Phone number of the contact |
| ↳ `name` | string | Name of the contact |
| ↳ `external_id` | string | External identifier for the contact |
| ↳ `created_at` | number | Unix timestamp when contact was created |
| ↳ `updated_at` | number | Unix timestamp when contact was last updated |
| ↳ `workspace_id` | string | Workspace ID the contact belongs to |
| ↳ `custom_attributes` | object | Custom attributes set on the contact |
| ↳ `tags` | object | Tags associated with the contact |
| ↳ `companies` | object | Companies associated with the contact |
| `pages` | object | Pagination information |
| ↳ `type` | string | Pages type identifier |
| ↳ `page` | number | Current page number |
| ↳ `per_page` | number | Number of results per page |
| ↳ `total_pages` | number | Total number of pages |
| `total_count` | number | Total number of contacts |
### Search Contacts in Intercom [#search-contacts-in-intercom]
Search for contacts in Intercom using a query
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ |
| `query` | string | Yes | Search query (e.g., \{"field":"email","operator":"=","value":"[user@example.com](mailto:user@example.com)"}) |
| `per_page` | number | No | Number of results per page (max: 150) |
| `starting_after` | string | No | Cursor for pagination |
| `sort_field` | string | No | Field to sort by (e.g., "name", "created\_at", "last\_seen\_at") |
| `sort_order` | string | No | Sort order: "ascending" or "descending" |
#### Output [#output-4]
| Parameter | Type | Description |
| ---------------------------- | ------- | -------------------------------------------- |
| `contacts` | array | Array of matching contact objects |
| ↳ `id` | string | Unique identifier for the contact |
| ↳ `type` | string | Object type (contact) |
| ↳ `role` | string | Role of the contact (user or lead) |
| ↳ `email` | string | Email address of the contact |
| ↳ `phone` | string | Phone number of the contact |
| ↳ `name` | string | Name of the contact |
| ↳ `avatar` | string | Avatar URL of the contact |
| ↳ `owner_id` | string | ID of the admin assigned to this contact |
| ↳ `external_id` | string | External identifier for the contact |
| ↳ `created_at` | number | Unix timestamp when contact was created |
| ↳ `updated_at` | number | Unix timestamp when contact was last updated |
| ↳ `signed_up_at` | number | Unix timestamp when user signed up |
| ↳ `last_seen_at` | number | Unix timestamp when user was last seen |
| ↳ `workspace_id` | string | Workspace ID the contact belongs to |
| ↳ `custom_attributes` | object | Custom attributes set on the contact |
| ↳ `tags` | object | Tags associated with the contact |
| ↳ `notes` | object | Notes associated with the contact |
| ↳ `companies` | object | Companies associated with the contact |
| ↳ `location` | object | Location information for the contact |
| ↳ `social_profiles` | object | Social profiles of the contact |
| ↳ `unsubscribed_from_emails` | boolean | Whether contact is unsubscribed from emails |
| `pages` | object | Pagination information |
| ↳ `type` | string | Pages type identifier |
| ↳ `page` | number | Current page number |
| ↳ `per_page` | number | Number of results per page |
| ↳ `total_pages` | number | Total number of pages |
| `total_count` | number | Total number of matching contacts |
### Delete Contact from Intercom [#delete-contact-from-intercom]
Delete a contact from Intercom by ID. Returns API-aligned fields only.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | -------------------- |
| `contactId` | string | Yes | Contact ID to delete |
#### Output [#output-5]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------- |
| `id` | string | ID of deleted contact |
| `deleted` | boolean | Whether the contact was deleted |
### Create Company in Intercom [#create-company-in-intercom]
Create or update a company in Intercom
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `company_id` | string | Yes | Your unique identifier for the company |
| `name` | string | No | The name of the company |
| `website` | string | No | The company website |
| `plan` | string | No | The company plan name |
| `size` | number | No | The number of employees in the company |
| `industry` | string | No | The industry the company operates in |
| `monthly_spend` | number | No | How much revenue the company generates for your business. Note: This field truncates floats to whole integers (e.g., 155.98 becomes 155) |
| `custom_attributes` | string | No | Custom attributes as JSON object |
| `remote_created_at` | number | No | The time the company was created by you as a Unix timestamp |
#### Output [#output-6]
| Parameter | Type | Description |
| --------------------- | ------ | ---------------------------------------------- |
| `company` | object | Created or updated company object |
| ↳ `id` | string | Unique identifier for the company |
| ↳ `type` | string | Object type (company) |
| ↳ `app_id` | string | Intercom app ID |
| ↳ `company_id` | string | Your unique identifier for the company |
| ↳ `name` | string | Name of the company |
| ↳ `website` | string | Company website URL |
| ↳ `plan` | object | Company plan information |
| ↳ `size` | number | Number of employees |
| ↳ `industry` | string | Industry the company operates in |
| ↳ `monthly_spend` | number | Monthly revenue from this company |
| ↳ `session_count` | number | Number of sessions |
| ↳ `user_count` | number | Number of users in the company |
| ↳ `created_at` | number | Unix timestamp when company was created |
| ↳ `updated_at` | number | Unix timestamp when company was last updated |
| ↳ `remote_created_at` | number | Unix timestamp when company was created by you |
| ↳ `custom_attributes` | object | Custom attributes set on the company |
| ↳ `tags` | object | Tags associated with the company |
| ↳ `type` | string | Tag list type |
| ↳ `tags` | array | Array of tag objects |
| ↳ `segments` | object | Segments the company belongs to |
| ↳ `type` | string | Segment list type |
| ↳ `segments` | array | Array of segment objects |
| `companyId` | string | ID of the created/updated company |
### Get Company from Intercom [#get-company-from-intercom]
Retrieve a single company by ID from Intercom
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------- |
| `companyId` | string | Yes | Company ID to retrieve |
#### Output [#output-7]
| Parameter | Type | Description |
| --------------------- | ------ | -------------------------------------------- |
| `company` | object | Company object |
| ↳ `id` | string | Unique identifier for the company |
| ↳ `type` | string | Object type (company) |
| ↳ `app_id` | string | Intercom app ID |
| ↳ `company_id` | string | Your unique identifier for the company |
| ↳ `name` | string | Name of the company |
| ↳ `website` | string | Company website URL |
| ↳ `plan` | object | Company plan information |
| ↳ `size` | number | Number of employees |
| ↳ `industry` | string | Industry the company operates in |
| ↳ `monthly_spend` | number | Monthly revenue from this company |
| ↳ `session_count` | number | Number of sessions |
| ↳ `user_count` | number | Number of users in the company |
| ↳ `created_at` | number | Unix timestamp when company was created |
| ↳ `updated_at` | number | Unix timestamp when company was last updated |
| ↳ `custom_attributes` | object | Custom attributes set on the company |
| ↳ `tags` | object | Tags associated with the company |
| ↳ `segments` | object | Segments the company belongs to |
### List Companies from Intercom [#list-companies-from-intercom]
List all companies from Intercom with pagination support. Note: This endpoint has a limit of 10,000 companies that can be returned using pagination. For datasets larger than 10,000 companies, use the Scroll API instead.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------ |
| `per_page` | number | No | Number of results per page |
| `page` | number | No | Page number |
| `starting_after` | string | No | Cursor for pagination (preferred over page-based pagination) |
#### Output [#output-8]
| Parameter | Type | Description |
| --------------------- | ------- | -------------------------------------------- |
| `companies` | array | Array of company objects |
| ↳ `id` | string | Unique identifier for the company |
| ↳ `type` | string | Object type (company) |
| ↳ `app_id` | string | Intercom app ID |
| ↳ `company_id` | string | Your unique identifier for the company |
| ↳ `name` | string | Name of the company |
| ↳ `website` | string | Company website URL |
| ↳ `plan` | object | Company plan information |
| ↳ `monthly_spend` | number | Monthly revenue from this company |
| ↳ `session_count` | number | Number of sessions |
| ↳ `user_count` | number | Number of users in the company |
| ↳ `created_at` | number | Unix timestamp when company was created |
| ↳ `updated_at` | number | Unix timestamp when company was last updated |
| ↳ `custom_attributes` | object | Custom attributes set on the company |
| ↳ `tags` | object | Tags associated with the company |
| ↳ `segments` | object | Segments the company belongs to |
| `pages` | object | Pagination information |
| ↳ `type` | string | Pages type identifier |
| ↳ `page` | number | Current page number |
| ↳ `per_page` | number | Number of results per page |
| ↳ `total_pages` | number | Total number of pages |
| `total_count` | number | Total number of companies |
| `success` | boolean | Operation success status |
### Get Conversation from Intercom [#get-conversation-from-intercom]
Retrieve a single conversation by ID from Intercom
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ---------------------- | ------- | -------- | --------------------------------------------------------------------------------------------- |
| `conversationId` | string | Yes | Conversation ID to retrieve |
| `display_as` | string | No | Set to "plaintext" to retrieve messages in plain text |
| `include_translations` | boolean | No | When true, conversation parts will be translated to the detected language of the conversation |
#### Output [#output-9]
| Parameter | Type | Description |
| ---------------------- | ------- | ------------------------------------------------- |
| `conversation` | object | Conversation object |
| ↳ `id` | string | Unique identifier for the conversation |
| ↳ `type` | string | Object type (conversation) |
| ↳ `title` | string | Title of the conversation |
| ↳ `created_at` | number | Unix timestamp when conversation was created |
| ↳ `updated_at` | number | Unix timestamp when conversation was last updated |
| ↳ `waiting_since` | number | Unix timestamp when waiting for reply |
| ↳ `snoozed_until` | number | Unix timestamp when snooze ends |
| ↳ `open` | boolean | Whether the conversation is open |
| ↳ `state` | string | State of the conversation |
| ↳ `read` | boolean | Whether the conversation has been read |
| ↳ `priority` | string | Priority of the conversation |
| ↳ `admin_assignee_id` | number | ID of assigned admin |
| ↳ `team_assignee_id` | string | ID of assigned team |
| ↳ `tags` | object | Tags on the conversation |
| ↳ `source` | object | Source of the conversation |
| ↳ `contacts` | object | Contacts in the conversation |
| ↳ `teammates` | object | Teammates in the conversation |
| ↳ `conversation_parts` | object | Parts of the conversation |
| ↳ `statistics` | object | Conversation statistics |
| `success` | boolean | Operation success status |
### List Conversations from Intercom [#list-conversations-from-intercom]
List all conversations from Intercom with pagination support
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ----------------------------------------------------------------------- |
| `per_page` | number | No | Number of results per page (max: 150) |
| `starting_after` | string | No | Cursor for pagination |
| `sort` | string | No | Field to sort by (e.g., "waiting\_since", "updated\_at", "created\_at") |
| `order` | string | No | Sort order: "asc" (ascending) or "desc" (descending) |
#### Output [#output-10]
| Parameter | Type | Description |
| --------------------- | ------- | ------------------------------------------------- |
| `conversations` | array | Array of conversation objects |
| ↳ `id` | string | Unique identifier for the conversation |
| ↳ `type` | string | Object type (conversation) |
| ↳ `title` | string | Title of the conversation |
| ↳ `created_at` | number | Unix timestamp when conversation was created |
| ↳ `updated_at` | number | Unix timestamp when conversation was last updated |
| ↳ `waiting_since` | number | Unix timestamp when waiting for reply |
| ↳ `open` | boolean | Whether the conversation is open |
| ↳ `state` | string | State of the conversation |
| ↳ `read` | boolean | Whether the conversation has been read |
| ↳ `priority` | string | Priority of the conversation |
| ↳ `admin_assignee_id` | number | ID of assigned admin |
| ↳ `team_assignee_id` | string | ID of assigned team |
| ↳ `tags` | object | Tags on the conversation |
| ↳ `source` | object | Source of the conversation |
| ↳ `contacts` | object | Contacts in the conversation |
| `pages` | object | Pagination information |
| ↳ `type` | string | Pages type identifier |
| ↳ `page` | number | Current page number |
| ↳ `per_page` | number | Number of results per page |
| ↳ `total_pages` | number | Total number of pages |
| `total_count` | number | Total number of conversations |
| `success` | boolean | Operation success status |
### Reply to Conversation in Intercom [#reply-to-conversation-in-intercom]
Reply to a conversation as an admin in Intercom
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ |
| `conversationId` | string | Yes | Conversation ID to reply to |
| `message_type` | string | Yes | Message type: "comment" or "note" |
| `body` | string | Yes | The text body of the reply |
| `admin_id` | string | No | The ID of the admin authoring the reply. If not provided, a default admin (Operator/Fin) will be used. |
| `attachment_urls` | string | No | Comma-separated list of image URLs (max 10) |
| `created_at` | number | No | Unix timestamp for when the reply was created. If not provided, current time is used. |
#### Output [#output-11]
| Parameter | Type | Description |
| ---------------------- | ------- | ------------------------------------------------- |
| `conversation` | object | Updated conversation object |
| ↳ `id` | string | Unique identifier for the conversation |
| ↳ `type` | string | Object type (conversation) |
| ↳ `title` | string | Title of the conversation |
| ↳ `created_at` | number | Unix timestamp when conversation was created |
| ↳ `updated_at` | number | Unix timestamp when conversation was last updated |
| ↳ `waiting_since` | number | Unix timestamp when waiting for reply |
| ↳ `open` | boolean | Whether the conversation is open |
| ↳ `state` | string | State of the conversation |
| ↳ `read` | boolean | Whether the conversation has been read |
| ↳ `priority` | string | Priority of the conversation |
| ↳ `admin_assignee_id` | number | ID of assigned admin |
| ↳ `team_assignee_id` | string | ID of assigned team |
| ↳ `tags` | object | Tags on the conversation |
| ↳ `source` | object | Source of the conversation |
| ↳ `contacts` | object | Contacts in the conversation |
| ↳ `conversation_parts` | object | Parts of the conversation |
| `conversationId` | string | ID of the conversation |
| `success` | boolean | Operation success status |
### Search Conversations in Intercom [#search-conversations-in-intercom]
Search for conversations in Intercom using a query. Returns API-aligned fields only.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ----------------------------------------------------- |
| `query` | string | Yes | Search query as JSON object |
| `per_page` | number | No | Number of results per page (max: 150) |
| `starting_after` | string | No | Cursor for pagination |
| `sort_field` | string | No | Field to sort by (e.g., "created\_at", "updated\_at") |
| `sort_order` | string | No | Sort order: "ascending" or "descending" |
#### Output [#output-12]
| Parameter | Type | Description |
| --------------------- | ------- | ------------------------------------------------- |
| `conversations` | array | Array of matching conversation objects |
| ↳ `id` | string | Unique identifier for the conversation |
| ↳ `type` | string | Object type (conversation) |
| ↳ `title` | string | Title of the conversation |
| ↳ `created_at` | number | Unix timestamp when conversation was created |
| ↳ `updated_at` | number | Unix timestamp when conversation was last updated |
| ↳ `waiting_since` | number | Unix timestamp when waiting for reply |
| ↳ `open` | boolean | Whether the conversation is open |
| ↳ `state` | string | State of the conversation |
| ↳ `read` | boolean | Whether the conversation has been read |
| ↳ `priority` | string | Priority of the conversation |
| ↳ `admin_assignee_id` | number | ID of assigned admin |
| ↳ `team_assignee_id` | string | ID of assigned team |
| ↳ `tags` | object | Tags on the conversation |
| ↳ `source` | object | Source of the conversation |
| ↳ `contacts` | object | Contacts in the conversation |
| `pages` | object | Pagination information |
| ↳ `type` | string | Pages type identifier |
| ↳ `page` | number | Current page number |
| ↳ `per_page` | number | Number of results per page |
| ↳ `total_pages` | number | Total number of pages |
| `total_count` | number | Total number of matching conversations |
| `success` | boolean | Operation success status |
### Create Ticket in Intercom [#create-ticket-in-intercom]
Create a new ticket in Intercom. Returns API-aligned fields only.
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ------------------------- | ------- | -------- | ---------------------------------------------------------------------------------------- |
| `ticket_type_id` | string | Yes | The ID of the ticket type |
| `contacts` | string | Yes | JSON array of contact identifiers (e.g., \[\{"id": "contact\_id"}]) |
| `ticket_attributes` | string | Yes | JSON object with ticket attributes including *default\_title* and *default\_description* |
| `company_id` | string | No | Company ID to associate the ticket with |
| `created_at` | number | No | Unix timestamp for when the ticket was created. If not provided, current time is used. |
| `conversation_to_link_id` | string | No | ID of an existing conversation to link to this ticket |
| `disable_notifications` | boolean | No | When true, suppresses notifications when the ticket is created |
#### Output [#output-13]
| Parameter | Type | Description |
| ------------------------------- | ------- | ------------------------------------------- |
| `ticket` | object | Created ticket object |
| ↳ `id` | string | Unique identifier for the ticket |
| ↳ `type` | string | Object type (ticket) |
| ↳ `ticket_id` | string | Ticket ID |
| ↳ `ticket_type` | object | Type of the ticket |
| ↳ `ticket_attributes` | object | Attributes of the ticket |
| ↳ `ticket_state` | string | State of the ticket |
| ↳ `ticket_state_internal_label` | string | Internal label for ticket state |
| ↳ `ticket_state_external_label` | string | External label for ticket state |
| ↳ `created_at` | number | Unix timestamp when ticket was created |
| ↳ `updated_at` | number | Unix timestamp when ticket was last updated |
| ↳ `contacts` | object | Contacts associated with the ticket |
| ↳ `admin_assignee_id` | string | ID of assigned admin |
| ↳ `team_assignee_id` | string | ID of assigned team |
| ↳ `is_shared` | boolean | Whether the ticket is shared |
| ↳ `open` | boolean | Whether the ticket is open |
| `ticketId` | string | ID of the created ticket |
| `success` | boolean | Operation success status |
### Get Ticket from Intercom [#get-ticket-from-intercom]
Retrieve a single ticket by ID from Intercom. Returns API-aligned fields only.
#### Input [#input-14]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------- |
| `ticketId` | string | Yes | Ticket ID to retrieve |
#### Output [#output-14]
| Parameter | Type | Description |
| ------------------------------- | ------- | ------------------------------------------- |
| `ticket` | object | Ticket object |
| ↳ `id` | string | Unique identifier for the ticket |
| ↳ `type` | string | Object type (ticket) |
| ↳ `ticket_id` | string | Ticket ID |
| ↳ `ticket_type` | object | Type of the ticket |
| ↳ `ticket_attributes` | object | Attributes of the ticket |
| ↳ `ticket_state` | string | State of the ticket |
| ↳ `ticket_state_internal_label` | string | Internal label for ticket state |
| ↳ `ticket_state_external_label` | string | External label for ticket state |
| ↳ `created_at` | number | Unix timestamp when ticket was created |
| ↳ `updated_at` | number | Unix timestamp when ticket was last updated |
| ↳ `contacts` | object | Contacts associated with the ticket |
| ↳ `admin_assignee_id` | string | ID of assigned admin |
| ↳ `team_assignee_id` | string | ID of assigned team |
| ↳ `is_shared` | boolean | Whether the ticket is shared |
| ↳ `open` | boolean | Whether the ticket is open |
| `ticketId` | string | ID of the retrieved ticket |
| `success` | boolean | Operation success status |
### Update Ticket in Intercom [#update-ticket-in-intercom]
Update a ticket in Intercom (change state, assignment, attributes)
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------- |
| `ticketId` | string | Yes | The ID of the ticket to update |
| `ticket_attributes` | string | No | JSON object with ticket attributes (e.g., \{"*default\_title*":"New Title","*default\_description*":"Updated description"}) |
| `open` | boolean | No | Set to false to close the ticket, true to keep it open |
| `is_shared` | boolean | No | Whether the ticket is visible to users |
| `snoozed_until` | number | No | Unix timestamp for when the ticket should reopen |
| `admin_id` | string | No | The ID of the admin performing the update (needed for workflows and attribution) |
| `assignee_id` | string | No | The ID of the admin or team to assign the ticket to. Set to "0" to unassign. |
#### Output [#output-15]
| Parameter | Type | Description |
| --------------------- | ------- | ------------------------------------------- |
| `ticket` | object | The updated ticket object |
| ↳ `id` | string | Unique identifier for the ticket |
| ↳ `type` | string | Object type (ticket) |
| ↳ `ticket_id` | string | Ticket ID shown in Intercom UI |
| ↳ `ticket_state` | string | State of the ticket |
| ↳ `ticket_attributes` | object | Attributes of the ticket |
| ↳ `open` | boolean | Whether the ticket is open |
| ↳ `is_shared` | boolean | Whether the ticket is visible to users |
| ↳ `snoozed_until` | number | Unix timestamp when ticket will reopen |
| ↳ `admin_assignee_id` | string | ID of assigned admin |
| ↳ `team_assignee_id` | string | ID of assigned team |
| ↳ `created_at` | number | Unix timestamp when ticket was created |
| ↳ `updated_at` | number | Unix timestamp when ticket was last updated |
| `ticketId` | string | ID of the updated ticket |
| `ticket_state` | string | Current state of the ticket |
### Create Message in Intercom [#create-message-in-intercom]
Create and send a new admin-initiated message in Intercom. Returns API-aligned fields only.
#### Input [#input-16]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------- |
| `message_type` | string | Yes | Message type: "inapp" for in-app messages or "email" for email messages |
| `template` | string | Yes | Message template style: "plain" for plain text or "personal" for personalized style |
| `subject` | string | No | The subject of the message (for email type) |
| `body` | string | Yes | The body of the message |
| `from_type` | string | Yes | Sender type: "admin" |
| `from_id` | string | Yes | The ID of the admin sending the message |
| `to_type` | string | Yes | Recipient type: "contact" |
| `to_id` | string | Yes | The ID of the contact receiving the message |
| `created_at` | number | No | Unix timestamp for when the message was created. If not provided, current time is used. |
#### Output [#output-16]
| Parameter | Type | Description |
| ------------------- | ------- | --------------------------------------- |
| `message` | object | Created message object |
| ↳ `id` | string | Unique identifier for the message |
| ↳ `type` | string | Object type (message) |
| ↳ `created_at` | number | Unix timestamp when message was created |
| ↳ `body` | string | Body of the message |
| ↳ `message_type` | string | Type of the message (in\_app or email) |
| ↳ `conversation_id` | string | ID of the conversation created |
| ↳ `owner` | object | Owner of the message |
| `messageId` | string | ID of the created message |
| `success` | boolean | Operation success status |
### List Admins from Intercom [#list-admins-from-intercom]
Fetch a list of all admins for the workspace
#### Input [#input-17]
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
#### Output [#output-17]
| Parameter | Type | Description |
| ---------------------- | ------- | ------------------------------------------- |
| `admins` | array | Array of admin objects |
| ↳ `id` | string | Unique identifier for the admin |
| ↳ `type` | string | Object type (admin) |
| ↳ `name` | string | Name of the admin |
| ↳ `email` | string | Email of the admin |
| ↳ `job_title` | string | Job title of the admin |
| ↳ `away_mode_enabled` | boolean | Whether admin is in away mode |
| ↳ `away_mode_reassign` | boolean | Whether to reassign conversations when away |
| ↳ `has_inbox_seat` | boolean | Whether admin has a paid inbox seat |
| ↳ `team_ids` | array | List of team IDs the admin belongs to |
| ↳ `avatar` | object | Avatar information |
| ↳ `email_verified` | boolean | Whether email is verified |
| `type` | string | Object type (admin.list) |
### Close Conversation in Intercom [#close-conversation-in-intercom]
Close a conversation in Intercom
#### Input [#input-18]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------- |
| `conversationId` | string | Yes | The ID of the conversation to close |
| `admin_id` | string | Yes | The ID of the admin performing the action |
| `body` | string | No | Optional closing message to add to the conversation |
#### Output [#output-18]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------------------------------- |
| `conversation` | object | The closed conversation object |
| ↳ `id` | string | Unique identifier for the conversation |
| ↳ `type` | string | Object type (conversation) |
| ↳ `state` | string | State of the conversation (closed) |
| ↳ `open` | boolean | Whether the conversation is open (false) |
| ↳ `read` | boolean | Whether the conversation has been read |
| ↳ `created_at` | number | Unix timestamp when conversation was created |
| ↳ `updated_at` | number | Unix timestamp when conversation was last updated |
| `conversationId` | string | ID of the closed conversation |
| `state` | string | State of the conversation (closed) |
### Open Conversation in Intercom [#open-conversation-in-intercom]
Open a closed or snoozed conversation in Intercom
#### Input [#input-19]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ----------------------------------------- |
| `conversationId` | string | Yes | The ID of the conversation to open |
| `admin_id` | string | Yes | The ID of the admin performing the action |
#### Output [#output-19]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------------------------------- |
| `conversation` | object | The opened conversation object |
| ↳ `id` | string | Unique identifier for the conversation |
| ↳ `type` | string | Object type (conversation) |
| ↳ `state` | string | State of the conversation (open) |
| ↳ `open` | boolean | Whether the conversation is open (true) |
| ↳ `read` | boolean | Whether the conversation has been read |
| ↳ `created_at` | number | Unix timestamp when conversation was created |
| ↳ `updated_at` | number | Unix timestamp when conversation was last updated |
| `conversationId` | string | ID of the opened conversation |
| `state` | string | State of the conversation (open) |
### Snooze Conversation in Intercom [#snooze-conversation-in-intercom]
Snooze a conversation to reopen at a future time
#### Input [#input-20]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------ |
| `conversationId` | string | Yes | The ID of the conversation to snooze |
| `admin_id` | string | Yes | The ID of the admin performing the action |
| `snoozed_until` | number | Yes | Unix timestamp for when the conversation should reopen |
#### Output [#output-20]
| Parameter | Type | Description |
| ----------------- | ------- | ------------------------------------------------- |
| `conversation` | object | The snoozed conversation object |
| ↳ `id` | string | Unique identifier for the conversation |
| ↳ `type` | string | Object type (conversation) |
| ↳ `state` | string | State of the conversation (snoozed) |
| ↳ `open` | boolean | Whether the conversation is open |
| ↳ `snoozed_until` | number | Unix timestamp when conversation will reopen |
| ↳ `created_at` | number | Unix timestamp when conversation was created |
| ↳ `updated_at` | number | Unix timestamp when conversation was last updated |
| `conversationId` | string | ID of the snoozed conversation |
| `state` | string | State of the conversation (snoozed) |
| `snoozed_until` | number | Unix timestamp when conversation will reopen |
### Assign Conversation in Intercom [#assign-conversation-in-intercom]
Assign a conversation to an admin or team in Intercom
#### Input [#input-21]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `conversationId` | string | Yes | The ID of the conversation to assign |
| `admin_id` | string | Yes | The ID of the admin performing the assignment |
| `assignee_id` | string | Yes | The ID of the admin or team to assign the conversation to. Set to "0" to unassign. |
| `body` | string | No | Optional message to add when assigning (e.g., "Passing to the support team") |
#### Output [#output-21]
| Parameter | Type | Description |
| --------------------- | ------- | ------------------------------------------------- |
| `conversation` | object | The assigned conversation object |
| ↳ `id` | string | Unique identifier for the conversation |
| ↳ `type` | string | Object type (conversation) |
| ↳ `state` | string | State of the conversation |
| ↳ `open` | boolean | Whether the conversation is open |
| ↳ `admin_assignee_id` | number | ID of the assigned admin |
| ↳ `team_assignee_id` | string | ID of the assigned team |
| ↳ `created_at` | number | Unix timestamp when conversation was created |
| ↳ `updated_at` | number | Unix timestamp when conversation was last updated |
| `conversationId` | string | ID of the assigned conversation |
| `admin_assignee_id` | number | ID of the assigned admin |
| `team_assignee_id` | string | ID of the assigned team |
### List Tags from Intercom [#list-tags-from-intercom]
Fetch a list of all tags in the workspace
#### Input [#input-22]
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
#### Output [#output-22]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------- |
| `tags` | array | Array of tag objects |
| ↳ `id` | string | Unique identifier for the tag |
| ↳ `type` | string | Object type (tag) |
| ↳ `name` | string | Name of the tag |
| `type` | string | Object type (list) |
### Create Tag in Intercom [#create-tag-in-intercom]
Create a new tag or update an existing tag name
#### Input [#input-23]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------------------------------------------------- |
| `name` | string | Yes | The name of the tag. Will create a new tag if not found, or update the name if id is provided. |
| `id` | string | No | The ID of an existing tag to update. Omit to create a new tag. |
#### Output [#output-23]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------- |
| `id` | string | Unique identifier for the tag |
| `name` | string | Name of the tag |
| `type` | string | Object type (tag) |
### Tag Contact in Intercom [#tag-contact-in-intercom]
Add a tag to a specific contact
#### Input [#input-24]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------- |
| `contactId` | string | Yes | The ID of the contact to tag |
| `tagId` | string | Yes | The ID of the tag to apply |
#### Output [#output-24]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------- |
| `id` | string | Unique identifier for the tag |
| `name` | string | Name of the tag |
| `type` | string | Object type (tag) |
### Untag Contact in Intercom [#untag-contact-in-intercom]
Remove a tag from a specific contact
#### Input [#input-25]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------ |
| `contactId` | string | Yes | The ID of the contact to untag |
| `tagId` | string | Yes | The ID of the tag to remove |
#### Output [#output-25]
| Parameter | Type | Description |
| --------- | ------ | ---------------------------------------------- |
| `id` | string | Unique identifier for the tag that was removed |
| `name` | string | Name of the tag that was removed |
| `type` | string | Object type (tag) |
### Tag Conversation in Intercom [#tag-conversation-in-intercom]
Add a tag to a specific conversation
#### Input [#input-26]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------ |
| `conversationId` | string | Yes | The ID of the conversation to tag |
| `tagId` | string | Yes | The ID of the tag to apply |
| `admin_id` | string | Yes | The ID of the admin applying the tag |
#### Output [#output-26]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------- |
| `id` | string | Unique identifier for the tag |
| `name` | string | Name of the tag |
| `type` | string | Object type (tag) |
### Create Note in Intercom [#create-note-in-intercom]
Add a note to a specific contact
#### Input [#input-27]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------- |
| `contactId` | string | Yes | The ID of the contact to add the note to |
| `body` | string | Yes | The text content of the note |
| `admin_id` | string | No | The ID of the admin creating the note |
#### Output [#output-27]
| Parameter | Type | Description |
| ------------ | ------ | ---------------------------------------- |
| `id` | string | Unique identifier for the note |
| `body` | string | The text content of the note |
| `created_at` | number | Unix timestamp when the note was created |
| `type` | string | Object type (note) |
| `author` | object | The admin who created the note |
| ↳ `type` | string | Author type (admin) |
| ↳ `id` | string | Author ID |
| ↳ `name` | string | Author name |
| ↳ `email` | string | Author email |
| `contact` | object | The contact the note was created for |
| ↳ `type` | string | Contact type |
| ↳ `id` | string | Contact ID |
### Create Event in Intercom [#create-event-in-intercom]
Track a custom event for a contact in Intercom
#### Input [#input-28]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | --------------------------------------------------------------------------------------------------- |
| `event_name` | string | Yes | The name of the event (e.g., "order-completed"). Use past-tense verb-noun format for readability. |
| `created_at` | number | No | Unix timestamp for when the event occurred. Strongly recommended for uniqueness. |
| `user_id` | string | No | Your identifier for the user (external\_id) |
| `email` | string | No | Email address of the user. Use only if your app uses email to uniquely identify users. |
| `id` | string | No | The Intercom contact ID |
| `metadata` | string | No | JSON object with up to 10 metadata key-value pairs about the event (e.g., \{"order\_value": 99.99}) |
#### Output [#output-28]
| Parameter | Type | Description |
| ---------- | ------- | --------------------------------------------- |
| `accepted` | boolean | Whether the event was accepted (202 Accepted) |
### Attach Contact to Company in Intercom [#attach-contact-to-company-in-intercom]
Attach a contact to a company in Intercom
#### Input [#input-29]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------- |
| `contactId` | string | Yes | The ID of the contact to attach to the company |
| `companyId` | string | Yes | The ID of the company to attach the contact to |
#### Output [#output-29]
| Parameter | Type | Description |
| ----------------- | ------ | ---------------------------------------------- |
| `company` | object | The company object the contact was attached to |
| ↳ `id` | string | Unique identifier for the company |
| ↳ `type` | string | Object type (company) |
| ↳ `company_id` | string | The company\_id you defined |
| ↳ `name` | string | Name of the company |
| ↳ `created_at` | number | Unix timestamp when company was created |
| ↳ `updated_at` | number | Unix timestamp when company was updated |
| ↳ `user_count` | number | Number of users in the company |
| ↳ `session_count` | number | Number of sessions |
| ↳ `monthly_spend` | number | Monthly spend amount |
| ↳ `plan` | object | Company plan details |
| `companyId` | string | ID of the company |
| `name` | string | Name of the company |
### Detach Contact from Company in Intercom [#detach-contact-from-company-in-intercom]
Remove a contact from a company in Intercom
#### Input [#input-30]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------ |
| `contactId` | string | Yes | The ID of the contact to detach from the company |
| `companyId` | string | Yes | The ID of the company to detach the contact from |
#### Output [#output-30]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------------------ |
| `company` | object | The company object the contact was detached from |
| ↳ `id` | string | Unique identifier for the company |
| ↳ `type` | string | Object type (company) |
| ↳ `company_id` | string | The company\_id you defined |
| ↳ `name` | string | Name of the company |
| `companyId` | string | ID of the company |
| `name` | string | Name of the company |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
### Intercom Contact Created [#intercom-contact-created]
Trigger workflow when a new lead is created in Intercom
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Your app's Client Secret from the Developer Hub. Used to verify webhook authenticity via X-Hub-Signature. |
#### Output [#output-31]
| Parameter | Type | Description |
| ------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `topic` | string | The webhook topic (e.g., conversation.user.created) |
| `id` | string | Unique notification ID |
| `app_id` | string | Your Intercom app ID |
| `created_at` | number | Unix timestamp when the event occurred |
| `delivery_attempts` | number | Number of delivery attempts for this notification |
| `first_sent_at` | number | Unix timestamp of first delivery attempt |
| `data` | json | Event data containing the contact object. Access via data.item for contact details including id, role, email, name, phone, external\_id, custom\_attributes, location, avatar, tags, companies, and timestamps |
***
### Intercom Conversation Closed [#intercom-conversation-closed]
Trigger workflow when a conversation is closed in Intercom
#### Configuration [#configuration-1]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Your app's Client Secret from the Developer Hub. Used to verify webhook authenticity via X-Hub-Signature. |
#### Output [#output-32]
| Parameter | Type | Description |
| ------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `topic` | string | The webhook topic (e.g., conversation.user.created) |
| `id` | string | Unique notification ID |
| `app_id` | string | Your Intercom app ID |
| `created_at` | number | Unix timestamp when the event occurred |
| `delivery_attempts` | number | Number of delivery attempts for this notification |
| `first_sent_at` | number | Unix timestamp of first delivery attempt |
| `data` | json | Event data containing the conversation object. Access via data.item for conversation details including id, state, open, assignee, contacts, conversation\_parts, tags, and source |
***
### Intercom Conversation Created [#intercom-conversation-created]
Trigger workflow when a new conversation is created in Intercom
#### Configuration [#configuration-2]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Your app's Client Secret from the Developer Hub. Used to verify webhook authenticity via X-Hub-Signature. |
#### Output [#output-33]
| Parameter | Type | Description |
| ------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `topic` | string | The webhook topic (e.g., conversation.user.created) |
| `id` | string | Unique notification ID |
| `app_id` | string | Your Intercom app ID |
| `created_at` | number | Unix timestamp when the event occurred |
| `delivery_attempts` | number | Number of delivery attempts for this notification |
| `first_sent_at` | number | Unix timestamp of first delivery attempt |
| `data` | json | Event data containing the conversation object. Access via data.item for conversation details including id, state, open, assignee, contacts, conversation\_parts, tags, and source |
***
### Intercom Conversation Reply [#intercom-conversation-reply]
Trigger workflow when someone replies to an Intercom conversation
#### Configuration [#configuration-3]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Your app's Client Secret from the Developer Hub. Used to verify webhook authenticity via X-Hub-Signature. |
#### Output [#output-34]
| Parameter | Type | Description |
| ------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `topic` | string | The webhook topic (e.g., conversation.user.created) |
| `id` | string | Unique notification ID |
| `app_id` | string | Your Intercom app ID |
| `created_at` | number | Unix timestamp when the event occurred |
| `delivery_attempts` | number | Number of delivery attempts for this notification |
| `first_sent_at` | number | Unix timestamp of first delivery attempt |
| `data` | json | Event data containing the conversation object. Access via data.item for conversation details including id, state, open, assignee, contacts, conversation\_parts, tags, and source |
***
### Intercom User Created [#intercom-user-created]
Trigger workflow when a new user is created in Intercom
#### Configuration [#configuration-4]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Your app's Client Secret from the Developer Hub. Used to verify webhook authenticity via X-Hub-Signature. |
#### Output [#output-35]
| Parameter | Type | Description |
| ------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `topic` | string | The webhook topic (e.g., conversation.user.created) |
| `id` | string | Unique notification ID |
| `app_id` | string | Your Intercom app ID |
| `created_at` | number | Unix timestamp when the event occurred |
| `delivery_attempts` | number | Number of delivery attempts for this notification |
| `first_sent_at` | number | Unix timestamp of first delivery attempt |
| `data` | json | Event data containing the contact object. Access via data.item for contact details including id, role, email, name, phone, external\_id, custom\_attributes, location, avatar, tags, companies, and timestamps |
***
### Intercom Webhook (All Events) [#intercom-webhook-all-events]
Trigger workflow on any Intercom webhook event
#### Configuration [#configuration-5]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- |
| `webhookSecret` | string | No | Your app's Client Secret from the Developer Hub. Used to verify webhook authenticity via X-Hub-Signature. |
#### Output [#output-36]
| Parameter | Type | Description |
| ------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------- |
| `topic` | string | The webhook topic (e.g., conversation.user.created) |
| `id` | string | Unique notification ID |
| `app_id` | string | Your Intercom app ID |
| `created_at` | number | Unix timestamp when the event occurred |
| `delivery_attempts` | number | Number of delivery attempts for this notification |
| `first_sent_at` | number | Unix timestamp of first delivery attempt |
| `data` | json | Event data containing the affected object. Access via data.item for the resource (conversation, contact, company, ticket, etc.) |
---
# Jina (/integrations/jina)
{/* MANUAL-CONTENT-START:intro */}
[Jina AI](https://jina.ai/) is a powerful content extraction tool that seamlessly integrates with Sim to transform web content into clean, readable text. This integration allows developers to easily incorporate web content processing capabilities into their agentic workflows.
Jina AI Reader specializes in extracting the most relevant content from web pages, removing clutter, advertisements, and formatting issues to produce clean, structured text that's optimized for language models and other text processing tasks.
With the Jina AI integration in Sim, you can:
* **Extract clean content** from any web page by simply providing a URL
* **Process complex web layouts** into structured, readable text
* **Maintain important context** while removing unnecessary elements
* **Prepare web content** for further processing in your agent workflows
* **Streamline research tasks** by quickly converting web information into usable data
This integration is particularly valuable for building agents that need to gather and process information from the web, conduct research, or analyze online content as part of their workflow.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Jina AI into the workflow. Search the web and get LLM-friendly results, or extract clean content from specific URLs with advanced parsing options.
## Actions [#actions]
### Jina Reader [#jina-reader]
Extract and process web content into clean, LLM-friendly text using Jina AI Reader. Supports advanced content parsing, link gathering, and multiple output formats with configurable processing options.
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | ----------------------------------------------------------------------------------------------------------- |
| `url` | string | Yes | The URL to read and convert to markdown (e.g., "[https://example.com/page"\\](https://example.com/page"\\)) |
| `useReaderLMv2` | boolean | No | Whether to use ReaderLM-v2 for better quality (3x token cost) |
| `gatherLinks` | boolean | No | Whether to gather all links at the end |
| `jsonResponse` | boolean | No | Whether to return response in JSON format |
| `apiKey` | string | Yes | Your Jina AI API key |
| `withImagesummary` | boolean | No | Gather all images from the page with metadata |
| `retainImages` | string | No | Control image inclusion: "none" removes all, "all" keeps all |
| `returnFormat` | string | No | Output format: markdown, html, text, screenshot, or pageshot |
| `withIframe` | boolean | No | Include iframe content in extraction |
| `withShadowDom` | boolean | No | Extract Shadow DOM content |
| `noCache` | boolean | No | Bypass cached content for real-time retrieval |
| `withGeneratedAlt` | boolean | No | Generate alt text for images using VLM |
| `robotsTxt` | string | No | Bot User-Agent for robots.txt checking |
| `dnt` | boolean | No | Do Not Track - prevents caching/tracking |
| `noGfm` | boolean | No | Disable GitHub Flavored Markdown |
#### Output [#output]
| Parameter | Type | Description |
| ------------ | ------ | --------------------------------------------------------------------------- |
| `content` | string | The extracted content from the URL, processed into clean, LLM-friendly text |
| `tokensUsed` | number | Number of Jina tokens consumed by this request |
### Jina Search [#jina-search]
Search the web and return top 5 results with LLM-friendly content. Each result is automatically processed through Jina Reader API. Supports geographic filtering, site restrictions, and pagination.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | -------------------------------------------------------------------------------------------------------------- |
| `q` | string | Yes | Search query string (e.g., "machine learning tutorials") |
| `apiKey` | string | Yes | Your Jina AI API key |
| `num` | number | No | Maximum number of results per page (default: 5) |
| `site` | string | No | Restrict results to specific domain(s). Can be comma-separated for multiple sites (e.g., "jina.ai,github.com") |
| `withFavicon` | boolean | No | Include website favicons in results |
| `withImagesummary` | boolean | No | Gather all images from result pages with metadata |
| `withLinksummary` | boolean | No | Gather all links from result pages |
| `retainImages` | string | No | Control image inclusion: "none" removes all, "all" keeps all |
| `noCache` | boolean | No | Bypass cached content for real-time retrieval |
| `withGeneratedAlt` | boolean | No | Generate alt text for images using VLM |
| `respondWith` | string | No | Set to "no-content" to get only metadata without page content |
| `returnFormat` | string | No | Output format: markdown, html, text, screenshot, or pageshot |
#### Output [#output-1]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------------------------------------------------------------------ |
| `results` | array | Array of search results, each containing title, description, url, and LLM-friendly content |
| ↳ `title` | string | Page title |
| ↳ `description` | string | Page description or meta description |
| ↳ `url` | string | Page URL |
| ↳ `content` | string | LLM-friendly extracted content |
| ↳ `usage` | object | Token usage information |
| ↳ `tokens` | number | Number of tokens consumed by this request |
| `tokensUsed` | number | Number of Jina tokens consumed by this request |
---
# Jira (/integrations/jira)
{/* MANUAL-CONTENT-START:intro */}
[Jira](https://www.atlassian.com/jira) is a leading project management and issue tracking platform from Atlassian that helps teams plan, track, and manage agile software development projects. Jira supports Scrum and Kanban methodologies with customizable boards, workflows, and advanced reporting.
With the Jira integration in Sim, you can:
* **Manage issues**: Create, retrieve, update, delete, and bulk-read issues in your Jira projects
* **Transition issues**: Move issues through workflow stages programmatically
* **Assign issues**: Set or change issue assignees
* **Search issues**: Use JQL (Jira Query Language) to find and filter issues
* **Manage comments**: Add, retrieve, update, and delete comments on issues
* **Handle attachments**: Upload, retrieve, and delete file attachments on issues
* **Track work**: Add, retrieve, update, and delete worklogs for time tracking
* **Link issues**: Create and delete issue links to establish relationships between issues
* **Manage watchers**: Add or remove watchers from issues
* **Access users**: Retrieve user information from your Jira instance
In Sim, the Jira integration enables your agents to interact with your project management workflow as part of automated processes. Agents can create issues from external triggers, update statuses, track progress, and manage project data—enabling intelligent project management automation.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Jira into the workflow. Can read, write, and update issues. Can also trigger workflows based on Jira webhook events.
## Actions [#actions]
### Jira Retrieve [#jira-retrieve]
Retrieve detailed information about a specific Jira issue
#### Input [#input]
| Parameter | Type | Required | Description |
| -------------------- | ------- | -------- | ------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `issueKey` | string | Yes | Jira issue key to retrieve (e.g., PROJ-123) |
| `includeAttachments` | boolean | No | Download attachment file contents and include them as files in the output |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output]
| Parameter | Type | Description |
| ---------------------------- | ------- | ------------------------------------------------------------------ |
| `ts` | string | ISO 8601 timestamp of the operation |
| `id` | string | Issue ID |
| `key` | string | Issue key (e.g., PROJ-123) |
| `self` | string | REST API URL for this issue |
| `summary` | string | Issue summary |
| `description` | string | Issue description text (extracted from ADF) |
| `status` | object | Issue status |
| ↳ `id` | string | Status ID |
| ↳ `name` | string | Status name (e.g., Open, In Progress, Done) |
| ↳ `description` | string | Status description |
| ↳ `statusCategory` | object | Status category grouping |
| ↳ `id` | number | Status category ID |
| ↳ `key` | string | Status category key (e.g., new, indeterminate, done) |
| ↳ `name` | string | Status category name (e.g., To Do, In Progress, Done) |
| ↳ `colorName` | string | Status category color (e.g., blue-gray, yellow, green) |
| `statusName` | string | Issue status name (e.g., Open, In Progress, Done) |
| `issuetype` | object | Issue type |
| ↳ `id` | string | Issue type ID |
| ↳ `name` | string | Issue type name (e.g., Task, Bug, Story, Epic) |
| ↳ `description` | string | Issue type description |
| ↳ `subtask` | boolean | Whether this is a subtask type |
| ↳ `iconUrl` | string | URL to the issue type icon |
| `project` | object | Project the issue belongs to |
| ↳ `id` | string | Project ID |
| ↳ `key` | string | Project key (e.g., PROJ) |
| ↳ `name` | string | Project name |
| ↳ `projectTypeKey` | string | Project type key (e.g., software, business) |
| `priority` | object | Issue priority |
| ↳ `id` | string | Priority ID |
| ↳ `name` | string | Priority name (e.g., Highest, High, Medium, Low, Lowest) |
| ↳ `iconUrl` | string | URL to the priority icon |
| `assignee` | object | Assigned user |
| ↳ `accountId` | string | Atlassian account ID of the user |
| ↳ `displayName` | string | Display name of the user |
| ↳ `active` | boolean | Whether the user account is active |
| ↳ `emailAddress` | string | Email address of the user |
| ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) |
| ↳ `avatarUrl` | string | URL to the user avatar (48x48) |
| ↳ `timeZone` | string | User timezone |
| `assigneeName` | string | Assignee display name or account ID |
| `reporter` | object | Reporter user |
| ↳ `accountId` | string | Atlassian account ID of the user |
| ↳ `displayName` | string | Display name of the user |
| ↳ `active` | boolean | Whether the user account is active |
| ↳ `emailAddress` | string | Email address of the user |
| ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) |
| ↳ `avatarUrl` | string | URL to the user avatar (48x48) |
| ↳ `timeZone` | string | User timezone |
| `creator` | object | Issue creator |
| ↳ `accountId` | string | Atlassian account ID of the user |
| ↳ `displayName` | string | Display name of the user |
| ↳ `active` | boolean | Whether the user account is active |
| ↳ `emailAddress` | string | Email address of the user |
| ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) |
| ↳ `avatarUrl` | string | URL to the user avatar (48x48) |
| ↳ `timeZone` | string | User timezone |
| `labels` | array | Issue labels |
| `components` | array | Issue components |
| ↳ `id` | string | Component ID |
| ↳ `name` | string | Component name |
| ↳ `description` | string | Component description |
| `fixVersions` | array | Fix versions |
| ↳ `id` | string | Version ID |
| ↳ `name` | string | Version name |
| ↳ `released` | boolean | Whether the version is released |
| ↳ `releaseDate` | string | Release date (YYYY-MM-DD) |
| `resolution` | object | Issue resolution |
| ↳ `id` | string | Resolution ID |
| ↳ `name` | string | Resolution name (e.g., Fixed, Duplicate, Won't Fix) |
| ↳ `description` | string | Resolution description |
| `duedate` | string | Due date (YYYY-MM-DD) |
| `created` | string | ISO 8601 timestamp when the issue was created |
| `updated` | string | ISO 8601 timestamp when the issue was last updated |
| `resolutiondate` | string | ISO 8601 timestamp when the issue was resolved |
| `timetracking` | object | Time tracking information |
| ↳ `originalEstimate` | string | Original estimate in human-readable format (e.g., 1w 2d) |
| ↳ `remainingEstimate` | string | Remaining estimate in human-readable format |
| ↳ `timeSpent` | string | Time spent in human-readable format |
| ↳ `originalEstimateSeconds` | number | Original estimate in seconds |
| ↳ `remainingEstimateSeconds` | number | Remaining estimate in seconds |
| ↳ `timeSpentSeconds` | number | Time spent in seconds |
| `parent` | object | Parent issue (for subtasks) |
| ↳ `id` | string | Parent issue ID |
| ↳ `key` | string | Parent issue key |
| ↳ `summary` | string | Parent issue summary |
| `issuelinks` | array | Linked issues |
| ↳ `id` | string | Issue link ID |
| ↳ `type` | object | Link type information |
| ↳ `id` | string | Link type ID |
| ↳ `name` | string | Link type name (e.g., Blocks, Relates) |
| ↳ `inward` | string | Inward description (e.g., is blocked by) |
| ↳ `outward` | string | Outward description (e.g., blocks) |
| ↳ `inwardIssue` | object | Inward linked issue |
| ↳ `id` | string | Issue ID |
| ↳ `key` | string | Issue key |
| ↳ `statusName` | string | Issue status name |
| ↳ `summary` | string | Issue summary |
| ↳ `outwardIssue` | object | Outward linked issue |
| ↳ `id` | string | Issue ID |
| ↳ `key` | string | Issue key |
| ↳ `statusName` | string | Issue status name |
| ↳ `summary` | string | Issue summary |
| `subtasks` | array | Subtask issues |
| ↳ `id` | string | Subtask issue ID |
| ↳ `key` | string | Subtask issue key |
| ↳ `summary` | string | Subtask summary |
| ↳ `statusName` | string | Subtask status name |
| ↳ `issueTypeName` | string | Subtask issue type name |
| `votes` | object | Vote information |
| ↳ `votes` | number | Number of votes |
| ↳ `hasVoted` | boolean | Whether the current user has voted |
| `watches` | object | Watch information |
| ↳ `watchCount` | number | Number of watchers |
| ↳ `isWatching` | boolean | Whether the current user is watching |
| `comments` | array | Issue comments (fetched separately) |
| ↳ `id` | string | Comment ID |
| ↳ `body` | string | Comment body text (extracted from ADF) |
| ↳ `author` | object | Comment author |
| ↳ `accountId` | string | Atlassian account ID of the user |
| ↳ `displayName` | string | Display name of the user |
| ↳ `active` | boolean | Whether the user account is active |
| ↳ `emailAddress` | string | Email address of the user |
| ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) |
| ↳ `avatarUrl` | string | URL to the user avatar (48x48) |
| ↳ `timeZone` | string | User timezone |
| ↳ `authorName` | string | Comment author display name |
| ↳ `updateAuthor` | object | User who last updated the comment |
| ↳ `accountId` | string | Atlassian account ID of the user |
| ↳ `displayName` | string | Display name of the user |
| ↳ `active` | boolean | Whether the user account is active |
| ↳ `emailAddress` | string | Email address of the user |
| ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) |
| ↳ `avatarUrl` | string | URL to the user avatar (48x48) |
| ↳ `timeZone` | string | User timezone |
| ↳ `created` | string | ISO 8601 timestamp when the comment was created |
| ↳ `updated` | string | ISO 8601 timestamp when the comment was last updated |
| ↳ `visibility` | object | Comment visibility restriction |
| ↳ `type` | string | Restriction type (e.g., role, group) |
| ↳ `value` | string | Restriction value (e.g., Administrators) |
| `worklogs` | array | Issue worklogs (fetched separately) |
| ↳ `id` | string | Worklog ID |
| ↳ `author` | object | Worklog author |
| ↳ `accountId` | string | Atlassian account ID of the user |
| ↳ `displayName` | string | Display name of the user |
| ↳ `active` | boolean | Whether the user account is active |
| ↳ `emailAddress` | string | Email address of the user |
| ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) |
| ↳ `avatarUrl` | string | URL to the user avatar (48x48) |
| ↳ `timeZone` | string | User timezone |
| ↳ `authorName` | string | Worklog author display name |
| ↳ `updateAuthor` | object | User who last updated the worklog |
| ↳ `accountId` | string | Atlassian account ID of the user |
| ↳ `displayName` | string | Display name of the user |
| ↳ `active` | boolean | Whether the user account is active |
| ↳ `emailAddress` | string | Email address of the user |
| ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) |
| ↳ `avatarUrl` | string | URL to the user avatar (48x48) |
| ↳ `timeZone` | string | User timezone |
| ↳ `comment` | string | Worklog comment text |
| ↳ `started` | string | ISO 8601 timestamp when the work started |
| ↳ `timeSpent` | string | Time spent in human-readable format (e.g., 3h 20m) |
| ↳ `timeSpentSeconds` | number | Time spent in seconds |
| ↳ `created` | string | ISO 8601 timestamp when the worklog was created |
| ↳ `updated` | string | ISO 8601 timestamp when the worklog was last updated |
| `attachments` | array | Issue attachments |
| ↳ `id` | string | Attachment ID |
| ↳ `filename` | string | Attachment file name |
| ↳ `mimeType` | string | MIME type of the attachment |
| ↳ `size` | number | File size in bytes |
| ↳ `content` | string | URL to download the attachment content |
| ↳ `thumbnail` | string | URL to the attachment thumbnail |
| ↳ `author` | object | Attachment author |
| ↳ `accountId` | string | Atlassian account ID of the user |
| ↳ `displayName` | string | Display name of the user |
| ↳ `active` | boolean | Whether the user account is active |
| ↳ `emailAddress` | string | Email address of the user |
| ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) |
| ↳ `avatarUrl` | string | URL to the user avatar (48x48) |
| ↳ `timeZone` | string | User timezone |
| ↳ `authorName` | string | Attachment author display name |
| ↳ `created` | string | ISO 8601 timestamp when the attachment was created |
| `issueKey` | string | Issue key (e.g., PROJ-123) |
| `issue` | json | Complete raw Jira issue object from the API |
| `files` | file\[] | Downloaded attachment files (only when includeAttachments is true) |
### Jira Update [#jira-update]
Update a Jira issue
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | ---------------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `issueKey` | string | Yes | Jira issue key to update (e.g., PROJ-123) |
| `summary` | string | No | New summary for the issue |
| `description` | string | No | New description for the issue. Accepts plain text (auto-wrapped in ADF) or a raw ADF document object |
| `priority` | string | No | New priority ID or name for the issue (e.g., "High") |
| `assignee` | string | No | New assignee account ID for the issue |
| `labels` | json | No | Labels to set on the issue (array of label name strings) |
| `components` | json | No | Components to set on the issue (array of component name strings) |
| `duedate` | string | No | Due date for the issue (format: YYYY-MM-DD) |
| `fixVersions` | json | No | Fix versions to set (array of version name strings) |
| `environment` | string | No | Environment information for the issue |
| `customFieldId` | string | No | Custom field ID to update (e.g., customfield\_10001) |
| `customFieldValue` | string | No | Value for the custom field |
| `notifyUsers` | boolean | No | Whether to send email notifications about this update (default: true) |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-1]
| Parameter | Type | Description |
| ---------- | ------- | ----------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `success` | boolean | Operation success status |
| `issueKey` | string | Updated issue key (e.g., PROJ-123) |
| `summary` | string | Issue summary after update |
### Jira Write [#jira-write]
Create a new Jira issue
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------ |
| `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `projectId` | string | Yes | Jira project key (e.g., PROJ) |
| `summary` | string | Yes | Summary for the issue |
| `description` | string | No | Description for the issue. Accepts plain text (auto-wrapped in ADF) or a raw ADF document object |
| `priority` | string | No | Priority ID or name for the issue (e.g., "10000" or "High") |
| `assignee` | string | No | Assignee account ID for the issue |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
| `issueType` | string | Yes | Type of issue to create (e.g., Task, Story, Bug, Epic, Sub-task) |
| `parent` | json | No | Parent issue key for creating subtasks (e.g., \{ "key": "PROJ-123" }) |
| `labels` | array | No | Labels for the issue (array of label names) |
| `components` | array | No | Components for the issue (array of component names) |
| `duedate` | string | No | Due date for the issue (format: YYYY-MM-DD) |
| `fixVersions` | array | No | Fix versions for the issue (array of version names) |
| `reporter` | string | No | Reporter account ID for the issue |
| `environment` | string | No | Environment information for the issue |
| `customFieldId` | string | No | Custom field ID (e.g., customfield\_10001) |
| `customFieldValue` | string | No | Value for the custom field |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------ | ------- | ------------------------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `id` | string | Created issue ID |
| `issueKey` | string | Created issue key (e.g., PROJ-123) |
| `self` | string | REST API URL for the created issue |
| `summary` | string | Issue summary |
| `success` | boolean | Whether the issue was created successfully |
| `url` | string | URL to the created issue in Jira |
| `assigneeId` | string | Account ID of the assigned user (null if no assignee was set) |
### Jira Bulk Read [#jira-bulk-read]
Retrieve multiple Jira issues from a project in bulk
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `projectId` | string | Yes | Jira project key (e.g., PROJ) |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-3]
| Parameter | Type | Description |
| --------------- | ------- | ------------------------------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `total` | number | Total number of issues in the project (may not always be available) |
| `issues` | array | Array of Jira issues |
| ↳ `id` | string | Issue ID |
| ↳ `key` | string | Issue key (e.g., PROJ-123) |
| ↳ `self` | string | REST API URL for this issue |
| ↳ `summary` | string | Issue summary |
| ↳ `description` | string | Issue description text |
| ↳ `status` | object | Issue status |
| ↳ `id` | string | Status ID |
| ↳ `name` | string | Status name |
| ↳ `issuetype` | object | Issue type |
| ↳ `id` | string | Issue type ID |
| ↳ `name` | string | Issue type name |
| ↳ `priority` | object | Issue priority |
| ↳ `id` | string | Priority ID |
| ↳ `name` | string | Priority name |
| ↳ `assignee` | object | Assigned user |
| ↳ `accountId` | string | Atlassian account ID |
| ↳ `displayName` | string | Display name |
| ↳ `created` | string | ISO 8601 creation timestamp |
| ↳ `updated` | string | ISO 8601 last updated timestamp |
| `nextPageToken` | string | Cursor token for the next page. Null when no more results. |
| `isLast` | boolean | Whether this is the last page of results |
### Jira Delete Issue [#jira-delete-issue]
Delete a Jira issue
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | ------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `issueKey` | string | Yes | Jira issue key to delete (e.g., PROJ-123) |
| `deleteSubtasks` | boolean | No | Whether to delete subtasks. If false, parent issues with subtasks cannot be deleted. |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-4]
| Parameter | Type | Description |
| ---------- | ------- | ----------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `success` | boolean | Operation success status |
| `issueKey` | string | Deleted issue key |
### Jira Assign Issue [#jira-assign-issue]
Assign a Jira issue to a user
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `issueKey` | string | Yes | Jira issue key to assign (e.g., PROJ-123) |
| `accountId` | string | Yes | Account ID of the user to assign the issue to. Use "-1" for automatic assignment, or leave empty / pass "null" to unassign. |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-5]
| Parameter | Type | Description |
| ------------ | ------- | ----------------------------------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `success` | boolean | Operation success status |
| `issueKey` | string | Issue key that was assigned |
| `assigneeId` | string | Account ID of the assignee (use "-1" for auto-assign, null to unassign) |
### Jira Transition Issue [#jira-transition-issue]
Move a Jira issue between workflow statuses (e.g., To Do -> In Progress)
#### Input [#input-6]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `issueKey` | string | Yes | Jira issue key to transition (e.g., PROJ-123) |
| `transitionId` | string | Yes | ID of the transition to execute (e.g., "11" for "To Do", "21" for "In Progress") |
| `comment` | string | No | Optional comment to add when transitioning the issue |
| `resolution` | string | No | Resolution name to set during transition (e.g., "Fixed", "Won't Fix") |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-6]
| Parameter | Type | Description |
| ---------------- | ------- | ----------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `success` | boolean | Operation success status |
| `issueKey` | string | Issue key that was transitioned |
| `transitionId` | string | Applied transition ID |
| `transitionName` | string | Applied transition name |
| `toStatus` | object | Target status after transition |
| ↳ `id` | string | Status ID |
| ↳ `name` | string | Status name |
### Jira Search Issues [#jira-search-issues]
Search for Jira issues using JQL (Jira Query Language)
#### Input [#input-7]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `jql` | string | Yes | JQL query string to search for issues (e.g., "project = PROJ AND status = Open") |
| `nextPageToken` | string | No | Cursor token for the next page of results. Omit for the first page. |
| `maxResults` | number | No | Maximum number of results to return per page (default: 50) |
| `fields` | array | No | Array of field names to return (default: all fields). |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-7]
| Parameter | Type | Description |
| ------------------ | ------- | ---------------------------------------------------------------------------------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `issues` | array | Array of matching issues |
| ↳ `id` | string | Issue ID |
| ↳ `key` | string | Issue key (e.g., PROJ-123) |
| ↳ `self` | string | REST API URL for this issue |
| ↳ `summary` | string | Issue summary |
| ↳ `description` | string | Issue description text (extracted from ADF) |
| ↳ `status` | object | Issue status |
| ↳ `id` | string | Status ID |
| ↳ `name` | string | Status name (e.g., Open, In Progress, Done) |
| ↳ `description` | string | Status description |
| ↳ `statusCategory` | object | Status category grouping |
| ↳ `id` | number | Status category ID |
| ↳ `key` | string | Status category key (e.g., new, indeterminate, done) |
| ↳ `name` | string | Status category name (e.g., To Do, In Progress, Done) |
| ↳ `colorName` | string | Status category color (e.g., blue-gray, yellow, green) |
| ↳ `statusName` | string | Issue status name (e.g., Open, In Progress, Done) |
| ↳ `issuetype` | object | Issue type |
| ↳ `id` | string | Issue type ID |
| ↳ `name` | string | Issue type name (e.g., Task, Bug, Story, Epic) |
| ↳ `description` | string | Issue type description |
| ↳ `subtask` | boolean | Whether this is a subtask type |
| ↳ `iconUrl` | string | URL to the issue type icon |
| ↳ `project` | object | Project the issue belongs to |
| ↳ `id` | string | Project ID |
| ↳ `key` | string | Project key (e.g., PROJ) |
| ↳ `name` | string | Project name |
| ↳ `projectTypeKey` | string | Project type key (e.g., software, business) |
| ↳ `priority` | object | Issue priority |
| ↳ `id` | string | Priority ID |
| ↳ `name` | string | Priority name (e.g., Highest, High, Medium, Low, Lowest) |
| ↳ `iconUrl` | string | URL to the priority icon |
| ↳ `assignee` | object | Assigned user |
| ↳ `accountId` | string | Atlassian account ID of the user |
| ↳ `displayName` | string | Display name of the user |
| ↳ `active` | boolean | Whether the user account is active |
| ↳ `emailAddress` | string | Email address of the user |
| ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) |
| ↳ `avatarUrl` | string | URL to the user avatar (48x48) |
| ↳ `timeZone` | string | User timezone |
| ↳ `assigneeName` | string | Assignee display name or account ID |
| ↳ `reporter` | object | Reporter user |
| ↳ `accountId` | string | Atlassian account ID of the user |
| ↳ `displayName` | string | Display name of the user |
| ↳ `active` | boolean | Whether the user account is active |
| ↳ `emailAddress` | string | Email address of the user |
| ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) |
| ↳ `avatarUrl` | string | URL to the user avatar (48x48) |
| ↳ `timeZone` | string | User timezone |
| ↳ `labels` | array | Issue labels |
| ↳ `components` | array | Issue components |
| ↳ `id` | string | Component ID |
| ↳ `name` | string | Component name |
| ↳ `description` | string | Component description |
| ↳ `resolution` | object | Issue resolution |
| ↳ `id` | string | Resolution ID |
| ↳ `name` | string | Resolution name (e.g., Fixed, Duplicate, Won't Fix) |
| ↳ `description` | string | Resolution description |
| ↳ `duedate` | string | Due date (YYYY-MM-DD) |
| ↳ `created` | string | ISO 8601 timestamp when the issue was created |
| ↳ `updated` | string | ISO 8601 timestamp when the issue was last updated |
| `nextPageToken` | string | Cursor token for the next page. Null when no more results. |
| `isLast` | boolean | Whether this is the last page of results |
| `total` | number | Always null. The Jira /search/jql endpoint does not return a total count; use isLast and nextPageToken for pagination. |
### Jira Add Comment [#jira-add-comment]
Add a comment to a Jira issue
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `issueKey` | string | Yes | Jira issue key to add comment to (e.g., PROJ-123) |
| `body` | string | Yes | Comment body text |
| `visibility` | json | No | Restrict comment visibility. Object with "type" ("role" or "group") and "value" (role/group name). |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-8]
| Parameter | Type | Description |
| ---------------- | ------- | ---------------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `success` | boolean | Operation success status |
| `issueKey` | string | Issue key the comment was added to |
| `commentId` | string | Created comment ID |
| `body` | string | Comment text content |
| `author` | object | Comment author |
| ↳ `accountId` | string | Atlassian account ID of the user |
| ↳ `displayName` | string | Display name of the user |
| ↳ `active` | boolean | Whether the user account is active |
| ↳ `emailAddress` | string | Email address of the user |
| ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) |
| ↳ `avatarUrl` | string | URL to the user avatar (48x48) |
| ↳ `timeZone` | string | User timezone |
| `created` | string | ISO 8601 timestamp when the comment was created |
| `updated` | string | ISO 8601 timestamp when the comment was last updated |
### Jira Get Comments [#jira-get-comments]
Get all comments from a Jira issue
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `issueKey` | string | Yes | Jira issue key to get comments from (e.g., PROJ-123) |
| `startAt` | number | No | Index of the first comment to return (default: 0) |
| `maxResults` | number | No | Maximum number of comments to return (default: 50) |
| `orderBy` | string | No | Sort order for comments: "-created" for newest first, "created" for oldest first |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-9]
| Parameter | Type | Description |
| ---------------- | ------- | ---------------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `issueKey` | string | Issue key |
| `total` | number | Total number of comments |
| `startAt` | number | Pagination start index |
| `maxResults` | number | Maximum results per page |
| `comments` | array | Array of comments |
| ↳ `id` | string | Comment ID |
| ↳ `body` | string | Comment body text (extracted from ADF) |
| ↳ `author` | object | Comment author |
| ↳ `accountId` | string | Atlassian account ID of the user |
| ↳ `displayName` | string | Display name of the user |
| ↳ `active` | boolean | Whether the user account is active |
| ↳ `emailAddress` | string | Email address of the user |
| ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) |
| ↳ `avatarUrl` | string | URL to the user avatar (48x48) |
| ↳ `timeZone` | string | User timezone |
| ↳ `authorName` | string | Comment author display name |
| ↳ `updateAuthor` | object | User who last updated the comment |
| ↳ `accountId` | string | Atlassian account ID of the user |
| ↳ `displayName` | string | Display name of the user |
| ↳ `active` | boolean | Whether the user account is active |
| ↳ `emailAddress` | string | Email address of the user |
| ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) |
| ↳ `avatarUrl` | string | URL to the user avatar (48x48) |
| ↳ `timeZone` | string | User timezone |
| ↳ `created` | string | ISO 8601 timestamp when the comment was created |
| ↳ `updated` | string | ISO 8601 timestamp when the comment was last updated |
| ↳ `visibility` | object | Comment visibility restriction |
| ↳ `type` | string | Restriction type (e.g., role, group) |
| ↳ `value` | string | Restriction value (e.g., Administrators) |
### Jira Update Comment [#jira-update-comment]
Update an existing comment on a Jira issue
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `issueKey` | string | Yes | Jira issue key containing the comment (e.g., PROJ-123) |
| `commentId` | string | Yes | ID of the comment to update |
| `body` | string | Yes | Updated comment text |
| `visibility` | json | No | Restrict comment visibility. Object with "type" ("role" or "group") and "value" (role/group name). |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-10]
| Parameter | Type | Description |
| ---------------- | ------- | ---------------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `success` | boolean | Operation success status |
| `issueKey` | string | Issue key |
| `commentId` | string | Updated comment ID |
| `body` | string | Updated comment text |
| `author` | object | Comment author |
| ↳ `accountId` | string | Atlassian account ID of the user |
| ↳ `displayName` | string | Display name of the user |
| ↳ `active` | boolean | Whether the user account is active |
| ↳ `emailAddress` | string | Email address of the user |
| ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) |
| ↳ `avatarUrl` | string | URL to the user avatar (48x48) |
| ↳ `timeZone` | string | User timezone |
| `created` | string | ISO 8601 timestamp when the comment was created |
| `updated` | string | ISO 8601 timestamp when the comment was last updated |
### Jira Delete Comment [#jira-delete-comment]
Delete a comment from a Jira issue
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `issueKey` | string | Yes | Jira issue key containing the comment (e.g., PROJ-123) |
| `commentId` | string | Yes | ID of the comment to delete |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-11]
| Parameter | Type | Description |
| ----------- | ------- | ----------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `success` | boolean | Operation success status |
| `issueKey` | string | Issue key |
| `commentId` | string | Deleted comment ID |
### Jira Get Attachments [#jira-get-attachments]
Get all attachments from a Jira issue
#### Input [#input-12]
| Parameter | Type | Required | Description |
| -------------------- | ------- | -------- | ------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `issueKey` | string | Yes | Jira issue key to get attachments from (e.g., PROJ-123) |
| `includeAttachments` | boolean | No | Download attachment file contents and include them as files in the output |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-12]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------------------------------------------------ |
| `ts` | string | ISO 8601 timestamp of the operation |
| `issueKey` | string | Issue key |
| `attachments` | array | Array of attachments |
| ↳ `id` | string | Attachment ID |
| ↳ `filename` | string | Attachment file name |
| ↳ `mimeType` | string | MIME type of the attachment |
| ↳ `size` | number | File size in bytes |
| ↳ `content` | string | URL to download the attachment content |
| ↳ `thumbnail` | string | URL to the attachment thumbnail |
| ↳ `author` | object | Attachment author |
| ↳ `accountId` | string | Atlassian account ID of the user |
| ↳ `displayName` | string | Display name of the user |
| ↳ `active` | boolean | Whether the user account is active |
| ↳ `emailAddress` | string | Email address of the user |
| ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) |
| ↳ `avatarUrl` | string | URL to the user avatar (48x48) |
| ↳ `timeZone` | string | User timezone |
| ↳ `authorName` | string | Attachment author display name |
| ↳ `created` | string | ISO 8601 timestamp when the attachment was created |
| `files` | file\[] | Downloaded attachment files (only when includeAttachments is true) |
### Jira Add Attachment [#jira-add-attachment]
Add attachments to a Jira issue
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `issueKey` | string | Yes | Jira issue key to add attachments to (e.g., PROJ-123) |
| `files` | file\[] | Yes | Files to attach to the Jira issue |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-13]
| Parameter | Type | Description |
| --------------- | ------- | ----------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `issueKey` | string | Issue key |
| `attachments` | array | Uploaded attachments |
| ↳ `id` | string | Attachment ID |
| ↳ `filename` | string | Attachment file name |
| ↳ `mimeType` | string | MIME type |
| ↳ `size` | number | File size in bytes |
| ↳ `content` | string | URL to download the attachment |
| `attachmentIds` | array | Array of attachment IDs |
| `files` | file\[] | Uploaded attachment files |
### Jira Delete Attachment [#jira-delete-attachment]
Delete an attachment from a Jira issue
#### Input [#input-14]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `attachmentId` | string | Yes | ID of the attachment to delete |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-14]
| Parameter | Type | Description |
| -------------- | ------- | ----------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `success` | boolean | Operation success status |
| `attachmentId` | string | Deleted attachment ID |
### Jira Add Worklog [#jira-add-worklog]
Add a time tracking worklog entry to a Jira issue
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `issueKey` | string | Yes | Jira issue key to add worklog to (e.g., PROJ-123) |
| `timeSpentSeconds` | number | Yes | Time spent in seconds |
| `comment` | string | No | Optional comment for the worklog entry |
| `started` | string | No | Optional start time in ISO format (defaults to current time) |
| `visibility` | json | No | Restrict worklog visibility. Object with "type" ("role" or "group") and "value" (role/group name). |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-15]
| Parameter | Type | Description |
| ------------------ | ------- | -------------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `success` | boolean | Operation success status |
| `issueKey` | string | Issue key the worklog was added to |
| `worklogId` | string | Created worklog ID |
| `timeSpent` | string | Time spent in human-readable format (e.g., 3h 20m) |
| `timeSpentSeconds` | number | Time spent in seconds |
| `author` | object | Worklog author |
| ↳ `accountId` | string | Atlassian account ID of the user |
| ↳ `displayName` | string | Display name of the user |
| ↳ `active` | boolean | Whether the user account is active |
| ↳ `emailAddress` | string | Email address of the user |
| ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) |
| ↳ `avatarUrl` | string | URL to the user avatar (48x48) |
| ↳ `timeZone` | string | User timezone |
| `started` | string | ISO 8601 timestamp when the work started |
| `created` | string | ISO 8601 timestamp when the worklog was created |
### Jira Get Worklogs [#jira-get-worklogs]
Get all worklog entries from a Jira issue
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `issueKey` | string | Yes | Jira issue key to get worklogs from (e.g., PROJ-123) |
| `startAt` | number | No | Index of the first worklog to return (default: 0) |
| `maxResults` | number | No | Maximum number of worklogs to return (default: 50) |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-16]
| Parameter | Type | Description |
| -------------------- | ------- | ---------------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `issueKey` | string | Issue key |
| `total` | number | Total number of worklogs |
| `startAt` | number | Pagination start index |
| `maxResults` | number | Maximum results per page |
| `worklogs` | array | Array of worklogs |
| ↳ `id` | string | Worklog ID |
| ↳ `author` | object | Worklog author |
| ↳ `accountId` | string | Atlassian account ID of the user |
| ↳ `displayName` | string | Display name of the user |
| ↳ `active` | boolean | Whether the user account is active |
| ↳ `emailAddress` | string | Email address of the user |
| ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) |
| ↳ `avatarUrl` | string | URL to the user avatar (48x48) |
| ↳ `timeZone` | string | User timezone |
| ↳ `authorName` | string | Worklog author display name |
| ↳ `updateAuthor` | object | User who last updated the worklog |
| ↳ `accountId` | string | Atlassian account ID of the user |
| ↳ `displayName` | string | Display name of the user |
| ↳ `active` | boolean | Whether the user account is active |
| ↳ `emailAddress` | string | Email address of the user |
| ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) |
| ↳ `avatarUrl` | string | URL to the user avatar (48x48) |
| ↳ `timeZone` | string | User timezone |
| ↳ `comment` | string | Worklog comment text |
| ↳ `started` | string | ISO 8601 timestamp when the work started |
| ↳ `timeSpent` | string | Time spent in human-readable format (e.g., 3h 20m) |
| ↳ `timeSpentSeconds` | number | Time spent in seconds |
| ↳ `created` | string | ISO 8601 timestamp when the worklog was created |
| ↳ `updated` | string | ISO 8601 timestamp when the worklog was last updated |
### Jira Update Worklog [#jira-update-worklog]
Update an existing worklog entry on a Jira issue
#### Input [#input-17]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `issueKey` | string | Yes | Jira issue key containing the worklog (e.g., PROJ-123) |
| `worklogId` | string | Yes | ID of the worklog entry to update |
| `timeSpentSeconds` | number | No | Time spent in seconds |
| `comment` | string | No | Optional comment for the worklog entry |
| `started` | string | No | Optional start time in ISO format |
| `visibility` | json | No | Restrict worklog visibility. Object with "type" ("role" or "group") and "value" (role/group name). |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-17]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------------ |
| `ts` | string | ISO 8601 timestamp of the operation |
| `success` | boolean | Operation success status |
| `issueKey` | string | Issue key |
| `worklogId` | string | Updated worklog ID |
| `timeSpent` | string | Human-readable time spent (e.g., "3h 20m") |
| `timeSpentSeconds` | number | Time spent in seconds |
| `comment` | string | Worklog comment text |
| `author` | object | Worklog author |
| ↳ `accountId` | string | Atlassian account ID of the user |
| ↳ `displayName` | string | Display name of the user |
| ↳ `active` | boolean | Whether the user account is active |
| ↳ `emailAddress` | string | Email address of the user |
| ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) |
| ↳ `avatarUrl` | string | URL to the user avatar (48x48) |
| ↳ `timeZone` | string | User timezone |
| `updateAuthor` | object | User who last updated the worklog |
| ↳ `accountId` | string | Atlassian account ID of the user |
| ↳ `displayName` | string | Display name of the user |
| ↳ `active` | boolean | Whether the user account is active |
| ↳ `emailAddress` | string | Email address of the user |
| ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) |
| ↳ `avatarUrl` | string | URL to the user avatar (48x48) |
| ↳ `timeZone` | string | User timezone |
| `started` | string | Worklog start time in ISO format |
| `created` | string | Worklog creation time |
| `updated` | string | Worklog last update time |
### Jira Delete Worklog [#jira-delete-worklog]
Delete a worklog entry from a Jira issue
#### Input [#input-18]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `issueKey` | string | Yes | Jira issue key containing the worklog (e.g., PROJ-123) |
| `worklogId` | string | Yes | ID of the worklog entry to delete |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-18]
| Parameter | Type | Description |
| ----------- | ------- | ----------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `success` | boolean | Operation success status |
| `issueKey` | string | Issue key |
| `worklogId` | string | Deleted worklog ID |
### Jira Create Issue Link [#jira-create-issue-link]
Create a link relationship between two Jira issues
#### Input [#input-19]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `inwardIssueKey` | string | Yes | Jira issue key for the inward issue (e.g., PROJ-123) |
| `outwardIssueKey` | string | Yes | Jira issue key for the outward issue (e.g., PROJ-456) |
| `linkType` | string | Yes | The type of link relationship (e.g., "Blocks", "Relates to", "Duplicates") |
| `comment` | string | No | Optional comment to add to the issue link |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-19]
| Parameter | Type | Description |
| -------------- | ------- | ----------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `success` | boolean | Operation success status |
| `inwardIssue` | string | Inward issue key |
| `outwardIssue` | string | Outward issue key |
| `linkType` | string | Type of issue link |
| `linkId` | string | Created link ID |
### Jira Delete Issue Link [#jira-delete-issue-link]
Delete a link between two Jira issues
#### Input [#input-20]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `linkId` | string | Yes | ID of the issue link to delete |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-20]
| Parameter | Type | Description |
| --------- | ------- | ----------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `success` | boolean | Operation success status |
| `linkId` | string | Deleted link ID |
### Jira Add Watcher [#jira-add-watcher]
Add a watcher to a Jira issue to receive notifications about updates
#### Input [#input-21]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `issueKey` | string | Yes | Jira issue key to add watcher to (e.g., PROJ-123) |
| `accountId` | string | Yes | Account ID of the user to add as watcher |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-21]
| Parameter | Type | Description |
| ------------------ | ------- | ----------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `success` | boolean | Operation success status |
| `issueKey` | string | Issue key |
| `watcherAccountId` | string | Added watcher account ID |
### Jira Remove Watcher [#jira-remove-watcher]
Remove a watcher from a Jira issue
#### Input [#input-22]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `issueKey` | string | Yes | Jira issue key to remove watcher from (e.g., PROJ-123) |
| `accountId` | string | Yes | Account ID of the user to remove as watcher |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-22]
| Parameter | Type | Description |
| ------------------ | ------- | ----------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `success` | boolean | Operation success status |
| `issueKey` | string | Issue key |
| `watcherAccountId` | string | Removed watcher account ID |
### Jira Get Users [#jira-get-users]
Get Jira users. If an account ID is provided, returns a single user. Otherwise, returns a list of all users.
#### Input [#input-23]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------- |
| `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `accountId` | string | No | Optional account ID to get a specific user. If not provided, returns all users. |
| `startAt` | number | No | The index of the first user to return (for pagination, default: 0) |
| `maxResults` | number | No | Maximum number of users to return (default: 50) |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output [#output-23]
| Parameter | Type | Description |
| ---------------- | ------- | --------------------------------------------------------------- |
| `ts` | string | ISO 8601 timestamp of the operation |
| `users` | array | Array of Jira users |
| ↳ `accountId` | string | Atlassian account ID of the user |
| ↳ `displayName` | string | Display name of the user |
| ↳ `active` | boolean | Whether the user account is active |
| ↳ `emailAddress` | string | Email address of the user |
| ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) |
| ↳ `avatarUrl` | string | URL to the user avatar (48x48) |
| ↳ `timeZone` | string | User timezone |
| ↳ `avatarUrls` | json | User avatar URLs in multiple sizes (16x16, 24x24, 32x32, 48x48) |
| ↳ `self` | string | REST API URL for this user |
| `total` | number | Total number of users returned |
| `startAt` | number | Pagination start index |
| `maxResults` | number | Maximum results per page |
### Jira Search Users [#jira-search-users]
Search fo