, \ |
| `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-6]
| 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 Delete Application [#ashby-delete-application]
Permanently deletes an application in Ashby. Requires the candidatesDelete permission, which is a separate module permission from candidatesWrite - a read and write key returns 403 here. There is no equivalent endpoint for deleting a candidate; candidate deletion is UI-only.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Ashby API Key |
| `onBehalfOfUserId` | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls |
| `applicationId` | string | Yes | UUID of the application to delete |
#### Output [#output-7]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------- |
| `applicationId` | string | UUID of the deleted application |
### Ashby Get Application [#ashby-get-application]
Retrieves full details about a single application by its ID.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ------------------------- | ------ | -------- | ------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Ashby API Key |
| `applicationId` | string | No | The UUID of the application to fetch |
| `submittedFormInstanceId` | string | No | Submitted application-form instance UUID to use instead of applicationId |
| `expand` | json | No | Ashby-supported application expansions to include |
#### Output [#output-8]
| 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 | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
| `customField` | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
| `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) |
| `interviewPlans` | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
| `interviewStages` | json | Ordered interview stages for a plan |
| `feedback` | json | Submitted application feedback with form definitions and values |
| `history` | json | Application stage history and allowed actions |
| `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 |
| `applicationId` | string | UUID of the deleted application |
| `moreDataAvailable` | boolean | Whether more pages exist |
| `nextCursor` | string | Pagination cursor for next page |
| `nextSyncCursor` | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
### Ashby Get Candidate [#ashby-get-candidate]
Retrieves full details about a single candidate by their ID.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ------------------- | ------ | -------- | -------------------------------------------------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `candidateId` | string | No | The UUID of the candidate to fetch |
| `externalMappingId` | string | No | External mapping ID to use instead of the Ashby candidate UUID |
#### 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 | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
| `customField` | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
| `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) |
| `interviewPlans` | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
| `interviewStages` | json | Ordered interview stages for a plan |
| `feedback` | json | Submitted application feedback with form definitions and values |
| `history` | json | Application stage history and allowed actions |
| `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 |
| `applicationId` | string | UUID of the deleted application |
| `moreDataAvailable` | boolean | Whether more pages exist |
| `nextCursor` | string | Pagination cursor for next page |
| `nextSyncCursor` | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
### Ashby Get Job [#ashby-get-job]
Retrieves full details about a single job by its ID.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| --------------------------------- | ------- | -------- | ---------------------------------------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `jobId` | string | Yes | The UUID of the job to fetch |
| `includeUnpublishedJobPostingIds` | boolean | No | Include IDs for unpublished job postings on this job |
#### Output [#output-10]
| 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 | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
| `customField` | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
| `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) |
| `interviewPlans` | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
| `interviewStages` | json | Ordered interview stages for a plan |
| `feedback` | json | Submitted application feedback with form definitions and values |
| `history` | json | Application stage history and allowed actions |
| `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 |
| `applicationId` | string | UUID of the deleted application |
| `moreDataAvailable` | boolean | Whether more pages exist |
| `nextCursor` | string | Pagination cursor for next page |
| `nextSyncCursor` | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
### Ashby Get Job Posting [#ashby-get-job-posting]
Retrieves full details about a single job posting by its ID.
#### Input [#input-11]
| 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 |
| `includeUnpublishedJobPostings` | boolean | No | Allow retrieval of an unpublished or draft job posting |
#### Output [#output-11]
| 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-12]
| Parameter | Type | Required | Description |
| ----------------------- | ------- | -------- | ------------------------------------------------ |
| `apiKey` | string | Yes | Ashby API Key |
| `offerId` | string | Yes | The UUID of the offer to fetch |
| `excludeFormDefinition` | boolean | No | Omit the offer form definition from the response |
#### Output [#output-12]
| 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 | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
| `customField` | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
| `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) |
| `interviewPlans` | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
| `interviewStages` | json | Ordered interview stages for a plan |
| `feedback` | json | Submitted application feedback with form definitions and values |
| `history` | json | Application stage history and allowed actions |
| `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 |
| `applicationId` | string | UUID of the deleted application |
| `moreDataAvailable` | boolean | Whether more pages exist |
| `nextCursor` | string | Pagination cursor for next page |
| `nextSyncCursor` | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
### Ashby Get Opening [#ashby-get-opening]
Retrieves one Ashby headcount opening by UUID.
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `openingId` | string | Yes | Opening UUID |
#### Output [#output-13]
| 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 | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
| `customField` | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
| `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) |
| `interviewPlans` | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
| `interviewStages` | json | Ordered interview stages for a plan |
| `feedback` | json | Submitted application feedback with form definitions and values |
| `history` | json | Application stage history and allowed actions |
| `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 |
| `applicationId` | string | UUID of the deleted application |
| `moreDataAvailable` | boolean | Whether more pages exist |
| `nextCursor` | string | Pagination cursor for next page |
| `nextSyncCursor` | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
### Ashby List Application Feedback [#ashby-list-application-feedback]
Lists submitted interview feedback, optionally for one application, with pagination and incremental sync.
#### Input [#input-14]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ----------------------------------------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `applicationId` | string | No | Application UUID |
| `cursor` | string | No | Pagination cursor |
| `perPage` | number | No | Results per page (1-100) |
| `syncToken` | string | No | Opaque token from a completed prior sync run |
| `createdAfter` | string | No | Only feedback submitted after this ISO 8601 timestamp |
#### Output [#output-14]
| Parameter | Type | Description |
| ---------------------------- | ------- | ------------------------------------------------------- |
| `feedback` | array | Submitted application feedback |
| ↳ `id` | string | Feedback UUID |
| ↳ `formDefinition` | json | Feedback form sections and documented field definitions |
| ↳ `feedbackFormDefinitionId` | string | Feedback form definition UUID |
| ↳ `applicationId` | string | Application UUID |
| ↳ `submittedValues` | json | Submitted field values keyed by form field path |
| ↳ `interviewId` | string | Interview UUID |
| ↳ `interviewEventId` | string | Interview event UUID |
| ↳ `applicationHistoryId` | string | Application history UUID |
| ↳ `submittedAt` | string | Submission timestamp |
| `moreDataAvailable` | boolean | Whether more pages exist |
| `nextCursor` | string | Next page cursor |
| `nextSyncCursor` | string | Next incremental sync token |
### Ashby List Application History [#ashby-list-application-history]
Lists the full stage history and allowed actions for an application.
#### Input [#input-15]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------ |
| `apiKey` | string | Yes | Ashby API Key |
| `applicationId` | string | Yes | Application UUID |
| `cursor` | string | No | Pagination cursor |
| `perPage` | number | No | Results per page (1-100) |
#### Output [#output-15]
| Parameter | Type | Description |
| ------------------- | ------- | --------------------------------------- |
| `history` | array | Application stage history |
| ↳ `id` | string | History entry UUID |
| ↳ `stageId` | string | Stage UUID |
| ↳ `title` | string | Stage title |
| ↳ `enteredStageAt` | string | Stage entry timestamp |
| ↳ `leftStageAt` | string | Stage exit timestamp |
| ↳ `stageNumber` | number | Stage sequence number |
| ↳ `allowedActions` | array | Actions permitted at this history point |
| ↳ `actorId` | string | Acting user UUID |
| `moreDataAvailable` | boolean | Whether more pages exist |
| `nextCursor` | string | Next page cursor |
### 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-16]
| 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 | Application status to include: 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) |
| `createdBefore` | string | No | Filter to applications created before this ISO 8601 timestamp |
| `syncToken` | string | No | Opaque token from a completed prior sync run |
| `expand` | json | No | Ashby-supported application expansions to request |
#### Output [#output-16]
| 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 |
| `nextSyncCursor` | string | Opaque token for the next incremental sync, returned on the final page |
### Ashby List Archive Reasons [#ashby-list-archive-reasons]
Lists all archive reasons configured in Ashby.
#### Input [#input-17]
| 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-17]
| 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-18]
| 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-18]
| 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 |
| `nextSyncCursor` | 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-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 100) |
| `createdAfter` | string | No | Only return candidates created after this ISO 8601 timestamp (e.g. 2024-01-01T00:00:00Z) |
| `createdBefore` | string | No | Only return candidates created before this ISO 8601 timestamp |
| `syncToken` | string | No | Opaque token from a completed prior sync run |
#### Output [#output-19]
| 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 |
| `nextSyncCursor` | string | Opaque token for the next incremental sync, returned on the final page |
### Ashby List Custom Fields [#ashby-list-custom-fields]
Lists all custom field definitions configured in Ashby.
#### Input [#input-20]
| 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-20]
| 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 |
| `nextSyncCursor` | 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-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 (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-21]
| 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 |
| `nextSyncCursor` | 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-22]
| 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) |
| `syncToken` | string | No | Opaque token from a completed prior sync run |
#### Output [#output-22]
| 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 |
| `nextSyncCursor` | string | Opaque token for the next incremental sync |
### Ashby List Interview Plans [#ashby-list-interview-plans]
Lists Ashby interview plans, including optional archived plans and incremental changes.
#### Input [#input-23]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | -------------------------------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `includeArchived` | boolean | No | Include archived interview plans |
| `cursor` | string | No | Pagination cursor |
| `perPage` | number | No | Results per page (1-100) |
| `syncToken` | string | No | Opaque token from a completed prior sync run |
#### Output [#output-23]
| Parameter | Type | Description |
| ------------------- | ------- | --------------------------- |
| `interviewPlans` | array | Interview plans |
| ↳ `id` | string | Interview plan UUID |
| ↳ `title` | string | Plan title |
| ↳ `isArchived` | boolean | Whether archived |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `updatedAt` | string | Last update timestamp |
| `moreDataAvailable` | boolean | Whether more pages exist |
| `nextCursor` | string | Next page cursor |
| `nextSyncCursor` | string | Next incremental sync token |
### Ashby List Interview Stages [#ashby-list-interview-stages]
Lists the ordered stages in an Ashby interview plan.
#### Input [#input-24]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `interviewPlanId` | string | Yes | Interview plan UUID |
#### Output [#output-24]
| Parameter | Type | Description |
| ------------------------- | ------ | ------------------------------ |
| `interviewStages` | array | Interview stages in plan order |
| ↳ `id` | string | Stage UUID |
| ↳ `title` | string | Stage title |
| ↳ `type` | string | Stage type |
| ↳ `interviewPlanId` | string | Parent plan UUID |
| ↳ `orderInInterviewPlan` | number | Zero-based plan order |
| ↳ `interviewStageGroupId` | string | Stage group UUID |
### Ashby List Job Postings [#ashby-list-job-postings]
Lists all job postings in Ashby.
#### Input [#input-25]
| 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) |
| `includeUnpublishedJobPostings` | boolean | No | When true, also returns unpublished (Draft) job postings. The endpoint already returns both listed and unlisted published postings by default, so this only adds drafts. |
| `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-25]
| 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) |
| ↳ `status` | string | Posting status (Draft or Published) |
| ↳ `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-26]
| 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). Ashby silently caps larger values rather than erroring. |
| `syncToken` | string | No | Opaque token from a prior sync to fetch only jobs changed since then. Ashby only returns a new syncToken on the last page, so drain moreDataAvailable/nextCursor before persisting it. |
| `status` | array | No | One job status or an array of statuses to include: 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 |
| `includeUnpublishedJobPostingsIds` | boolean | No | Include IDs for unpublished job postings on each job |
#### Output [#output-26]
| 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 |
| `nextSyncCursor` | string | Ashby's syncToken for the next incremental run, returned only once the last page is drained. Named as a cursor because that is what it is - an opaque resumption marker, not a credential - so it stays readable in block output alongside nextCursor. |
### Ashby List Locations [#ashby-list-locations]
Lists all locations configured in Ashby.
#### Input [#input-27]
| 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-27]
| 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 |
| `nextSyncCursor` | 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-28]
| 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 (1-100) |
#### Output [#output-28]
| 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-29]
| 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 |
| `offerStatus` | json | No | Non-empty array of offer process statuses to include |
| `acceptanceStatus` | json | No | Non-empty array of offer acceptance statuses to include |
| `approvalStatus` | json | No | Non-empty array of latest-version approval statuses to include |
#### Output [#output-29]
| 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 |
| `nextSyncCursor` | string | Opaque token for the next incremental sync, returned on the final page |
### Ashby List Openings [#ashby-list-openings]
Lists all openings in Ashby with pagination.
#### Input [#input-30]
| 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) |
| `syncToken` | string | No | Opaque token from a completed prior sync run |
#### Output [#output-30]
| Parameter | Type | Description |
| ------------------- | ------- | ------------------------------------------ |
| `moreDataAvailable` | boolean | Whether more pages of results exist |
| `nextCursor` | string | Opaque cursor for fetching the next page |
| `nextSyncCursor` | string | Opaque token for the next incremental sync |
### Ashby List Sources [#ashby-list-sources]
Lists all candidate sources configured in Ashby.
#### Input [#input-31]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | --------------------------------------------------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `includeArchived` | boolean | No | When true, includes archived sources in results (default false) |
#### Output [#output-31]
| 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-32]
| 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) |
| `syncToken` | string | No | Opaque token from a completed prior sync run |
#### Output [#output-32]
| 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 |
| `nextSyncCursor` | string | Opaque token for the next incremental sync |
### Ashby Remove Candidate Tag [#ashby-remove-candidate-tag]
Removes a tag from a candidate in Ashby and returns the updated candidate.
#### Input [#input-33]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Ashby API Key |
| `onBehalfOfUserId` | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls |
| `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-33]
| 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 | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
| `customField` | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
| `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) |
| `interviewPlans` | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
| `interviewStages` | json | Ordered interview stages for a plan |
| `feedback` | json | Submitted application feedback with form definitions and values |
| `history` | json | Application stage history and allowed actions |
| `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 |
| `applicationId` | string | UUID of the deleted application |
| `moreDataAvailable` | boolean | Whether more pages exist |
| `nextCursor` | string | Pagination cursor for next page |
| `nextSyncCursor` | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
### 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-34]
| 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) |
| `limit` | number | No | Maximum matches to return (1-100) |
#### Output [#output-34]
| Parameter | Type | Description |
| ------------ | ----- | ------------------------------------- |
| `candidates` | array | Matching candidates (max 100 results) |
### Ashby Search Jobs [#ashby-search-jobs]
Searches Ashby jobs by title and/or requisition ID. Provide at least one of these filters.
#### Input [#input-35]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ----------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `title` | string | No | Job title search text |
| `requisitionId` | string | No | Custom requisition ID |
| `limit` | number | No | Maximum matches (1-100) |
#### Output [#output-35]
| Parameter | Type | Description |
| ------------------- | ------- | -------------------------- |
| `jobs` | array | Matching jobs |
| `moreDataAvailable` | boolean | Whether more matches exist |
### Ashby Search Openings [#ashby-search-openings]
Searches Ashby headcount openings by human-readable identifier.
#### Input [#input-36]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------ |
| `apiKey` | string | Yes | Ashby API Key |
| `identifier` | string | Yes | Opening identifier |
#### Output [#output-36]
| 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 | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
| `customField` | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
| `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) |
| `interviewPlans` | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
| `interviewStages` | json | Ordered interview stages for a plan |
| `feedback` | json | Submitted application feedback with form definitions and values |
| `history` | json | Application stage history and allowed actions |
| `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 |
| `applicationId` | string | UUID of the deleted application |
| `moreDataAvailable` | boolean | Whether more pages exist |
| `nextCursor` | string | Pagination cursor for next page |
| `nextSyncCursor` | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
### Ashby Search Users [#ashby-search-users]
Searches Ashby users by exact email address.
#### Input [#input-37]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------ |
| `apiKey` | string | Yes | Ashby API Key |
| `email` | string | Yes | User email address |
#### Output [#output-37]
| Parameter | Type | Description |
| --------- | ----- | -------------- |
| `users` | array | Matching users |
### Ashby Set Custom Field Value [#ashby-set-custom-field-value]
Sets the value of a single custom field on an Ashby Application, Candidate, Job, or Opening. Custom fields are the only way to annotate a job or req, since Ashby has no job notes and no job tags. Requires the candidatesWrite permission.
#### Input [#input-38]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `onBehalfOfUserId` | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls |
| `objectId` | string | Yes | UUID of the object to set the field on (application, candidate, job, or opening) |
| `objectType` | string | Yes | Type of the object: Application, Candidate, Job, or Opening |
| `fieldId` | string | Yes | UUID of the custom field definition to set, as returned by List Custom Fields. This is the field definition ID, not the ID of a value already on the object. |
| `fieldValue` | json | No | Value to write, matching the field type: boolean, number, string (String, LongText, Date, Url, or a ValueSelect option), string array (MultiValueSelect), or an object for Currency (\{value, currencyCode}), NumberRange (\{type, minValue, maxValue}), CompensationRange, and Location (\{country, region, city}). Pass null to clear the value, which makes the annotation reversible. |
#### Output [#output-38]
| Parameter | Type | Description |
| ------------- | ------ | -------------------------------------------------------- |
| `customField` | object | The custom field as stored on the object after the write |
### Ashby Set Custom Field Values [#ashby-set-custom-field-values]
Sets several custom field values on one Ashby Application, Candidate, Job, or Opening in a single call. Prefer this over repeated single-field writes to the same object - Ashby recommends it because concurrent single-field calls can race and overwrite each other. Requires the candidatesWrite permission.
#### Input [#input-39]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `onBehalfOfUserId` | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls |
| `objectId` | string | Yes | UUID of the object to set the fields on (application, candidate, job, or opening) |
| `objectType` | string | Yes | Type of the object: Application, Candidate, Job, or Opening |
| `values` | json | Yes | Array of at least one \{ fieldId, fieldValue } pair. fieldId is a custom field definition UUID from List Custom Fields. fieldValue matches the field type: boolean, number, string, string array (MultiValueSelect), or an object for Currency, NumberRange, CompensationRange, and Location. Pass null as a fieldValue to clear that field. |
#### Output [#output-39]
| 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 | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
| `customField` | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
| `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) |
| `interviewPlans` | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
| `interviewStages` | json | Ordered interview stages for a plan |
| `feedback` | json | Submitted application feedback with form definitions and values |
| `history` | json | Application stage history and allowed actions |
| `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 |
| `applicationId` | string | UUID of the deleted application |
| `moreDataAvailable` | boolean | Whether more pages exist |
| `nextCursor` | string | Pagination cursor for next page |
| `nextSyncCursor` | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
### Ashby Update Candidate [#ashby-update-candidate]
Updates an existing candidate record in Ashby. Only provided fields are changed.
#### Input [#input-40]
| Parameter | Type | Required | Description |
| --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Ashby API Key |
| `onBehalfOfUserId` | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls |
| `candidateId` | string | Yes | The UUID of the candidate to update |
| `name` | string | No | Updated full name, or null |
| `email` | string | No | Updated primary email address, or null |
| `phoneNumber` | string | No | Updated primary phone number, or null |
| `linkedInUrl` | string | No | LinkedIn profile URL, or null |
| `githubUrl` | string | No | GitHub profile URL, or null |
| `websiteUrl` | string | No | Personal website URL, or null |
| `alternateEmail` | string | No | An additional email address to add to the candidate, or null |
| `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 |
| `clearSource` | boolean | No | Explicitly clear the candidate source; mutually exclusive with sourceId |
| `clearCreditedToUser` | boolean | No | Explicitly clear the credited Ashby user; mutually exclusive with creditedToUserId |
| `location` | json | No | Candidate location object with optional city, region, and country; the object and its fields accept null |
| `createdAt` | string | No | Backdated creation timestamp in ISO 8601, or null. Only updatable if originally backdated. |
| `sendNotifications` | boolean | No | Whether to send a notification when the source is updated (default true), or null |
| `socialLinks` | json | No | Array of social link objects to set on the candidate, e.g. \[\{"type":"LinkedIn","url":"https\://..."}]. Replaces existing links; pass \[] to clear them. Null is also accepted. Mutually exclusive with linkedInUrl, githubUrl, and websiteUrl. |
#### Output [#output-40]
| 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 | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
| `customField` | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
| `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) |
| `interviewPlans` | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
| `interviewStages` | json | Ordered interview stages for a plan |
| `feedback` | json | Submitted application feedback with form definitions and values |
| `history` | json | Application stage history and allowed actions |
| `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 |
| `applicationId` | string | UUID of the deleted application |
| `moreDataAvailable` | boolean | Whether more pages exist |
| `nextCursor` | string | Pagination cursor for next page |
| `nextSyncCursor` | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
### Ashby Transfer Application [#ashby-transfer-application]
Transfers an application to another job, interview plan, and stage.
#### Input [#input-41]
| Parameter | Type | Required | Description |
| -------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Ashby API Key |
| `onBehalfOfUserId` | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls |
| `applicationId` | string | Yes | Application UUID |
| `jobId` | string | Yes | Destination job UUID |
| `interviewPlanId` | string | Yes | Destination interview plan UUID |
| `interviewStageId` | string | Yes | Destination interview stage UUID |
| `startAutomaticActivities` | boolean | No | Start automatic activities configured for the destination stage |
#### Output [#output-41]
| 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 | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
| `customField` | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
| `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) |
| `interviewPlans` | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
| `interviewStages` | json | Ordered interview stages for a plan |
| `feedback` | json | Submitted application feedback with form definitions and values |
| `history` | json | Application stage history and allowed actions |
| `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 |
| `applicationId` | string | UUID of the deleted application |
| `moreDataAvailable` | boolean | Whether more pages exist |
| `nextCursor` | string | Pagination cursor for next page |
| `nextSyncCursor` | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
### Ashby Upload Candidate File [#ashby-upload-candidate-file]
Securely uploads a file and attaches it to an Ashby candidate.
#### Input [#input-42]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ---------------------------------------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `candidateId` | string | Yes | Candidate UUID |
| `file` | file | Yes | Stored file to attach to the candidate |
| `fileName` | string | No | Optional filename override |
| `onBehalfOfUserId` | string | No | Active Ashby user UUID to attribute this mutation to |
#### Output [#output-42]
| 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 | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
| `customField` | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
| `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) |
| `interviewPlans` | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
| `interviewStages` | json | Ordered interview stages for a plan |
| `feedback` | json | Submitted application feedback with form definitions and values |
| `history` | json | Application stage history and allowed actions |
| `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 |
| `applicationId` | string | UUID of the deleted application |
| `moreDataAvailable` | boolean | Whether more pages exist |
| `nextCursor` | string | Pagination cursor for next page |
| `nextSyncCursor` | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
### Ashby Upload Resume [#ashby-upload-resume]
Securely uploads a resume and sets it as the Ashby candidate resume.
#### Input [#input-43]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ---------------------------------------------------- |
| `apiKey` | string | Yes | Ashby API Key |
| `candidateId` | string | Yes | Candidate UUID |
| `file` | file | Yes | Stored resume file |
| `fileName` | string | No | Optional filename override |
| `onBehalfOfUserId` | string | No | Active Ashby user UUID to attribute this mutation to |
#### Output [#output-43]
| 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 | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) |
| `customField` | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) |
| `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) |
| `interviewPlans` | json | Interview plans (id, title, isArchived, createdAt, updatedAt) |
| `interviewStages` | json | Ordered interview stages for a plan |
| `feedback` | json | Submitted application feedback with form definitions and values |
| `history` | json | Application stage history and allowed actions |
| `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 |
| `applicationId` | string | UUID of the deleted application |
| `moreDataAvailable` | boolean | Whether more pages exist |
| `nextCursor` | string | Pagination cursor for next page |
| `nextSyncCursor` | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output |
## 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-44]
| Parameter | Type | Description |
| ------------------------- | ------ | -------------------------------------------------------------------- |
| `action` | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
| `webhookActionId` | string | Ashby delivery identifier, stable across retries |
| `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 Application Updated [#ashby-application-updated]
Trigger workflow when an application is updated
#### Configuration [#configuration-1]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------- |
| `apiKey` | string | Yes | API Key |
#### Output [#output-45]
| Parameter | Type | Description |
| ------------------------- | ------ | -------------------------------------------------------------------- |
| `action` | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
| `webhookActionId` | string | Ashby delivery identifier, stable across retries |
| `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-2]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------- |
| `apiKey` | string | Yes | API Key |
#### Output [#output-46]
| Parameter | Type | Description |
| ----------------- | ------ | --------------------------------------------------------------- |
| `action` | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
| `webhookActionId` | string | Ashby delivery identifier, stable across retries |
| `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-3]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------- |
| `apiKey` | string | Yes | API Key |
#### Output [#output-47]
| Parameter | Type | Description |
| ------------------------- | ------ | -------------------------------------------------------------------- |
| `action` | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
| `webhookActionId` | string | Ashby delivery identifier, stable across retries |
| `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 Merged [#ashby-candidate-merged]
Trigger workflow when two candidate records are merged
#### Configuration [#configuration-4]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------- |
| `apiKey` | string | Yes | API Key |
#### Output [#output-48]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------------------------------------------- |
| `action` | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
| `webhookActionId` | string | Ashby delivery identifier, stable across retries |
| `deletedCandidate` | object | deletedCandidate output from the tool |
| ↳ `id` | string | Deleted candidate UUID |
| `mergedCandidate` | object | mergedCandidate output from the tool |
| ↳ `id` | string | Final merged candidate UUID |
***
### Ashby Candidate Stage Change [#ashby-candidate-stage-change]
Trigger workflow when a candidate changes interview stages
#### Configuration [#configuration-5]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------- |
| `apiKey` | string | Yes | API Key |
#### Output [#output-49]
| Parameter | Type | Description |
| ------------------------- | ------ | -------------------------------------------------------------------- |
| `action` | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
| `webhookActionId` | string | Ashby delivery identifier, stable across retries |
| `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 Interview Schedule Created [#ashby-interview-schedule-created]
Trigger workflow when an interview schedule is created
#### Configuration [#configuration-6]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------- |
| `apiKey` | string | Yes | API Key |
#### Output [#output-50]
| Parameter | Type | Description |
| -------------------- | ------ | --------------------------------------------------------------- |
| `action` | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
| `webhookActionId` | string | Ashby delivery identifier, stable across retries |
| `interviewSchedule` | object | interviewSchedule output from the tool |
| ↳ `id` | string | Interview schedule UUID |
| ↳ `status` | string | Interview schedule status |
| ↳ `applicationId` | string | Application UUID |
| ↳ `interviewStageId` | string | Interview stage UUID |
| ↳ `scheduledBy` | json | Scheduling user |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `updatedAt` | string | Last update timestamp |
| ↳ `interviewEvents` | json | Scheduled interview events |
***
### Ashby Interview Schedule Updated [#ashby-interview-schedule-updated]
Trigger workflow when an interview schedule is updated
#### Configuration [#configuration-7]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------- |
| `apiKey` | string | Yes | API Key |
#### Output [#output-51]
| Parameter | Type | Description |
| -------------------- | ------ | --------------------------------------------------------------- |
| `action` | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
| `webhookActionId` | string | Ashby delivery identifier, stable across retries |
| `interviewSchedule` | object | interviewSchedule output from the tool |
| ↳ `id` | string | Interview schedule UUID |
| ↳ `status` | string | Interview schedule status |
| ↳ `applicationId` | string | Application UUID |
| ↳ `interviewStageId` | string | Interview stage UUID |
| ↳ `candidateId` | string | Candidate UUID |
| ↳ `scheduledBy` | json | Scheduling user |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `updatedAt` | string | Last update timestamp |
| ↳ `interviewEvents` | json | Scheduled interview events |
***
### Ashby Job Created [#ashby-job-created]
Trigger workflow when a new job is created
#### Configuration [#configuration-8]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------- |
| `apiKey` | string | Yes | API Key |
#### Output [#output-52]
| Parameter | Type | Description |
| ------------------ | ------- | ----------------------------------------------------------------- |
| `action` | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
| `webhookActionId` | string | Ashby delivery identifier, stable across retries |
| `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, Temporary) |
***
### Ashby Job Posting Deleted [#ashby-job-posting-deleted]
Trigger workflow when a job posting is deleted
#### Configuration [#configuration-9]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------- |
| `apiKey` | string | Yes | API Key |
#### Output [#output-53]
| Parameter | Type | Description |
| ----------------- | ------ | --------------------------------------------------------------- |
| `action` | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
| `webhookActionId` | string | Ashby delivery identifier, stable across retries |
| `jobPosting` | object | jobPosting output from the tool |
| ↳ `id` | string | Deleted job posting UUID |
| ↳ `jobId` | string | Associated job UUID |
***
### Ashby Job Posting Updated [#ashby-job-posting-updated]
Trigger workflow when a job posting is updated
#### Configuration [#configuration-10]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------- |
| `apiKey` | string | Yes | API Key |
#### Output [#output-54]
| Parameter | Type | Description |
| --------------------- | ------- | --------------------------------------------------------------- |
| `action` | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
| `webhookActionId` | string | Ashby delivery identifier, stable across retries |
| `jobPosting` | object | jobPosting output from the tool |
| ↳ `id` | string | Job posting UUID |
| ↳ `title` | string | Job posting title |
| ↳ `jobId` | string | Associated job UUID |
| ↳ `departmentName` | string | Department name |
| ↳ `teamName` | string | Team name |
| ↳ `teamNameHierarchy` | json | Department-to-team name hierarchy |
| ↳ `locationName` | string | Location name |
| ↳ `isListed` | boolean | Whether publicly listed |
| ↳ `publishedDate` | string | Publication timestamp |
| ↳ `updatedAt` | string | Last update timestamp |
***
### Ashby Job Updated [#ashby-job-updated]
Trigger workflow when a job is updated
#### Configuration [#configuration-11]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------- |
| `apiKey` | string | Yes | API Key |
#### Output [#output-55]
| Parameter | Type | Description |
| ------------------ | ------- | ----------------------------------------------------------------- |
| `action` | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
| `webhookActionId` | string | Ashby delivery identifier, stable across retries |
| `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, Temporary) |
***
### Ashby Offer Created [#ashby-offer-created]
Trigger workflow when a new offer is created
#### Configuration [#configuration-12]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------- |
| `apiKey` | string | Yes | API Key |
#### Output [#output-56]
| Parameter | Type | Description |
| -------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `action` | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
| `webhookActionId` | string | Ashby delivery identifier, stable across retries |
| `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 |
***
### Ashby Offer Deleted [#ashby-offer-deleted]
Trigger workflow when an offer is deleted
#### Configuration [#configuration-13]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------- |
| `apiKey` | string | Yes | API Key |
#### Output [#output-57]
| Parameter | Type | Description |
| ----------------- | ------ | --------------------------------------------------------------- |
| `action` | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
| `webhookActionId` | string | Ashby delivery identifier, stable across retries |
| `offer` | object | offer output from the tool |
| ↳ `id` | string | Deleted offer UUID |
| ↳ `applicationId` | string | Associated application UUID |
***
### Ashby Offer Updated [#ashby-offer-updated]
Trigger workflow when an offer is updated
#### Configuration [#configuration-14]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------- |
| `apiKey` | string | Yes | API Key |
#### Output [#output-58]
| Parameter | Type | Description |
| -------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `action` | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
| `webhookActionId` | string | Ashby delivery identifier, stable across retries |
| `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 |
***
### Ashby Opening Created [#ashby-opening-created]
Trigger workflow when a headcount opening is created
#### Configuration [#configuration-15]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------- |
| `apiKey` | string | Yes | API Key |
#### Output [#output-59]
| Parameter | Type | Description |
| ----------------- | ------- | --------------------------------------------------------------- |
| `action` | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
| `webhookActionId` | string | Ashby delivery identifier, stable across retries |
| `opening` | object | opening output from the tool |
| ↳ `id` | string | Opening UUID |
| ↳ `openedAt` | string | Open timestamp |
| ↳ `closedAt` | string | Close timestamp |
| ↳ `isArchived` | boolean | Whether archived |
| ↳ `archivedAt` | string | Archive timestamp |
| ↳ `closeReasonId` | string | Close reason UUID |
| ↳ `openingState` | string | Opening state |
| ↳ `latestVersion` | json | Latest opening version |
***
### Ashby Signature Request Updated [#ashby-signature-request-updated]
Trigger workflow when an e-signature request changes state
#### Configuration [#configuration-16]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------- |
| `apiKey` | string | Yes | API Key |
#### Output [#output-60]
| Parameter | Type | Description |
| ------------------- | ------ | --------------------------------------------------------------- |
| `action` | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
| `webhookActionId` | string | Ashby delivery identifier, stable across retries |
| `relatedEntityType` | string | Related entity type: application or offer |
| `applicationId` | string | Related application UUID |
| `offerId` | string | Related offer UUID |
| `offerVersionId` | string | Related offer version UUID |
| `eventType` | string | Signature request event: sent, cancelled, completed, or deleted |
---
# Temporal (/en/integrations/temporal)
{/* MANUAL-CONTENT-START:intro */}
[Temporal](https://temporal.io/) is an open-source durable execution platform that lets teams write workflows as code that survive crashes, retries, and outages. A Temporal cluster tracks every workflow execution's state and event history, so long-running business processes — order fulfillment, payment pipelines, infrastructure provisioning, human-in-the-loop approvals — run reliably for minutes or months at a time.
With the Temporal integration in Studio, your agents can drive those durable workflows directly. Connect to any Temporal cluster that exposes the server's HTTP API (enabled by default on the frontend's HTTP port, 7243, in modern Temporal servers) and:
* **Run workflows**: start executions with JSON input, use signal-with-start for exactly-once delivery, and set ID reuse policies, cron schedules, timeouts, memo fields, and search attributes.
* **Communicate with running workflows**: send signals, invoke update handlers and wait for their results, and run queries against live workflow state.
* **Observe executions**: describe a single execution (status, timing, pending activities), list and count executions with Temporal's visibility query language, and fetch full event histories — including just the close event to read a workflow's outcome.
* **Operate the fleet**: cancel or terminate runaway executions, reset a workflow to a previous point in its history, and manage schedules — list, describe, pause, unpause, trigger, and delete them.
Workflow inputs and results are encoded with Temporal's standard `json/plain` payload converter, so the integration interoperates with workers written in any Temporal SDK. If your server has authentication enabled, provide an API key and Studio sends it as a Bearer token on every request.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Connect to a Temporal cluster over the server's HTTP API to start workflow executions, send signals, run queries against workflow state, describe and list executions, fetch event histories, and cancel or terminate running workflows. API key only required for servers with authentication enabled.
## Actions [#actions]
### Temporal Start Workflow [#temporal-start-workflow]
Start a new workflow execution on a Temporal cluster.
#### Input [#input]
| Parameter | Type | Required | Description |
| -------------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `serverUrl` | string | Yes | Base URL of the Temporal server's HTTP API (e.g., [http://localhost:7243](http://localhost:7243)) |
| `namespace` | string | Yes | Temporal namespace (e.g., default) |
| `apiKey` | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
| `workflowId` | string | Yes | Unique workflow ID for the new execution (e.g., order-1234) |
| `workflowType` | string | Yes | Registered workflow type name to run (e.g., OrderWorkflow) |
| `taskQueue` | string | Yes | Task queue the workflow worker polls (e.g., orders) |
| `input` | string | No | Workflow input as JSON. A top-level array is passed as the argument list (one argument per element); any other value is passed as a single argument |
| `workflowIdReusePolicy` | string | No | Policy for reusing a closed workflow ID: WORKFLOW\_ID\_REUSE\_POLICY\_ALLOW\_DUPLICATE, WORKFLOW\_ID\_REUSE\_POLICY\_ALLOW\_DUPLICATE\_FAILED\_ONLY, WORKFLOW\_ID\_REUSE\_POLICY\_REJECT\_DUPLICATE, or WORKFLOW\_ID\_REUSE\_POLICY\_TERMINATE\_IF\_RUNNING |
| `workflowIdConflictPolicy` | string | No | Policy when a workflow with the same ID is already running: WORKFLOW\_ID\_CONFLICT\_POLICY\_FAIL, WORKFLOW\_ID\_CONFLICT\_POLICY\_USE\_EXISTING, or WORKFLOW\_ID\_CONFLICT\_POLICY\_TERMINATE\_EXISTING |
| `cronSchedule` | string | No | Cron schedule for recurring executions (e.g., "0 12 \* \* \*") |
| `executionTimeoutSeconds` | number | No | Total workflow execution timeout in seconds, including retries and continue-as-new |
| `runTimeoutSeconds` | number | No | Timeout for a single workflow run in seconds |
| `memo` | string | No | JSON object of memo fields to attach to the execution |
| `searchAttributes` | string | No | JSON object of search attribute values to index the execution with |
#### Output [#output]
| Parameter | Type | Description |
| ------------ | ------- | --------------------------------------------------------------------------------- |
| `workflowId` | string | Workflow ID of the execution |
| `runId` | string | Run ID of the started workflow execution |
| `started` | boolean | Whether a new execution was started (false when an existing execution was reused) |
### Temporal Signal Workflow [#temporal-signal-workflow]
Send a signal to a running Temporal workflow execution.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `serverUrl` | string | Yes | Base URL of the Temporal server's HTTP API (e.g., [http://localhost:7243](http://localhost:7243)) |
| `namespace` | string | Yes | Temporal namespace (e.g., default) |
| `apiKey` | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
| `workflowId` | string | Yes | Workflow ID of the execution to signal |
| `runId` | string | No | Run ID of a specific run to signal (defaults to the latest run) |
| `signalName` | string | Yes | Name of the signal handler to invoke (e.g., approve-order) |
| `signalInput` | string | No | Signal input as JSON. A top-level array is passed as the argument list (one argument per element); any other value is passed as a single argument |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------ | ------ | ------------------------------------- |
| `workflowId` | string | Workflow ID of the signaled execution |
| `signalName` | string | Name of the signal that was sent |
### Temporal Signal With Start [#temporal-signal-with-start]
Atomically signal a Temporal workflow, starting it first if it is not already running, so the signal is never lost.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| -------------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `serverUrl` | string | Yes | Base URL of the Temporal server's HTTP API (e.g., [http://localhost:7243](http://localhost:7243)) |
| `namespace` | string | Yes | Temporal namespace (e.g., default) |
| `apiKey` | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
| `workflowId` | string | Yes | Workflow ID to signal, or to start and signal (e.g., order-1234) |
| `workflowType` | string | Yes | Registered workflow type name to start if the workflow is not running |
| `taskQueue` | string | Yes | Task queue the workflow worker polls (e.g., orders) |
| `signalName` | string | Yes | Name of the signal handler to invoke (e.g., approve-order) |
| `input` | string | No | Workflow start input as JSON, used only when a new execution is started. A top-level array is passed as the argument list; any other value is passed as a single argument |
| `signalInput` | string | No | Signal input as JSON. A top-level array is passed as the argument list (one argument per element); any other value is passed as a single argument |
| `workflowIdReusePolicy` | string | No | Policy for reusing a closed workflow ID: WORKFLOW\_ID\_REUSE\_POLICY\_ALLOW\_DUPLICATE, WORKFLOW\_ID\_REUSE\_POLICY\_ALLOW\_DUPLICATE\_FAILED\_ONLY, WORKFLOW\_ID\_REUSE\_POLICY\_REJECT\_DUPLICATE, or WORKFLOW\_ID\_REUSE\_POLICY\_TERMINATE\_IF\_RUNNING |
| `workflowIdConflictPolicy` | string | No | Policy when a workflow with the same ID is already running (defaults to using the existing run): WORKFLOW\_ID\_CONFLICT\_POLICY\_FAIL, WORKFLOW\_ID\_CONFLICT\_POLICY\_USE\_EXISTING, or WORKFLOW\_ID\_CONFLICT\_POLICY\_TERMINATE\_EXISTING |
| `cronSchedule` | string | No | Cron schedule for recurring executions (e.g., "0 12 \* \* \*") |
| `executionTimeoutSeconds` | number | No | Total workflow execution timeout in seconds, including retries and continue-as-new |
| `runTimeoutSeconds` | number | No | Timeout for a single workflow run in seconds |
| `memo` | string | No | JSON object of memo fields to attach to the execution |
| `searchAttributes` | string | No | JSON object of search attribute values to index the execution with |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------ | ------- | -------------------------------------------------------------------- |
| `workflowId` | string | Workflow ID of the signaled execution |
| `runId` | string | Run ID of the signaled (or newly started) execution |
| `started` | boolean | Whether this call started a new execution (false when only signaled) |
### Temporal Query Workflow [#temporal-query-workflow]
Run a synchronous query against the state of a Temporal workflow execution and return the result.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `serverUrl` | string | Yes | Base URL of the Temporal server's HTTP API (e.g., [http://localhost:7243](http://localhost:7243)) |
| `namespace` | string | Yes | Temporal namespace (e.g., default) |
| `apiKey` | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
| `workflowId` | string | Yes | Workflow ID of the execution to query |
| `runId` | string | No | Run ID of a specific run to query (defaults to the latest run) |
| `queryType` | string | Yes | Name of the query handler to invoke (e.g., getStatus) |
| `queryArgs` | string | No | Query arguments as JSON. A top-level array is passed as the argument list (one argument per element); any other value is passed as a single argument |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------ | ------ | ---------------------------------------------------------------------------------------------------------------- |
| `workflowId` | string | Workflow ID of the queried execution |
| `queryType` | string | Name of the query that was run |
| `result` | json | Decoded query result. A single payload is returned as its JSON value; multiple payloads are returned as an array |
### Temporal Update Workflow [#temporal-update-workflow]
Invoke an update handler on a running Temporal workflow and wait for its result. Unlike a signal, an update is validated by the workflow and returns a response.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `serverUrl` | string | Yes | Base URL of the Temporal server's HTTP API (e.g., [http://localhost:7243](http://localhost:7243)) |
| `namespace` | string | Yes | Temporal namespace (e.g., default) |
| `apiKey` | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
| `workflowId` | string | Yes | Workflow ID of the execution to update |
| `runId` | string | No | Run ID of a specific run to update (defaults to the latest run) |
| `updateName` | string | Yes | Name of the update handler to invoke (e.g., addItem) |
| `updateArgs` | string | No | Update arguments as JSON. A top-level array is passed as the argument list (one argument per element); any other value is passed as a single argument |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------ | ------ | ----------------------------------------------------------------------------------------------------------------- |
| `workflowId` | string | Workflow ID of the updated execution |
| `updateName` | string | Name of the update that was invoked |
| `result` | json | Decoded update result. A single payload is returned as its JSON value; multiple payloads are returned as an array |
### Temporal Describe Workflow [#temporal-describe-workflow]
Get the current state of a Temporal workflow execution, including status, timing, memo, search attributes, and pending activities.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------- |
| `serverUrl` | string | Yes | Base URL of the Temporal server's HTTP API (e.g., [http://localhost:7243](http://localhost:7243)) |
| `namespace` | string | Yes | Temporal namespace (e.g., default) |
| `apiKey` | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
| `workflowId` | string | Yes | Workflow ID of the execution to describe |
| `runId` | string | No | Run ID of a specific run to describe (defaults to the latest run) |
#### Output [#output-5]
| Parameter | Type | Description |
| ---------------------- | ------ | ------------------------------------------------------------------------------------------------------ |
| `workflowId` | string | Workflow ID of the execution |
| `runId` | string | Run ID of the execution |
| `workflowType` | string | Workflow type name |
| `status` | string | Execution status (RUNNING, COMPLETED, FAILED, CANCELED, TERMINATED, CONTINUED\_AS\_NEW, or TIMED\_OUT) |
| `startTime` | string | Start time of the execution (RFC 3339) |
| `closeTime` | string | Close time of the execution (RFC 3339), null while running |
| `executionTime` | string | Effective execution start time (RFC 3339), e.g. the first cron run time |
| `historyLength` | number | Number of events in the workflow history |
| `taskQueue` | string | Task queue of the execution |
| `memo` | json | Decoded memo fields attached to the execution |
| `searchAttributes` | json | Decoded search attribute values |
| `pendingActivities` | array | Activities currently pending on the execution |
| ↳ `activityId` | string | Activity ID |
| ↳ `activityType` | string | Activity type name |
| ↳ `state` | string | Pending state (SCHEDULED, STARTED, CANCEL\_REQUESTED, PAUSED, or PAUSE\_REQUESTED) |
| ↳ `attempt` | number | Current attempt number |
| ↳ `lastFailureMessage` | string | Message of the most recent failure, if the activity is retrying |
### Temporal List Workflows [#temporal-list-workflows]
List workflow executions in a Temporal namespace, optionally filtered with a visibility query.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ |
| `serverUrl` | string | Yes | Base URL of the Temporal server's HTTP API (e.g., [http://localhost:7243](http://localhost:7243)) |
| `namespace` | string | Yes | Temporal namespace (e.g., default) |
| `apiKey` | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
| `query` | string | No | Visibility list filter, e.g. WorkflowType = "OrderWorkflow" AND ExecutionStatus = "Running" (empty lists all executions) |
| `pageSize` | number | No | Maximum number of executions to return per page |
| `nextPageToken` | string | No | Page token from a previous response, for pagination |
#### Output [#output-6]
| Parameter | Type | Description |
| ----------------- | ------ | ------------------------------------------------------------------------------------------------------ |
| `executions` | array | Workflow executions matching the query |
| ↳ `workflowId` | string | Workflow ID of the execution |
| ↳ `runId` | string | Run ID of the execution |
| ↳ `workflowType` | string | Workflow type name |
| ↳ `status` | string | Execution status (RUNNING, COMPLETED, FAILED, CANCELED, TERMINATED, CONTINUED\_AS\_NEW, or TIMED\_OUT) |
| ↳ `startTime` | string | Start time of the execution (RFC 3339) |
| ↳ `closeTime` | string | Close time of the execution (RFC 3339), null while running |
| ↳ `executionTime` | string | Effective execution start time (RFC 3339) |
| ↳ `historyLength` | number | Number of events in the workflow history |
| ↳ `taskQueue` | string | Task queue of the execution |
| `nextPageToken` | string | Token for the next page of results, null when no more pages exist |
### Temporal Count Workflows [#temporal-count-workflows]
Count workflow executions in a Temporal namespace matching a visibility query, with optional GROUP BY aggregation.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------- |
| `serverUrl` | string | Yes | Base URL of the Temporal server's HTTP API (e.g., [http://localhost:7243](http://localhost:7243)) |
| `namespace` | string | Yes | Temporal namespace (e.g., default) |
| `apiKey` | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
| `query` | string | No | Visibility count filter, e.g. ExecutionStatus = "Running" or ... GROUP BY ExecutionStatus (empty counts all executions) |
#### Output [#output-7]
| Parameter | Type | Description |
| ---------- | ------ | --------------------------------------------------------------- |
| `count` | number | Number of workflow executions matching the query |
| `groups` | array | Per-group counts when the query uses GROUP BY (empty otherwise) |
| ↳ `values` | json | Decoded values of the GROUP BY fields |
| ↳ `count` | number | Number of executions in the group |
### Temporal Get Workflow History [#temporal-get-workflow-history]
Fetch the event history of a Temporal workflow execution, optionally filtered to just the close event.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ------------------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `serverUrl` | string | Yes | Base URL of the Temporal server's HTTP API (e.g., [http://localhost:7243](http://localhost:7243)) |
| `namespace` | string | Yes | Temporal namespace (e.g., default) |
| `apiKey` | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
| `workflowId` | string | Yes | Workflow ID of the execution |
| `runId` | string | No | Run ID of a specific run (defaults to the latest run) |
| `maximumPageSize` | number | No | Maximum number of history events to return per page |
| `nextPageToken` | string | No | Page token from a previous response, for pagination |
| `historyEventFilterType` | string | No | Event filter: HISTORY\_EVENT\_FILTER\_TYPE\_ALL\_EVENT (default) or HISTORY\_EVENT\_FILTER\_TYPE\_CLOSE\_EVENT to return only the final close event |
#### Output [#output-8]
| Parameter | Type | Description |
| --------------- | ------ | -------------------------------------------------------------------------- |
| `events` | array | History events of the workflow execution, in order |
| ↳ `eventId` | number | Sequential ID of the event |
| ↳ `eventTime` | string | Time the event was recorded (RFC 3339) |
| ↳ `eventType` | string | Event type (e.g., WORKFLOW\_EXECUTION\_STARTED, ACTIVITY\_TASK\_COMPLETED) |
| ↳ `attributes` | json | The event's type-specific attributes (payload data is base64-encoded) |
| `nextPageToken` | string | Token for the next page of events, null when no more pages exist |
### Temporal Cancel Workflow [#temporal-cancel-workflow]
Request cooperative cancellation of a running Temporal workflow execution. The workflow decides how to respond to the request.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------- |
| `serverUrl` | string | Yes | Base URL of the Temporal server's HTTP API (e.g., [http://localhost:7243](http://localhost:7243)) |
| `namespace` | string | Yes | Temporal namespace (e.g., default) |
| `apiKey` | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
| `workflowId` | string | Yes | Workflow ID of the execution to cancel |
| `runId` | string | No | Run ID of a specific run to cancel (defaults to the latest run) |
| `reason` | string | No | Reason for the cancellation, recorded in the workflow history |
#### Output [#output-9]
| Parameter | Type | Description |
| ------------ | ------ | ------------------------------------------------------------- |
| `workflowId` | string | Workflow ID of the execution whose cancellation was requested |
### Temporal Terminate Workflow [#temporal-terminate-workflow]
Forcefully terminate a Temporal workflow execution immediately, without giving the workflow a chance to react.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------- |
| `serverUrl` | string | Yes | Base URL of the Temporal server's HTTP API (e.g., [http://localhost:7243](http://localhost:7243)) |
| `namespace` | string | Yes | Temporal namespace (e.g., default) |
| `apiKey` | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
| `workflowId` | string | Yes | Workflow ID of the execution to terminate |
| `runId` | string | No | Run ID of a specific run to terminate (defaults to the latest run) |
| `reason` | string | No | Reason for the termination, recorded in the workflow history |
#### Output [#output-10]
| Parameter | Type | Description |
| ------------ | ------ | --------------------------------------- |
| `workflowId` | string | Workflow ID of the terminated execution |
### Temporal Reset Workflow [#temporal-reset-workflow]
Reset a Temporal workflow execution to a past workflow task, terminating the current run and replaying from the reset point in a new run.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| --------------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `serverUrl` | string | Yes | Base URL of the Temporal server's HTTP API (e.g., [http://localhost:7243](http://localhost:7243)) |
| `namespace` | string | Yes | Temporal namespace (e.g., default) |
| `apiKey` | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
| `workflowId` | string | Yes | Workflow ID of the execution to reset |
| `runId` | string | No | Run ID of a specific run to reset (defaults to the latest run) |
| `workflowTaskFinishEventId` | number | Yes | Event ID of the workflow task finish event to reset to — a WORKFLOW\_TASK\_COMPLETED, WORKFLOW\_TASK\_TIMED\_OUT, WORKFLOW\_TASK\_FAILED, or WORKFLOW\_TASK\_STARTED event (find it with Get Workflow History) |
| `reason` | string | No | Reason for the reset, recorded in the workflow history |
#### Output [#output-11]
| Parameter | Type | Description |
| ------------ | ------ | ------------------------------------------ |
| `workflowId` | string | Workflow ID of the reset execution |
| `runId` | string | Run ID of the new run created by the reset |
### Temporal Describe Task Queue [#temporal-describe-task-queue]
List the workers currently polling a Temporal task queue, to check whether a workflow or activity has live workers.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------- |
| `serverUrl` | string | Yes | Base URL of the Temporal server's HTTP API (e.g., [http://localhost:7243](http://localhost:7243)) |
| `namespace` | string | Yes | Temporal namespace (e.g., default) |
| `apiKey` | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
| `taskQueue` | string | Yes | Name of the task queue to describe (e.g., orders) |
| `taskQueueType` | string | No | Type of pollers to list: TASK\_QUEUE\_TYPE\_WORKFLOW (default) or TASK\_QUEUE\_TYPE\_ACTIVITY |
#### Output [#output-12]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------------------------------------------------------- |
| `taskQueue` | string | Name of the described task queue |
| `pollers` | array | Workers currently polling the task queue (empty when no workers are running) |
| ↳ `identity` | string | Identity of the polling worker |
| ↳ `lastAccessTime` | string | Last time the worker polled the queue (RFC 3339) |
| ↳ `ratePerSecond` | number | Poller rate per second |
### Temporal Create Schedule [#temporal-create-schedule]
Create a Temporal schedule that starts a workflow on a cron or interval cadence.
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `serverUrl` | string | Yes | Base URL of the Temporal server's HTTP API (e.g., [http://localhost:7243](http://localhost:7243)) |
| `namespace` | string | Yes | Temporal namespace (e.g., default) |
| `apiKey` | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
| `scheduleId` | string | Yes | Unique ID for the new schedule (e.g., nightly-report) |
| `workflowId` | string | Yes | Workflow ID for started workflows (the schedule appends the run time to keep IDs unique) |
| `workflowType` | string | Yes | Registered workflow type name the schedule starts (e.g., ReportWorkflow) |
| `taskQueue` | string | Yes | Task queue the workflow worker polls (e.g., reports) |
| `input` | string | No | Workflow input as JSON. A top-level array is passed as the argument list (one argument per element); any other value is passed as a single argument |
| `cronExpressions` | string | No | Cron expressions defining when the schedule fires, comma- or newline-separated for multiple (e.g., "0 12 \* \* \*"). At least one of cronExpressions or intervalSeconds is required |
| `intervalSeconds` | number | No | Fixed interval between actions in seconds. At least one of cronExpressions or intervalSeconds is required |
| `timezone` | string | No | IANA time zone for cron evaluation (e.g., America/New\_York; defaults to UTC) |
| `overlapPolicy` | string | No | Policy when an action would overlap a still-running one (defaults to skip): SCHEDULE\_OVERLAP\_POLICY\_SKIP, SCHEDULE\_OVERLAP\_POLICY\_BUFFER\_ONE, SCHEDULE\_OVERLAP\_POLICY\_BUFFER\_ALL, SCHEDULE\_OVERLAP\_POLICY\_CANCEL\_OTHER, SCHEDULE\_OVERLAP\_POLICY\_TERMINATE\_OTHER, or SCHEDULE\_OVERLAP\_POLICY\_ALLOW\_ALL |
| `notes` | string | No | Human-readable notes stored on the schedule |
| `paused` | boolean | No | Create the schedule in a paused state (defaults to active) |
#### Output [#output-13]
| Parameter | Type | Description |
| ------------ | ------ | -------------------------- |
| `scheduleId` | string | ID of the created schedule |
### Temporal List Schedules [#temporal-list-schedules]
List schedules in a Temporal namespace.
#### Input [#input-14]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------- |
| `serverUrl` | string | Yes | Base URL of the Temporal server's HTTP API (e.g., [http://localhost:7243](http://localhost:7243)) |
| `namespace` | string | Yes | Temporal namespace (e.g., default) |
| `apiKey` | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
| `query` | string | No | Visibility filter over schedules, e.g. TemporalSchedulePaused = false (empty lists all schedules) |
| `maximumPageSize` | number | No | Maximum number of schedules to return per page |
| `nextPageToken` | string | No | Page token from a previous response, for pagination |
#### Output [#output-14]
| Parameter | Type | Description |
| --------------------- | ------- | ----------------------------------------------------------------- |
| `schedules` | array | Schedules in the namespace |
| ↳ `scheduleId` | string | Schedule ID |
| ↳ `workflowType` | string | Workflow type the schedule starts |
| ↳ `paused` | boolean | Whether the schedule is paused |
| ↳ `notes` | string | Human-readable notes on the schedule |
| ↳ `futureActionTimes` | json | Upcoming action times (RFC 3339) |
| `nextPageToken` | string | Token for the next page of results, null when no more pages exist |
### Temporal Describe Schedule [#temporal-describe-schedule]
Get the configuration and current state of a Temporal schedule, including its spec, recent actions, and upcoming run times.
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------- |
| `serverUrl` | string | Yes | Base URL of the Temporal server's HTTP API (e.g., [http://localhost:7243](http://localhost:7243)) |
| `namespace` | string | Yes | Temporal namespace (e.g., default) |
| `apiKey` | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
| `scheduleId` | string | Yes | ID of the schedule to describe |
#### Output [#output-15]
| Parameter | Type | Description |
| ------------------- | ------- | --------------------------------------------------------------------- |
| `scheduleId` | string | Schedule ID |
| `paused` | boolean | Whether the schedule is paused |
| `notes` | string | Human-readable notes on the schedule |
| `workflowType` | string | Workflow type the schedule starts |
| `taskQueue` | string | Task queue used for started workflows |
| `workflowId` | string | Workflow ID template for started workflows |
| `spec` | json | Schedule spec (calendars, intervals, cron strings, jitter, time zone) |
| `recentActions` | array | Most recent actions taken by the schedule |
| ↳ `scheduleTime` | string | Nominal scheduled time (RFC 3339) |
| ↳ `actualTime` | string | Actual time the action ran (RFC 3339) |
| ↳ `workflowId` | string | Workflow ID of the started execution |
| ↳ `runId` | string | Run ID of the started execution |
| `futureActionTimes` | json | Upcoming action times (RFC 3339) |
### Temporal Pause Schedule [#temporal-pause-schedule]
Pause a Temporal schedule so it stops taking actions until unpaused.
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------- |
| `serverUrl` | string | Yes | Base URL of the Temporal server's HTTP API (e.g., [http://localhost:7243](http://localhost:7243)) |
| `namespace` | string | Yes | Temporal namespace (e.g., default) |
| `apiKey` | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
| `scheduleId` | string | Yes | ID of the schedule to pause |
| `reason` | string | No | Reason recorded in the schedule's notes |
#### Output [#output-16]
| Parameter | Type | Description |
| ------------ | ------ | ------------------------- |
| `scheduleId` | string | ID of the paused schedule |
### Temporal Unpause Schedule [#temporal-unpause-schedule]
Unpause a Temporal schedule so it resumes taking actions.
#### Input [#input-17]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------- |
| `serverUrl` | string | Yes | Base URL of the Temporal server's HTTP API (e.g., [http://localhost:7243](http://localhost:7243)) |
| `namespace` | string | Yes | Temporal namespace (e.g., default) |
| `apiKey` | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
| `scheduleId` | string | Yes | ID of the schedule to unpause |
| `reason` | string | No | Reason recorded in the schedule's notes |
#### Output [#output-17]
| Parameter | Type | Description |
| ------------ | ------ | --------------------------- |
| `scheduleId` | string | ID of the unpaused schedule |
### Temporal Trigger Schedule [#temporal-trigger-schedule]
Trigger an immediate action of a Temporal schedule, outside its normal spec.
#### Input [#input-18]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `serverUrl` | string | Yes | Base URL of the Temporal server's HTTP API (e.g., [http://localhost:7243](http://localhost:7243)) |
| `namespace` | string | Yes | Temporal namespace (e.g., default) |
| `apiKey` | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
| `scheduleId` | string | Yes | ID of the schedule to trigger |
| `overlapPolicy` | string | No | Overlap policy for the triggered action (defaults to the schedule's policy): SCHEDULE\_OVERLAP\_POLICY\_SKIP, SCHEDULE\_OVERLAP\_POLICY\_BUFFER\_ONE, SCHEDULE\_OVERLAP\_POLICY\_BUFFER\_ALL, SCHEDULE\_OVERLAP\_POLICY\_CANCEL\_OTHER, SCHEDULE\_OVERLAP\_POLICY\_TERMINATE\_OTHER, or SCHEDULE\_OVERLAP\_POLICY\_ALLOW\_ALL |
#### Output [#output-18]
| Parameter | Type | Description |
| ------------ | ------ | ---------------------------- |
| `scheduleId` | string | ID of the triggered schedule |
### Temporal Delete Schedule [#temporal-delete-schedule]
Delete a Temporal schedule. Workflows already started by the schedule keep running.
#### Input [#input-19]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------- |
| `serverUrl` | string | Yes | Base URL of the Temporal server's HTTP API (e.g., [http://localhost:7243](http://localhost:7243)) |
| `namespace` | string | Yes | Temporal namespace (e.g., default) |
| `apiKey` | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
| `scheduleId` | string | Yes | ID of the schedule to delete |
#### Output [#output-19]
| Parameter | Type | Description |
| ------------ | ------ | -------------------------- |
| `scheduleId` | string | ID of the deleted schedule |
---
# Sendblue (/en/integrations/sendblue)
{/* MANUAL-CONTENT-START:intro */}
Sendblue connects your agents to iMessage and SMS through your own dedicated phone number. Use it to text one person or a group, attach images and other media, check whether a number can receive iMessage before you send, show a typing indicator, and look up the delivery status of any message.
Authentication uses a Sendblue **API Key ID** and **API Secret Key**, sent as the `sb-api-key-id` and `sb-api-secret-key` headers. You can find both in your [Sendblue dashboard](https://dashboard.sendblue.com). Every message is sent from one of your registered Sendblue lines, supplied as the **From Number** in E.164 format (for example `+15551234567`).
**Operations**
* **Send Message** — send an iMessage or SMS to a single recipient. Provide message text, a media URL, or both, and optionally apply an iMessage expressive style (celebration, fireworks, lasers, confetti, and more).
* **Send Group Message** — send to multiple recipients at once. Pass one recipient per line; reuse the returned `group_id` to keep replying in the same thread.
* **Evaluate Service** — check whether a number is reachable on iMessage or only SMS, so you can branch before sending.
* **Send Typing Indicator** — show a recipient that a reply is being composed (one-to-one chats only).
* **Get Message** — retrieve a single message and its current status by message handle.
**Triggers**
* **Message Received** — fires on every inbound message. Configure it as the **Receive** webhook in your Sendblue dashboard.
* **Message Status Updated** — fires when an outbound message changes state (`SENT`, `DELIVERED`, `ERROR`). Configure it as the **Outbound** webhook, or pass its URL per message as `status_callback`.
Each trigger generates its own webhook URL — paste the matching URL into the corresponding field in your Sendblue dashboard.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Send iMessages and SMS to individuals or groups, check whether a number supports iMessage, show typing indicators, and look up message status with Sendblue. Trigger workflows on inbound messages and delivery status updates.
## Actions [#actions]
### Sendblue Send Message [#sendblue-send-message]
Send an iMessage or SMS to a single recipient via Sendblue.
#### Input [#input]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ |
| `apiKeyId` | string | Yes | Sendblue API Key ID (sb-api-key-id) |
| `apiSecretKey` | string | Yes | Sendblue API Secret Key (sb-api-secret-key) |
| `number` | string | Yes | Recipient phone number in E.164 format (e.g., +19998887777) |
| `from_number` | string | Yes | One of your registered Sendblue phone numbers to send from, in E.164 format (e.g., +18887776666) |
| `content` | string | No | Message text content. Either content or media\_url must be provided. |
| `media_url` | string | No | URL of a media file to send. Either content or media\_url must be provided. |
| `send_style` | string | No | iMessage expressive style (e.g., celebration, fireworks, lasers, confetti, balloons, invisible, slam). |
| `seat_id` | string | No | Seat (user) the message is attributed to. Accepts the seat UUID or Firebase Auth subject. |
| `status_callback` | string | No | Webhook URL that Sendblue will POST message status updates to. |
#### Output [#output]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------------------------------- |
| `status` | string | Message status: QUEUED, SENT, DELIVERED, or ERROR |
| `message_handle` | string | Unique identifier for tracking the message |
| `account_email` | string | Email of the account that sent the message |
| `content` | string | Message content |
| `is_outbound` | boolean | Whether this is an outbound message |
| `from_number` | string | Sending phone number |
| `number` | string | Recipient phone number |
| `media_url` | string | URL of attached media |
| `send_style` | string | iMessage expressive style applied |
| `seat_id` | string | UUID of the seat that sent the message |
| `sender_email` | string | Email of the seat (user) that sent the message |
| `error_code` | number | Numeric error code if the message failed |
| `error_message` | string | Error message if the message failed |
| `date_created` | string | When the message was created |
| `date_updated` | string | When the message was last updated |
### Sendblue Send Group Message [#sendblue-send-group-message]
Send an iMessage or SMS to a group of recipients via Sendblue.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKeyId` | string | Yes | Sendblue API Key ID (sb-api-key-id) |
| `apiSecretKey` | string | Yes | Sendblue API Secret Key (sb-api-secret-key) |
| `numbers` | array | No | Recipient phone numbers in E.164 format (e.g., \["+19998887777", "+13334445555"]). Optional when sending to an existing group via group\_id. |
| `from_number` | string | Yes | One of your registered Sendblue phone numbers to send from, in E.164 format (e.g., +18887776666) |
| `content` | string | No | Message text content. Either content or media\_url must be provided. |
| `media_url` | string | No | URL of a media file to send. Either content or media\_url must be provided. |
| `send_style` | string | No | iMessage expressive style (e.g., celebration, fireworks, lasers, confetti, balloons, invisible, slam). |
| `seat_id` | string | No | Seat (user) the message is attributed to. Accepts the seat UUID or Firebase Auth subject. |
| `group_id` | string | No | Unique identifier of an existing group to send to. Omit to start a new group. |
| `status_callback` | string | No | Webhook URL that Sendblue will POST message status updates to. |
#### Output [#output-1]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------------------------------- |
| `status` | string | Message status: QUEUED, SENT, DELIVERED, or ERROR |
| `message_handle` | string | Unique identifier for tracking the message |
| `group_id` | string | Identifier of the group the message was sent to |
| `participants` | array | Phone numbers participating in the group |
| `account_email` | string | Email of the account that sent the message |
| `content` | string | Message content |
| `is_outbound` | boolean | Whether this is an outbound message |
| `from_number` | string | Sending phone number |
| `number` | string | Recipient phone number |
| `media_url` | string | URL of attached media |
| `send_style` | string | iMessage expressive style applied |
| `seat_id` | string | UUID of the seat that sent the message |
| `sender_email` | string | Email of the seat (user) that sent the message |
| `error_code` | number | Numeric error code if the message failed |
| `error_message` | string | Error message if the message failed |
| `date_created` | string | When the message was created |
| `date_updated` | string | When the message was last updated |
### Sendblue Evaluate Service [#sendblue-evaluate-service]
Check whether a phone number can receive iMessage or only SMS.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | -------------------------------------------------------------- |
| `apiKeyId` | string | Yes | Sendblue API Key ID (sb-api-key-id) |
| `apiSecretKey` | string | Yes | Sendblue API Secret Key (sb-api-secret-key) |
| `number` | string | Yes | Phone number to evaluate, in E.164 format (e.g., +19998887777) |
#### Output [#output-2]
| Parameter | Type | Description |
| --------- | ------ | ------------------------------------------------ |
| `number` | string | The evaluated phone number in E.164 format |
| `service` | string | The service the number supports: iMessage or SMS |
### Sendblue Send Typing Indicator [#sendblue-send-typing-indicator]
Display a typing indicator to a recipient (not supported in group chats).
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------- |
| `apiKeyId` | string | Yes | Sendblue API Key ID (sb-api-key-id) |
| `apiSecretKey` | string | Yes | Sendblue API Secret Key (sb-api-secret-key) |
| `number` | string | Yes | Recipient's phone number in E.164 format (e.g., +19998887777) |
| `from_number` | string | No | Your Sendblue line number to send from, in E.164 format. |
| `state` | string | No | "start" (default) shows the indicator; "stop" ends an active indicator before max\_duration\_ms expires. |
| `max_duration_ms` | number | No | How long (ms) the indicator stays visible before auto-stopping. Defaults to 60000. Must be between 1 and 300000. |
#### Output [#output-3]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------------------------------ |
| `status` | string | Delivery status of the typing indicator (e.g., QUEUED) |
| `status_code` | number | Numeric status code returned by Sendblue |
| `number` | string | The recipient phone number |
| `error_message` | string | Error details, null on success |
### Sendblue Get Message [#sendblue-get-message]
Retrieve a single message and its current status by message handle/ID.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------- |
| `apiKeyId` | string | Yes | Sendblue API Key ID (sb-api-key-id) |
| `apiSecretKey` | string | Yes | Sendblue API Secret Key (sb-api-secret-key) |
| `message_id` | string | Yes | The message handle/ID returned when the message was sent. |
#### Output [#output-4]
| Parameter | Type | Description |
| -------------------- | ------- | -------------------------------------------- |
| `status` | string | Current message status |
| `message_handle` | string | Unique message identifier |
| `account_email` | string | Email of the account |
| `content` | string | Message content |
| `is_outbound` | boolean | Whether the message is outbound |
| `from_number` | string | Sending phone number |
| `number` | string | Recipient phone number |
| `to_number` | string | Destination phone number |
| `media_url` | string | URL of attached media |
| `message_type` | string | Message category: message or group |
| `service` | string | Messaging service: iMessage, SMS, or RCS |
| `group_id` | string | Group identifier (empty for non-group) |
| `group_display_name` | string | Group chat name |
| `participants` | array | Participant phone numbers |
| `send_style` | string | Expressive style applied |
| `was_downgraded` | boolean | True if the recipient lacks iMessage support |
| `opted_out` | boolean | True if the recipient has opted out |
| `plan` | string | Account plan type |
| `sendblue_number` | string | Sendblue phone number used |
| `seat_id` | string | Seat UUID |
| `sender_email` | string | Email of the sending seat |
| `error_code` | number | Numeric error code if failed |
| `error_message` | string | Error message if failed |
| `error_reason` | string | Additional error context |
| `error_detail` | string | Detailed error information |
| `date_sent` | string | ISO 8601 creation timestamp |
| `date_updated` | string | ISO 8601 last-update timestamp |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
### Sendblue Message Received [#sendblue-message-received]
Trigger when an inbound iMessage or SMS is received in Sendblue
#### Output [#output-5]
| Parameter | Type | Description |
| -------------------- | ------- | --------------------------------------------------------------- |
| `account_email` | string | Email of the Sendblue account |
| `content` | string | Message text content |
| `media_url` | string | CDN link to attached media, if any |
| `is_outbound` | boolean | True for outbound messages, false for inbound |
| `status` | string | Message status (e.g., RECEIVED, QUEUED, SENT, DELIVERED, ERROR) |
| `error_code` | number | Error identifier, null if none |
| `error_message` | string | Descriptive error text, null if none |
| `error_reason` | string | Additional error context, null if none |
| `error_detail` | string | Detailed error information, null if none |
| `message_handle` | string | Sendblue message identifier (use to deduplicate) |
| `date_sent` | string | ISO 8601 creation timestamp |
| `date_updated` | string | ISO 8601 last-update timestamp |
| `from_number` | string | E.164 sender phone number |
| `number` | string | E.164 recipient/counterparty phone number |
| `to_number` | string | E.164 destination phone number |
| `was_downgraded` | boolean | True if the recipient lacks iMessage support |
| `plan` | string | Account plan type |
| `message_type` | string | Message category (e.g., message, group) |
| `group_id` | string | Group identifier, null for non-group messages |
| `participants` | array | Participant phone numbers for group messages |
| `send_style` | string | Expressive style if applied |
| `opted_out` | boolean | True if the recipient has opted out |
| `sendblue_number` | string | Sendblue phone number used |
| `service` | string | Messaging service (iMessage or SMS) |
| `group_display_name` | string | Group chat name, null for non-group messages |
| `sender_email` | string | Email of the user who sent the message |
| `seat_id` | string | Seat UUID, null if absent |
| `raw` | string | Complete raw webhook payload from Sendblue as a JSON string |
***
### Sendblue Message Status Updated [#sendblue-message-status-updated]
Trigger when an outbound message status changes (SENT, DELIVERED, ERROR) in Sendblue
#### Output [#output-6]
| Parameter | Type | Description |
| -------------------- | ------- | --------------------------------------------------------------- |
| `account_email` | string | Email of the Sendblue account |
| `content` | string | Message text content |
| `media_url` | string | CDN link to attached media, if any |
| `is_outbound` | boolean | True for outbound messages, false for inbound |
| `status` | string | Message status (e.g., RECEIVED, QUEUED, SENT, DELIVERED, ERROR) |
| `error_code` | number | Error identifier, null if none |
| `error_message` | string | Descriptive error text, null if none |
| `error_reason` | string | Additional error context, null if none |
| `error_detail` | string | Detailed error information, null if none |
| `message_handle` | string | Sendblue message identifier (use to deduplicate) |
| `date_sent` | string | ISO 8601 creation timestamp |
| `date_updated` | string | ISO 8601 last-update timestamp |
| `from_number` | string | E.164 sender phone number |
| `number` | string | E.164 recipient/counterparty phone number |
| `to_number` | string | E.164 destination phone number |
| `was_downgraded` | boolean | True if the recipient lacks iMessage support |
| `plan` | string | Account plan type |
| `message_type` | string | Message category (e.g., message, group) |
| `group_id` | string | Group identifier, null for non-group messages |
| `participants` | array | Participant phone numbers for group messages |
| `send_style` | string | Expressive style if applied |
| `opted_out` | boolean | True if the recipient has opted out |
| `sendblue_number` | string | Sendblue phone number used |
| `service` | string | Messaging service (iMessage or SMS) |
| `group_display_name` | string | Group chat name, null for non-group messages |
| `sender_email` | string | Email of the user who sent the message |
| `seat_id` | string | Seat UUID, null if absent |
| `raw` | string | Complete raw webhook payload from Sendblue as a JSON string |
---
# Amazon SQS (/en/integrations/sqs)
{/* MANUAL-CONTENT-START:intro */}
Use [Amazon SQS](https://aws.amazon.com/sqs/) to send and receive messages, manage queues, and redrive dead-letter messages.
In Studio, the SQS integration gives your agents both sides of the queue — producing work and consuming it. Supported operations cover:
* **Messages**: Send one message or a batch of up to 10, receive with long polling, delete individually or in batches, and extend visibility timeouts while work is still in flight
* **Queues**: Create, delete, and purge queues, look up a queue URL by name, and read or update queue attributes
* **Dead-letter handling**: List the source queues feeding a dead-letter queue, then start, monitor, and cancel message move tasks to redrive failed messages back
* **Tags**: List, add, and remove queue tags for cost allocation and ownership tracking
Because an agent can now drain a queue rather than only fill it, SQS becomes a way to hand work to Studio as well as from it. A workflow can long-poll a queue for jobs, process each message, delete it on success, and let the visibility timeout return anything it fails to finish — the standard reliable-consumer pattern, without running a worker of your own.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Amazon SQS into the workflow. Send and receive messages one at a time or in batches of ten, delete messages, extend visibility timeouts, manage queues along with their attributes and tags, and redrive messages out of a dead-letter queue.
## Actions [#actions]
### SQS Send Message [#sqs-send-message]
Send a message to an Amazon SQS queue
#### 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 |
| `queueUrl` | string | Yes | SQS queue URL (e.g., [https://sqs.us-east-1.amazonaws.com/123456789012/my-queue](https://sqs.us-east-1.amazonaws.com/123456789012/my-queue)) |
| `data` | json | Yes | Message body to send as JSON object (e.g., \{ "action": "process", "payload": \{...} }) |
| `delaySeconds` | number | No | Seconds to delay delivery of this message, 0-900. Not supported per-message on FIFO queues |
| `messageAttributes` | json | No | Message attributes keyed by name, each \{ "dataType": "String" \| "Number", "stringValue": "..." }. A custom label such as Number.float is allowed; Binary attributes are not supported |
| `messageGroupId` | string | No | Message group ID for FIFO queues (e.g., "order-processing-group") |
| `messageDeduplicationId` | string | No | Message deduplication ID for FIFO queues (e.g., "order-12345-v1") |
#### Output [#output]
| Parameter | Type | Description |
| ------------------------ | ------ | -------------------------------------------------------------------- |
| `message` | string | Operation status message |
| `id` | string | Message ID |
| `md5OfMessageBody` | string | MD5 digest of the message body, for verifying SQS received it intact |
| `md5OfMessageAttributes` | string | MD5 digest of the message attributes |
| `sequenceNumber` | string | Large, non-consecutive sequence number assigned by a FIFO queue |
### SQS Send Message Batch [#sqs-send-message-batch]
Send up to 10 messages to an Amazon SQS queue in a single request
#### 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 |
| `queueUrl` | string | Yes | SQS queue URL (e.g., [https://sqs.us-east-1.amazonaws.com/123456789012/my-queue](https://sqs.us-east-1.amazonaws.com/123456789012/my-queue)) |
| `entries` | array | Yes | Up to 10 entries, each \{ "id": "unique-id", "data": \{ ... }, "delaySeconds"?, "messageGroupId"?, "messageDeduplicationId"?, "messageAttributes"? } |
#### Output [#output-1]
| Parameter | Type | Description |
| -------------------------- | ------- | ---------------------------------------- |
| `message` | string | Operation status message |
| `successful` | array | Entries that were accepted |
| ↳ `id` | string | Id supplied for this batch entry |
| ↳ `messageId` | string | Message ID assigned by SQS |
| ↳ `md5OfMessageBody` | string | MD5 digest of the message body |
| ↳ `md5OfMessageAttributes` | string | MD5 digest of the message attributes |
| ↳ `sequenceNumber` | string | Sequence number assigned by a FIFO queue |
| `failed` | array | Entries that were rejected |
| ↳ `id` | string | Id supplied for this batch entry |
| ↳ `senderFault` | boolean | Whether the sender caused the failure |
| ↳ `code` | string | Error code for the failure |
| ↳ `message` | string | Human-readable failure message |
| `successCount` | number | Number of messages accepted |
| `failureCount` | number | Number of messages rejected |
### SQS Receive Message [#sqs-receive-message]
Receive up to 10 messages from an Amazon SQS queue, with optional long polling
#### 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 |
| `queueUrl` | string | Yes | SQS queue URL (e.g., [https://sqs.us-east-1.amazonaws.com/123456789012/my-queue](https://sqs.us-east-1.amazonaws.com/123456789012/my-queue)) |
| `maxNumberOfMessages` | number | No | Maximum number of messages to return, 1-10 (default 1) |
| `waitTimeSeconds` | number | No | Long-poll duration in seconds, 0-20. Waits for a message to arrive before returning (default 0, short poll) |
| `visibilityTimeout` | number | No | Seconds the returned messages stay hidden from other consumers, 0-43200. Defaults to the queue setting |
| `messageAttributeNames` | array | No | Names of user-defined message attributes to return. Use \["All"] to return all of them |
| `messageSystemAttributeNames` | array | No | System attributes to return: All, SenderId, SentTimestamp, ApproximateReceiveCount, ApproximateFirstReceiveTimestamp, SequenceNumber, MessageDeduplicationId, MessageGroupId, AWSTraceHeader, DeadLetterQueueSourceArn |
| `receiveRequestAttemptId` | string | No | FIFO queues only: deduplication token that lets a retried receive return the same messages (max 128 characters) |
#### Output [#output-2]
| Parameter | Type | Description |
| -------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `messages` | array | Received messages. Pass a receiptHandle to sqs\_delete\_message, sqs\_delete\_message\_batch, sqs\_change\_message\_visibility, or sqs\_change\_message\_visibility\_batch |
| ↳ `messageId` | string | Unique ID SQS assigned to the message |
| ↳ `receiptHandle` | string | Handle identifying this receipt of the message, required to delete it |
| ↳ `body` | string | Message body as it was sent |
| ↳ `md5OfBody` | string | MD5 digest of the message body |
| ↳ `md5OfMessageAttributes` | string | MD5 digest of the message attributes |
| ↳ `attributes` | json | Requested system attributes as string values keyed by attribute name |
| ↳ `messageAttributes` | json | Requested user-defined attributes, each with dataType, stringValue, and stringListValues |
| `count` | number | Number of messages returned |
### SQS Delete Message [#sqs-delete-message]
Delete a received message from an Amazon SQS queue using its receipt handle
#### 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 |
| `queueUrl` | string | Yes | SQS queue URL (e.g., [https://sqs.us-east-1.amazonaws.com/123456789012/my-queue](https://sqs.us-east-1.amazonaws.com/123456789012/my-queue)) |
| `receiptHandle` | string | Yes | Receipt handle returned by sqs\_receive\_message for the message to delete |
#### Output [#output-3]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### SQS Delete Message Batch [#sqs-delete-message-batch]
Delete up to 10 received messages from an Amazon SQS queue in a single request
#### 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 |
| `queueUrl` | string | Yes | SQS queue URL (e.g., [https://sqs.us-east-1.amazonaws.com/123456789012/my-queue](https://sqs.us-east-1.amazonaws.com/123456789012/my-queue)) |
| `entries` | array | Yes | Up to 10 entries, each \{ "id": "unique-id", "receiptHandle": "..." }. Receipt handles come from sqs\_receive\_message |
#### Output [#output-4]
| Parameter | Type | Description |
| --------------- | ------- | ------------------------------------- |
| `message` | string | Operation status message |
| `successful` | array | Entries that were deleted |
| ↳ `id` | string | Id supplied for this batch entry |
| `failed` | array | Entries that were rejected |
| ↳ `id` | string | Id supplied for this batch entry |
| ↳ `senderFault` | boolean | Whether the sender caused the failure |
| ↳ `code` | string | Error code for the failure |
| ↳ `message` | string | Human-readable failure message |
| `successCount` | number | Number of messages deleted |
| `failureCount` | number | Number of messages rejected |
### SQS Change Message Visibility [#sqs-change-message-visibility]
Change how long a received Amazon SQS message stays hidden from other consumers
#### 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 |
| `queueUrl` | string | Yes | SQS queue URL (e.g., [https://sqs.us-east-1.amazonaws.com/123456789012/my-queue](https://sqs.us-east-1.amazonaws.com/123456789012/my-queue)) |
| `receiptHandle` | string | Yes | Receipt handle returned by sqs\_receive\_message for the message to update |
| `visibilityTimeout` | number | Yes | New visibility timeout in seconds, 0-43200 (12 hours). 0 makes the message immediately visible again |
#### Output [#output-5]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### SQS Change Message Visibility Batch [#sqs-change-message-visibility-batch]
Change the visibility timeout of up to 10 received Amazon SQS messages at once
#### 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 |
| `queueUrl` | string | Yes | SQS queue URL (e.g., [https://sqs.us-east-1.amazonaws.com/123456789012/my-queue](https://sqs.us-east-1.amazonaws.com/123456789012/my-queue)) |
| `entries` | array | Yes | Up to 10 entries, each \{ "id": "unique-id", "receiptHandle": "...", "visibilityTimeout": 0-43200 }. Receipt handles come from sqs\_receive\_message |
#### Output [#output-6]
| Parameter | Type | Description |
| --------------- | ------- | ------------------------------------- |
| `message` | string | Operation status message |
| `successful` | array | Entries that were updated |
| ↳ `id` | string | Id supplied for this batch entry |
| `failed` | array | Entries that were rejected |
| ↳ `id` | string | Id supplied for this batch entry |
| ↳ `senderFault` | boolean | Whether the sender caused the failure |
| ↳ `code` | string | Error code for the failure |
| ↳ `message` | string | Human-readable failure message |
| `successCount` | number | Number of messages updated |
| `failureCount` | number | Number of messages rejected |
### SQS List Queues [#sqs-list-queues]
List Amazon SQS queue URLs in a region, optionally filtered by name prefix
#### 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 |
| `queueNamePrefix` | string | No | Return only queues whose name begins with this string (case-sensitive) |
| `maxResults` | number | No | Maximum queues to return, 1-1000. Must be set to receive a nextToken (default returns up to 1000) |
| `nextToken` | string | No | Pagination token from a previous request |
#### Output [#output-7]
| Parameter | Type | Description |
| ----------- | ------ | --------------------------------------------- |
| `queueUrls` | array | Queue URLs returned by the request |
| `nextToken` | string | Pagination token for the next page of results |
| `count` | number | Number of queue URLs returned |
### SQS Get Queue URL [#sqs-get-queue-url]
Resolve an Amazon SQS queue name to its queue URL
#### 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 |
| `queueName` | string | Yes | Queue name, up to 80 characters of letters, digits, hyphens and underscores. A FIFO queue name ends in .fifo |
| `queueOwnerAwsAccountId` | string | No | 12-digit AWS account ID of the queue owner, when the queue belongs to another account |
#### Output [#output-8]
| Parameter | Type | Description |
| ---------- | ------ | ---------------- |
| `queueUrl` | string | URL of the queue |
### SQS Get Queue Attributes [#sqs-get-queue-attributes]
Read configuration and message-count attributes of an Amazon SQS queue
#### 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 |
| `queueUrl` | string | Yes | SQS queue URL (e.g., [https://sqs.us-east-1.amazonaws.com/123456789012/my-queue](https://sqs.us-east-1.amazonaws.com/123456789012/my-queue)) |
| `attributeNames` | array | No | Attributes to return, e.g. \["All"], \["ApproximateNumberOfMessages"], \["QueueArn"], \["VisibilityTimeout"], \["RedrivePolicy"]. Omitting this returns no attributes |
#### Output [#output-9]
| Parameter | Type | Description |
| ------------ | ---- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `attributes` | json | Queue attributes as string values keyed by attribute name (e.g., ApproximateNumberOfMessages, QueueArn, VisibilityTimeout, RedrivePolicy) |
### SQS Set Queue Attributes [#sqs-set-queue-attributes]
Update configuration attributes of an existing Amazon SQS queue
#### 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 |
| `queueUrl` | string | Yes | SQS queue URL (e.g., [https://sqs.us-east-1.amazonaws.com/123456789012/my-queue](https://sqs.us-east-1.amazonaws.com/123456789012/my-queue)) |
| `attributes` | json | Yes | Attributes to set as string values, e.g. \{ "VisibilityTimeout": "60", "MessageRetentionPeriod": "345600", "RedrivePolicy": "\{...}" }. FifoQueue can only be set at creation |
#### Output [#output-10]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### SQS Create Queue [#sqs-create-queue]
Create a standard or FIFO Amazon SQS queue
#### 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 |
| `queueName` | string | Yes | Queue name, up to 80 characters of letters, digits, hyphens and underscores. A FIFO queue name must end in .fifo |
| `attributes` | json | No | Queue attributes as string values, e.g. \{ "FifoQueue": "true", "VisibilityTimeout": "30", "DelaySeconds": "0", "RedrivePolicy": "\{...}" } |
| `tags` | json | No | Cost-allocation tags to apply to the new queue, as \{ "key": "value" } pairs |
#### Output [#output-11]
| Parameter | Type | Description |
| ---------- | ------ | ------------------------ |
| `message` | string | Operation status message |
| `queueUrl` | string | URL of the created queue |
### SQS Delete Queue [#sqs-delete-queue]
Delete an Amazon SQS queue and every message still in it
#### 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 |
| `queueUrl` | string | Yes | SQS queue URL (e.g., [https://sqs.us-east-1.amazonaws.com/123456789012/my-queue](https://sqs.us-east-1.amazonaws.com/123456789012/my-queue)) |
#### Output [#output-12]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### SQS Purge Queue [#sqs-purge-queue]
Delete every message in an Amazon SQS queue while keeping the queue itself
#### 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 |
| `queueUrl` | string | Yes | SQS queue URL (e.g., [https://sqs.us-east-1.amazonaws.com/123456789012/my-queue](https://sqs.us-east-1.amazonaws.com/123456789012/my-queue)) |
#### Output [#output-13]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### SQS List Dead-Letter Source Queues [#sqs-list-dead-letter-source-queues]
List the Amazon SQS queues that use a given queue as their dead-letter queue
#### 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 |
| `queueUrl` | string | Yes | URL of the dead-letter queue whose source queues should be listed |
| `maxResults` | number | No | Maximum source queues to return, 1-1000. Must be set to receive a nextToken (default returns up to 1000) |
| `nextToken` | string | No | Pagination token from a previous request |
#### Output [#output-14]
| Parameter | Type | Description |
| ----------- | ------ | ---------------------------------------------------------------- |
| `queueUrls` | array | URLs of the source queues that redrive to this dead-letter queue |
| `nextToken` | string | Pagination token for the next page of results |
| `count` | number | Number of source queues returned |
### SQS List Queue Tags [#sqs-list-queue-tags]
List the cost-allocation tags attached to an Amazon SQS queue
#### 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 |
| `queueUrl` | string | Yes | SQS queue URL (e.g., [https://sqs.us-east-1.amazonaws.com/123456789012/my-queue](https://sqs.us-east-1.amazonaws.com/123456789012/my-queue)) |
#### Output [#output-15]
| Parameter | Type | Description |
| --------- | ---- | ------------------------------------------------------------- |
| `tags` | json | Tags attached to the queue, as string values keyed by tag key |
### SQS Tag Queue [#sqs-tag-queue]
Add or overwrite cost-allocation tags on an Amazon SQS queue
#### 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 |
| `queueUrl` | string | Yes | SQS queue URL (e.g., [https://sqs.us-east-1.amazonaws.com/123456789012/my-queue](https://sqs.us-east-1.amazonaws.com/123456789012/my-queue)) |
| `tags` | json | Yes | Tags to apply as \{ "key": "value" } pairs. An existing key is overwritten. AWS recommends no more than 50 tags per queue |
#### Output [#output-16]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### SQS Untag Queue [#sqs-untag-queue]
Remove cost-allocation tags from an Amazon SQS queue
#### 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 |
| `queueUrl` | string | Yes | SQS queue URL (e.g., [https://sqs.us-east-1.amazonaws.com/123456789012/my-queue](https://sqs.us-east-1.amazonaws.com/123456789012/my-queue)) |
| `tagKeys` | array | Yes | Tag keys to remove, e.g. \["env", "team"] |
#### Output [#output-17]
| Parameter | Type | Description |
| --------- | ------ | ------------------------ |
| `message` | string | Operation status message |
### SQS Start Message Move Task [#sqs-start-message-move-task]
Start redriving messages out of an Amazon SQS dead-letter queue
#### 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 |
| `sourceArn` | string | Yes | ARN of the dead-letter queue to move messages out of (e.g., arn:aws:sqs:us-east-1:123456789012:my-dlq) |
| `destinationArn` | string | No | ARN of the queue to move messages into. Omit to redrive each message to its original source queue |
| `maxNumberOfMessagesPerSecond` | number | No | Throttle the move to at most this many messages per second, up to 500. Omit to move as fast as possible |
#### Output [#output-18]
| Parameter | Type | Description |
| ------------ | ------ | ------------------------------------------------------------------------------ |
| `message` | string | Operation status message |
| `taskHandle` | string | Handle identifying the move task, accepted by sqs\_cancel\_message\_move\_task |
### SQS List Message Move Tasks [#sqs-list-message-move-tasks]
List the most recent message move tasks for an Amazon SQS source queue
#### 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 |
| `sourceArn` | string | Yes | ARN of the queue whose move tasks should be listed (e.g., arn:aws:sqs:us-east-1:123456789012:my-dlq) |
| `maxResults` | number | No | Maximum move tasks to return, 1-10 (default 1) |
#### Output [#output-19]
| Parameter | Type | Description |
| ------------------------------------- | ------ | -------------------------------------------------------------------- |
| `results` | array | Move tasks for the source queue |
| ↳ `taskHandle` | string | Handle of the task, populated only while its status is RUNNING |
| ↳ `status` | string | RUNNING, COMPLETED, CANCELLING, CANCELLED, or FAILED |
| ↳ `sourceArn` | string | ARN of the source queue |
| ↳ `destinationArn` | string | ARN of the destination queue, absent when redriving to source queues |
| ↳ `maxNumberOfMessagesPerSecond` | number | Per-second throttle applied to the move |
| ↳ `approximateNumberOfMessagesMoved` | number | Approximate number of messages moved so far |
| ↳ `approximateNumberOfMessagesToMove` | number | Approximate number of messages still to move |
| ↳ `failureReason` | string | Why the task failed, set only when the status is FAILED |
| ↳ `startedTimestamp` | number | Epoch milliseconds when the task started |
| `count` | number | Number of move tasks returned |
### SQS Cancel Message Move Task [#sqs-cancel-message-move-task]
Cancel an in-progress Amazon SQS message move task
#### 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 |
| `taskHandle` | string | Yes | Task handle returned by sqs\_start\_message\_move\_task or sqs\_list\_message\_move\_tasks. Only a RUNNING task can be cancelled |
#### Output [#output-20]
| Parameter | Type | Description |
| ---------------------------------- | ------ | -------------------------------------------------------------------------- |
| `message` | string | Operation status message |
| `approximateNumberOfMessagesMoved` | number | Approximate number of messages already moved before the task was cancelled |
---
# Devin (/en/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 Studio, 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 |
---
# MillionVerifier (/en/integrations/millionverifier)
{/* MANUAL-CONTENT-START:intro */}
Use MillionVerifier to verify an email and check remaining verification credits. Results classify the address as ok, catch-all, unknown, invalid, disposable, or unverified, with role-account and free-provider flags.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate MillionVerifier to verify email deliverability in real time — classify addresses as valid, invalid, catch-all, disposable, or unknown — and check your remaining verification credits.
## Actions [#actions]
### MillionVerifier Verify Email [#millionverifier-verify-email]
Verify the deliverability of an email address. Uses one verification 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 | MillionVerifier API Key |
#### Output [#output]
| Parameter | Type | Description |
| ------------- | ------- | --------------------------------------------------------------------------------- |
| `email` | string | The verified email address |
| `status` | string | Verification status (valid, invalid, catch\_all, disposable, unknown, unverified) |
| `deliverable` | boolean | Whether the email is valid and safe to send |
| `freeEmail` | boolean | Whether the address is on a free email provider |
| `roleAccount` | boolean | Whether the address is a role account (e.g., info@, sales@) |
| `didYouMean` | string | Suggested correction for a likely typo |
| `subResult` | string | Additional MillionVerifier classification detail |
### MillionVerifier Get Credits [#millionverifier-get-credits]
Retrieve the remaining verification credits for the authenticated account.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------- |
| `apiKey` | string | Yes | MillionVerifier API Key |
#### Output [#output-1]
| Parameter | Type | Description |
| --------- | ------ | ------------------------------ |
| `credits` | number | Remaining verification credits |
---
# Sentry (/en/integrations/sentry)
{/* MANUAL-CONTENT-START:intro */}
Use [Sentry](https://sentry.io/) to read and update issues, inspect events, manage projects and releases, and record deployments. Webhook triggers can start workflows when Sentry reports an issue or alert.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Sentry into the workflow. Monitor issues, manage projects, track events, and coordinate releases across your applications.
## Actions [#actions]
### List Issues [#list-issues]
List issues from Sentry for a specific organization and optionally a specific project. Returns issue details including status, error counts, and last seen timestamps.
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sentry API authentication token |
| `organizationSlug` | string | Yes | The slug of the organization (e.g., "my-org") |
| `projectSlug` | string | No | Filter issues by numeric project ID (e.g., "4501234"). This organization-scoped endpoint requires the numeric project ID, not the project slug. |
| `query` | string | No | Search query to filter issues. Supports Sentry search syntax (e.g., "is:unresolved", "level:error") |
| `statsPeriod` | string | No | Time window for the per-issue stats series (e.g., "24h", "14d"). Note: this controls the stats returned with each issue, not which issues are returned — use the query (e.g., "age:-7d", "lastSeen:-24h") to filter results. |
| `cursor` | string | No | Pagination cursor for retrieving next page of results |
| `limit` | number | No | Number of issues to return per page (max: 100) |
| `status` | string | No | Filter by issue status: unresolved, resolved, or ignored. The legacy "ignored"/"muted" values map to Sentry's current "archived" search token. |
| `sort` | string | No | Sort order: date, new, trends, freq, or user (default: date) |
#### Output [#output]
| Parameter | Type | Description |
| ----------------- | ------- | ----------------------------------------------------------------------------- |
| `issues` | array | List of Sentry issues |
| ↳ `id` | string | Unique issue ID |
| ↳ `shortId` | string | Short issue identifier |
| ↳ `title` | string | Issue title |
| ↳ `culprit` | string | Function or location that caused the issue |
| ↳ `permalink` | string | Direct link to the issue in Sentry |
| ↳ `logger` | string | Logger name that reported the issue |
| ↳ `level` | string | Severity level (error, warning, info, etc.) |
| ↳ `status` | string | Current issue status |
| ↳ `substatus` | string | Issue substatus (e.g., ongoing, escalating, new, archived\_until\_escalating) |
| ↳ `priority` | string | Issue priority (high, medium, or low) |
| ↳ `statusDetails` | object | Additional details about the status |
| ↳ `isPublic` | boolean | Whether the issue is publicly visible |
| ↳ `platform` | string | Platform where the issue occurred |
| ↳ `project` | object | Project information |
| ↳ `id` | string | Project ID |
| ↳ `name` | string | Project name |
| ↳ `slug` | string | Project slug |
| ↳ `platform` | string | Project platform |
| ↳ `type` | string | Issue type |
| ↳ `metadata` | object | Error metadata |
| ↳ `type` | string | Type of error (e.g., TypeError) |
| ↳ `value` | string | Error message or value |
| ↳ `function` | string | Function where the error occurred |
| ↳ `numComments` | number | Number of comments on the issue |
| ↳ `assignedTo` | object | User assigned to the issue |
| ↳ `id` | string | User ID |
| ↳ `name` | string | User name |
| ↳ `email` | string | User email |
| ↳ `isBookmarked` | boolean | Whether the issue is bookmarked |
| ↳ `isSubscribed` | boolean | Whether subscribed to updates |
| ↳ `hasSeen` | boolean | Whether the user has seen this issue |
| ↳ `annotations` | array | Issue annotations |
| ↳ `isUnhandled` | boolean | Whether the issue is unhandled |
| ↳ `count` | string | Total number of occurrences |
| ↳ `userCount` | number | Number of unique users affected |
| ↳ `firstSeen` | string | When the issue was first seen (ISO timestamp) |
| ↳ `lastSeen` | string | When the issue was last seen (ISO timestamp) |
| ↳ `stats` | object | Statistical information about the issue |
| `metadata` | object | Pagination metadata |
| ↳ `nextCursor` | string | Cursor for the next page of results (if available) |
| ↳ `hasMore` | boolean | Whether there are more results available |
### Get Issue [#get-issue]
Retrieve detailed information about a specific Sentry issue by its ID. Returns complete issue details including metadata, tags, and statistics.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ------------------------------------------------------ |
| `apiKey` | string | Yes | Sentry API authentication token |
| `organizationSlug` | string | Yes | The slug of the organization (e.g., "my-org") |
| `issueId` | string | Yes | The unique ID of the issue to retrieve (e.g., "12345") |
#### Output [#output-1]
| Parameter | Type | Description |
| ----------------- | ------- | ----------------------------------------------------------------------------- |
| `issue` | object | Detailed information about the Sentry issue |
| ↳ `id` | string | Unique issue ID |
| ↳ `shortId` | string | Short issue identifier |
| ↳ `title` | string | Issue title |
| ↳ `culprit` | string | Function or location that caused the issue |
| ↳ `permalink` | string | Direct link to the issue in Sentry |
| ↳ `logger` | string | Logger name that reported the issue |
| ↳ `level` | string | Severity level (error, warning, info, etc.) |
| ↳ `status` | string | Current issue status |
| ↳ `substatus` | string | Issue substatus (e.g., ongoing, escalating, new, archived\_until\_escalating) |
| ↳ `priority` | string | Issue priority (high, medium, or low) |
| ↳ `statusDetails` | object | Additional details about the status |
| ↳ `isPublic` | boolean | Whether the issue is publicly visible |
| ↳ `platform` | string | Platform where the issue occurred |
| ↳ `project` | object | Project information |
| ↳ `id` | string | Project ID |
| ↳ `name` | string | Project name |
| ↳ `slug` | string | Project slug |
| ↳ `platform` | string | Project platform |
| ↳ `type` | string | Issue type |
| ↳ `metadata` | object | Error metadata |
| ↳ `type` | string | Type of error (e.g., TypeError, ValueError) |
| ↳ `value` | string | Error message or value |
| ↳ `function` | string | Function where the error occurred |
| ↳ `numComments` | number | Number of comments on the issue |
| ↳ `assignedTo` | object | User assigned to the issue (if any) |
| ↳ `id` | string | User ID |
| ↳ `name` | string | User name |
| ↳ `email` | string | User email |
| ↳ `isBookmarked` | boolean | Whether the issue is bookmarked |
| ↳ `isSubscribed` | boolean | Whether the user is subscribed to updates |
| ↳ `hasSeen` | boolean | Whether the user has seen this issue |
| ↳ `annotations` | array | Issue annotations |
| ↳ `isUnhandled` | boolean | Whether the issue is unhandled |
| ↳ `count` | string | Total number of occurrences |
| ↳ `userCount` | number | Number of unique users affected |
| ↳ `firstSeen` | string | When the issue was first seen (ISO timestamp) |
| ↳ `lastSeen` | string | When the issue was last seen (ISO timestamp) |
| ↳ `stats` | object | Statistical information about the issue |
### Update Issue [#update-issue]
Update a Sentry issue by changing its status, assignment, bookmark state, or other properties. Returns the updated issue details.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sentry API authentication token |
| `organizationSlug` | string | Yes | The slug of the organization (e.g., "my-org") |
| `issueId` | string | Yes | The unique ID of the issue to update (e.g., "12345") |
| `status` | string | No | New status for the issue: resolved, unresolved, ignored, or resolvedInNextRelease |
| `assignedTo` | string | No | Actor to assign the issue to, in the form "user:\" or "team:\" (a bare username or email is also accepted). Use an empty string to unassign. |
| `isBookmarked` | boolean | No | Whether to bookmark the issue |
| `isSubscribed` | boolean | No | Whether to subscribe to issue updates |
| `isPublic` | boolean | No | Whether the issue should be publicly visible |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------------- | ------- | ----------------------------------------- |
| `issue` | object | The updated Sentry issue |
| ↳ `id` | string | Unique issue ID |
| ↳ `shortId` | string | Short issue identifier |
| ↳ `title` | string | Issue title |
| ↳ `status` | string | Updated issue status |
| ↳ `substatus` | string | Issue substatus after the update |
| ↳ `priority` | string | Issue priority (high, medium, or low) |
| ↳ `assignedTo` | object | User assigned to the issue (if any) |
| ↳ `id` | string | User ID |
| ↳ `name` | string | User name |
| ↳ `email` | string | User email |
| ↳ `isBookmarked` | boolean | Whether the issue is bookmarked |
| ↳ `isSubscribed` | boolean | Whether the user is subscribed to updates |
| ↳ `isPublic` | boolean | Whether the issue is publicly visible |
| ↳ `permalink` | string | Direct link to the issue in Sentry |
### List Projects [#list-projects]
List all projects in a Sentry organization. Returns project details including name, platform, teams, and configuration.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ------------------------------------------------------------- |
| `apiKey` | string | Yes | Sentry API authentication token |
| `organizationSlug` | string | Yes | The slug of the organization (e.g., "my-org") |
| `cursor` | string | No | Pagination cursor for retrieving next page of results |
| `limit` | number | No | Number of projects to return per page (default: 25, max: 100) |
#### Output [#output-3]
| Parameter | Type | Description |
| ---------------- | ------- | -------------------------------------------------- |
| `projects` | array | List of Sentry projects |
| ↳ `id` | string | Unique project ID |
| ↳ `slug` | string | URL-friendly project identifier |
| ↳ `name` | string | Project name |
| ↳ `platform` | string | Platform/language (e.g., javascript, python) |
| ↳ `dateCreated` | string | When the project was created (ISO timestamp) |
| ↳ `isBookmarked` | boolean | Whether the project is bookmarked |
| ↳ `isMember` | boolean | Whether the user is a member of the project |
| ↳ `features` | array | Enabled features for the project |
| ↳ `organization` | object | Organization information |
| ↳ `id` | string | Organization ID |
| ↳ `slug` | string | Organization slug |
| ↳ `name` | string | Organization name |
| ↳ `teams` | array | Teams associated with the project |
| ↳ `id` | string | Team ID |
| ↳ `name` | string | Team name |
| ↳ `slug` | string | Team slug |
| ↳ `status` | string | Project status |
| ↳ `isPublic` | boolean | Whether the project is publicly visible |
| `metadata` | object | Pagination metadata |
| ↳ `nextCursor` | string | Cursor for the next page of results (if available) |
| ↳ `hasMore` | boolean | Whether there are more results available |
### Get Project [#get-project]
Retrieve detailed information about a specific Sentry project by its slug. Returns complete project details including teams, features, and configuration.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | -------------------------------------------------------- |
| `apiKey` | string | Yes | Sentry API authentication token |
| `organizationSlug` | string | Yes | The slug of the organization (e.g., "my-org") |
| `projectSlug` | string | Yes | The slug of the project to retrieve (e.g., "my-project") |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------------------------------ |
| `project` | object | Detailed information about the Sentry project |
| ↳ `id` | string | Unique project ID |
| ↳ `slug` | string | URL-friendly project identifier |
| ↳ `name` | string | Project name |
| ↳ `platform` | string | Platform/language (e.g., javascript, python) |
| ↳ `dateCreated` | string | When the project was created (ISO timestamp) |
| ↳ `isBookmarked` | boolean | Whether the project is bookmarked |
| ↳ `isMember` | boolean | Whether the user is a member of the project |
| ↳ `features` | array | Enabled features for the project |
| ↳ `firstEvent` | string | When the first event was received (ISO timestamp) |
| ↳ `firstTransactionEvent` | boolean | Whether the project has received its first transaction event |
| ↳ `access` | array | Access permissions |
| ↳ `organization` | object | Organization information |
| ↳ `id` | string | Organization ID |
| ↳ `slug` | string | Organization slug |
| ↳ `name` | string | Organization name |
| ↳ `team` | object | Primary team for the project |
| ↳ `id` | string | Team ID |
| ↳ `name` | string | Team name |
| ↳ `slug` | string | Team slug |
| ↳ `teams` | array | Teams associated with the project |
| ↳ `id` | string | Team ID |
| ↳ `name` | string | Team name |
| ↳ `slug` | string | Team slug |
| ↳ `status` | string | Project status |
| ↳ `color` | string | Project color code |
| ↳ `isPublic` | boolean | Whether the project is publicly visible |
| ↳ `isInternal` | boolean | Whether the project is internal |
| ↳ `hasAccess` | boolean | Whether the user has access to this project |
| ↳ `hasMinifiedStackTrace` | boolean | Whether minified stack traces are available |
| ↳ `hasMonitors` | boolean | Whether the project has monitors configured |
| ↳ `hasProfiles` | boolean | Whether the project has profiling enabled |
| ↳ `hasReplays` | boolean | Whether the project has session replays enabled |
| ↳ `hasSessions` | boolean | Whether the project has sessions enabled |
### Create Project [#create-project]
Create a new Sentry project in an organization. Requires a team to associate the project with. Returns the created project details.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sentry API authentication token |
| `organizationSlug` | string | Yes | The slug of the organization (e.g., "my-org") |
| `name` | string | Yes | The name of the project |
| `teamSlug` | string | Yes | The slug of the team that will own this project |
| `slug` | string | No | URL-friendly project identifier (auto-generated from name if not provided) |
| `platform` | string | No | Platform/language for the project (e.g., javascript, python, node, react-native). If not specified, defaults to "other" |
| `defaultRules` | boolean | No | Whether to create default alert rules (default: true) |
#### Output [#output-5]
| Parameter | Type | Description |
| ---------------- | ------- | -------------------------------------------- |
| `project` | object | The newly created Sentry project |
| ↳ `id` | string | Unique project ID |
| ↳ `slug` | string | URL-friendly project identifier |
| ↳ `name` | string | Project name |
| ↳ `platform` | string | Platform/language |
| ↳ `dateCreated` | string | When the project was created (ISO timestamp) |
| ↳ `isBookmarked` | boolean | Whether the project is bookmarked |
| ↳ `isMember` | boolean | Whether the user is a member |
| ↳ `hasAccess` | boolean | Whether the user has access |
| ↳ `features` | array | Enabled features |
| ↳ `firstEvent` | string | First event timestamp |
| ↳ `organization` | object | Organization information |
| ↳ `id` | string | Organization ID |
| ↳ `slug` | string | Organization slug |
| ↳ `name` | string | Organization name |
| ↳ `team` | object | Primary team for the project |
| ↳ `id` | string | Team ID |
| ↳ `name` | string | Team name |
| ↳ `slug` | string | Team slug |
| ↳ `teams` | array | Teams associated with the project |
| ↳ `id` | string | Team ID |
| ↳ `name` | string | Team name |
| ↳ `slug` | string | Team slug |
| ↳ `status` | string | Project status |
| ↳ `color` | string | Project color code |
| ↳ `isPublic` | boolean | Whether the project is public |
### Update Project [#update-project]
Update a Sentry project by changing its name, slug, platform, or other settings. Returns the updated project details.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | ---------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sentry API authentication token |
| `organizationSlug` | string | Yes | The slug of the organization (e.g., "my-org") |
| `projectSlug` | string | Yes | The slug of the project to update (e.g., "my-project") |
| `name` | string | No | New name for the project |
| `slug` | string | No | New URL-friendly project identifier |
| `platform` | string | No | New platform/language for the project (e.g., javascript, python, node) |
| `isBookmarked` | boolean | No | Whether to bookmark the project |
| `digestsMinDelay` | number | No | Minimum delay (in seconds) for digest notifications |
| `digestsMaxDelay` | number | No | Maximum delay (in seconds) for digest notifications |
#### Output [#output-6]
| Parameter | Type | Description |
| ---------------- | ------- | --------------------------------- |
| `project` | object | The updated Sentry project |
| ↳ `id` | string | Unique project ID |
| ↳ `slug` | string | URL-friendly project identifier |
| ↳ `name` | string | Project name |
| ↳ `platform` | string | Platform/language |
| ↳ `isBookmarked` | boolean | Whether the project is bookmarked |
| ↳ `organization` | object | Organization information |
| ↳ `id` | string | Organization ID |
| ↳ `slug` | string | Organization slug |
| ↳ `name` | string | Organization name |
| ↳ `teams` | array | Teams associated with the project |
| ↳ `id` | string | Team ID |
| ↳ `name` | string | Team name |
| ↳ `slug` | string | Team slug |
### List Events [#list-events]
List events from a Sentry project. Can be filtered by issue ID, query, or time period. Returns event details including context, tags, and user information.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sentry API authentication token |
| `organizationSlug` | string | Yes | The slug of the organization (e.g., "my-org") |
| `projectSlug` | string | Yes | The slug of the project to list events from (e.g., "my-project") |
| `issueId` | string | No | Filter events by a specific issue ID (e.g., "12345") |
| `query` | string | No | Search query to filter events. Only applied when an Issue ID is provided (the issue events endpoint); the project events endpoint ignores it. Supports Sentry search syntax (e.g., "user.email:\*@example.com") |
| `cursor` | string | No | Pagination cursor for retrieving next page of results |
| `limit` | number | No | Number of events to return per page (max: 100) |
| `statsPeriod` | string | No | Time period to query (e.g., "24h", "7d", "14d"). Cannot be combined with absolute start/end. |
#### Output [#output-7]
| Parameter | Type | Description |
| ---------------- | ------- | -------------------------------------------------------- |
| `events` | array | List of Sentry events |
| ↳ `id` | string | Unique event ID |
| ↳ `eventID` | string | Event identifier |
| ↳ `projectID` | string | Project ID |
| ↳ `groupID` | string | Issue group ID |
| ↳ `message` | string | Event message |
| ↳ `title` | string | Event title |
| ↳ `location` | string | Location information |
| ↳ `culprit` | string | Function or location that caused the event |
| ↳ `dateCreated` | string | When the event was created (ISO timestamp) |
| ↳ `dateReceived` | string | When Sentry received the event (ISO timestamp) |
| ↳ `user` | object | User information associated with the event |
| ↳ `id` | string | User ID |
| ↳ `email` | string | User email |
| ↳ `username` | string | Username |
| ↳ `ipAddress` | string | IP address |
| ↳ `name` | string | User display name |
| ↳ `tags` | array | Tags associated with the event |
| ↳ `key` | string | Tag key |
| ↳ `value` | string | Tag value |
| ↳ `contexts` | object | Additional context data (device, OS, etc.) |
| ↳ `platform` | string | Platform where the event occurred |
| ↳ `type` | string | Event type |
| ↳ `metadata` | object | Error metadata |
| ↳ `type` | string | Type of error (e.g., TypeError) |
| ↳ `value` | string | Error message or value |
| ↳ `function` | string | Function where the error occurred |
| ↳ `entries` | array | Event entries (exception, breadcrumbs, etc.) |
| ↳ `errors` | array | Processing errors |
| ↳ `dist` | string | Distribution identifier |
| ↳ `fingerprints` | array | Fingerprints for grouping |
| ↳ `size` | number | Event size in bytes |
| ↳ `release` | object | Release associated with the event (version, dateCreated) |
| ↳ `sdk` | object | SDK information |
| ↳ `name` | string | SDK name |
| ↳ `version` | string | SDK version |
| `metadata` | object | Pagination metadata |
| ↳ `nextCursor` | string | Cursor for the next page of results (if available) |
| ↳ `hasMore` | boolean | Whether there are more results available |
### Get Event [#get-event]
Retrieve detailed information about a specific Sentry event by its ID. Returns complete event details including stack traces, breadcrumbs, context, and user information.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ------------------------------------------------------------- |
| `apiKey` | string | Yes | Sentry API authentication token |
| `organizationSlug` | string | Yes | The slug of the organization (e.g., "my-org") |
| `projectSlug` | string | Yes | The slug of the project (e.g., "my-project") |
| `eventId` | string | Yes | The unique ID of the event to retrieve (e.g., "abc123def456") |
#### Output [#output-8]
| Parameter | Type | Description |
| ---------------- | ------ | ---------------------------------------------------------------- |
| `event` | object | Detailed information about the Sentry event |
| ↳ `id` | string | Unique event ID |
| ↳ `eventID` | string | Event identifier |
| ↳ `projectID` | string | Project ID |
| ↳ `groupID` | string | Issue group ID this event belongs to |
| ↳ `message` | string | Event message |
| ↳ `title` | string | Event title |
| ↳ `location` | string | Location information |
| ↳ `culprit` | string | Function or location that caused the event |
| ↳ `dateCreated` | string | When the event was created (ISO timestamp) |
| ↳ `dateReceived` | string | When Sentry received the event (ISO timestamp) |
| ↳ `user` | object | User information associated with the event |
| ↳ `id` | string | User ID |
| ↳ `email` | string | User email |
| ↳ `username` | string | Username |
| ↳ `ipAddress` | string | IP address |
| ↳ `name` | string | User display name |
| ↳ `tags` | array | Tags associated with the event |
| ↳ `key` | string | Tag key |
| ↳ `value` | string | Tag value |
| ↳ `contexts` | object | Additional context data (device, OS, browser, etc.) |
| ↳ `platform` | string | Platform where the event occurred |
| ↳ `type` | string | Event type (error, transaction, etc.) |
| ↳ `metadata` | object | Error metadata |
| ↳ `type` | string | Type of error (e.g., TypeError, ValueError) |
| ↳ `value` | string | Error message or value |
| ↳ `function` | string | Function where the error occurred |
| ↳ `entries` | array | Event entries including exception, breadcrumbs, and request data |
| ↳ `errors` | array | Processing errors that occurred |
| ↳ `dist` | string | Distribution identifier |
| ↳ `fingerprints` | array | Fingerprints used for grouping events |
| ↳ `size` | number | Event size in bytes |
| ↳ `release` | object | Release associated with the event (version, dateCreated) |
| ↳ `sdk` | object | SDK information |
| ↳ `name` | string | SDK name |
| ↳ `version` | string | SDK version |
### List Releases [#list-releases]
List releases for a Sentry organization or project. Returns release details including version, commits, deploy information, and associated projects.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sentry API authentication token |
| `organizationSlug` | string | Yes | The slug of the organization (e.g., "my-org") |
| `projectSlug` | string | No | Filter releases by numeric project ID (e.g., "4501234"). This organization-scoped endpoint requires the numeric project ID, not the project slug. |
| `query` | string | No | Search query to filter releases (e.g., "1.0" to match version patterns) |
| `cursor` | string | No | Pagination cursor for retrieving next page of results |
| `limit` | number | No | Number of releases to return per page (default: 25, max: 100) |
#### Output [#output-9]
| Parameter | Type | Description |
| ---------------- | ------- | -------------------------------------------------- |
| `releases` | array | List of Sentry releases |
| ↳ `id` | string | Unique release ID |
| ↳ `version` | string | Release version identifier |
| ↳ `shortVersion` | string | Shortened version identifier |
| ↳ `ref` | string | Git reference (commit SHA, tag, or branch) |
| ↳ `url` | string | URL to the release (e.g., GitHub release page) |
| ↳ `dateReleased` | string | When the release was deployed (ISO timestamp) |
| ↳ `dateCreated` | string | When the release was created (ISO timestamp) |
| ↳ `dateStarted` | string | When the release started (ISO timestamp) |
| ↳ `newGroups` | number | Number of new issues introduced in this release |
| ↳ `owner` | object | Owner of the release |
| ↳ `id` | string | User ID |
| ↳ `name` | string | User name |
| ↳ `email` | string | User email |
| ↳ `commitCount` | number | Number of commits in this release |
| ↳ `deployCount` | number | Number of deploys for this release |
| ↳ `lastCommit` | object | Last commit in the release |
| ↳ `id` | string | Commit SHA |
| ↳ `message` | string | Commit message |
| ↳ `dateCreated` | string | Commit timestamp |
| ↳ `lastDeploy` | object | Last deploy of the release |
| ↳ `id` | string | Deploy ID |
| ↳ `environment` | string | Deploy environment |
| ↳ `dateStarted` | string | Deploy start timestamp |
| ↳ `dateFinished` | string | Deploy finish timestamp |
| ↳ `authors` | array | Authors of commits in the release |
| ↳ `id` | string | Author ID |
| ↳ `name` | string | Author name |
| ↳ `email` | string | Author email |
| ↳ `projects` | array | Projects associated with this release |
| ↳ `id` | string | Project ID |
| ↳ `name` | string | Project name |
| ↳ `slug` | string | Project slug |
| ↳ `platform` | string | Project platform |
| ↳ `firstEvent` | string | First event timestamp |
| ↳ `lastEvent` | string | Last event timestamp |
| ↳ `versionInfo` | object | Version metadata |
| ↳ `buildHash` | string | Build hash |
| ↳ `version` | object | Version details |
| ↳ `raw` | string | Raw version string |
| ↳ `package` | string | Package name |
| `metadata` | object | Pagination metadata |
| ↳ `nextCursor` | string | Cursor for the next page of results (if available) |
| ↳ `hasMore` | boolean | Whether there are more results available |
### Create Release [#create-release]
Create a new release in Sentry. A release is a version of your code deployed to an environment. Can include commit information and associated projects. Returns the created release details.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sentry API authentication token |
| `organizationSlug` | string | Yes | The slug of the organization (e.g., "my-org") |
| `version` | string | Yes | Version identifier for the release (e.g., "2.0.0", "my-app\@1.0.0", or a git commit SHA) |
| `projects` | string | Yes | Comma-separated list of project slugs to associate with this release |
| `ref` | string | No | Git reference (commit SHA, tag, or branch) for this release |
| `url` | string | No | URL pointing to the release (e.g., GitHub release page) |
| `dateReleased` | string | No | ISO 8601 timestamp for when the release was deployed (defaults to current time) |
| `commits` | string | No | JSON array of commit objects with id, repository (optional), and message (optional). Example: \[\{"id":"abc123","message":"Fix bug"}] |
#### Output [#output-10]
| Parameter | Type | Description |
| ---------------- | ------ | --------------------------------------------- |
| `release` | object | The newly created Sentry release |
| ↳ `id` | string | Unique release ID |
| ↳ `version` | string | Release version identifier |
| ↳ `shortVersion` | string | Shortened version identifier |
| ↳ `ref` | string | Git reference (commit SHA, tag, or branch) |
| ↳ `url` | string | URL to the release |
| ↳ `dateReleased` | string | When the release was deployed (ISO timestamp) |
| ↳ `dateCreated` | string | When the release was created (ISO timestamp) |
| ↳ `dateStarted` | string | When the release started (ISO timestamp) |
| ↳ `newGroups` | number | Number of new issues introduced |
| ↳ `commitCount` | number | Number of commits in this release |
| ↳ `deployCount` | number | Number of deploys for this release |
| ↳ `owner` | object | Release owner |
| ↳ `id` | string | Owner ID |
| ↳ `name` | string | Owner name |
| ↳ `email` | string | Owner email |
| ↳ `lastCommit` | object | Last commit in the release |
| ↳ `id` | string | Commit SHA |
| ↳ `message` | string | Commit message |
| ↳ `dateCreated` | string | Commit timestamp |
| ↳ `lastDeploy` | object | Last deploy of the release |
| ↳ `id` | string | Deploy ID |
| ↳ `environment` | string | Deploy environment |
| ↳ `dateStarted` | string | Deploy start timestamp |
| ↳ `dateFinished` | string | Deploy finish timestamp |
| ↳ `authors` | array | Authors of commits in the release |
| ↳ `id` | string | Author ID |
| ↳ `name` | string | Author name |
| ↳ `email` | string | Author email |
| ↳ `projects` | array | Projects associated with this release |
| ↳ `id` | string | Project ID |
| ↳ `name` | string | Project name |
| ↳ `slug` | string | Project slug |
| ↳ `platform` | string | Project platform |
| ↳ `firstEvent` | string | First event timestamp |
| ↳ `lastEvent` | string | Last event timestamp |
| ↳ `versionInfo` | object | Version metadata |
| ↳ `buildHash` | string | Build hash |
| ↳ `version` | object | Version details |
| ↳ `raw` | string | Raw version string |
| ↳ `package` | string | Package name |
### Create Deploy [#create-deploy]
Create a deploy record for a Sentry release in a specific environment. Deploys track when and where releases are deployed. Returns the created deploy details.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sentry API authentication token |
| `organizationSlug` | string | Yes | The slug of the organization (e.g., "my-org") |
| `version` | string | Yes | Version identifier of the release being deployed (e.g., "1.0.0" or "abc123") |
| `environment` | string | Yes | Environment name where the release is being deployed (e.g., "production", "staging") |
| `name` | string | No | Optional name for this deploy (e.g., "Deploy v2.0 to Production") |
| `url` | string | No | URL pointing to the deploy (e.g., CI/CD pipeline URL) |
| `dateStarted` | string | No | ISO 8601 timestamp for when the deploy started (defaults to current time) |
| `dateFinished` | string | No | ISO 8601 timestamp for when the deploy finished |
#### Output [#output-11]
| Parameter | Type | Description |
| ---------------- | ------ | ----------------------------------------------- |
| `deploy` | object | The newly created deploy record |
| ↳ `id` | string | Unique deploy ID |
| ↳ `environment` | string | Environment name where the release was deployed |
| ↳ `name` | string | Name of the deploy |
| ↳ `url` | string | URL pointing to the deploy |
| ↳ `dateStarted` | string | When the deploy started (ISO timestamp) |
| ↳ `dateFinished` | string | When the deploy finished (ISO timestamp) |
### List Teams [#list-teams]
List all teams in a Sentry organization. Useful for discovering the team slug required when creating a project. Returns team details including slug, name, member count, and associated projects.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ---------------------------------------------------------- |
| `apiKey` | string | Yes | Sentry API authentication token |
| `organizationSlug` | string | Yes | The slug of the organization (e.g., "my-org") |
| `query` | string | No | Filter teams by name or slug |
| `cursor` | string | No | Pagination cursor for retrieving next page of results |
| `limit` | number | No | Number of teams to return per page (default: 25, max: 100) |
#### Output [#output-12]
| Parameter | Type | Description |
| --------------- | ------- | --------------------------------------------------- |
| `teams` | array | List of Sentry teams |
| ↳ `id` | string | Unique team ID |
| ↳ `slug` | string | URL-friendly team identifier (used to own projects) |
| ↳ `name` | string | Team name |
| ↳ `dateCreated` | string | When the team was created (ISO timestamp) |
| ↳ `isMember` | boolean | Whether the user is a member of the team |
| ↳ `teamRole` | string | The role of the user on the team |
| ↳ `hasAccess` | boolean | Whether the user has access to this team |
| ↳ `isPending` | boolean | Whether team membership is pending |
| ↳ `memberCount` | number | Number of members in the team |
| ↳ `projects` | array | Projects owned by this team |
| ↳ `id` | string | Project ID |
| ↳ `slug` | string | Project slug |
| ↳ `name` | string | Project name |
| ↳ `platform` | string | Project platform |
| `metadata` | object | Pagination metadata |
| ↳ `nextCursor` | string | Cursor for the next page of results (if available) |
| ↳ `hasMore` | boolean | Whether there are more results available |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
### Sentry Error Created [#sentry-error-created]
Trigger workflow when a new error event is created in Sentry
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------- |
| `clientSecret` | string | Yes | Client Secret |
#### Output [#output-13]
| Parameter | Type | Description |
| --------------- | ------ | -------------------------------------------------------------------------- |
| `action` | string | The action that triggered the webhook (e.g., created, resolved, triggered) |
| `installation` | json | Installation object containing the integration installation uuid |
| `actor` | json | Who triggered the webhook (user, the integration application, or Sentry) |
| `error` | object | error output from the tool |
| ↳ `event_id` | string | Unique event ID |
| ↳ `issue_id` | string | ID of the issue this error belongs to |
| ↳ `issue_url` | string | API URL of the issue |
| ↳ `project` | number | Project ID |
| ↳ `key_id` | string | Project key ID |
| ↳ `level` | string | Error level |
| ↳ `title` | string | Error title |
| ↳ `eventType` | string | Event type (the payload's `type` field; `type` is reserved) |
| ↳ `message` | string | Error message |
| ↳ `culprit` | string | Error culprit (location/transaction) |
| ↳ `platform` | string | Platform |
| ↳ `logger` | string | Logger name |
| ↳ `timestamp` | number | Event timestamp (epoch seconds) |
| ↳ `datetime` | string | Event datetime (ISO 8601) |
| ↳ `received` | number | Received timestamp (epoch seconds) |
| ↳ `dist` | string | Distribution identifier |
| ↳ `release` | string | Release version |
| ↳ `fingerprint` | json | Grouping fingerprint |
| ↳ `tags` | json | Event tags |
| ↳ `user` | json | User context |
| ↳ `request` | json | HTTP request context |
| ↳ `contexts` | json | Additional contexts (browser, os, device) |
| ↳ `sdk` | json | SDK information |
| ↳ `exception` | json | Exception details including stack frames |
| ↳ `metadata` | json | Error metadata |
| ↳ `url` | string | API URL for the event |
| ↳ `web_url` | string | Browser URL for the event |
***
### Sentry Issue Alert [#sentry-issue-alert]
Trigger workflow when a Sentry issue alert rule fires
#### Configuration [#configuration-1]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------- |
| `clientSecret` | string | Yes | Client Secret |
#### Output [#output-14]
| Parameter | Type | Description |
| ---------------- | ------ | -------------------------------------------------------------------------- |
| `action` | string | The action that triggered the webhook (e.g., created, resolved, triggered) |
| `installation` | json | Installation object containing the integration installation uuid |
| `actor` | json | Who triggered the webhook (user, the integration application, or Sentry) |
| `event` | json | The event that triggered the alert rule |
| `triggered_rule` | string | Label of the alert rule that was triggered |
| `issue_alert` | object | issue\_alert output from the tool |
| ↳ `title` | string | Alert rule name |
| ↳ `settings` | json | Alert rule action settings (name/value pairs) |
***
### Sentry Issue Created [#sentry-issue-created]
Trigger workflow when a new issue is created in Sentry
#### Configuration [#configuration-2]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------- |
| `clientSecret` | string | Yes | Client Secret |
#### Output [#output-15]
| Parameter | Type | Description |
| ----------------- | ------- | -------------------------------------------------------------------------- |
| `action` | string | The action that triggered the webhook (e.g., created, resolved, triggered) |
| `installation` | json | Installation object containing the integration installation uuid |
| `actor` | json | Who triggered the webhook (user, the integration application, or Sentry) |
| `issue` | object | issue output from the tool |
| ↳ `id` | string | Issue ID |
| ↳ `shortId` | string | Short human-readable issue ID |
| ↳ `shareId` | string | Share ID for the issue |
| ↳ `title` | string | Issue title |
| ↳ `culprit` | string | Issue culprit (location/transaction) |
| ↳ `logger` | string | Logger name |
| ↳ `level` | string | Issue level (error, warning, etc.) |
| ↳ `status` | string | Issue status (unresolved, resolved, ignored) |
| ↳ `substatus` | string | Issue substatus |
| ↳ `statusDetails` | json | Status details (inRelease, inCommit, ignore\*) |
| ↳ `platform` | string | Platform of the issue |
| ↳ `eventType` | string | Issue type (the payload's `type` field; `type` is reserved) |
| ↳ `issueType` | string | Specific issue type classification |
| ↳ `issueCategory` | string | Issue category |
| ↳ `isUnhandled` | boolean | Whether the issue is unhandled |
| ↳ `isPublic` | boolean | Whether the issue is public |
| ↳ `isBookmarked` | boolean | Whether the issue is bookmarked |
| ↳ `isSubscribed` | boolean | Whether the viewer is subscribed |
| ↳ `hasSeen` | boolean | Whether the issue has been seen |
| ↳ `numComments` | number | Number of comments on the issue |
| ↳ `count` | string | Total event count |
| ↳ `userCount` | number | Number of affected users |
| ↳ `firstSeen` | string | Timestamp when first seen |
| ↳ `lastSeen` | string | Timestamp when last seen |
| ↳ `priority` | string | Issue priority |
| ↳ `assignedTo` | json | Assignee (user or team), or null |
| ↳ `annotations` | json | Issue annotations |
| ↳ `metadata` | json | Issue metadata (title, type, value, sdk, severity) |
| ↳ `project` | object | project output from the tool |
| ↳ `id` | string | Project ID |
| ↳ `name` | string | Project name |
| ↳ `slug` | string | Project slug |
| ↳ `platform` | string | Project platform |
| ↳ `url` | string | API URL for the issue |
| ↳ `web_url` | string | Browser URL for the issue |
| ↳ `project_url` | string | Browser URL for the project |
| ↳ `permalink` | string | Permalink to the issue |
***
### Sentry Issue Resolved [#sentry-issue-resolved]
Trigger workflow when an issue is resolved in Sentry
#### Configuration [#configuration-3]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------- |
| `clientSecret` | string | Yes | Client Secret |
#### Output [#output-16]
| Parameter | Type | Description |
| ----------------- | ------- | -------------------------------------------------------------------------- |
| `action` | string | The action that triggered the webhook (e.g., created, resolved, triggered) |
| `installation` | json | Installation object containing the integration installation uuid |
| `actor` | json | Who triggered the webhook (user, the integration application, or Sentry) |
| `issue` | object | issue output from the tool |
| ↳ `id` | string | Issue ID |
| ↳ `shortId` | string | Short human-readable issue ID |
| ↳ `shareId` | string | Share ID for the issue |
| ↳ `title` | string | Issue title |
| ↳ `culprit` | string | Issue culprit (location/transaction) |
| ↳ `logger` | string | Logger name |
| ↳ `level` | string | Issue level (error, warning, etc.) |
| ↳ `status` | string | Issue status (unresolved, resolved, ignored) |
| ↳ `substatus` | string | Issue substatus |
| ↳ `statusDetails` | json | Status details (inRelease, inCommit, ignore\*) |
| ↳ `platform` | string | Platform of the issue |
| ↳ `eventType` | string | Issue type (the payload's `type` field; `type` is reserved) |
| ↳ `issueType` | string | Specific issue type classification |
| ↳ `issueCategory` | string | Issue category |
| ↳ `isUnhandled` | boolean | Whether the issue is unhandled |
| ↳ `isPublic` | boolean | Whether the issue is public |
| ↳ `isBookmarked` | boolean | Whether the issue is bookmarked |
| ↳ `isSubscribed` | boolean | Whether the viewer is subscribed |
| ↳ `hasSeen` | boolean | Whether the issue has been seen |
| ↳ `numComments` | number | Number of comments on the issue |
| ↳ `count` | string | Total event count |
| ↳ `userCount` | number | Number of affected users |
| ↳ `firstSeen` | string | Timestamp when first seen |
| ↳ `lastSeen` | string | Timestamp when last seen |
| ↳ `priority` | string | Issue priority |
| ↳ `assignedTo` | json | Assignee (user or team), or null |
| ↳ `annotations` | json | Issue annotations |
| ↳ `metadata` | json | Issue metadata (title, type, value, sdk, severity) |
| ↳ `project` | object | project output from the tool |
| ↳ `id` | string | Project ID |
| ↳ `name` | string | Project name |
| ↳ `slug` | string | Project slug |
| ↳ `platform` | string | Project platform |
| ↳ `url` | string | API URL for the issue |
| ↳ `web_url` | string | Browser URL for the issue |
| ↳ `project_url` | string | Browser URL for the project |
| ↳ `permalink` | string | Permalink to the issue |
***
### Sentry Metric Alert [#sentry-metric-alert]
Trigger workflow when a Sentry metric alert changes state (critical, warning, resolved)
#### Configuration [#configuration-4]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------- |
| `clientSecret` | string | Yes | Client Secret |
#### Output [#output-17]
| Parameter | Type | Description |
| ------------------- | ------ | -------------------------------------------------------------------------- |
| `action` | string | The action that triggered the webhook (e.g., created, resolved, triggered) |
| `installation` | json | Installation object containing the integration installation uuid |
| `actor` | json | Who triggered the webhook (user, the integration application, or Sentry) |
| `metric_alert` | json | Metric alert object (alert\_rule + incident details) |
| `description_text` | string | Human-friendly description of the alert |
| `description_title` | string | Human-friendly title of the alert |
| `web_url` | string | API URL for the incident |
---
# Attio API Keys (/en/integrations/attio-service-account)
Connect Attio with a workspace API key created by an admin. Select scopes for the records and operations your workflows need.
## 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. `Studio Integration`)
Select the scopes the key needs. To match everything Studio'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. Studio encrypts the key at rest.
## Adding the API Key to Studio [#adding-the-api-key-to-studio]
Open **Integrations** from your workspace sidebar
Search for "Attio" and open it, then click **Add to Studio** 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**. Studio verifies the key by calling Attio's `/v2/self` endpoint — if it fails, you'll see a specific error explaining what went wrong.
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 Credential in Workflows [#using-the-credential-in-workflows]
Add an Attio block to your workflow. In the credential dropdown, select the saved Attio API key. 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.
---
# SAP Concur (/en/integrations/sap_concur)
{/* MANUAL-CONTENT-START:intro */}
Use [SAP Concur](https://www.concur.com/) to manage expense reports, receipts, travel requests, cash advances, and related user and reference data. The actions below include report submission, approval, recall, and send-back operations.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Connect SAP Concur with an OAuth client ID and secret (client-credentials or password grant) — no account linking required. Manage expense reports and line items, allocations, attendees, comments, exceptions, quick expenses, receipts, travel requests and expected expenses, cash advances, itineraries, user identities, custom lists, budgets, exchange rates, and purchase requests across every Concur datacenter.
## Actions [#actions]
### SAP Concur Approve Expense Report [#sap-concur-approve-expense-report]
Approve an expense report as a manager (PATCH /expensereports/v4/reports/\{reportId}/approve). Optional body fields: comment, expenseRejectedComment (required if the report has rejected expenses), expectedStepCode, expectedStepSequence, statusId (default A\_APPR).
#### Input [#input]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `reportId` | string | Yes | Expense report ID to approve |
| `body` | json | No | Optional request body. All fields are optional: `comment` (e.g., \{ "comment": "Approved" }), `expenseRejectedComment` (required only if the report contains rejected expenses), `expectedStepCode`, `expectedStepSequence`, `statusId` (defaults to "A\_APPR"). |
#### Output [#output]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Empty (204 No Content) |
### SAP Concur Associate Attendees [#sap-concur-associate-attendees]
Associate attendees with an expense (POST /expensereports/v4/users/\{userId}/context/\{contextType}/reports/\{reportId}/expenses/\{expenseId}/attendees).
#### Input [#input-1]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userId` | string | Yes | Concur user UUID |
| `contextType` | string | Yes | Access context: TRAVELER or PROXY |
| `reportId` | string | Yes | Expense report ID |
| `expenseId` | string | Yes | Expense ID |
| `body` | json | Yes | Attendee association payload with exactly two top-level fields: "noShowAttendeeCount" (integer, default 0) and "expenseAttendeeList" (array). Each entry in expenseAttendeeList requires "attendeeId" (string) and "transactionAmount" (object: \{ "value": number, "currencyCode": string }), and optionally accepts "customData", "isAmountUserEdited" (boolean), "isTraveling" (boolean), "associatedAttendeeCount" (integer), and "versionNumber" (integer). Example: \{ "noShowAttendeeCount": 0, "expenseAttendeeList": \[\{ "attendeeId": "gWmMv2Ii5rGtEBTBhBqUw", "transactionAmount": \{ "value": 23, "currencyCode": "USD" } }] }. Note: the object form follows the request schema (Amount = value + currencyCode, both required), but the documented POST example sends a scalar "transactionAmount": 23 — the docs conflict here. |
#### Output [#output-1]
| Parameter | Type | Description |
| --------- | ------ | ---------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Concur association response (201 Created with URI) |
| ↳ `uri` | string | Resource URI of the attendee associations collection |
### SAP Concur Create Cash Advance [#sap-concur-create-cash-advance]
Create a cash advance (POST /cashadvance/v4.1/cashadvances).
#### Input [#input-2]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `body` | json | Yes | Cash advance payload. Required fields: amountRequested (\{ currency, amount }), name, and userId. Optional fields: accountCode, comment, purpose. The Concur docs are inconsistent on casing — the reference request example and the API Explorer swagger both use userId, while the schema table spells it userID; if a request is rejected with a 400, retry with the other spelling. |
#### Output [#output-2]
| Parameter | Type | Description |
| ----------------- | ------ | --------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Created cash advance payload |
| ↳ `cashAdvanceId` | string | Unique identifier of the created cash advance |
### SAP Concur Create Expected Expense [#sap-concur-create-expected-expense]
Create an expected expense on a travel request (POST /travelrequest/v4/requests/\{requestUuid}/expenses).
#### Input [#input-3]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `requestUuid` | string | Yes | Travel request UUID |
| `userId` | string | No | User UUID acting on the request (required when using a Company JWT, optional otherwise) |
| `body` | json | Yes | Expected expense payload |
#### Output [#output-3]
| Parameter | Type | Description |
| --------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Created expected expense payload |
| ↳ `id` | string | Expected expense identifier |
| ↳ `href` | string | Self-link to the resource |
| ↳ `expenseType` | json | Expense type \{id, name} |
| ↳ `transactionDate` | string | Transaction date |
| ↳ `transactionAmount` | json | Transaction amount \{value, currency} |
| ↳ `postedAmount` | json | Posted amount \{value, currency} |
| ↳ `approvedAmount` | json | Approved amount \{value, currency} |
| ↳ `remainingAmount` | json | Remaining amount on the expected expense |
| ↳ `businessPurpose` | string | Business purpose of the expense |
| ↳ `location` | json | Location \{id, name, city, countryCode, countrySubDivisionCode, iataCode, locationType} |
| ↳ `exchangeRate` | json | Exchange rate \{value, operation} |
| ↳ `allocations` | json | Budget allocations array (allocationId, allocationAmount \{value, currency}, approvedAmount \{value, currency}, postedAmount \{value, currency}, expenseId, percentEdited, systemAllocation, percentage) |
| ↳ `tripData` | json | Trip data \{agencyBooked, selfBooked, tripType (ONE\_WAY\|ROUND\_TRIP), legs\[\{id, returnLeg, startDate, startTime, startLocationDetail, startLocation, endLocation, class \{code,value}, travelExceptionReasonCodes}], segmentType \{category, code}} |
| ↳ `parentRequest` | json | Parent travel request resource link \{href, id} |
| ↳ `comments` | json | Comments sub-resource link \{href, id} |
### SAP Concur Create Expense Report [#sap-concur-create-expense-report]
Create an expense report (POST /expensereports/v4/users/\{userId}/context/\{contextType}/reports — supported contexts: TRAVELER, PROXY). Required body fields: name, policyId.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userId` | string | Yes | Concur user UUID who will own the report |
| `contextType` | string | Yes | Access context: TRAVELER (creating own report) or PROXY (creating on behalf of another user) |
| `body` | json | Yes | Report payload — `name` and `policyId` are required. Optional fields: businessPurpose, comment, customData, countryCode, countrySubDivisionCode, etc. |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ------ | ------------------------------------------------------------------------ |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Created expense report (Concur returns 201 with a URI to the new report) |
| ↳ `uri` | string | URI of the newly created expense report |
### SAP Concur Create List Item [#sap-concur-create-list-item]
Create a list item (POST /list/v4/items).
#### Input [#input-5]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `body` | json | Yes | List item payload. Required: listId, shortCode, value. Optional: parentId or parentCode (mutually exclusive). Note: Concur rejects shortCode/value containing hyphens. |
#### Output [#output-5]
| Parameter | Type | Description |
| --------------- | ------- | ------------------------------------------------ |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Created list item |
| ↳ `id` | string | List item UUID |
| ↳ `listId` | string | UUID of the list that contains the list item |
| ↳ `code` | string | Long code format for the item |
| ↳ `shortCode` | string | Short code identifier |
| ↳ `value` | string | Display value of the item |
| ↳ `parentId` | string | Parent item UUID (omitted for first-level items) |
| ↳ `level` | number | Hierarchy level (1 for root items) |
| ↳ `isDeleted` | boolean | Deletion status across all containing lists |
| ↳ `lists` | array | Lists containing this item |
| ↳ `id` | string | List UUID |
| ↳ `hasChildren` | boolean | Whether this item has children in the list |
### SAP Concur Create Purchase Request [#sap-concur-create-purchase-request]
Create a purchase request (POST /purchaserequest/v4/purchaserequests).
#### Input [#input-6]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `body` | json | Yes | Purchase request payload. Required: exactly one of userId, userEmail, or userLoginId; currencyCode (ISO 4217); and lineItems\[]. Each line item requires purchaseType (GOODS or SERVICES), vendorCode, vendorAddressCode, description, quantity, and unitPrice. |
#### Output [#output-6]
| Parameter | Type | Description |
| ---------------- | ------ | -------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Created purchase request payload |
| ↳ `id` | string | Identifier of the created purchase request |
| ↳ `uri` | string | Resource URI for the created purchase request |
| ↳ `errors` | array | Validation or processing errors returned by Concur |
| ↳ `errorCode` | string | Error code |
| ↳ `errorMessage` | string | Error message |
| ↳ `dataPath` | string | Path to the request data which has the error |
### SAP Concur Create Quick Expense [#sap-concur-create-quick-expense]
Create a quick expense (POST /quickexpense/v4/users/\{userId}/context/\{contextType}/quickexpenses). TRAVELER is the only supported context type.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userId` | string | Yes | Concur user UUID who owns the quick expense |
| `contextType` | string | Yes | Access context: must be TRAVELER |
| `body` | json | Yes | Quick expense payload. Required: expenseTypeId, transactionAmount \{currencyCode, value}, transactionDate (YYYY-MM-DD). Optional: comment, entryDetails, location \{city, countryCode, countrySubDivisionCode, id, name}, paymentTypeId (CASHX \| CPAID \| PENDC), vendor. |
#### Output [#output-7]
| Parameter | Type | Description |
| --------------------- | ------ | ------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Created quick expense response (HTTP 201 Created) |
| ↳ `quickExpenseIdUri` | string | URI of the created quick expense resource |
### SAP Concur Create Quick Expense With Image [#sap-concur-create-quick-expense-with-image]
Create a quick expense with an attached image (POST /quickexpense/v4/users/\{userId}/context/\{contextType}/quickexpenses/image).
#### Input [#input-8]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userId` | string | Yes | Concur user UUID |
| `contextType` | string | Yes | Access context: must be TRAVELER |
| `receipt` | json | Yes | Receipt image (UserFile). Allowed: PNG, PDF, TIFF, JPEG. Maximum size 50 MB |
| `body` | json | Yes | Quick expense payload. Required: expenseTypeId, transactionAmount \{currencyCode, value}, transactionDate (YYYY-MM-DD). Optional: comment, entryDetails, location \{city, countryCode, countrySubDivisionCode, id, name}, paymentTypeId (CASHX \| CPAID \| PENDC), vendor. |
#### Output [#output-8]
| Parameter | Type | Description |
| --------------------- | ------ | --------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Created quick expense response (HTTP 201 with attached receipt image) |
| ↳ `quickExpenseIdUri` | string | URI of the created quick expense resource |
### SAP Concur Create Report Comment [#sap-concur-create-report-comment]
Create a comment on a report (POST /expensereports/v4/users/\{userId}/context/\{contextType}/reports/\{reportId}/comments).
#### Input [#input-9]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userId` | string | Yes | Concur user UUID |
| `contextType` | string | Yes | Access context: TRAVELER, MANAGER, or PROXY |
| `reportId` | string | Yes | Expense report ID |
| `comment` | string | Yes | Comment text to add |
#### Output [#output-9]
| Parameter | Type | Description |
| --------- | ------ | -------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Created comment response (Concur returns 201 Created with URI) |
| ↳ `uri` | string | Resource URI of the created comment |
### SAP Concur Create Travel Request [#sap-concur-create-travel-request]
Create a travel request (POST /travelrequest/v4/requests).
#### Input [#input-10]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userId` | string | No | Concur user UUID of the Request owner — required when using the default `client_credentials` (company) grant; omitting it returns 400 `missingRequiredParam`. |
| `body` | json | Yes | Travel request payload. Supported fields: name, businessPurpose, startDate/endDate (YYYY-MM-DD), startTime/endTime (HH:mm), mainDestination (\{ city, countryCode, countrySubDivisionCode, name }), policy (\{ id }), and custom1-custom20 (\{ value } or \{ code, value }). An id field is not allowed. |
#### Output [#output-10]
| Parameter | Type | Description |
| -------------------------- | ------- | --------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Created travel request payload |
| ↳ `id` | string | Travel request UUID |
| ↳ `href` | string | Resource hyperlink |
| ↳ `requestId` | string | Public-facing request ID (4-6 alphanumeric characters) |
| ↳ `name` | string | Request name |
| ↳ `businessPurpose` | string | Business purpose |
| ↳ `comment` | string | Last attached comment |
| ↳ `creationDate` | string | Creation timestamp |
| ↳ `lastModified` | string | Last modification timestamp |
| ↳ `submitDate` | string | Last submission timestamp |
| ↳ `startDate` | string | Trip start date (ISO 8601) |
| ↳ `endDate` | string | Trip end date (ISO 8601) |
| ↳ `startTime` | string | Trip start time (HH:mm) |
| ↳ `endTime` | string | Trip end time (HH:mm) |
| ↳ `approved` | boolean | Whether the request is approved |
| ↳ `pendingApproval` | boolean | Pending approval flag |
| ↳ `closed` | boolean | Closed flag |
| ↳ `everSentBack` | boolean | Ever-sent-back flag |
| ↳ `canceledPostApproval` | boolean | Canceled after approval flag |
| ↳ `approvalStatus` | json | Approval status |
| ↳ `code` | string | Status code (NOT\_SUBMITTED, SUBMITTED, APPROVED, CANCELED, SENTBACK) |
| ↳ `name` | string | Localized status name |
| ↳ `owner` | json | Travel request owner |
| ↳ `id` | string | User UUID |
| ↳ `firstName` | string | Owner first name |
| ↳ `lastName` | string | Owner last name |
| ↳ `approver` | json | Approver assigned to the request |
| ↳ `id` | string | User UUID |
| ↳ `firstName` | string | Approver first name |
| ↳ `lastName` | string | Approver last name |
| ↳ `policy` | json | Resource link to the applicable policy |
| ↳ `id` | string | Policy ID |
| ↳ `href` | string | Policy hyperlink |
| ↳ `type` | json | Request type |
| ↳ `code` | string | Request type code |
| ↳ `label` | string | Request type label |
| ↳ `mainDestination` | json | Main destination of the trip |
| ↳ `city` | string | City |
| ↳ `countryCode` | string | ISO country code |
| ↳ `countrySubDivisionCode` | string | ISO country sub-division code |
| ↳ `name` | string | Destination name |
| ↳ `totalApprovedAmount` | json | Total approved amount |
| ↳ `value` | number | Amount value |
| ↳ `currency` | string | Currency code |
| ↳ `totalPostedAmount` | json | Total posted amount |
| ↳ `value` | number | Amount value |
| ↳ `currency` | string | Currency code |
| ↳ `totalRemainingAmount` | json | Total remaining amount |
| ↳ `value` | number | Amount value |
| ↳ `currency` | string | Currency code |
| ↳ `operations` | array | Available workflow actions |
| ↳ `rel` | string | Operation name |
| ↳ `href` | string | Operation URL |
| ↳ `expenses` | array | Expected expenses attached to the request |
| ↳ `highestExceptionLevel` | string | Highest exception level (NONE, WARNING, ERROR) |
| ↳ `travelAgency` | json | Travel agency reference |
| ↳ `id` | string | Agency identifier |
| ↳ `href` | string | Agency URL |
| ↳ `template` | string | Template URL |
| ↳ `custom1` | json | Custom field 1 |
| ↳ `custom2` | json | Custom field 2 |
| ↳ `custom3` | json | Custom field 3 |
| ↳ `custom4` | json | Custom field 4 |
| ↳ `custom5` | json | Custom field 5 |
| ↳ `custom6` | json | Custom field 6 |
| ↳ `custom7` | json | Custom field 7 |
| ↳ `custom8` | json | Custom field 8 |
| ↳ `custom9` | json | Custom field 9 |
| ↳ `custom10` | json | Custom field 10 |
| ↳ `custom11` | json | Custom field 11 |
| ↳ `custom12` | json | Custom field 12 |
| ↳ `custom13` | json | Custom field 13 |
| ↳ `custom14` | json | Custom field 14 |
| ↳ `custom15` | json | Custom field 15 |
| ↳ `custom16` | json | Custom field 16 |
| ↳ `custom17` | json | Custom field 17 |
| ↳ `custom18` | json | Custom field 18 |
| ↳ `custom19` | json | Custom field 19 |
| ↳ `custom20` | json | Custom field 20 |
### SAP Concur Create User [#sap-concur-create-user]
Create a new user identity (POST /profile/identity/v4.1/Users).
#### Input [#input-11]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `body` | json | Yes | SCIM User payload. Required: schemas (include both "urn:ietf:params:scim:schemas:core:2.0:User" and "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"), userName, name.familyName, name.givenName, emails\[].value, and companyId — which is required and immutable and must be set inside the "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" block, not at the top level. Optional: active, displayName, timezone, and other SCIM User attributes. |
#### Output [#output-11]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Created SCIM User payload |
### SAP Concur Delete Expected Expense [#sap-concur-delete-expected-expense]
Delete an expected expense (DELETE /travelrequest/v4/expenses/\{expenseUuid}).
#### Input [#input-12]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `expenseUuid` | string | Yes | Expected expense UUID to delete |
| `userId` | string | No | User UUID acting on the request (required when using a Company JWT, optional otherwise) |
#### Output [#output-12]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------------ |
| `status` | number | HTTP status code returned by Concur |
| `data` | boolean | true when the expected expense was deleted |
### SAP Concur Delete Expense [#sap-concur-delete-expense]
Delete an expense (DELETE /expensereports/v4/reports/\{reportId}/expenses/\{expenseId}).
#### Input [#input-13]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `reportId` | string | Yes | Expense report ID |
| `expenseId` | string | Yes | Expense ID to delete |
#### Output [#output-13]
| Parameter | Type | Description |
| --------- | ------ | --------------------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Empty body on success (HTTP 204 No Content). Error details when status is non-2xx |
### SAP Concur Delete Expense Report [#sap-concur-delete-expense-report]
Delete an expense report (DELETE /expensereports/v4/reports/\{reportId}).
#### Input [#input-14]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `reportId` | string | Yes | Expense report ID to delete |
#### Output [#output-14]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Empty (204 No Content) |
### SAP Concur Delete List Item [#sap-concur-delete-list-item]
Delete a list item from all lists that contain it (DELETE /list/v4/items/\{itemId}). This is not scoped to a single list, and all children of that list item are also deleted.
#### Input [#input-15]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `itemId` | string | Yes | List item UUID |
#### Output [#output-15]
| Parameter | Type | Description |
| --------- | ------ | --------------------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Empty body on success (HTTP 204 No Content). Error details when status is non-2xx |
### SAP Concur Delete Travel Request [#sap-concur-delete-travel-request]
Delete a travel request (DELETE /travelrequest/v4/requests/\{requestUuid}).
#### Input [#input-16]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `requestUuid` | string | Yes | Travel request UUID to delete |
| `userId` | string | No | Concur user UUID of the Request owner — required when using the default `client_credentials` (company) grant; omitting it returns 400 `missingRequiredParam`. |
#### Output [#output-16]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------------------------ |
| `status` | number | HTTP status code returned by Concur |
| `data` | boolean | Concur delete response body — literally true on 200 OK |
### SAP Concur Delete User [#sap-concur-delete-user]
Hard delete a user identity (DELETE /profile/identity/v4.1/Users/\{id}). Not recommended: SAP restricts hard delete to users with no transaction history and governs it by the Concur Data Retention policy. To deactivate a user instead, use SAP Concur Update User with a PATCH replacing active with false.
#### Input [#input-17]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userUuid` | string | Yes | User UUID to delete |
#### Output [#output-17]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Deletion response — empty body on HTTP 204 No Content |
### SAP Concur Get Allocation [#sap-concur-get-allocation]
Get a single allocation (GET /expensereports/v4/users/\{userId}/context/\{contextType}/reports/\{reportId}/allocations/\{allocationId}).
#### Input [#input-18]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userId` | string | Yes | Concur user UUID |
| `contextType` | string | Yes | Access context: TRAVELER or PROXY |
| `reportId` | string | Yes | Expense report ID |
| `allocationId` | string | Yes | Allocation ID |
#### Output [#output-18]
| Parameter | Type | Description |
| ------------------------ | ------- | ------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Allocation detail payload |
| ↳ `allocationId` | string | Unique allocation identifier |
| ↳ `accountCode` | string | Ledger account code |
| ↳ `overLimitAccountCode` | string | Account code applied to amounts over the per-allocation limit |
| ↳ `percentage` | number | Allocation percentage |
| ↳ `allocationAmount` | json | Allocation amount (value, currencyCode) |
| ↳ `value` | number | Amount value |
| ↳ `currencyCode` | string | ISO 4217 currency code |
| ↳ `approvedAmount` | json | Pro-rated approved amount (value, currencyCode) |
| ↳ `value` | number | Amount value |
| ↳ `currencyCode` | string | ISO 4217 currency code |
| ↳ `claimedAmount` | json | Requested reimbursement amount (value, currencyCode) |
| ↳ `value` | number | Amount value |
| ↳ `currencyCode` | string | ISO 4217 currency code |
| ↳ `customData` | array | Custom field values (id, value, isValid) |
| ↳ `expenseId` | string | Associated expense identifier |
| ↳ `isSystemAllocation` | boolean | True when system-managed |
| ↳ `isPercentEdited` | boolean | True when the percentage was manually edited |
### SAP Concur Get Budget [#sap-concur-get-budget]
Get a budget item header by ID (GET /budget/v4/budgetItemHeader/\{id}).
#### Input [#input-19]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `budgetId` | string | Yes | The budget item header's key field (uuid) |
#### Output [#output-19]
| Parameter | Type | Description |
| ------------------------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Budget header detail payload |
| ↳ `id` | string | Budget item header ID |
| ↳ `name` | string | Admin-facing budget name |
| ↳ `description` | string | User-friendly display name |
| ↳ `budgetItemStatusType` | string | Status: OPEN, CLOSED, or REMOVED |
| ↳ `budgetType` | string | Type: PERSONAL\_USE, BUDGET, RESTRICTED, or TEAM |
| ↳ `periodType` | string | Period type: YEARLY, QUARTERLY, MONTHLY, or DATE\_RANGE |
| ↳ `currencyCode` | string | ISO 4217 currency code |
| ↳ `isTest` | boolean | Test budget flag |
| ↳ `active` | boolean | Display availability flag |
| ↳ `owned` | boolean | Caller ownership flag |
| ↳ `annualBudget` | number | Total annual budget amount |
| ↳ `createdDate` | string | UTC creation timestamp |
| ↳ `lastModifiedDate` | string | UTC modification timestamp |
| ↳ `fiscalYear` | json | Fiscal year reference (id, name, startDate, endDate, status) |
| ↳ `budgetAmounts` | json | Aggregate spend amounts (pendingAmount, spendAmount, unExpensedAmount, availableAmount, adjustedBudgetAmount, consumedPercent, threshold) |
| ↳ `owner` | json | Owner user (externalUserCUUID, employeeUuid, email, employeeId, name) |
| ↳ `budgetManagers` | array | Manager user objects |
| ↳ `budgetApprovers` | array | Approver user objects |
| ↳ `budgetViewers` | array | Viewer user objects |
| ↳ `budgetTeamMembers` | array | Team member entries (budgetPerson, startDate, endDate, active, status) |
| ↳ `budgetCategory` | json | Linked category (id, name, description, statusType) |
| ↳ `costObjects` | array | Tracking field values (fieldDefinitionId, code, value, operator) |
| ↳ `budgetItemDetails` | array | Per-period detail entries (id, currencyCode, amount, budgetItemDetailStatusType, fiscalPeriod, budgetAmounts) |
| ↳ `dateRange` | json | Date range for DATE\_RANGE budgets (startDate, endDate) |
### SAP Concur Get Cash Advance [#sap-concur-get-cash-advance]
Get a cash advance (GET /cashadvance/v4.1/cashadvances/\{cashAdvanceId}).
#### Input [#input-20]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `cashAdvanceId` | string | Yes | Cash advance ID |
#### Output [#output-20]
| Parameter | Type | Description |
| ------------------------- | ------- | ---------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Cash advance detail payload |
| ↳ `cashAdvanceId` | string | Unique identifier of the cash advance |
| ↳ `name` | string | Cash advance name |
| ↳ `purpose` | string | Purpose for the cash advance |
| ↳ `comment` | string | Comment recorded on the cash advance |
| ↳ `accountCode` | string | Account code linked to the employee |
| ↳ `requestDate` | string | Datetime the cash advance was requested (UTC, YYYY-MM-DD hh:mm:ss) |
| ↳ `issuedDate` | string | Datetime the cash advance was issued (UTC, YYYY-MM-DD hh:mm:ss) |
| ↳ `lastModifiedDate` | string | Datetime the cash advance was last modified (UTC, YYYY-MM-DD hh:mm:ss) |
| ↳ `hasReceipts` | boolean | Whether the cash advance has receipts |
| ↳ `reimbursementCurrency` | string | Reimbursement currency (3-letter ISO 4217 currency code) |
| ↳ `amountRequested` | json | Amount requested for the cash advance |
| ↳ `amount` | string | Requested amount value |
| ↳ `currency` | string | 3-letter ISO 4217 currency code |
| ↳ `availableBalance` | json | Unsubmitted balance for the cash advance |
| ↳ `amount` | string | Balance amount |
| ↳ `currency` | string | 3-letter ISO 4217 currency code |
| ↳ `exchangeRate` | json | Exchange rate that applies to the cash advance |
| ↳ `value` | string | Exchange rate value |
| ↳ `operation` | string | Exchange rate operation (MULTIPLY) |
| ↳ `approvalStatus` | json | Approval status of the cash advance |
| ↳ `code` | string | Status code |
| ↳ `name` | string | Status display name |
| ↳ `paymentType` | json | Payment type for the cash advance |
| ↳ `paymentCode` | string | Payment type code |
| ↳ `description` | string | Payment method description |
### SAP Concur Upload Exchange Rates [#sap-concur-upload-exchange-rates]
Bulk upload up to 100 custom exchange rates (POST /exchangerate/v4/rates). Body contains a currency\_sets array, each with from\_crn\_code, to\_crn\_code, start\_date (YYYY-MM-DD), and rate.
#### Input [#input-21]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `body` | json | Yes | Bulk upload body: \{ currency\_sets: \[\{ from\_crn\_code, to\_crn\_code, start\_date: "YYYY-MM-DD", rate }] } (max 100 entries) |
#### Output [#output-21]
| Parameter | Type | Description |
| ----------------- | ------ | ----------------------------------------------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Bulk-upload exchange rate response (Exchange Rate v4) |
| ↳ `overallStatus` | string | Overall result status for the bulk upload (e.g. SUCCESS, FAILURE) |
| ↳ `message` | string | Top-level result message |
| ↳ `currencySets` | json | Per-row results: array of \{ from\_crn\_code, to\_crn\_code, start\_date, rate, statusCode, statusMessage } |
### SAP Concur Get Expected Expense [#sap-concur-get-expected-expense]
Get an expected expense (GET /travelrequest/v4/expenses/\{expenseUuid}).
#### Input [#input-22]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `expenseUuid` | string | Yes | Expected expense UUID |
| `userId` | string | No | User UUID acting on the request (optional) |
#### Output [#output-22]
| Parameter | Type | Description |
| --------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Expected expense payload |
| ↳ `id` | string | Expected expense identifier |
| ↳ `href` | string | Self-link |
| ↳ `expenseType` | json | Expense type \{id, name} |
| ↳ `transactionDate` | string | Transaction date |
| ↳ `transactionAmount` | json | Transaction amount \{value, currency} |
| ↳ `postedAmount` | json | Posted amount \{value, currency} |
| ↳ `approvedAmount` | json | Approved amount \{value, currency} |
| ↳ `remainingAmount` | json | Remaining amount on the expected expense |
| ↳ `businessPurpose` | string | Business purpose of the expense |
| ↳ `location` | json | Location \{id, name, city, countryCode, countrySubDivisionCode, iataCode, locationType} |
| ↳ `exchangeRate` | json | Exchange rate \{value, operation} |
| ↳ `allocations` | json | Budget allocations array |
| ↳ `tripData` | json | Trip data \{agencyBooked, selfBooked, tripType (ONE\_WAY\|ROUND\_TRIP), legs\[\{id, returnLeg, startDate, startTime, startLocationDetail, startLocation, endLocation, class \{code,value}, travelExceptionReasonCodes}], segmentType \{category, code}} |
| ↳ `parentRequest` | json | Parent travel request resource link \{href, id} |
| ↳ `comments` | json | Comments sub-resource link \{href, id} |
### SAP Concur Get Expense [#sap-concur-get-expense]
Get a single expense (GET /expensereports/v4/users/\{userId}/context/\{contextType}/reports/\{reportId}/expenses/\{expenseId}).
#### Input [#input-23]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userId` | string | Yes | Concur user UUID |
| `contextType` | string | Yes | Access context: TRAVELER, MANAGER, or PROXY |
| `reportId` | string | Yes | Expense report ID |
| `expenseId` | string | Yes | Expense ID |
#### Output [#output-23]
| Parameter | Type | Description |
| ----------------------------------- | ------- | ---------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Expense detail (ReportExpenseDetail) payload |
| ↳ `expenseId` | string | Expense identifier |
| ↳ `allocationSetId` | string | Identifier of the associated allocation set |
| ↳ `allocationState` | string | FULLY\_ALLOCATED, NOT\_ALLOCATED, or PARTIALLY\_ALLOCATED |
| ↳ `expenseType` | json | Expense type \{id, name, code, isDeleted} |
| ↳ `paymentType` | json | Payment type \{id, name, code} |
| ↳ `transactionDate` | string | Transaction date (YYYY-MM-DD) |
| ↳ `budgetAccrualDate` | string | Budget accrual date |
| ↳ `transactionAmount` | json | Transaction amount \{currencyCode, value} |
| ↳ `postedAmount` | json | Posted amount in report currency \{currencyCode, value} |
| ↳ `claimedAmount` | json | Non-personal claimed amount \{currencyCode, value} |
| ↳ `approvedAmount` | json | Approved amount \{currencyCode, value} |
| ↳ `approverAdjustedAmount` | json | Total amount adjusted by the approver |
| ↳ `exchangeRate` | json | Exchange rate \{value, operation} |
| ↳ `vendor` | json | Vendor info \{id, name, description} |
| ↳ `location` | json | Location \{id, name, city, countryCode, countrySubDivisionCode} |
| ↳ `businessPurpose` | string | Business purpose |
| ↳ `isExpenseBillable` | boolean | Billable flag |
| ↳ `isPersonalExpense` | boolean | Personal-expense flag |
| ↳ `isExpenseRejected` | boolean | Whether the expense was rejected |
| ↳ `isExcludedFromCashAdvanceByUser` | boolean | Whether the user excluded this from cash advance |
| ↳ `isImageRequired` | boolean | Whether a receipt image is required |
| ↳ `isPaperReceiptRequired` | boolean | Whether a paper receipt is required |
| ↳ `isPaperReceiptReceived` | boolean | Whether a paper receipt was received |
| ↳ `isAutoCreated` | boolean | Auto-creation indicator |
| ↳ `hasBlockingExceptions` | boolean | Whether submission-blocking exceptions exist |
| ↳ `hasExceptions` | boolean | Whether any exceptions exist |
| ↳ `hasMissingReceiptDeclaration` | boolean | Affidavit declaration status |
| ↳ `attendeeCount` | number | Number of attendees |
| ↳ `receiptImageId` | string | Identifier of the attached receipt image |
| ↳ `ereceiptImageId` | string | eReceipt image identifier |
| ↳ `receiptType` | json | Receipt \{id, status} |
| ↳ `imageCertificationStatus` | string | Receipt image processing/certification status |
| ↳ `ticketNumber` | string | Associated travel ticket number |
| ↳ `travel` | json | Travel data (airline, car rental, hotel, etc.) |
| ↳ `travelAllowance` | json | Travel allowance association data |
| ↳ `mileage` | json | Mileage details (odometerStart, odometerEnd, totalDistance, ...) |
| ↳ `expenseTaxSummary` | json | Aggregated tax data for the expense |
| ↳ `taxRateLocation` | string | Tax rate location: FOREIGN, HOME, or OUT\_OF\_PROVINCE |
| ↳ `fuelTypeListItem` | json | Fuel type list item \{id, value, isValid} |
| ↳ `merchantTaxId` | string | Merchant tax identifier |
| ↳ `customData` | json | Array of custom field values \[\{id, value, isValid}] |
| ↳ `parentExpenseId` | string | Identifier of the parent expense (for itemizations) |
| ↳ `authorizationRequestExpenseId` | string | Linked travel-request expected expense identifier |
| ↳ `jptRouteId` | string | Japan Public Transport route id |
| ↳ `invoiceId` | string | Invoice identifier |
| ↳ `governmentInvoiceId` | string | Government invoice identifier |
| ↳ `lastModifiedDate` | string | Last modified timestamp |
| ↳ `expenseSourceIdentifiers` | json | Source reference identifiers |
| ↳ `links` | array | HATEOAS links for the expense |
### SAP Concur Get Expense Report [#sap-concur-get-expense-report]
Retrieve a single expense report header by id via Expense Report v4 (/expensereports/v4/users/\{userId}/context/\{contextType}/reports/\{reportId}).
#### Input [#input-24]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userId` | string | Yes | Concur user UUID who owns the report |
| `contextType` | string | Yes | Access context: TRAVELER (own report), MANAGER (report under approval), PROCESSOR, or PROXY |
| `reportId` | string | Yes | Expense report ID |
#### Output [#output-24]
| Parameter | Type | Description |
| --------------------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Concur expense report header (ReportDetails) |
| ↳ `reportId` | string | Unique report identifier |
| ↳ `reportNumber` | string | Report number |
| ↳ `reportFormId` | string | Report form ID |
| ↳ `policyId` | string | Policy ID applied to the report |
| ↳ `policy` | string | Policy name |
| ↳ `name` | string | Report name |
| ↳ `currencyCode` | string | ISO currency code |
| ↳ `currency` | string | Currency name |
| ↳ `approvalStatus` | string | Approval status name |
| ↳ `approvalStatusId` | string | Approval status identifier |
| ↳ `paymentStatus` | string | Payment status name |
| ↳ `paymentStatusId` | string | Payment status identifier |
| ↳ `ledger` | string | Ledger name |
| ↳ `ledgerId` | string | Ledger identifier |
| ↳ `userId` | string | Owner user UUID |
| ↳ `reportDate` | string | Report date (YYYY-MM-DD) |
| ↳ `creationDate` | string | Creation timestamp (ISO 8601) |
| ↳ `submitDate` | string | Submit timestamp (ISO 8601) or null |
| ↳ `startDate` | string | Report period start (YYYY-MM-DD) |
| ↳ `endDate` | string | Report period end (YYYY-MM-DD) |
| ↳ `approvedAmount` | json | Amount approved \{ value, currencyCode } |
| ↳ `claimedAmount` | json | Amount claimed \{ value, currencyCode } |
| ↳ `reportTotal` | json | Report total \{ value, currencyCode } |
| ↳ `amountDueEmployee` | json | Amount due employee |
| ↳ `amountDueCompany` | json | Amount due company |
| ↳ `amountDueCompanyCard` | json | Amount due company card |
| ↳ `amountCompanyPaid` | json | Amount company has paid |
| ↳ `personalAmount` | json | Personal portion of the report |
| ↳ `paymentConfirmedAmount` | json | Confirmed payment amount |
| ↳ `amountNotApproved` | json | Amount not approved |
| ↳ `totalAmountPaidEmployee` | json | Total amount paid to employee |
| ↳ `concurAuditStatus` | string | Concur audit status |
| ↳ `isFinancialIntegrationEnabled` | boolean | Whether financial integration is enabled |
| ↳ `isSubmitted` | boolean | Whether the report has been submitted |
| ↳ `isSentBack` | boolean | Whether the report has been sent back |
| ↳ `isReopened` | boolean | Whether the report was reopened |
| ↳ `isReportEverSentBack` | boolean | Whether the report was ever sent back |
| ↳ `canRecall` | boolean | Whether the report can be recalled |
| ↳ `canAddExpense` | boolean | Whether expenses can be added to the report |
| ↳ `canReopen` | boolean | Whether the report can be reopened |
| ↳ `isReceiptImageRequired` | boolean | Whether receipt images are required |
| ↳ `isReceiptImageAvailable` | boolean | Whether receipt images are available |
| ↳ `isPaperReceiptsReceived` | boolean | Whether paper receipts were received |
| ↳ `isPendingDelegatorReview` | boolean | Whether pending delegator review |
| ↳ `isFundsAndGrantsIntegrationEligible` | boolean | Funds and grants eligibility |
| ↳ `hasReceivedCashAdvanceReturns` | boolean | Whether cash advance returns received |
| ↳ `analyticsGroupId` | string | Analytics group ID |
| ↳ `hierarchyNodeId` | string | Hierarchy node ID |
| ↳ `allocationFormId` | string | Allocation form ID |
| ↳ `countryCode` | string | ISO country code |
| ↳ `countrySubDivisionCode` | string | ISO country subdivision code |
| ↳ `country` | string | Country name |
| ↳ `businessPurpose` | string | Business purpose |
| ↳ `comment` | string | Header-level comment on the report |
| ↳ `reportVersion` | number | Report version number |
| ↳ `reportType` | string | Report type identifier |
| ↳ `cardProgramStatementPeriodId` | string | Card program statement period ID |
| ↳ `defaultFieldAccess` | string | Default field access (HD/RO/RW) |
| ↳ `imageStatus` | string | Image status |
| ↳ `receiptContainerId` | string | Receipt container ID |
| ↳ `receiptStatus` | string | Receipt status |
| ↳ `sponsorId` | string | Sponsor ID |
| ↳ `submitterId` | string | Submitter user ID |
| ↳ `taxConfigId` | string | Tax configuration ID |
| ↳ `redirectFund` | json | Redirect fund object \{ amount, creditCardId } |
| ↳ `customData` | array | Array of custom data \{ id, value, isValid }. Responses may additionally carry a response-only listItemUrl, which can be null |
| ↳ `employee` | json | Employee object \{ employeeId, employeeUuid } |
| ↳ `links` | array | HATEOAS links |
### SAP Concur Get Expense Itemizations [#sap-concur-get-expense-itemizations]
Get expense itemizations (GET /expensereports/v4/users/\{userId}/context/\{contextType}/reports/\{reportId}/expenses/\{expenseId}/itemizations).
#### Input [#input-25]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userId` | string | Yes | Concur user UUID |
| `contextType` | string | Yes | Access context: TRAVELER (the only value the endpoint supports) |
| `reportId` | string | Yes | Expense report ID |
| `expenseId` | string | Yes | Expense ID |
#### Output [#output-25]
| Parameter | Type | Description |
| -------------------------- | ------- | ----------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | array | Array of itemizations (ReportExpenseSummary\[]) |
| ↳ `expenseId` | string | Itemization expense id |
| ↳ `expenseType` | json | Expense type \{id, name, code, isDeleted} |
| ↳ `transactionDate` | string | Transaction date (YYYY-MM-DD) |
| ↳ `transactionAmount` | json | Transaction amount |
| ↳ `postedAmount` | json | Posted amount |
| ↳ `approvedAmount` | json | Approved amount |
| ↳ `claimedAmount` | json | Claimed amount |
| ↳ `approverAdjustedAmount` | json | Approver-adjusted amount |
| ↳ `paymentType` | json | Payment type |
| ↳ `vendor` | json | Vendor info |
| ↳ `location` | json | Location info |
| ↳ `allocationState` | string | Allocation state |
| ↳ `allocationSetId` | string | Allocation set identifier |
| ↳ `attendeeCount` | number | Attendee count |
| ↳ `businessPurpose` | string | Business purpose |
| ↳ `hasBlockingExceptions` | boolean | Has blocking exceptions |
| ↳ `hasExceptions` | boolean | Has exceptions |
| ↳ `isPersonalExpense` | boolean | Personal expense |
| ↳ `links` | array | HATEOAS links |
### SAP Concur Get Trip [#sap-concur-get-trip]
Get a single trip/itinerary (GET /api/travel/trip/v1.1/\{tripID}).
#### Input [#input-26]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `tripId` | string | Yes | Trip ID |
| `useridType` | string | No | User identifier type. The only value documented for Trips v1.1 is "login" (the value is the user login id); xmlsyncid and uuid are Travel Profile v2 identifier types and are not documented for this endpoint. |
| `useridValue` | string | No | User identifier value (paired with useridType) |
| `systemFormat` | string | No | Optional response format. The only supported value is "Tripit", which returns a completely different XML document rooted at \\ instead of the standard itinerary document. |
#### Output [#output-26]
| Parameter | Type | Description |
| --------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | string | Raw XML trip document returned by Concur (Trips v1.1 emits application/xml only, so this is a string and not a parsed object). The document is rooted at \ and contains id, ItinLocator, ClientLocator, ItinSourceName, BookedVia, TripName, Status, Description, Comments, CancelComments, ProjectName, StartDateUtc, EndDateUtc, StartDateLocal, EndDateLocal, DateCreatedUtc, DateModifiedUtc, DateBookedLocal, BookedByFirstName, BookedByLastName, IsPersonal, RuleViolations, and Bookings > Booking. When systemFormat=Tripit is passed the document is rooted at \\ instead. |
### SAP Concur Get List [#sap-concur-get-list]
Get a single custom list (GET /list/v4/lists/\{listId}).
#### Input [#input-27]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `listId` | string | Yes | List ID |
#### Output [#output-27]
| Parameter | Type | Description |
| --------------------- | ------- | ---------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | List detail payload |
| ↳ `id` | string | Unique identifier (UUID) of the list |
| ↳ `value` | string | Name of the list |
| ↳ `levelCount` | number | Number of levels in the list |
| ↳ `searchCriteria` | string | Search attribute (TEXT or CODE) |
| ↳ `displayFormat` | string | Display order ((CODE) TEXT or TEXT (CODE)) |
| ↳ `category` | json | List category |
| ↳ `id` | string | Category UUID |
| ↳ `type` | string | Category type |
| ↳ `isReadOnly` | boolean | Whether the list is read-only |
| ↳ `isDeleted` | boolean | Whether the list has been deleted |
| ↳ `managedBy` | string | Identifier of the managing application or service |
| ↳ `externalThreshold` | number | Threshold from where the level starts being external |
### SAP Concur Get List Item [#sap-concur-get-list-item]
Get a single list item (GET /list/v4/items/\{itemId}).
#### Input [#input-28]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `itemId` | string | Yes | List item ID |
#### Output [#output-28]
| Parameter | Type | Description |
| --------------- | ------- | ------------------------------------------------ |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | List item detail payload |
| ↳ `id` | string | List item UUID |
| ↳ `listId` | string | UUID of the list that contains the list item |
| ↳ `code` | string | Long code format for the item |
| ↳ `shortCode` | string | Short code identifier |
| ↳ `value` | string | Display value of the item |
| ↳ `parentId` | string | Parent item UUID (omitted for first-level items) |
| ↳ `level` | number | Hierarchy level (1 for root items) |
| ↳ `isDeleted` | boolean | Deletion status across all containing lists |
| ↳ `lists` | array | Lists containing this item |
| ↳ `id` | string | List UUID |
| ↳ `hasChildren` | boolean | Whether this item has children in the list |
### SAP Concur Get Purchase Request [#sap-concur-get-purchase-request]
Get a purchase request by ID (GET /purchaserequest/v4/purchaserequests/\{id}).
#### Input [#input-29]
| Parameter | Type | Required | Description |
| ------------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `purchaseRequestId` | string | Yes | Purchase request ID |
#### Output [#output-29]
| Parameter | Type | Description |
| --------------------------------- | ------- | ------------------------------------------ |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Purchase request detail payload |
| ↳ `purchaseRequestId` | string | Unique identifier of the purchase request |
| ↳ `purchaseRequestNumber` | string | Human-readable purchase request number |
| ↳ `purchaseRequestQueueStatus` | string | Queue status of the purchase request |
| ↳ `purchaseRequestWorkflowStatus` | string | Workflow status of the purchase request |
| ↳ `purchaseOrders` | array | Purchase orders generated from the request |
| ↳ `purchaseOrderNumber` | string | Purchase order number |
| ↳ `purchaseRequestExceptions` | array | Exceptions raised on the purchase request |
| ↳ `eventCode` | string | Event code |
| ↳ `exceptionCode` | string | Exception code |
| ↳ `isCleared` | boolean | Whether the exception has been cleared |
| ↳ `prExceptionId` | string | Identifier of the exception record |
| ↳ `message` | string | Exception message |
### SAP Concur Get Receipt [#sap-concur-get-receipt]
Get a single receipt by ID (GET /receipts/v4/\{receiptId}).
#### Input [#input-30]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `receiptId` | string | Yes | Receipt ID |
#### Output [#output-30]
| Parameter | Type | Description |
| -------------------- | ------ | -------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Receipt detail payload |
| ↳ `id` | string | Receipt identifier |
| ↳ `userId` | string | Owning user UUID |
| ↳ `dateTimeReceived` | string | Timestamp when the receipt was received (ISO 8601) |
| ↳ `receipt` | json | Parsed receipt JSON object |
| ↳ `image` | string | Receipt image URL or data reference |
| ↳ `validationSchema` | string | Schema used to validate the receipt |
| ↳ `self` | string | URL to this receipt resource |
| ↳ `template` | string | URL template for receipts |
### SAP Concur Get Receipt Status [#sap-concur-get-receipt-status]
Get receipt processing status (GET /receipts/v4/status/\{receiptId}).
#### Input [#input-31]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `receiptId` | string | Yes | Receipt ID |
#### Output [#output-31]
| Parameter | Type | Description |
| ------------- | ------ | ------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Receipt status payload |
| ↳ `status` | string | Processing status: ACCEPTED, PROCESSING, PROCESSED, or FAILED |
| ↳ `logs` | array | Array of log entries |
| ↳ `logLevel` | string | Log level |
| ↳ `message` | string | Log message |
| ↳ `timestamp` | string | Log timestamp |
### SAP Concur Get Travel Profile [#sap-concur-get-travel-profile]
Get a travel profile (GET /api/travelprofile/v2.0/profile). Returns the calling user by default; pass userid\_type and userid\_value to impersonate.
#### Input [#input-32]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `useridType` | string | No | Identifier type: login, xmlsyncid, or uuid |
| `useridValue` | string | No | Identifier value (login id, xml sync id, or UUID) |
#### Output [#output-32]
| Parameter | Type | Description |
| --------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | string | Raw XML travel profile document returned by Concur (Travel Profile v2 emits application/xml only, per the TravelUserProfile.xsd schema, so this is a string and not a parsed object). The Profile root element contains General, EmergencyContact, Telephones, Addresses, NationalIDs, DriversLicenses, HasNoPassport, Passports, Visas, EmailAddresses, RatePreferences, DiscountCodes, Air, Rail, Car, Hotel, CustomFields, Roles, Sponsors, TSAInfo, UnusedTickets, SouthwestUnusedTickets, and AdvantageMemberships. LoginId is an attribute of the \ element returned by create/update, not a child element; XmlProfileSyncID and ProfileLastModifiedUTC belong to the Travel Profile summaries (ProfileSummary) response, not to this document. |
### SAP Concur Get Travel Request [#sap-concur-get-travel-request]
Get a single travel request (GET /travelrequest/v4/requests/\{requestUuid}).
#### Input [#input-33]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `requestUuid` | string | Yes | Travel request UUID |
| `userId` | string | No | The unique identifier of the user getting the content of the Request. If empty when using a Company token the default system user will be assumed to perform the action. |
#### Output [#output-33]
| Parameter | Type | Description |
| -------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Travel request detail payload |
| ↳ `id` | string | Travel request UUID |
| ↳ `href` | string | Resource hyperlink |
| ↳ `requestId` | string | Public-facing request ID (4-6 alphanumeric characters) |
| ↳ `name` | string | Request name |
| ↳ `businessPurpose` | string | Business purpose |
| ↳ `comment` | string | Last attached comment |
| ↳ `creationDate` | string | Creation timestamp |
| ↳ `lastModified` | string | Last modification timestamp |
| ↳ `submitDate` | string | Last submission timestamp |
| ↳ `authorizedDate` | string | Date when approval was completed |
| ↳ `approvalLimitDate` | string | Required approval deadline |
| ↳ `startDate` | string | Trip start date (ISO 8601) |
| ↳ `endDate` | string | Trip end date (ISO 8601) |
| ↳ `startTime` | string | Trip start time (HH:mm) |
| ↳ `endTime` | string | Trip end time (HH:mm) |
| ↳ `approved` | boolean | Whether the request is approved |
| ↳ `pendingApproval` | boolean | Pending approval flag |
| ↳ `closed` | boolean | Closed flag |
| ↳ `everSentBack` | boolean | Ever-sent-back flag |
| ↳ `canceledPostApproval` | boolean | Canceled after approval flag |
| ↳ `highestExceptionLevel` | string | Highest exception level (WARNING, ERROR, NONE) |
| ↳ `approvalStatus` | json | Approval status |
| ↳ `code` | string | Status code (NOT\_SUBMITTED, SUBMITTED, APPROVED, CANCELED, SENTBACK) |
| ↳ `name` | string | Localized status name |
| ↳ `owner` | json | Travel request owner |
| ↳ `id` | string | User UUID |
| ↳ `firstName` | string | Owner first name |
| ↳ `lastName` | string | Owner last name |
| ↳ `approver` | json | Approver assigned to the request |
| ↳ `id` | string | User UUID |
| ↳ `firstName` | string | Approver first name |
| ↳ `lastName` | string | Approver last name |
| ↳ `policy` | json | Resource link to the applicable policy |
| ↳ `id` | string | Policy ID |
| ↳ `href` | string | Policy hyperlink |
| ↳ `type` | json | Request type |
| ↳ `code` | string | Request type code |
| ↳ `label` | string | Request type label |
| ↳ `mainDestination` | json | Main destination of the trip |
| ↳ `city` | string | City |
| ↳ `countryCode` | string | ISO country code |
| ↳ `countrySubDivisionCode` | string | ISO country sub-division code |
| ↳ `name` | string | Destination name |
| ↳ `totalApprovedAmount` | json | Total approved amount |
| ↳ `value` | number | Amount value |
| ↳ `currency` | string | Currency code |
| ↳ `totalPostedAmount` | json | Total posted amount |
| ↳ `value` | number | Amount value |
| ↳ `currency` | string | Currency code |
| ↳ `totalRemainingAmount` | json | Total remaining amount |
| ↳ `value` | number | Amount value |
| ↳ `currency` | string | Currency code |
| ↳ `expenses` | array | Resource links to expected expenses |
| ↳ `cashAdvances` | json | Resource link to cash advances |
| ↳ `id` | string | Resource ID |
| ↳ `href` | string | Resource hyperlink |
| ↳ `comments` | json | Resource link to comments |
| ↳ `id` | string | Resource ID |
| ↳ `href` | string | Resource hyperlink |
| ↳ `exceptions` | json | Resource link to exceptions |
| ↳ `id` | string | Resource ID |
| ↳ `href` | string | Resource hyperlink |
| ↳ `travelAgency` | json | Resource link to travel agency |
| ↳ `id` | string | Resource ID |
| ↳ `href` | string | Resource hyperlink |
| ↳ `extensionOf` | json | The Request for which this Request is an extension of, or addendum to |
| ↳ `requestId` | string | The public key of the Request (unique per customer) |
| ↳ `id` | string | Unique identifier of the Request |
| ↳ `href` | string | Hyperlink to the resource |
| ↳ `template` | string | Hyperlink template to the resource |
| ↳ `pnr` | string | The value of the pnr provided within the agency proposals by the travel agency |
| ↳ `isParentRequest` | boolean | Indicates whether this Request is a Budget Request |
| ↳ `parentRequestId` | string | Required if a Child Request is created, corresponds to the unique identifier of the Budget Request the Child Request will be linked to |
| ↳ `allocationFormId` | string | The unique identifier of the allocation form |
| ↳ `parentRequest` | json | If the Request is a Child Request, reference to the corresponding Budget Request |
| ↳ `id` | string | Unique identifier of the related object |
| ↳ `href` | string | Hyperlink to the resource |
| ↳ `template` | string | Hyperlink template to the resource |
| ↳ `eventRequest` | json | The parent Event Request to which this child Request is related |
| ↳ `id` | string | Unique identifier of the related object |
| ↳ `href` | string | Hyperlink to the resource |
| ↳ `template` | string | Hyperlink template to the resource |
| ↳ `operations` | array | Available workflow actions |
| ↳ `rel` | string | Operation name |
| ↳ `href` | string | Operation URL |
| ↳ `expensePolicy` | json | Expense policy reference |
| ↳ `id` | string | Policy identifier |
| ↳ `href` | string | Policy URL |
| ↳ `custom1` | json | Custom field 1 |
| ↳ `custom2` | json | Custom field 2 |
| ↳ `custom3` | json | Custom field 3 |
| ↳ `custom4` | json | Custom field 4 |
| ↳ `custom5` | json | Custom field 5 |
| ↳ `custom6` | json | Custom field 6 |
| ↳ `custom7` | json | Custom field 7 |
| ↳ `custom8` | json | Custom field 8 |
| ↳ `custom9` | json | Custom field 9 |
| ↳ `custom10` | json | Custom field 10 |
| ↳ `custom11` | json | Custom field 11 |
| ↳ `custom12` | json | Custom field 12 |
| ↳ `custom13` | json | Custom field 13 |
| ↳ `custom14` | json | Custom field 14 |
| ↳ `custom15` | json | Custom field 15 |
| ↳ `custom16` | json | Custom field 16 |
| ↳ `custom17` | json | Custom field 17 |
| ↳ `custom18` | json | Custom field 18 |
| ↳ `custom19` | json | Custom field 19 |
| ↳ `custom20` | json | Custom field 20 |
### SAP Concur Get User [#sap-concur-get-user]
Get a single user by UUID (GET /profile/identity/v4.1/Users/\{id}).
#### Input [#input-34]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userUuid` | string | Yes | User UUID |
| `attributes` | string | No | Comma-separated SCIM attributes to include in the response |
| `excludedAttributes` | string | No | Comma-separated SCIM attributes to exclude from the response |
#### Output [#output-34]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | SCIM User identity payload |
### SAP Concur Issue Cash Advance [#sap-concur-issue-cash-advance]
Issue a cash advance (POST /cashadvance/v4.1/cashadvances/\{cashAdvanceId}/issue).
#### Input [#input-35]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `cashAdvanceId` | string | Yes | Cash advance ID to issue |
| `body` | json | No | Optional request body. All documented fields are optional: accountCode, comment, and exchangeRate. |
#### Output [#output-35]
| Parameter | Type | Description |
| -------------- | ------ | --------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Issue cash advance result payload |
| ↳ `issuedDate` | string | Date the cash advance was issued (YYYY-MM-DD) |
| ↳ `status` | json | Cash advance status after the issue action |
| ↳ `code` | string | Status code |
| ↳ `name` | string | Status display name |
### SAP Concur List Allocations [#sap-concur-list-allocations]
List allocations on an expense (GET /expensereports/v4/users/\{userId}/context/\{contextType}/reports/\{reportId}/expenses/\{expenseId}/allocations).
#### Input [#input-36]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userId` | string | Yes | Concur user UUID |
| `contextType` | string | Yes | Access context: TRAVELER or MANAGER |
| `reportId` | string | Yes | Expense report ID |
| `expenseId` | string | Yes | Expense ID |
#### Output [#output-36]
| Parameter | Type | Description |
| ------------------------ | ------- | -------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | array | Bare array of allocation objects (ReportAllocationResponse\[]) |
| ↳ `allocationId` | string | Unique allocation identifier |
| ↳ `accountCode` | string | Ledger account code |
| ↳ `overLimitAccountCode` | string | Account code applied to amounts over the per-allocation limit |
| ↳ `percentage` | number | Allocation percentage |
| ↳ `allocationAmount` | json | Allocation amount (value, currencyCode) |
| ↳ `value` | number | Amount value |
| ↳ `currencyCode` | string | ISO 4217 currency code |
| ↳ `approvedAmount` | json | Pro-rated approved amount (value, currencyCode) |
| ↳ `value` | number | Amount value |
| ↳ `currencyCode` | string | ISO 4217 currency code |
| ↳ `claimedAmount` | json | Requested reimbursement amount (value, currencyCode) |
| ↳ `value` | number | Amount value |
| ↳ `currencyCode` | string | ISO 4217 currency code |
| ↳ `customData` | array | Custom field values (id, value, isValid) |
| ↳ `id` | string | Custom field identifier |
| ↳ `value` | string | Custom field value |
| ↳ `isValid` | boolean | Whether the value passes validation |
| ↳ `expenseId` | string | Associated expense identifier |
| ↳ `isSystemAllocation` | boolean | True when system-managed |
| ↳ `isPercentEdited` | boolean | True when the percentage was manually edited |
### SAP Concur List Attendee Associations [#sap-concur-list-attendee-associations]
List attendees associated with an expense (GET /expensereports/v4/users/\{userId}/context/\{contextType}/reports/\{reportId}/expenses/\{expenseId}/attendees).
#### Input [#input-37]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userId` | string | Yes | Concur user UUID |
| `contextType` | string | Yes | Access context: TRAVELER or PROXY |
| `reportId` | string | Yes | Expense report ID |
| `expenseId` | string | Yes | Expense ID |
#### Output [#output-37]
| Parameter | Type | Description |
| --------------------------- | ------- | ---------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Attendees list payload |
| ↳ `noShowAttendeeCount` | number | Number of unnamed/no-show attendees |
| ↳ `expenseAttendeeList` | array | Attendees associated with the expense, including amounts |
| ↳ `attendeeId` | string | Unique identifier of the attendee |
| ↳ `transactionAmount` | json | Expense portion assigned to this attendee |
| ↳ `value` | number | Numeric amount |
| ↳ `currencyCode` | string | ISO 4217 currency code |
| ↳ `approvedAmount` | json | Approved amount in report currency |
| ↳ `value` | number | Numeric amount |
| ↳ `currencyCode` | string | ISO 4217 currency code |
| ↳ `isAmountUserEdited` | boolean | Whether the amount was manually edited |
| ↳ `isTraveling` | boolean | Whether the attendee is traveling (affects tax calculations) |
| ↳ `associatedAttendeeCount` | number | Total attendee count; greater than 1 indicates unnamed attendees |
| ↳ `versionNumber` | number | Version number preserving previous attendee state |
| ↳ `customData` | array | Custom field values for the association |
| ↳ `id` | string | Custom field identifier |
| ↳ `value` | string | Custom field value (max 48 characters) |
| ↳ `isValid` | boolean | Whether the value passes validation |
| ↳ `listItemUrl` | string | HATEOAS link for list items |
### SAP Concur List Budget Categories [#sap-concur-list-budget-categories]
List budget categories (GET /budget/v4/budgetCategory).
#### Input [#input-38]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
#### Output [#output-38]
| Parameter | Type | Description |
| ---------------- | ------ | --------------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | array | Top-level array of budget category objects |
| ↳ `id` | string | Category ID |
| ↳ `name` | string | Admin-facing category name |
| ↳ `description` | string | Friendly name |
| ↳ `statusType` | string | Status: OPEN or REMOVED |
| ↳ `expenseTypes` | array | Expense types in this category (id, featureTypeCode, expenseTypeCode, name) |
### SAP Concur List Budgets [#sap-concur-list-budgets]
List budget item headers (GET /budget/v4/budgetItemHeader).
#### Input [#input-39]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------ |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `adminView` | boolean | No | When true, returns all budgets the caller can administer (default false) |
| `offset` | number | No | Page offset (Concur returns up to 50 budget headers per page) |
| `responseSchema` | string | No | Response schema variant: "COMPACT" returns a smaller payload. Defaults to the non-compact schema |
#### Output [#output-39]
| Parameter | Type | Description |
| --------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Budget headers collection payload |
| ↳ `budgetItemHeaders` | array | Array of budget item header summaries (id, name, description, budgetItemStatusType, budgetType, currencyCode, fiscalYear, budgetAmounts, owner, ...) |
| ↳ `totalRows` | number | Total number of budget headers |
| ↳ `offset` | number | Offset of the current page |
| ↳ `limit` | number | Page size (Concur returns up to 50) |
| ↳ `href` | string | URL of the current page |
| ↳ `previous` | json | Previous page link (\{ href }); null on the first page |
| ↳ `href` | string | Previous page URL |
| ↳ `next` | json | Next page link (\{ href }); null when no results remain. This is the only forward cursor for paging |
| ↳ `href` | string | Next page URL |
### SAP Concur List Report Exceptions [#sap-concur-list-report-exceptions]
List exceptions on a report (GET /expensereports/v4/users/\{userId}/context/\{contextType}/reports/\{reportId}/exceptions).
#### Input [#input-40]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userId` | string | Yes | Concur user UUID |
| `contextType` | string | Yes | Access context: TRAVELER, MANAGER, or PROXY |
| `reportId` | string | Yes | Expense report ID |
| `excludeExpenses` | boolean | No | Return only exceptions for the report header, excluding expense-level and allocation-level exceptions (default false) |
#### Output [#output-40]
| Parameter | Type | Description |
| ----------------------- | ------- | -------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | array | Array of report header exception entries |
| ↳ `exceptionCode` | string | Unique exception code |
| ↳ `exceptionVisibility` | string | Visibility scope: ALL, APPROVER\_PROCESSOR, or PROCESSOR |
| ↳ `isBlocking` | boolean | Whether the exception prevents report submission |
| ↳ `message` | string | Human-readable description of the exception |
| ↳ `expenseId` | string | Related expense entry ID |
| ↳ `allocationId` | string | Related allocation ID, if any |
| ↳ `parentExpenseId` | string | Parent expense ID for itemized entries |
### SAP Concur List Expected Expenses [#sap-concur-list-expected-expenses]
List expected expenses on a travel request (GET /travelrequest/v4/requests/\{requestUuid}/expenses).
#### Input [#input-41]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `requestUuid` | string | Yes | Travel request UUID |
| `userId` | string | No | User UUID acting on the request (optional) |
#### Output [#output-41]
| Parameter | Type | Description |
| --------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | array | Array of expected expense objects |
| ↳ `id` | string | Expected expense identifier |
| ↳ `href` | string | Self-link |
| ↳ `expenseType` | json | Expense type \{id, name} |
| ↳ `transactionDate` | string | Transaction date |
| ↳ `transactionAmount` | json | Transaction amount \{value, currency} |
| ↳ `postedAmount` | json | Posted amount \{value, currency} |
| ↳ `approvedAmount` | json | Approved amount \{value, currency} |
| ↳ `remainingAmount` | json | Remaining amount on the expected expense |
| ↳ `businessPurpose` | string | Business purpose of the expense |
| ↳ `location` | json | Location \{id, name, city, countryCode, countrySubDivisionCode, iataCode, locationType} |
| ↳ `exchangeRate` | json | Exchange rate \{value, operation} |
| ↳ `allocations` | json | Budget allocations array |
| ↳ `tripData` | json | Trip data \{agencyBooked, selfBooked, tripType (ONE\_WAY\|ROUND\_TRIP), legs\[\{id, returnLeg, startDate, startTime, startLocationDetail, startLocation, endLocation, class \{code,value}, travelExceptionReasonCodes}], segmentType \{category, code}} |
| ↳ `parentRequest` | json | Parent travel request resource link \{href, id}. Documented on the single-expense GET, not on this list endpoint |
| ↳ `comments` | json | Comments sub-resource link \{href, id}. Documented on the single-expense GET, not on this list endpoint |
### SAP Concur List Expenses [#sap-concur-list-expenses]
List expenses on a report (GET /expensereports/v4/users/\{userId}/context/\{contextType}/reports/\{reportId}/expenses).
#### Input [#input-42]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userId` | string | Yes | Concur user UUID |
| `contextType` | string | Yes | Access context: TRAVELER (the only value the endpoint supports) |
| `reportId` | string | Yes | Expense report ID |
#### Output [#output-42]
| Parameter | Type | Description |
| -------------------------------- | ------- | ---------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | array | Array of expense summary entries (ReportExpenseSummary\[]) |
| ↳ `expenseId` | string | Expense identifier |
| ↳ `expenseType` | json | Expense type \{id, name, code, isDeleted} |
| ↳ `transactionDate` | string | Transaction date (YYYY-MM-DD) |
| ↳ `transactionAmount` | json | Transaction amount \{currencyCode, value} |
| ↳ `postedAmount` | json | Posted amount |
| ↳ `approvedAmount` | json | Approved amount |
| ↳ `claimedAmount` | json | Claimed amount |
| ↳ `approverAdjustedAmount` | json | Approver-adjusted amount |
| ↳ `paymentType` | json | Payment type \{id, name, code} |
| ↳ `vendor` | json | Vendor info |
| ↳ `location` | json | Location info |
| ↳ `allocationState` | string | Allocation state |
| ↳ `allocationSetId` | string | Allocation set identifier |
| ↳ `attendeeCount` | number | Attendee count |
| ↳ `businessPurpose` | string | Business purpose |
| ↳ `hasBlockingExceptions` | boolean | Has submission-blocking exceptions |
| ↳ `hasExceptions` | boolean | Has exceptions |
| ↳ `hasMissingReceiptDeclaration` | boolean | Has missing-receipt declaration |
| ↳ `isAutoCreated` | boolean | Auto-created |
| ↳ `isPersonalExpense` | boolean | Personal-expense flag |
| ↳ `isImageRequired` | boolean | Receipt image required |
| ↳ `isPaperReceiptRequired` | boolean | Paper receipt required |
| ↳ `imageCertificationStatus` | string | Receipt image certification status |
| ↳ `receiptImageId` | string | Receipt image identifier |
| ↳ `ereceiptImageId` | string | eReceipt image identifier |
| ↳ `ticketNumber` | string | Ticket number |
| ↳ `exchangeRate` | json | Exchange rate |
| ↳ `fuelTypeListItem` | json | Fuel type list item \{id, value, isValid} |
| ↳ `jptRouteId` | string | Japan Public Transport route id |
| ↳ `travelAllowance` | json | Travel allowance |
| ↳ `expenseSourceIdentifiers` | json | Expense source identifiers |
| ↳ `links` | array | HATEOAS links |
### SAP Concur List Expense Reports [#sap-concur-list-expense-reports]
List expense reports (GET /api/v3.0/expense/reports). Returns a v3 envelope with Items and NextPage.
#### Input [#input-43]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `user` | string | No | Filter by a specific user (login id or user identifier). |
| `submitDateBefore` | string | No | Filter to reports submitted on or before this date (YYYY-MM-DD) |
| `submitDateAfter` | string | No | Filter to reports submitted on or after this date (YYYY-MM-DD) |
| `paidDateBefore` | string | No | Filter to reports paid on or before this date (YYYY-MM-DD) |
| `paidDateAfter` | string | No | Filter to reports paid on or after this date (YYYY-MM-DD) |
| `modifiedDateBefore` | string | No | Filter to reports last modified on or before this date (YYYY-MM-DD) |
| `modifiedDateAfter` | string | No | Filter to reports last modified on or after this date (YYYY-MM-DD) |
| `createDateBefore` | string | No | Filter to reports created on or before this date (YYYY-MM-DD) |
| `createDateAfter` | string | No | Filter to reports created on or after this date (YYYY-MM-DD) |
| `approvalStatusCode` | string | No | Filter by approval status code (e.g. A\_NOTF, A\_PEND, A\_APPR) |
| `paymentStatusCode` | string | No | Filter by payment status code |
| `currencyCode` | string | No | Filter by ISO currency code (e.g. USD, EUR) |
| `approverLoginID` | string | No | Filter by approver login ID |
| `limit` | number | No | Number of records per page (default 25) |
| `offset` | string | No | Pagination token. The previous response returns NextPage as a full URI — extract its `offset` query parameter and pass that value here, not the whole URI. |
#### Output [#output-43]
| Parameter | Type | Description |
| ----------------------- | ------- | ----------------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Concur v3 expense reports envelope |
| ↳ `Items` | array | Array of report header objects |
| ↳ `ID` | string | Report ID |
| ↳ `Name` | string | Report name |
| ↳ `OwnerLoginID` | string | Owner login ID |
| ↳ `OwnerName` | string | Owner display name |
| ↳ `Total` | number | Report total |
| ↳ `TotalApprovedAmount` | number | Total approved amount |
| ↳ `TotalClaimedAmount` | number | Total claimed amount |
| ↳ `AmountDueEmployee` | number | Amount due employee |
| ↳ `CurrencyCode` | string | ISO currency code |
| ↳ `ApprovalStatusName` | string | Approval status name |
| ↳ `ApprovalStatusCode` | string | Approval status code |
| ↳ `PaymentStatusName` | string | Payment status name |
| ↳ `PaymentStatusCode` | string | Payment status code |
| ↳ `ApproverLoginID` | string | Approver login ID |
| ↳ `ApproverName` | string | Approver display name |
| ↳ `HasException` | boolean | Whether the report has any exception |
| ↳ `ReceiptsReceived` | boolean | Whether paper receipts were received |
| ↳ `CreateDate` | string | Creation date |
| ↳ `SubmitDate` | string | Submit date |
| ↳ `LastModifiedDate` | string | Last modified date |
| ↳ `PaidDate` | string | Paid date |
| ↳ `URI` | string | Self URI |
| ↳ `NextPage` | string | Full URI of the next page — read its `offset` query parameter to page forward |
### SAP Concur List Trips [#sap-concur-list-trips]
List travel trips/itineraries (GET /api/travel/trip/v1.1).
#### Input [#input-44]
| Parameter | Type | Required | Description |
| ---------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `startDate` | string | No | Filter trips starting on/after this date (YYYY-MM-DD) |
| `endDate` | string | No | Filter trips ending on/before this date (YYYY-MM-DD) |
| `bookingType` | string | No | Filter by booking type. Supported values are capitalized: Air, Car, Dining, Hotel, Parking, Rail, Ride. |
| `useridType` | string | No | User identifier type. The only value documented for Trips v1.1 is "login" (the value is the user login id); xmlsyncid and uuid are Travel Profile v2 identifier types and are not documented for this endpoint. |
| `useridValue` | string | No | User identifier value (paired with useridType) |
| `itemsPerPage` | number | No | Items per page. Concur only paginates when includeMetadata is also sent, so this tool sets includeMetadata automatically whenever itemsPerPage or page is provided. |
| `page` | number | No | 1-based page number. Concur only paginates when includeMetadata is also sent, so this tool sets includeMetadata automatically whenever page or itemsPerPage is provided. |
| `includeMetadata` | boolean | No | Include paging metadata in the response. Implied when page or itemsPerPage is set. |
| `includeCanceledTrips` | boolean | No | Include canceled trips in the result set |
| `createdAfterDate` | string | No | Only trips created after this date (YYYY-MM-DD) |
| `createdBeforeDate` | string | No | Only trips created before this date (YYYY-MM-DD) |
| `lastModifiedDate` | string | No | Only trips modified on/after this date (YYYY-MM-DD) |
| `includeVirtualTrip` | string | No | Set to "1" to include virtual trips, which carry the offline segments booked through Concur Request. |
| `includeGuestBookings` | boolean | No | Include trips booked on behalf of guests. Defaults to false. |
#### Output [#output-44]
| Parameter | Type | Description |
| --------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | string | Raw XML trips list returned by Concur (Trips v1.1 emits application/xml only, so this is a string and not a parsed object). By default the document is rooted at \ containing one \ per trip (TripId, TripName, TripStatus, StartDateLocal, EndDateLocal, DateModifiedUtc, UserLoginId, id). When includeMetadata is sent — which this tool does automatically whenever page or itemsPerPage is supplied — the document is instead rooted at \ with ConnectResponse > Metadata > Paging (TotalPages, TotalItems, Page, ItemsPerPage, PreviousPageURL, NextPageURL) and ConnectResponse > Data > ItineraryInfoList > ItineraryInfo. |
### SAP Concur List Lists [#sap-concur-list-lists]
List custom lists (GET /list/v4/lists).
#### Input [#input-45]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `page` | number | No | Page number (1-based; page size is fixed at 100) |
| `sortBy` | string | No | Sort field: name, levelcount, or listcategory |
| `sortDirection` | string | No | Sort direction: asc or desc |
| `value` | string | No | Filter by list name. Accepts an operator prefix: sw: (starts with), ew: (ends with), not:, cp: (contains) (e.g. "sw:Cost"). |
| `categoryType` | string | No | Filter by category type (mapped to the category.type query param). Accepts an operator prefix: eq:, not:. |
| `isDeleted` | string | No | Filter by deletion status. Pass "true" or "false" as a string because the filter also accepts the eq operator prefix (eq:true) — eq is the only operator this filter supports. |
| `levelCount` | string | No | Filter by number of levels. Accepts an operator prefix: eq:, gt:, gte:, lt:, lte: (e.g. "eq:1", "gt:2", "lte:9"). |
#### Output [#output-45]
| Parameter | Type | Description |
| --------------------- | ------- | ---------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Paginated lists collection |
| ↳ `content` | array | Lists in the current page |
| ↳ `id` | string | List UUID |
| ↳ `value` | string | Name of the list |
| ↳ `levelCount` | number | Number of levels in the list |
| ↳ `searchCriteria` | string | Search attribute (TEXT or CODE) |
| ↳ `displayFormat` | string | Display order ((CODE) TEXT or TEXT (CODE)) |
| ↳ `category` | json | List category |
| ↳ `id` | string | Category UUID |
| ↳ `type` | string | Category type |
| ↳ `isReadOnly` | boolean | Whether the list is read-only |
| ↳ `isDeleted` | boolean | Whether the list has been deleted |
| ↳ `managedBy` | string | Managing application or service identifier |
| ↳ `externalThreshold` | number | Threshold from where the level starts being external |
| ↳ `page` | json | Pagination metadata |
| ↳ `number` | number | Current page number |
| ↳ `size` | number | Items per page |
| ↳ `totalElements` | number | Total item count |
| ↳ `totalPages` | number | Total page count |
| ↳ `links` | array | Navigation links (next, previous, first, last) |
| ↳ `rel` | string | Link relation |
| ↳ `href` | string | Link URL |
### SAP Concur List List Items [#sap-concur-list-list-items]
List the top-level items (children) for a custom list (GET /list/v4/lists/\{listId}/children).
#### Input [#input-46]
| Parameter | Type | Required | Description |
| ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `listId` | string | Yes | List ID |
| `page` | number | No | Page number (1-based; page size is fixed at 100) |
| `sortBy` | string | No | Sort field: value or shortCode |
| `sortDirection` | string | No | Sort direction: asc or desc |
| `hasChildren` | boolean | No | Include only items that have children |
| `isDeleted` | string | No | Filter by deletion status. Pass "true" or "false" as a string because the filter also accepts the eq operator prefix (eq:true) — eq is the only operator this filter supports. |
| `shortCode` | string | No | Filter by short code |
| `value` | string | No | Filter by display value |
| `shortCodeOrValue` | string | No | Filter by short code OR value |
#### Output [#output-46]
| Parameter | Type | Description |
| ----------------- | ------- | ------------------------------------------------ |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Paginated list items collection |
| ↳ `content` | array | List items in the current page |
| ↳ `id` | string | List item UUID |
| ↳ `listId` | string | UUID of the list that contains the list item |
| ↳ `code` | string | Long code format for the item |
| ↳ `shortCode` | string | Short code identifier |
| ↳ `value` | string | Display value of the item |
| ↳ `parentId` | string | Parent item UUID (omitted for first-level items) |
| ↳ `level` | number | Hierarchy level (1 for root items) |
| ↳ `isDeleted` | boolean | Deletion status across all containing lists |
| ↳ `lists` | array | Lists containing this item |
| ↳ `id` | string | List UUID |
| ↳ `hasChildren` | boolean | Whether this item has children in the list |
| ↳ `page` | json | Pagination metadata |
| ↳ `number` | number | Current page number |
| ↳ `size` | number | Items per page |
| ↳ `totalElements` | number | Total item count |
| ↳ `totalPages` | number | Total page count |
| ↳ `links` | array | Navigation links (next, previous, first, last) |
| ↳ `rel` | string | Link relation |
| ↳ `href` | string | Link URL |
### SAP Concur List Receipts [#sap-concur-list-receipts]
List receipts for a user (GET /receipts/v4/users/\{userId}). Concur documents no query parameters for this endpoint, so page size and offset cannot be controlled; follow the "next" URL in the response to page forward.
#### Input [#input-47]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userId` | string | Yes | Concur user UUID |
#### Output [#output-47]
| Parameter | Type | Description |
| -------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | E-receipt collection wrapper |
| ↳ `receipts` | array | Array of e-receipt objects |
| ↳ `id` | string | Receipt id |
| ↳ `userId` | string | Owner user UUID |
| ↳ `dateTimeReceived` | string | Timestamp the receipt was received |
| ↳ `receipt` | json | Structured receipt data |
| ↳ `image` | string | Receipt image URL or reference |
| ↳ `validationSchema` | string | Validation schema URI |
| ↳ `self` | string | Self URL |
| ↳ `template` | string | Template URL |
| ↳ `next` | string | URL of the next page of receipts, if returned. Concur documents this cursor on the image-only-receipts endpoint rather than on this one |
### SAP Concur List Report Comments [#sap-concur-list-report-comments]
List comments on a report (GET /expensereports/v4/users/\{userId}/context/\{contextType}/reports/\{reportId}/comments).
#### Input [#input-48]
| Parameter | Type | Required | Description |
| -------------------- | ------- | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userId` | string | Yes | Concur user UUID |
| `contextType` | string | Yes | Access context: TRAVELER, MANAGER, or PROXY |
| `reportId` | string | Yes | Expense report ID |
| `includeAllComments` | boolean | No | Include comments from all expenses in the report (default false) |
#### Output [#output-48]
| Parameter | Type | Description |
| ------------------------ | ------- | ---------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | array | Array of report comment entries |
| ↳ `comment` | string | Comment text |
| ↳ `creationDate` | string | Comment creation timestamp (ISO 8601) |
| ↳ `expenseId` | string | Related expense entry ID (null for report header comments) |
| ↳ `isAuditorComment` | boolean | Whether the comment was added by an auditor |
| ↳ `isLatest` | boolean | Whether this is the latest comment |
| ↳ `createdForEmployeeId` | string | Employee ID the comment was created for |
| ↳ `author` | json | Comment author |
| ↳ `employeeId` | string | Employee identifier |
| ↳ `employeeUuid` | string | Employee UUID |
| ↳ `createdForEmployee` | json | Employee the comment was created for |
| ↳ `employeeId` | string | Employee identifier |
| ↳ `employeeUuid` | string | Employee UUID |
| ↳ `stepInstanceId` | string | Workflow step instance identifier |
### SAP Concur List Reports To Approve [#sap-concur-list-reports-to-approve]
List expense reports awaiting approval (GET /expensereports/v4/users/\{userId}/context/MANAGER/reportsToApprove).
#### Input [#input-49]
| Parameter | Type | Required | Description |
| -------------------------- | ------- | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userId` | string | Yes | Manager user UUID |
| `contextType` | string | No | Access context: must be MANAGER (default) |
| `sort` | string | No | Report field name to sort by (e.g., reportDate) |
| `order` | string | No | Sort direction: asc or desc |
| `includeDelegateApprovals` | boolean | No | Whether to include reports the caller can approve as a delegate |
#### Output [#output-49]
| Parameter | Type | Description |
| ----------------------- | ------- | ------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | array | Array of reports awaiting approval (ReportToApprove\[]) |
| ↳ `reportId` | string | Unique report identifier |
| ↳ `name` | string | Report name |
| ↳ `reportDate` | string | Report date (YYYY-MM-DD) |
| ↳ `reportNumber` | string | User-friendly report number |
| ↳ `submitDate` | string | Submission timestamp (ISO 8601 UTC) |
| ↳ `approver` | json | Approver employee \{ employeeId, employeeUuid } |
| ↳ `employee` | json | Report owner employee \{ employeeId, employeeUuid } |
| ↳ `amountDueEmployee` | json | Amount due employee \{ value, currencyCode } |
| ↳ `claimedAmount` | json | Total claimed amount \{ value, currencyCode } |
| ↳ `totalApprovedAmount` | json | Total approved amount \{ value, currencyCode } |
| ↳ `hasExceptions` | boolean | Whether the report has exceptions |
| ↳ `reportType` | string | Report creation method identifier |
| ↳ `links` | array | HATEOAS links |
### SAP Concur Get Request Cash Advance [#sap-concur-get-request-cash-advance]
Get a single cash advance assigned to a travel request (GET /travelrequest/v4/cashadvances/\{cashAdvanceUuid}). This endpoint exists for feature parity only and will be deprecated in the future — SAP recommends relying on the list of cash advances link available in the Request payload response instead.
#### Input [#input-50]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `cashAdvanceUuid` | string | Yes | Cash advance UUID (returned as part of a travel request) |
#### Output [#output-50]
| Parameter | Type | Description |
| ------------------- | ------ | ---------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Cash advance detail |
| ↳ `cashAdvanceId` | string | Unique cash advance identifier |
| ↳ `amountRequested` | json | Requested amount |
| ↳ `amount` | number | Preferred amount field — use this over value |
| ↳ `value` | number | Legacy amount value — will soon be deprecated in favor of amount |
| ↳ `currency` | string | Currency code |
| ↳ `approvalStatus` | json | Approval status |
| ↳ `code` | string | Status code |
| ↳ `name` | string | Status name |
| ↳ `requestDate` | string | Request datetime (ISO 8601) |
| ↳ `issueDate` | string | Date the cash advance was issued (ISO 8601) |
| ↳ `comment` | string | Comment attached to the cash advance |
| ↳ `exchangeRate` | json | Exchange rate |
| ↳ `value` | number | Rate value |
| ↳ `operation` | string | Multiply or divide |
### SAP Concur List Travel Profiles Summary [#sap-concur-list-travel-profiles-summary]
List travel profile summaries (GET /api/travelprofile/v2.0/summary). LastModifiedDate is required by Concur.
#### Input [#input-51]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | --------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `lastModifiedDate` | string | Yes | Required UTC datetime in YYYY-MM-DDThh:mm:ss format |
| `page` | number | No | 1-based page number |
| `itemsPerPage` | number | No | Items per page (max 200) |
| `travelConfigs` | string | No | Comma-separated travel configuration ids |
| `active` | string | No | Filter by user state: "1" returns active users, "0" returns inactive users. |
#### Output [#output-51]
| Parameter | Type | Description |
| --------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | string | Raw XML travel profile summary list returned by Concur (Travel Profile v2 emits application/xml only, per the TravelProfileSummaryV2.xsd schema, so this is a string and not a parsed object). The document is rooted at \ with ConnectResponse > Metadata > Paging (TotalPages, TotalItems, Page, ItemsPerPage, PreviousPageURL, NextPageURL) and ConnectResponse > Data > ProfileSummary, whose only child elements are Status, LoginID, XmlProfileSyncID, and ProfileLastModifiedUTC. |
### SAP Concur List Travel Request Comments [#sap-concur-list-travel-request-comments]
List comments on a travel request (GET /travelrequest/v4/requests/\{requestUuid}/comments).
#### Input [#input-52]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `requestUuid` | string | Yes | Travel request UUID |
#### Output [#output-52]
| Parameter | Type | Description |
| -------------------- | ------- | ------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | array | Array of comment entries |
| ↳ `author` | json | Comment author |
| ↳ `firstName` | string | Author first name |
| ↳ `lastName` | string | Author last name |
| ↳ `creationDateTime` | string | Comment creation timestamp (ISO 8601) |
| ↳ `isLatest` | boolean | Whether this is the latest comment |
| ↳ `value` | string | Comment text |
### SAP Concur List Travel Requests [#sap-concur-list-travel-requests]
List travel requests (GET /travelrequest/v4/requests).
#### Input [#input-53]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `view` | string | No | View filter: ALL, ACTIVE, ACTIVEAPPROVED, UNSUBMITTED, PENDING, VALIDATED, APPROVED, CANCELED, CLOSED, SUBMITTED, TOAPPROVE, PENDINGEBOOKING, PENDINGPROPOSAL, PROPOSALAPPROVED, or PROPOSALCANCELED. Defaults to ALL when omitted. The three TMC-agent views (PENDINGPROPOSAL, PROPOSALAPPROVED, PROPOSALCANCELED) require userId. |
| `limit` | number | No | Records per page (default 10, maximum 100 — higher values return 400) |
| `start` | number | No | Page start cursor (offset) |
| `userId` | string | No | For a traveler view, the unique identifier of the Request owner to search for. For an approver view, the unique identifier of the approver. For a TMC-agent view (PENDINGPROPOSAL, PROPOSALAPPROVED, PROPOSALCANCELED) this is required and is the unique identifier of the TMC agent. |
| `approvedBefore` | string | No | ISO 8601 date — return requests approved before this date |
| `approvedAfter` | string | No | ISO 8601 date — return requests approved after this date |
| `modifiedBefore` | string | No | ISO 8601 date — return requests modified before this date |
| `modifiedAfter` | string | No | ISO 8601 date — return requests modified after this date |
| `sortField` | string | No | Field to sort by: startDate, approvalStatus, or requestId (default startDate) |
| `sortOrder` | string | No | Sort order: ASC or DESC (default DESC) |
#### Output [#output-53]
| Parameter | Type | Description |
| ------------------------ | ------- | --------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Travel requests list payload |
| ↳ `data` | array | Array of travel request summaries |
| ↳ `id` | string | Travel request UUID |
| ↳ `href` | string | Resource hyperlink |
| ↳ `requestId` | string | Public-facing request ID |
| ↳ `name` | string | Request name |
| ↳ `businessPurpose` | string | Business purpose |
| ↳ `comment` | string | Last attached comment |
| ↳ `creationDate` | string | Creation timestamp |
| ↳ `submitDate` | string | Last submission timestamp |
| ↳ `startDate` | string | Trip start date (ISO 8601) |
| ↳ `endDate` | string | Trip end date (ISO 8601) |
| ↳ `startTime` | string | Trip start time (HH:mm) |
| ↳ `approved` | boolean | Whether the request is approved |
| ↳ `pendingApproval` | boolean | Pending approval flag |
| ↳ `closed` | boolean | Closed flag |
| ↳ `everSentBack` | boolean | Ever-sent-back flag |
| ↳ `canceledPostApproval` | boolean | Canceled after approval flag |
| ↳ `approvalStatus` | json | Approval status |
| ↳ `code` | string | Status code (NOT\_SUBMITTED, SUBMITTED, APPROVED, CANCELED, SENTBACK) |
| ↳ `name` | string | Localized status name |
| ↳ `owner` | json | Travel request owner |
| ↳ `id` | string | User UUID |
| ↳ `firstName` | string | Owner first name |
| ↳ `lastName` | string | Owner last name |
| ↳ `approver` | json | Approver assigned to the request |
| ↳ `id` | string | User UUID |
| ↳ `firstName` | string | Approver first name |
| ↳ `lastName` | string | Approver last name |
| ↳ `type` | json | Request type |
| ↳ `code` | string | Request type code |
| ↳ `label` | string | Request type label |
| ↳ `totalApprovedAmount` | json | Total approved amount |
| ↳ `value` | number | Amount value |
| ↳ `currency` | string | Currency code |
| ↳ `totalPostedAmount` | json | Total posted amount |
| ↳ `value` | number | Amount value |
| ↳ `currency` | string | Currency code |
| ↳ `totalRemainingAmount` | json | Total remaining amount |
| ↳ `value` | number | Amount value |
| ↳ `currency` | string | Currency code |
| ↳ `expenses` | array | Resource links to expected expenses |
| ↳ `operations` | array | Pagination links (next, prev, first, last) |
| ↳ `rel` | string | Link relation |
| ↳ `href` | string | Link target |
### SAP Concur List Users [#sap-concur-list-users]
List Concur user identities (GET /profile/identity/v4.1/Users).
#### Input [#input-54]
| Parameter | Type | Required | Description |
| -------------------- | ------ | -------- | --------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `count` | number | No | Max number of users to return (default 100, max 1000) |
| `cursor` | string | No | SCIM v4.1 pagination cursor — the nextCursor value returned by a prior call |
| `attributes` | string | No | Comma-separated list of attributes to include in the response |
| `excludedAttributes` | string | No | Comma-separated list of attributes to exclude from the response |
#### Output [#output-54]
| Parameter | Type | Description |
| --------- | ------ | -------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | SCIM ListResponse with Resources array |
### SAP Concur Move Travel Request [#sap-concur-move-travel-request]
Move a travel request through workflow (POST /travelrequest/v4/requests/\{requestUuid}/\{action}). Valid actions: submit, recall, cancel, approve, sendback, close, reopen.
#### Input [#input-55]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `requestUuid` | string | Yes | Travel request UUID |
| `action` | string | Yes | Workflow action: submit, recall, cancel, approve, sendback, close, reopen |
| `userId` | string | No | The unique identifier of the user performing the status transition. Required when connecting with a Company token for traveler and Non traveler actions only; not required for External system validation actions. If empty, a 400 `missingRequiredParam` error code is returned. For non-traveler actions, if not provided, "System, Concur" is displayed in the Audit Trail of the Request. |
| `companyID` | string | No | Optional company identifier for the workflow action (documented as `companyID`, distinct from the companyUuid auth field) |
| `comment` | string | No | Comment sent as a query parameter. Only works when the workflow action is `sendback`. This comment is visible wherever Request comments are available. |
| `body` | json | No | Optional payload — only the `sendback` action accepts one (e.g., \{ "comment": "..." }). Every other action takes no payload. |
#### Output [#output-55]
| Parameter | Type | Description |
| -------------------------- | ------- | ------------------------------------------------------------------------------ |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | The full travel request having that requestUuid, after the workflow transition |
| ↳ `id` | string | Travel request UUID |
| ↳ `href` | string | Resource hyperlink |
| ↳ `requestId` | string | Public-facing request ID (4-6 alphanumeric characters) |
| ↳ `name` | string | Request name |
| ↳ `businessPurpose` | string | Business purpose |
| ↳ `comment` | string | Last attached comment |
| ↳ `creationDate` | string | Creation timestamp |
| ↳ `lastModified` | string | Last modification timestamp |
| ↳ `submitDate` | string | Last submission timestamp |
| ↳ `authorizedDate` | string | Date when approval was completed |
| ↳ `approvalLimitDate` | string | Required approval deadline |
| ↳ `startDate` | string | Trip start date (ISO 8601) |
| ↳ `endDate` | string | Trip end date (ISO 8601) |
| ↳ `startTime` | string | Trip start time (HH:mm) |
| ↳ `endTime` | string | Trip end time (HH:mm) |
| ↳ `approved` | boolean | Whether the request is approved |
| ↳ `pendingApproval` | boolean | Pending approval flag |
| ↳ `closed` | boolean | Closed flag |
| ↳ `everSentBack` | boolean | Ever-sent-back flag |
| ↳ `canceledPostApproval` | boolean | Canceled after approval flag |
| ↳ `highestExceptionLevel` | string | Highest exception level (WARNING, ERROR, NONE) |
| ↳ `approvalStatus` | json | Approval status after the workflow transition |
| ↳ `code` | string | Status code (NOT\_SUBMITTED, SUBMITTED, APPROVED, CANCELED, SENTBACK) |
| ↳ `name` | string | Localized status name |
| ↳ `owner` | json | Travel request owner |
| ↳ `id` | string | User UUID |
| ↳ `firstName` | string | Owner first name |
| ↳ `lastName` | string | Owner last name |
| ↳ `approver` | json | Approver assigned after the transition |
| ↳ `id` | string | User UUID |
| ↳ `firstName` | string | Approver first name |
| ↳ `lastName` | string | Approver last name |
| ↳ `policy` | json | Resource link to the applicable policy |
| ↳ `id` | string | Policy ID |
| ↳ `href` | string | Policy hyperlink |
| ↳ `type` | json | Request type |
| ↳ `code` | string | Request type code |
| ↳ `label` | string | Request type label |
| ↳ `mainDestination` | json | Main destination of the trip |
| ↳ `city` | string | City |
| ↳ `countryCode` | string | ISO country code |
| ↳ `countrySubDivisionCode` | string | ISO country sub-division code |
| ↳ `name` | string | Destination name |
| ↳ `totalApprovedAmount` | json | Total approved amount |
| ↳ `value` | number | Amount value |
| ↳ `currency` | string | Currency code |
| ↳ `totalPostedAmount` | json | Total posted amount |
| ↳ `value` | number | Amount value |
| ↳ `currency` | string | Currency code |
| ↳ `totalRemainingAmount` | json | Total remaining amount |
| ↳ `value` | number | Amount value |
| ↳ `currency` | string | Currency code |
| ↳ `expenses` | array | Resource links to expected expenses |
| ↳ `cashAdvances` | json | Resource link to cash advances |
| ↳ `id` | string | Resource ID |
| ↳ `href` | string | Resource hyperlink |
| ↳ `comments` | json | Resource link to comments |
| ↳ `id` | string | Resource ID |
| ↳ `href` | string | Resource hyperlink |
| ↳ `exceptions` | json | Resource link to exceptions |
| ↳ `id` | string | Resource ID |
| ↳ `href` | string | Resource hyperlink |
| ↳ `travelAgency` | json | Resource link to travel agency |
| ↳ `id` | string | Resource ID |
| ↳ `href` | string | Resource hyperlink |
| ↳ `extensionOf` | json | The Request for which this Request is an extension of, or addendum to |
| ↳ `requestId` | string | The public key of the Request (unique per customer) |
| ↳ `id` | string | Unique identifier of the Request |
| ↳ `href` | string | Hyperlink to the resource |
| ↳ `template` | string | Hyperlink template to the resource |
| ↳ `expensePolicy` | json | Expense policy reference |
| ↳ `id` | string | Policy identifier |
| ↳ `href` | string | Policy URL |
| ↳ `operations` | array | Available follow-up workflow actions |
| ↳ `rel` | string | Link relation |
| ↳ `href` | string | Link target |
### SAP Concur Recall Expense Report [#sap-concur-recall-expense-report]
Recall a submitted expense report (PATCH /expensereports/v4/users/\{userId}/context/\{contextType}/reports/\{reportId}/recall — supported contexts: TRAVELER, PROXY). Takes no request body. This operation supports user-level access tokens: set grantType to "password" with username and password, since the default client\_credentials grant yields a company-level token.
#### Input [#input-56]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password. Recall requires a user-level access token, so set this to "password" and supply username/password — client\_credentials produces a company-level token that Concur rejects for this operation. |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userId` | string | Yes | Concur user UUID who owns the report |
| `contextType` | string | Yes | Access context: TRAVELER or PROXY |
| `reportId` | string | Yes | Expense report ID to recall |
#### Output [#output-56]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Empty (204 No Content) |
### SAP Concur Remove All Attendees [#sap-concur-remove-all-attendees]
Remove all attendees from an expense (DELETE /expensereports/v4/users/\{userId}/context/\{contextType}/reports/\{reportId}/expenses/\{expenseId}/attendees).
#### Input [#input-57]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userId` | string | Yes | Concur user UUID |
| `contextType` | string | Yes | Access context: TRAVELER or PROXY |
| `reportId` | string | Yes | Expense report ID |
| `expenseId` | string | Yes | Expense ID |
#### Output [#output-57]
| Parameter | Type | Description |
| --------- | ------ | --------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Empty response body (Concur returns 204 No Content) |
### SAP Concur Search Locations [#sap-concur-search-locations]
Search Concur location reference data (GET /localities/v5/locations).
#### Input [#input-58]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `searchText` | string | No | Free-text for location search. Conditional — required if none of locationNameKey, locationNameId, or locCode is present. |
| `locCode` | string | No | Location code. Conditional — required if none of locationNameKey, locationNameId, or searchText is present. |
| `locationNameId` | string | No | UUID identifier of the location name. Conditional — required if none of locationNameKey, locCode, or searchText is present. |
| `locationNameKey` | number | No | Unique key for the location name. Conditional — required if none of locationNameId, locCode, or searchText is present. |
| `countryCode` | string | No | 2-letter ISO 3166-1 country code. Only valid together with searchText. |
| `subdivisionCode` | string | No | ISO 3166-2:2007 country subdivision (e.g. US-WA). Only valid together with searchText. |
| `adminRegionId` | string | No | Administrative region ID. Only valid together with searchText. |
#### Output [#output-58]
| Parameter | Type | Description |
| ------------------------ | ------- | ------------------------------------------------------ |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Localities v5 search response |
| ↳ `locations` | array | Array of matching Location records |
| ↳ `id` | string | Location ID (UUID) |
| ↳ `code` | string | IATA / location code |
| ↳ `legacyKey` | number | Legacy numeric location key |
| ↳ `timeZoneOffset` | number | Time zone offset of the location, in minutes (e.g. 60) |
| ↳ `active` | boolean | Whether the location is active |
| ↳ `point` | json | Geographic coordinates |
| ↳ `latitude` | number | Latitude |
| ↳ `longitude` | number | Longitude |
| ↳ `names` | array | Localized location names |
| ↳ `id` | string | Name ID |
| ↳ `legacyKey` | number | Legacy numeric name key |
| ↳ `langCode` | string | Language code |
| ↳ `name` | string | Display name |
| ↳ `active` | boolean | Whether the name is active |
| ↳ `administrativeRegion` | json | Administrative region (e.g., metro area) |
| ↳ `id` | string | Unique identifier of the admin region |
| ↳ `names` | array | Localized region names |
| ↳ `countryCode` | string | ISO 3166-1 country code of the region |
| ↳ `subDivCode` | string | ISO 3166-2 subdivision code of the region |
| ↳ `links` | array | HATEOAS links |
| ↳ `country` | json | Country reference (Code schema) |
| ↳ `code` | string | ISO country code |
| ↳ `names` | array | Localized country names |
| ↳ `links` | array | HATEOAS links |
| ↳ `subDivision` | json | Country subdivision (state/province, Code schema) |
| ↳ `code` | string | ISO subdivision code |
| ↳ `names` | array | Localized subdivision names |
| ↳ `links` | array | HATEOAS links |
| ↳ `links` | array | HATEOAS links |
### SAP Concur Search Users [#sap-concur-search-users]
Search users via SCIM .search endpoint (POST /profile/identity/v4.1/Users/.search).
#### Input [#input-59]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `body` | json | Yes | SCIM search payload. Required: schemas: \["urn:ietf:params:scim:api:messages:concur:2.0:SearchRequest"] (Concur-specific URN, not the standard SearchRequest URN). Optional: filter, count (1-1000), attributes, excludedAttributes, cursor (the nextCursor value from a prior response). The startIndex request parameter is not supported (responses still return a startIndex value). |
#### Output [#output-59]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | SCIM search ListResponse |
### SAP Concur Send Back Expense Report [#sap-concur-send-back-expense-report]
Send back an expense report to the employee (PATCH /expensereports/v4/reports/\{reportId}/sendBack). Required body field: comment.
#### Input [#input-60]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `reportId` | string | Yes | Expense report ID to send back |
| `body` | json | Yes | Request body — `comment` is required by Concur (e.g., \{ "comment": "Missing receipt" }). Optional fields: `expectedStepCode`, `expectedStepSequence`. |
#### Output [#output-60]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Empty (204 No Content) |
### SAP Concur Submit Expense Report [#sap-concur-submit-expense-report]
Submit an expense report into the workflow via Expense Report v4 (PATCH /expensereports/v4/users/\{userId}/reports/\{reportId}/submit). Takes no request body.
#### Input [#input-61]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userId` | string | Yes | Concur user UUID who owns the report |
| `reportId` | string | Yes | Expense report ID to submit |
#### Output [#output-61]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Empty (204 No Content) |
### SAP Concur Update Allocation [#sap-concur-update-allocation]
Update an allocation (PATCH /expensereports/v4/users/\{userId}/context/\{contextType}/reports/\{reportId}/allocations/\{allocationId}).
#### Input [#input-62]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userId` | string | Yes | Concur user UUID |
| `contextType` | string | Yes | Access context: TRAVELER or PROXY (write requires expense.report.readwrite) |
| `reportId` | string | Yes | Expense report ID |
| `allocationId` | string | Yes | Allocation ID to update |
| `body` | json | Yes | JSON Merge Patch (RFC 7386) payload. Must be the two-key envelope \{ "allocation": \{ "customData": \[\{ "id": "custom9", "value": "...", "isValid": true }] }, "expenseIds": \["29EE..."] }. |
#### Output [#output-62]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Empty body on success (Concur returns 204 No Content) |
### SAP Concur Update Expected Expense [#sap-concur-update-expected-expense]
Update an expected expense (PUT /travelrequest/v4/expenses/\{expenseUuid}).
#### Input [#input-63]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `expenseUuid` | string | Yes | Expected expense UUID to update |
| `userId` | string | No | User UUID acting on the request (required when using a Company JWT, optional otherwise) |
| `body` | json | Yes | Fields to update on the expected expense |
#### Output [#output-63]
| Parameter | Type | Description |
| --------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Updated expected expense payload |
| ↳ `id` | string | Expected expense identifier |
| ↳ `href` | string | Self-link |
| ↳ `expenseType` | json | Expense type \{id, name} |
| ↳ `transactionDate` | string | Transaction date |
| ↳ `transactionAmount` | json | Transaction amount \{value, currency} |
| ↳ `postedAmount` | json | Posted amount \{value, currency} |
| ↳ `approvedAmount` | json | Approved amount \{value, currency} |
| ↳ `remainingAmount` | json | Remaining amount on the expected expense |
| ↳ `businessPurpose` | string | Business purpose of the expense |
| ↳ `location` | json | Location \{id, name, city, countryCode, countrySubDivisionCode, iataCode, locationType} |
| ↳ `exchangeRate` | json | Exchange rate \{value, operation} |
| ↳ `allocations` | json | Budget allocations array |
| ↳ `tripData` | json | Trip data \{agencyBooked, selfBooked, tripType (ONE\_WAY\|ROUND\_TRIP), legs\[\{id, returnLeg, startDate, startTime, startLocationDetail, startLocation, endLocation, class \{code,value}, travelExceptionReasonCodes}], segmentType \{category, code}} |
| ↳ `parentRequest` | json | Parent travel request resource link \{href, id} |
| ↳ `comments` | json | Comments sub-resource link \{href, id} |
### SAP Concur Update Expense [#sap-concur-update-expense]
Update an expense (PATCH /expensereports/v4/reports/\{reportId}/expenses/\{expenseId}). Only Company JWT authentication is allowed on this endpoint — the password grant is rejected. A submitted report cannot be updated once it has reached a Paid workflow status. Although the primary intent of this operation is for submitted report updates, it also works on unsubmitted reports, but with the same limited set of fields.
#### Input [#input-64]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `reportId` | string | Yes | Expense report ID |
| `expenseId` | string | Yes | Expense ID to update |
| `body` | json | Yes | PATCH body. Allowed fields: businessPurpose (string, max 64), customData (CustomData\[]), expenseSource (required: EA\|MOB\|OTHER\|SE\|TA\|TR\|UI), isExpenseRejected (boolean), isPaperReceiptReceived (boolean). |
#### Output [#output-64]
| Parameter | Type | Description |
| --------- | ------ | --------------------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Empty body on success (HTTP 204 No Content). Error details when status is non-2xx |
### SAP Concur Update Expense Report [#sap-concur-update-expense-report]
Update an unsubmitted expense report (PATCH /expensereports/v4/users/\{userId}/context/\{contextType}/reports/\{reportId} — supported contexts: TRAVELER, PROXY). The body must always include `reportSource` (EA, MOB, OTHER, SE, TR, or UI).
#### Input [#input-65]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userId` | string | Yes | Concur user UUID who owns the report |
| `contextType` | string | Yes | Access context: TRAVELER (own report) or PROXY (editing on behalf of another user) |
| `reportId` | string | Yes | Expense report ID to update |
| `body` | json | Yes | Fields to update on the report. `reportSource` is REQUIRED by Concur on every update — one of "EA", "MOB", "OTHER", "SE", "TR", "UI" (use "OTHER" if unknown). Other updatable fields: businessPurpose, comment, country, countryCode, countrySubDivisionCode, customData, endDate, isCopyDownInherited, isPaperReceiptsReceived, name, policy, policyId, redirectFund, reportDate, startDate. |
#### Output [#output-65]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Empty (204 No Content) |
### SAP Concur Update List Item [#sap-concur-update-list-item]
Update a list item (PUT /list/v4/items/\{itemId}).
#### Input [#input-66]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------ |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `itemId` | string | Yes | List item UUID |
| `body` | json | Yes | List item payload. Required: shortCode, value. Other fields in the body are ignored. |
#### Output [#output-66]
| Parameter | Type | Description |
| --------------- | ------- | ------------------------------------------------ |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Updated list item |
| ↳ `id` | string | List item UUID |
| ↳ `listId` | string | UUID of the list that contains the list item |
| ↳ `code` | string | Long code format for the item |
| ↳ `shortCode` | string | Short code identifier |
| ↳ `value` | string | Display value of the item |
| ↳ `parentId` | string | Parent item UUID (omitted for first-level items) |
| ↳ `level` | number | Hierarchy level (1 for root items) |
| ↳ `isDeleted` | boolean | Deletion status across all containing lists |
| ↳ `lists` | array | Lists containing this item |
| ↳ `id` | string | List UUID |
| ↳ `hasChildren` | boolean | Whether this item has children in the list |
### SAP Concur Update Travel Request [#sap-concur-update-travel-request]
Update a travel request (PUT /travelrequest/v4/requests/\{requestUuid}).
#### Input [#input-67]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `requestUuid` | string | Yes | Travel request UUID to update |
| `userId` | string | No | The unique identifier of the user performing the update. Optional. Will be taken into account only if calling with a Company token. If not provided the update will be performed as "Concur System". |
| `body` | json | Yes | Fields to update on the travel request. Partial update is supported. Only these fields are updatable: comment, startDate, startTime, endDate, endTime, expensePolicy, name, businessPurpose, mainDestination, travelAgency, and the custom1-custom20 fields — any other field is silently ignored. Pass an unquoted null to clear a field. |
#### Output [#output-67]
| Parameter | Type | Description |
| -------------------------- | ------- | --------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Updated travel request payload |
| ↳ `id` | string | Travel request UUID |
| ↳ `href` | string | Resource hyperlink |
| ↳ `requestId` | string | Public-facing request ID (4-6 alphanumeric characters) |
| ↳ `name` | string | Request name |
| ↳ `businessPurpose` | string | Business purpose |
| ↳ `comment` | string | Last attached comment |
| ↳ `creationDate` | string | Creation timestamp |
| ↳ `lastModified` | string | Last modification timestamp |
| ↳ `submitDate` | string | Last submission timestamp |
| ↳ `startDate` | string | Trip start date (ISO 8601) |
| ↳ `endDate` | string | Trip end date (ISO 8601) |
| ↳ `startTime` | string | Trip start time (HH:mm) |
| ↳ `endTime` | string | Trip end time (HH:mm) |
| ↳ `approved` | boolean | Whether the request is approved |
| ↳ `pendingApproval` | boolean | Pending approval flag |
| ↳ `closed` | boolean | Closed flag |
| ↳ `everSentBack` | boolean | Ever-sent-back flag |
| ↳ `canceledPostApproval` | boolean | Canceled after approval flag |
| ↳ `approvalStatus` | json | Approval status |
| ↳ `code` | string | Status code (NOT\_SUBMITTED, SUBMITTED, APPROVED, CANCELED, SENTBACK) |
| ↳ `name` | string | Localized status name |
| ↳ `owner` | json | Travel request owner |
| ↳ `id` | string | User UUID |
| ↳ `firstName` | string | Owner first name |
| ↳ `lastName` | string | Owner last name |
| ↳ `approver` | json | Approver assigned to the request |
| ↳ `id` | string | User UUID |
| ↳ `firstName` | string | Approver first name |
| ↳ `lastName` | string | Approver last name |
| ↳ `policy` | json | Resource link to the applicable policy |
| ↳ `id` | string | Policy ID |
| ↳ `href` | string | Policy hyperlink |
| ↳ `type` | json | Request type |
| ↳ `code` | string | Request type code |
| ↳ `label` | string | Request type label |
| ↳ `mainDestination` | json | Main destination of the trip |
| ↳ `city` | string | City |
| ↳ `countryCode` | string | ISO country code |
| ↳ `countrySubDivisionCode` | string | ISO country sub-division code |
| ↳ `name` | string | Destination name |
| ↳ `totalApprovedAmount` | json | Total approved amount |
| ↳ `value` | number | Amount value |
| ↳ `currency` | string | Currency code |
| ↳ `totalPostedAmount` | json | Total posted amount |
| ↳ `value` | number | Amount value |
| ↳ `currency` | string | Currency code |
| ↳ `totalRemainingAmount` | json | Total remaining amount |
| ↳ `value` | number | Amount value |
| ↳ `currency` | string | Currency code |
| ↳ `operations` | array | Available workflow actions |
### SAP Concur Update User [#sap-concur-update-user]
Patch a user identity (PATCH /profile/identity/v4.1/Users/\{id}).
#### Input [#input-68]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userUuid` | string | Yes | User UUID to update |
| `body` | json | Yes | SCIM PATCH payload. Required: schemas: \["urn:ietf:params:scim:api:messages:2.0:PatchOp"] and Operations, an array of \{ op, path, value } where op is add, replace, or remove. If the target location is a multi-valued attribute and no filter is specified, the attribute and all values are replaced. Example: deactivate a user with \{ op: "replace", path: "active", value: false }. |
#### Output [#output-68]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Updated SCIM User payload |
### SAP Concur Upload Receipt Image [#sap-concur-upload-receipt-image]
Upload an image-only receipt (POST /receipts/v4/users/\{userId}/image-only-receipts).
#### Input [#input-69]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `datacenter` | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
| `grantType` | string | No | OAuth grant type: client\_credentials (default) or password |
| `clientId` | string | Yes | Concur OAuth client ID |
| `clientSecret` | string | Yes | Concur OAuth client secret |
| `username` | string | No | Username (only for password grant) |
| `password` | string | No | Password (only for password grant) |
| `companyUuid` | string | No | Company UUID for multi-company access tokens |
| `userId` | string | Yes | Concur user UUID who owns the receipt |
| `receipt` | json | Yes | Receipt image file (UserFile reference). Supported formats: png, jpg, jpeg, tiff, tif, gif, pdf. TIFF/TIF files are converted to PDF server-side. Maximum size 25 MB. |
#### Output [#output-69]
| Parameter | Type | Description |
| ------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `status` | number | HTTP status code returned by Concur |
| `data` | json | Image-only receipt upload response (HTTP 202 Accepted; Location and Link response headers exposed in body) |
| ↳ `location` | string | Location header URL for the new receipt image (e.g. /receipts/v4/images/\{receiptId}) |
| ↳ `link` | string | Raw Link header value, forwarded verbatim — it is not a bare URL. Format: \; rel="processing-status". Parse the href out of the angle brackets before using it. |
---
# Affinity (/en/integrations/affinity)
{/* MANUAL-CONTENT-START:intro */}
[Affinity](https://www.affinity.co/) is a CRM for companies, people, opportunities, and relationship data. Its v2 integration can read and update records, lists, field values, notes, interactions, and transcripts.
Discover a workspace’s list fields and dropdown options before writing values. Use bulk field operations for multiple changes and follow the field-value change feed from a stored cursor for incremental sync. Relationship and inferred-connection operations help find introduction paths; Semantic Search finds companies from an investment description.
**Before you start**
Generate an API key from the **Manage Apps** page in your Affinity settings; it authenticates as a bearer token. Two things gate what you will actually see:
* **License.** The Affinity APIs are only available on select license types. Monthly call limits follow the plan tier — 100k on Scale and Advanced, unlimited on Enterprise — alongside a per-user limit of 900 calls per minute shared with the v1 API. Exceeding either returns a 429.
* **Permissions.** The API respects in-product sharing, so it never returns a list, note, or interaction the key's user cannot already see. Several operations additionally require a role-based permission an Affinity admin grants: *Export All Organizations directory* for listing and searching companies, *Export All People directory* for listing and searching people, *Export data from Lists* for opportunities and for reading or writing list entries, *Manage duplicates* plus an admin role for merges, and *Manage Users* for user email addresses and roles.
Some Affinity endpoints are still marked BETA — company, person, and list-entry search, the per-entity field-value reads, the inferred-connection operations, and the user operations. Affinity may change those without notice or versioning.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrates the Affinity v2 API into the workflow. Read and search companies, people, and opportunities, page the rows of any list or saved view, read and write field values one at a time or a hundred at once, write and reply to notes, create reminders, follow logged calls, emails, meetings, and transcripts, find warm introductions through shared work and investment history, search notes and files by keyword, find companies from a description in plain language, and follow the field-value change feed for delta sync. What each operation can reach depends on the permissions granted to the API key.
## Actions [#actions]
### Affinity Batch Update Entity Fields [#affinity-batch-update-entity-fields]
Write up to 100 non-list field values on one company or person in a single request.
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `entityType` | string | Yes | Which entity to write the fields on: companies or persons |
| `entityId` | string | Yes | ID of that company or person |
| `updates` | json | Yes | Up to 100 field updates as \[\{"id":"\","value":\{"type":"…","data":…}}], using the same value shapes as a single field update |
#### Output [#output]
| Parameter | Type | Description |
| ----------- | ------ | -------------------------------------- |
| `operation` | string | The batch operation Affinity performed |
### Affinity Batch Update List Entry Fields [#affinity-batch-update-list-entry-fields]
Write up to 100 field values on one list row in a single request. Requires the "Export data from Lists" permission.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `listId` | string | Yes | The list ID |
| `listEntryId` | string | Yes | The list entry ID |
| `updates` | json | Yes | Up to 100 field updates as \[\{"id":"\","value":\{"type":"…","data":…}}], using the same value shapes as a single field update |
#### Output [#output-1]
| Parameter | Type | Description |
| ----------- | ------ | -------------------------------------- |
| `operation` | string | The batch operation Affinity performed |
### Affinity Create List [#affinity-create-list]
Create a list. Its type fixes which entities it can hold, and the API key holder becomes its creator and owner.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ---------- | ------- | -------- | ----------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `name` | string | Yes | Name of the new list |
| `type` | string | Yes | Entity kind the list holds: company, opportunity, or person |
| `isPublic` | boolean | No | Whether everyone in the organization can see the list |
#### Output [#output-2]
| Parameter | Type | Description |
| ----------- | ------- | ---------------------------------------------------------------- |
| `id` | number | The list's unique identifier |
| `name` | string | The list name |
| `creatorId` | number | User who created the list |
| `ownerId` | number | User who owns the list |
| `isPublic` | boolean | Whether the list is visible to the organization |
| `createdAt` | string | When the list was created |
| `type` | string | company, opportunity, or person — the entity kind the list holds |
### Affinity Create List Field Dropdown Option [#affinity-create-list-field-dropdown-option]
Add a selectable option to a dropdown field on a list. A ranked or status option also needs a rank and a color.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `listId` | string | Yes | The list ID |
| `fieldId` | string | Yes | The dropdown field ID on that list |
| `type` | string | Yes | Kind of option to create, matching the field. dropdown takes only a label; ranked-dropdown also requires rank and color; status-dropdown additionally requires a status category. Sending a field the kind does not accept is rejected |
| `text` | string | Yes | The option label |
| `rank` | number | No | Sort order. Required on a ranked-dropdown or status-dropdown option |
| `color` | string | No | Option color: white, gray, blue, green, purple, orange, or red. Required on a ranked-dropdown or status-dropdown option |
| `statusCategory` | string | No | Pipeline meaning of the option: open, won, lost, or on-hold. Status-dropdown options only |
| `winRate` | number | No | Expected win rate of the status. Status-dropdown options only |
#### Output [#output-3]
| Parameter | Type | Description |
| ---------------- | ------ | ------------------------------------------------ |
| `id` | number | The dropdown option's unique identifier |
| `text` | string | The option label |
| `type` | string | dropdown, ranked-dropdown, or status-dropdown |
| `rank` | number | Sort order, on ranked and status options |
| `color` | string | white, gray, blue, green, purple, orange, or red |
| `statusCategory` | string | open, won, lost, or on-hold, on status options |
| `winRate` | number | Win rate of a status option |
### Affinity Create Merge [#affinity-create-merge]
Fold a duplicate company or person into the record you are keeping. The merge runs asynchronously — poll the returned task to see it finish. Requires the "Manage duplicates" permission and an admin role.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `entityType` | string | Yes | What to merge: companies or persons |
| `primaryId` | string | Yes | ID of the record to keep |
| `duplicateId` | string | Yes | ID of the duplicate record to fold in |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ------ | -------------------------------------------- |
| `taskUrl` | string | URL of the merge task to poll for completion |
### Affinity Create Note [#affinity-create-note]
Write a note — attached to companies, persons, and opportunities, anchored to a meeting, call, or chat message, or posted as a reply to an existing note.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `type` | string | Yes | Note shape: entities to attach it to records, interaction to anchor it to a meeting, call, or chat message, or user-reply to reply to a note |
| `html` | string | Yes | The note body as HTML |
| `companyIds` | json | No | Companies to attach the note to, e.g. \[1, 2]. Not used on a reply |
| `personIds` | json | No | Persons to attach the note to, e.g. \[1, 2]. Not used on a reply |
| `opportunityIds` | json | No | Opportunities to attach the note to, e.g. \[1, 2]. Not used on a reply |
| `interactionId` | string | No | The interaction to anchor the note to. Required for an interaction note |
| `interactionType` | string | No | Kind of the anchoring interaction: meeting, call, or chat-message. Required for an interaction note |
| `parentId` | string | No | The note being replied to. Required for a user-reply note |
| `creatorId` | string | No | Attribute the note to another internal person. Defaults to the API key holder |
| `createdAt` | string | No | Backdate the note to this ISO 8601 timestamp |
#### Output [#output-5]
| Parameter | Type | Description |
| ----------------------- | ------ | ---------------------------------------------------------------------- |
| `id` | number | The note's unique identifier |
| `type` | string | entities, interaction, ai-notetaker, user-reply, or ai-notetaker-reply |
| `content` | json | The note body as \{html} |
| `creator` | object | Person who authored the note |
| ↳ `id` | number | The person's unique identifier |
| ↳ `firstName` | string | The person's first name |
| ↳ `lastName` | string | The person's last name |
| ↳ `primaryEmailAddress` | string | The person's primary email address |
| ↳ `type` | string | Whether the person is internal, a collaborator, or external |
| `mentions` | array | Persons mentioned in the note body |
| `createdAt` | string | When the note was created |
| `updatedAt` | string | When the note was last updated |
| `repliesCount` | number | Number of replies, on root notes only |
| `parent` | json | The note being replied to, on reply notes only |
| `interaction` | json | The meeting, call, chat message, or email the note is anchored to |
| `transcriptId` | number | Transcript behind an AI Notetaker note |
| `personsPreview` | json | Attached persons, with a count |
| `companiesPreview` | json | Attached companies, with a count |
| `opportunitiesPreview` | json | Attached opportunities, with a count |
### Affinity Create Reminder [#affinity-create-reminder]
Create a reminder on one company, person, or opportunity. A recurring reminder resets whenever the chosen signal happens instead of firing once.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `type` | string | Yes | one-time to fire once, or recurring to reset on a signal |
| `entityType` | string | Yes | What the reminder is about: company, person, or opportunity |
| `entityId` | string | Yes | ID of that company, person, or opportunity |
| `dueDate` | string | No | When the reminder is due, as an ISO 8601 timestamp. Required for a one-time reminder; on a recurring one Affinity computes it from the period when omitted |
| `content` | string | No | What the reminder says |
| `ownerId` | string | Yes | User the reminder is assigned to. Must be an internal user. The API key holder is recorded as the creator, which is a separate field |
| `resetTrigger` | string | No | What restarts a recurring reminder: interaction, email, or event. Required when the type is recurring |
| `periodDays` | number | No | Days between firings of a recurring reminder. Required when the type is recurring |
#### Output [#output-6]
| Parameter | Type | Description |
| ------------- | ------ | ---------------------------------------------------------------------- |
| `id` | number | The reminder's unique identifier |
| `type` | string | one-time or recurring |
| `status` | string | active, overdue, or completed |
| `content` | string | The reminder text |
| `dueDate` | string | When the reminder is due |
| `creator` | json | User who created the reminder, as \{id} |
| `owner` | json | User the reminder is assigned to, as \{id} |
| `completer` | json | User who completed it, as \{id} |
| `company` | json | Tagged company, as \{id} |
| `person` | json | Tagged person, as \{id} |
| `opportunity` | json | Tagged opportunity, as \{id} |
| `completedAt` | string | When the reminder was completed |
| `recurrence` | json | Recurrence as \{resetTrigger, periodDays}, null on a one-time reminder |
| `createdAt` | string | When the reminder was created |
| `updatedAt` | string | When the reminder was last updated |
### Affinity Delete List Field Dropdown Option [#affinity-delete-list-field-dropdown-option]
Permanently delete a dropdown option on a list field. Every list entry currently set to it is cleared, and those values cannot be recovered.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `listId` | string | Yes | The list ID |
| `fieldId` | string | Yes | The dropdown field ID on that list |
| `dropdownOptionId` | string | Yes | The dropdown option ID to delete |
#### Output [#output-7]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------------- |
| `success` | boolean | Whether Affinity accepted the change |
| `id` | string | Identifier of the resource that was changed |
### Affinity Delete Note [#affinity-delete-note]
Delete a note you created. Deleting a root note also deletes its replies; deleting a reply removes only that reply.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `noteId` | string | Yes | The note ID to delete |
#### Output [#output-8]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------------- |
| `success` | boolean | Whether Affinity accepted the change |
| `id` | string | Identifier of the resource that was changed |
### Affinity Get Company [#affinity-get-company]
Look up one company by ID. Field data is returned only for the Field IDs or Field Types asked for.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `companyId` | string | Yes | The company ID |
| `fieldIds` | json | No | Field IDs to return values for, e.g. \["affinity-data-location"]. Mutually exclusive with Field Types |
| `fieldTypes` | json | No | Field categories to return values for: enriched, global, or relationship-intelligence. Mutually exclusive with Field IDs |
#### Output [#output-9]
| Parameter | Type | Description |
| -------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id` | number | The company's unique identifier |
| `name` | string | The company name |
| `domain` | string | The primary domain |
| `domains` | array | Every domain associated with the company |
| `isGlobal` | boolean | Whether this is an Affinity Data global company profile |
| `fields` | array | Requested field values. Absent unless Field IDs or Field Types was supplied |
| ↳ `id` | string | The field's unique identifier |
| ↳ `name` | string | The field name |
| ↳ `type` | string | enriched, global, list, relationship-intelligence, or hidden |
| ↳ `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field |
| ↳ `value` | json | The typed value as \{type, data}, where type names the value type (person, company, dropdown, number, location, datetime, text, interaction, …) and data carries the value or null |
### Affinity Get Current User [#affinity-get-current-user]
Verify an Affinity API key and return the tenant, the user behind the key, and the scopes the grant carries.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
#### Output [#output-10]
| Parameter | Type | Description |
| ---------------- | ------ | ------------------------------------------------------ |
| `tenant` | object | The Affinity organization the key belongs to |
| ↳ `id` | number | The tenant's unique identifier |
| ↳ `name` | string | The organization name |
| ↳ `subdomain` | string | The subdomain under affinity.co |
| `user` | object | The user the key authenticates as |
| ↳ `id` | number | The user's unique identifier |
| ↳ `firstName` | string | The user's first name |
| ↳ `lastName` | string | The user's last name |
| ↳ `emailAddress` | string | The user's email address |
| `grant` | object | How the request is authenticated and what it may reach |
| ↳ `type` | string | api-key or access-token |
| ↳ `scopes` | array | Scopes available to the grant |
| ↳ `createdAt` | string | When the grant was created |
### Affinity Get Entity Field Value [#affinity-get-entity-field-value]
Read one non-list field value from a company or person.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | --------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `entityType` | string | Yes | Which entity to read the field from: companies or persons |
| `entityId` | string | Yes | ID of that company or person |
| `fieldId` | string | Yes | The field ID to read |
#### Output [#output-11]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id` | string | The field's unique identifier |
| `name` | string | The field name |
| `type` | string | enriched, global, list, relationship-intelligence, or hidden |
| `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field |
| `value` | json | The typed value as \{type, data}, where type names the value type (person, company, dropdown, number, location, datetime, text, interaction, …) and data carries the value or null |
### Affinity Get List [#affinity-get-list]
Read one list — its name, type, owner, and privacy setting.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `listId` | string | Yes | The list ID |
#### Output [#output-12]
| Parameter | Type | Description |
| ----------- | ------- | ---------------------------------------------------------------- |
| `id` | number | The list's unique identifier |
| `name` | string | The list name |
| `creatorId` | number | User who created the list |
| `ownerId` | number | User who owns the list |
| `isPublic` | boolean | Whether the list is visible to the organization |
| `createdAt` | string | When the list was created |
| `type` | string | company, opportunity, or person — the entity kind the list holds |
### Affinity Get List Entry [#affinity-get-list-entry]
Read one row of a list with its entity. Field data is returned only for the Field IDs or Field Types asked for.
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `listId` | string | Yes | The list ID |
| `listEntryId` | string | Yes | The list entry ID |
| `fieldIds` | json | No | Field IDs to return values for, e.g. \["affinity-data-location"]. Mutually exclusive with Field Types |
| `fieldTypes` | json | No | Field categories to return values for: enriched, global, list, or relationship-intelligence. Mutually exclusive with Field IDs |
#### Output [#output-13]
| Parameter | Type | Description |
| ----------- | ------ | -------------------------------------------------------------------------- |
| `id` | number | The list entry's unique identifier |
| `type` | string | company, person, or opportunity |
| `listId` | number | The list the entry belongs to |
| `createdAt` | string | When the entity was added to the list |
| `creatorId` | number | User who added the entity |
| `entity` | json | The company, person, or opportunity on the row, including its field values |
### Affinity Get List Entry Field [#affinity-get-list-entry-field]
Read one field value on a list row.
#### Input [#input-14]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `listId` | string | Yes | The list ID |
| `listEntryId` | string | Yes | The list entry ID |
| `fieldId` | string | Yes | The field ID to read |
#### Output [#output-14]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id` | string | The field's unique identifier |
| `name` | string | The field name |
| `type` | string | enriched, global, list, relationship-intelligence, or hidden |
| `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field |
| `value` | json | The typed value as \{type, data}, where type names the value type (person, company, dropdown, number, location, datetime, text, interaction, …) and data carries the value or null |
### Affinity Get List Field Dropdown Option [#affinity-get-list-field-dropdown-option]
Read one dropdown option on a list field.
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `listId` | string | Yes | The list ID |
| `fieldId` | string | Yes | The dropdown field ID on that list |
| `dropdownOptionId` | string | Yes | The dropdown option ID |
#### Output [#output-15]
| Parameter | Type | Description |
| ---------------- | ------ | ------------------------------------------------ |
| `id` | number | The dropdown option's unique identifier |
| `text` | string | The option label |
| `type` | string | dropdown, ranked-dropdown, or status-dropdown |
| `rank` | number | Sort order, on ranked and status options |
| `color` | string | white, gray, blue, green, purple, orange, or red |
| `statusCategory` | string | open, won, lost, or on-hold, on status options |
| `winRate` | number | Win rate of a status option |
### Affinity Get Merge [#affinity-get-merge]
Read the status of one company or person merge, including why it failed if it did.
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ----------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `entityType` | string | Yes | Which merge to read: companies or persons |
| `mergeId` | string | Yes | The merge ID |
#### Output [#output-16]
| Parameter | Type | Description |
| -------------------- | ------ | --------------------------------------------- |
| `id` | number | The merge's unique identifier |
| `status` | string | in-progress, success, or failed |
| `taskId` | string | Task that groups this merge with its siblings |
| `startedAt` | string | When the merge started |
| `completedAt` | string | When the merge finished |
| `errorMessage` | string | Why the merge failed |
| `primaryCompanyId` | number | Company kept by a company merge |
| `duplicateCompanyId` | number | Company folded in by a company merge |
| `primaryPersonId` | number | Person kept by a person merge |
| `duplicatePersonId` | number | Person folded in by a person merge |
### Affinity Get Merge Task [#affinity-get-merge-task]
Read one merge task and how its merges are progressing. Poll this after starting a merge.
#### Input [#input-17]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ---------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `entityType` | string | Yes | Which merge task to read: companies or persons |
| `taskId` | string | Yes | The merge task ID |
#### Output [#output-17]
| Parameter | Type | Description |
| ---------------- | ------ | --------------------------------------------------------------------- |
| `id` | string | The task's unique identifier |
| `status` | string | in-progress, success, or failed |
| `resultsSummary` | json | Counts of the grouped merges as \{total, inProgress, success, failed} |
### Affinity Get Note [#affinity-get-note]
Read one note with its body, author, mentions, and attached records.
#### Input [#input-18]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `noteId` | string | Yes | The note ID |
| `includes` | json | No | Extra properties to return, e.g. \["repliesCount","personsPreview","companiesPreview","opportunitiesPreview"]. Those four fields are omitted unless requested here |
#### Output [#output-18]
| Parameter | Type | Description |
| ----------------------- | ------ | ---------------------------------------------------------------------- |
| `id` | number | The note's unique identifier |
| `type` | string | entities, interaction, ai-notetaker, user-reply, or ai-notetaker-reply |
| `content` | json | The note body as \{html} |
| `creator` | object | Person who authored the note |
| ↳ `id` | number | The person's unique identifier |
| ↳ `firstName` | string | The person's first name |
| ↳ `lastName` | string | The person's last name |
| ↳ `primaryEmailAddress` | string | The person's primary email address |
| ↳ `type` | string | Whether the person is internal, a collaborator, or external |
| `mentions` | array | Persons mentioned in the note body |
| `createdAt` | string | When the note was created |
| `updatedAt` | string | When the note was last updated |
| `repliesCount` | number | Number of replies, on root notes only |
| `parent` | json | The note being replied to, on reply notes only |
| `interaction` | json | The meeting, call, chat message, or email the note is anchored to |
| `transcriptId` | number | Transcript behind an AI Notetaker note |
| `personsPreview` | json | Attached persons, with a count |
| `companiesPreview` | json | Attached companies, with a count |
| `opportunitiesPreview` | json | Attached opportunities, with a count |
### Affinity Get Opportunity [#affinity-get-opportunity]
Read one opportunity and the list it belongs to. Its field data lives on the list entry.
#### Input [#input-19]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `opportunityId` | string | Yes | The opportunity ID |
#### Output [#output-19]
| Parameter | Type | Description |
| -------------- | ------- | ----------------------------------------------------------- |
| `id` | number | The opportunity's unique identifier |
| `name` | string | The opportunity name |
| `listId` | number | The list the opportunity belongs to |
| `listName` | string | Name of that list |
| `isRestricted` | boolean | Whether list permissions restrict access to the opportunity |
| `isRedacted` | boolean | Whether the opportunity fields were redacted |
### Affinity Get Person [#affinity-get-person]
Look up one person by ID. Field data is returned only for the Field IDs or Field Types asked for.
#### Input [#input-20]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `personId` | string | Yes | The person ID |
| `fieldIds` | json | No | Field IDs to return values for, e.g. \["affinity-data-location"]. Mutually exclusive with Field Types |
| `fieldTypes` | json | No | Field categories to return values for: enriched, global, or relationship-intelligence. Mutually exclusive with Field IDs |
#### Output [#output-20]
| Parameter | Type | Description |
| --------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id` | number | The person's unique identifier |
| `firstName` | string | The person's first name |
| `lastName` | string | The person's last name |
| `primaryEmailAddress` | string | The person's primary email address |
| `emailAddresses` | array | Every email address on the person |
| `type` | string | Whether the person is internal or external |
| `fields` | array | Requested field values. Absent unless Field IDs or Field Types was supplied |
| ↳ `id` | string | The field's unique identifier |
| ↳ `name` | string | The field name |
| ↳ `type` | string | enriched, global, list, relationship-intelligence, or hidden |
| ↳ `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field |
| ↳ `value` | json | The typed value as \{type, data}, where type names the value type (person, company, dropdown, number, location, datetime, text, interaction, …) and data carries the value or null |
### Affinity Get Saved View [#affinity-get-saved-view]
Read one saved view — its name, kind, and creation date.
#### Input [#input-21]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `listId` | string | Yes | The list ID |
| `viewId` | string | Yes | The saved view ID |
#### Output [#output-21]
| Parameter | Type | Description |
| ----------- | ------ | ---------------------------------- |
| `id` | number | The saved view's unique identifier |
| `name` | string | The saved view name |
| `type` | string | sheet, board, or dashboard |
| `createdAt` | string | When the saved view was created |
### Affinity Get Transcript [#affinity-get-transcript]
Read one transcript with its first 100 fragments. Page the fragments endpoint for a longer meeting.
#### Input [#input-22]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `transcriptId` | string | Yes | The transcript ID |
#### Output [#output-22]
| Parameter | Type | Description |
| ------------------ | ------ | ----------------------------------------------- |
| `id` | number | The transcript's unique identifier |
| `note` | json | The AI Notetaker note the transcript belongs to |
| `createdAt` | string | When the transcript was created |
| `languageCode` | string | Language the meeting was held in |
| `fragmentsPreview` | json | The first 100 fragments, with a total count |
### Affinity Get User [#affinity-get-user]
Read one internal user. A user and their person record share the same numeric ID, so a person ID works here.
#### Input [#input-23]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------ |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `userId` | string | Yes | The user ID, which is also their person ID |
#### Output [#output-23]
| Parameter | Type | Description |
| --------------------- | ------ | ----------------------------------------------------------------- |
| `id` | number | The user's unique identifier, shared with their person ID |
| `firstName` | string | The user's first name |
| `lastName` | string | The user's last name |
| `primaryEmailAddress` | string | The user's primary email address |
| `emailAddresses` | array | Every email address, for callers with the Manage Users permission |
| `photoUrl` | string | URL of the user's photo |
| `status` | string | active, invited, or deactivated |
| `role` | string | Account role, for callers with the Manage Users permission |
### Affinity List Calls [#affinity-list-calls]
Page through logged calls and their participants. Only calls the API key holder can see are returned.
#### Input [#input-24]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `filter` | string | No | Affinity Filtering Language expression, e.g. "createdAt>=2026-01-01" |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
#### Output [#output-24]
| Parameter | Type | Description |
| -------------------- | ------- | ------------------------------------------------------- |
| `calls` | array | Logged calls, newest page first |
| ↳ `id` | number | The call's unique identifier |
| ↳ `loggingType` | string | How the call was logged |
| ↳ `title` | string | The call title |
| ↳ `startTime` | string | When the call started |
| ↳ `endTime` | string | When the call ended |
| ↳ `allDay` | boolean | Whether the call spans the whole day |
| ↳ `creator` | json | Who logged the call |
| ↳ `createdAt` | string | When the record was created |
| ↳ `updatedAt` | string | When the record was last updated |
| ↳ `attendeesPreview` | json | Attendees, with a total count |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
### Affinity List Chat Messages [#affinity-list-chat-messages]
Page through logged chat messages and their participants. Only messages the API key holder can see are returned.
#### Input [#input-25]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `filter` | string | No | Affinity Filtering Language expression, e.g. "createdAt>=2026-01-01" |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
#### Output [#output-25]
| Parameter | Type | Description |
| ----------------------- | ------ | ----------------------------------------------------------- |
| `chatMessages` | array | Logged chat messages |
| ↳ `id` | number | The chat message's unique identifier |
| ↳ `sentAt` | string | When the message was sent |
| ↳ `loggingType` | string | How the message was logged |
| ↳ `direction` | string | sent or received |
| ↳ `creator` | object | Person who sent the message |
| ↳ `id` | number | The person's unique identifier |
| ↳ `firstName` | string | The person's first name |
| ↳ `lastName` | string | The person's last name |
| ↳ `primaryEmailAddress` | string | The person's primary email address |
| ↳ `type` | string | Whether the person is internal, a collaborator, or external |
| ↳ `createdAt` | string | When the record was created |
| ↳ `updatedAt` | string | When the record was last updated |
| ↳ `participantsPreview` | json | Participants, with a total count |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
### Affinity List Companies [#affinity-list-companies]
Page through companies. Companies come back without field data unless Field IDs or Field Types asks for it.
#### Input [#input-26]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `ids` | json | No | Restrict the page to these company IDs, e.g. \[1, 2, 3] |
| `fieldIds` | json | No | Field IDs to return values for, e.g. \["affinity-data-location"]. Mutually exclusive with Field Types |
| `fieldTypes` | json | No | Field categories to return values for: enriched, global, or relationship-intelligence. Mutually exclusive with Field IDs |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
#### Output [#output-26]
| Parameter | Type | Description |
| -------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `companies` | array | Companies with any requested field values |
| ↳ `id` | number | The company's unique identifier |
| ↳ `name` | string | The company name |
| ↳ `domain` | string | The primary domain |
| ↳ `domains` | array | Every domain associated with the company |
| ↳ `isGlobal` | boolean | Whether this is an Affinity Data global company profile |
| ↳ `fields` | array | Requested field values. Absent unless Field IDs or Field Types was supplied |
| ↳ `id` | string | The field's unique identifier |
| ↳ `name` | string | The field name |
| ↳ `type` | string | enriched, global, list, relationship-intelligence, or hidden |
| ↳ `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field |
| ↳ `value` | json | The typed value as \{type, data}, where type names the value type (person, company, dropdown, number, location, datetime, text, interaction, …) and data carries the value or null |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
### Affinity List Coworker Connections [#affinity-list-coworker-connections]
Find warm paths into a company through shared work history: who in your Affinity data once worked alongside the people you want to reach. Grouped by target, strongest first.
#### Input [#input-27]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | ---------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `filter` | string | Yes | Required scope. The only supported filter is target.currentCompany.id, e.g. "target.currentCompany.id=123" |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of targets to return per page, 1-50. Defaults to 20 |
| `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query |
#### Output [#output-27]
| Parameter | Type | Description |
| --------------- | ------ | ----------------------------------------------------------------------------------------------- |
| `connections` | array | Targets and the coworkers who might introduce you |
| ↳ `target` | json | The person to reach, as \{fullName, title, linkedinUrl, currentCompany} |
| ↳ `connections` | array | People in your Affinity data who might know the target, each with the inference that links them |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
| `totalCount` | number | Total size of the collection, only when Total Count was requested |
### Affinity List Emails [#affinity-list-emails]
Page through email metadata — subject, participants, and timestamps. Affinity never exposes email bodies through the API.
#### Input [#input-28]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `filter` | string | No | Affinity Filtering Language expression, e.g. "createdAt>=2026-01-01" |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
#### Output [#output-28]
| Parameter | Type | Description |
| ------------------------- | ------ | --------------------------------------------------------------------------------- |
| `emails` | array | Email metadata. Subjects are omitted when the caller lacks permission to see them |
| ↳ `id` | number | The email's unique identifier |
| ↳ `sentAt` | string | When the email was sent |
| ↳ `loggingType` | string | How the email was logged |
| ↳ `direction` | string | sent or received |
| ↳ `subject` | string | The subject line |
| ↳ `createdAt` | string | When the record was created |
| ↳ `updatedAt` | string | When the record was last updated |
| ↳ `from` | json | Sender, as \{emailAddress, person} |
| ↳ `toParticipantsPreview` | json | To recipients, with a total count |
| ↳ `ccParticipantsPreview` | json | Cc recipients, with a total count |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
### Affinity List Entity Field Values [#affinity-list-entity-field-values]
Page through a company's or person's non-list field values. List fields are not returned here — read those through the list entry.
#### Input [#input-29]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `entityType` | string | Yes | Which entity to read field values from: companies or persons |
| `entityId` | string | Yes | ID of that company or person |
| `ids` | json | No | Restrict to these field IDs. Mutually exclusive with Field Types |
| `types` | json | No | Restrict to these field categories: enriched, global, relationship-intelligence. Mutually exclusive with Field IDs |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 20 |
#### Output [#output-29]
| Parameter | Type | Description |
| -------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `fields` | array | Field values on the entity |
| ↳ `id` | string | The field's unique identifier |
| ↳ `name` | string | The field name |
| ↳ `type` | string | enriched, global, list, relationship-intelligence, or hidden |
| ↳ `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field |
| ↳ `value` | json | The typed value as \{type, data}, where type names the value type (person, company, dropdown, number, location, datetime, text, interaction, …) and data carries the value or null |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
### Affinity List Entity List Entries [#affinity-list-entity-list-entries]
Page through a company's or person's rows across every list, each carrying that list's field values and when the entity was added.
#### Input [#input-30]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ----------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `entityType` | string | Yes | Which entity to look up the rows of: companies or persons |
| `entityId` | string | Yes | ID of that company or person |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
#### Output [#output-30]
| Parameter | Type | Description |
| -------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `listEntries` | array | List rows holding the entity, one per list it appears on |
| ↳ `id` | number | The list entry's unique identifier |
| ↳ `listId` | number | The list the entry belongs to |
| ↳ `listName` | string | Name of that list |
| ↳ `createdAt` | string | When the entity was added to the list |
| ↳ `creatorId` | number | User who added the entity |
| ↳ `fields` | array | Field values on the row, including list-specific fields |
| ↳ `id` | string | The field's unique identifier |
| ↳ `name` | string | The field name |
| ↳ `type` | string | enriched, global, list, relationship-intelligence, or hidden |
| ↳ `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field |
| ↳ `value` | json | The typed value as \{type, data}, where type names the value type (person, company, dropdown, number, location, datetime, text, interaction, …) and data carries the value or null |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
### Affinity List Entity Lists [#affinity-list-entity-lists]
List every list a company or person appears on that the caller can view.
#### Input [#input-31]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ----------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `entityType` | string | Yes | Which entity to look up the lists of: companies or persons |
| `entityId` | string | Yes | ID of that company or person |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
#### Output [#output-31]
| Parameter | Type | Description |
| ------------- | ------- | ------------------------------------------------------- |
| `lists` | array | Lists the entity appears on |
| ↳ `id` | number | The list's unique identifier |
| ↳ `name` | string | The list name |
| ↳ `creatorId` | number | User who created the list |
| ↳ `ownerId` | number | User who owns the list |
| ↳ `isPublic` | boolean | Whether the list is visible to the organization |
| ↳ `createdAt` | string | When the list was created |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
### Affinity List Entity Notes [#affinity-list-entity-notes]
List the notes relevant to one company, person, or opportunity — directly attached notes plus notes reaching it through its people and meetings.
#### Input [#input-32]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | --------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `entityType` | string | Yes | Which entity the notes hang off: companies, persons, or opportunities |
| `entityId` | string | Yes | ID of that company, person, or opportunity |
| `filter` | string | No | Affinity Filtering Language expression, e.g. "createdAt>=2026-01-01" |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
| `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query |
#### Output [#output-32]
| Parameter | Type | Description |
| ------------------------ | ------ | ---------------------------------------------------------------------- |
| `notes` | array | Notes relevant to the entity |
| ↳ `id` | number | The note's unique identifier |
| ↳ `type` | string | entities, interaction, ai-notetaker, user-reply, or ai-notetaker-reply |
| ↳ `content` | json | The note body as \{html} |
| ↳ `creator` | object | Person who authored the note |
| ↳ `id` | number | The person's unique identifier |
| ↳ `firstName` | string | The person's first name |
| ↳ `lastName` | string | The person's last name |
| ↳ `primaryEmailAddress` | string | The person's primary email address |
| ↳ `type` | string | Whether the person is internal, a collaborator, or external |
| ↳ `mentions` | array | Persons mentioned in the note body |
| ↳ `createdAt` | string | When the note was created |
| ↳ `updatedAt` | string | When the note was last updated |
| ↳ `repliesCount` | number | Number of replies, on root notes only |
| ↳ `parent` | json | The note being replied to, on reply notes only |
| ↳ `interaction` | json | The meeting, call, chat message, or email the note is anchored to |
| ↳ `transcriptId` | number | Transcript behind an AI Notetaker note |
| ↳ `personsPreview` | json | Attached persons, with a count |
| ↳ `companiesPreview` | json | Attached companies, with a count |
| ↳ `opportunitiesPreview` | json | Attached opportunities, with a count |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
| `totalCount` | number | Total size of the collection, only when Total Count was requested |
### Affinity List Entity Relationships [#affinity-list-entity-relationships]
List who knows a company or person, scored 0.0 to 1.0 by how much the two actually interact. Strongest first by default.
#### Input [#input-33]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | -------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `entityType` | string | Yes | Which entity to look up relationships for: companies or persons |
| `entityId` | string | Yes | ID of that company or person |
| `filter` | string | No | Affinity Filtering Language expression. This endpoint filters on interactionScore only, e.g. "interactionScore>=0.5" |
| `orderBy` | json | No | Sort order: \["interactionScore"] for weakest first, \["-interactionScore"] for strongest first (the default) |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
| `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query |
#### Output [#output-33]
| Parameter | Type | Description |
| ----------------------- | ------ | ----------------------------------------------------------------- |
| `relationships` | array | Scored relationships involving the entity |
| ↳ `person1` | object | One side of the relationship |
| ↳ `id` | number | The person's unique identifier |
| ↳ `firstName` | string | The person's first name |
| ↳ `lastName` | string | The person's last name |
| ↳ `primaryEmailAddress` | string | The person's primary email address |
| ↳ `type` | string | Whether the person is internal, a collaborator, or external |
| ↳ `person2` | object | The other side of the relationship |
| ↳ `id` | number | The person's unique identifier |
| ↳ `firstName` | string | The person's first name |
| ↳ `lastName` | string | The person's last name |
| ↳ `primaryEmailAddress` | string | The person's primary email address |
| ↳ `type` | string | Whether the person is internal, a collaborator, or external |
| ↳ `interactionScore` | number | Strength of the relationship, between 0.0 and 1.0 |
| ↳ `linkedIn` | json | When the two connected on LinkedIn, as \{connectedOn} |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
| `totalCount` | number | Total size of the collection, only when Total Count was requested |
### Affinity List Field Dropdown Options [#affinity-list-field-dropdown-options]
List the selectable options on a dropdown or ranked-dropdown company or person field. Writing such a field needs the option ID, not its text.
#### Input [#input-34]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ----------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `entityType` | string | Yes | Which field family the field belongs to: companies or persons |
| `fieldId` | string | Yes | The dropdown or ranked-dropdown field ID |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
#### Output [#output-34]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------------- |
| `options` | array | Selectable options on the field |
| ↳ `id` | number | The dropdown option's unique identifier |
| ↳ `text` | string | The option label |
| ↳ `type` | string | dropdown, ranked-dropdown, or status-dropdown |
| ↳ `rank` | number | Sort order, on ranked and status options |
| ↳ `color` | string | white, gray, blue, green, purple, orange, or red |
| ↳ `statusCategory` | string | open, won, lost, or on-hold, on status options |
| ↳ `winRate` | number | Win rate of a status option |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
### Affinity List Field Metadata [#affinity-list-field-metadata]
List the non-list company or person fields, with the value type, filter operators, and sort support of each. Start here to find the Field IDs the read and write tools take.
#### Input [#input-35]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `entityType` | string | Yes | Which fields to describe: companies or persons |
| `includes` | json | No | Extra properties to return: \["filterability","sortability"]. Both are omitted unless requested here |
| `filter` | string | No | Affinity Filtering Language expression. This endpoint filters on name only, e.g. "name=\~Status" |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
#### Output [#output-35]
| Parameter | Type | Description |
| -------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `fields` | array | Field definitions available on the entity |
| ↳ `id` | string | The field's unique identifier |
| ↳ `name` | string | The field name |
| ↳ `type` | string | enriched, global, list, or relationship-intelligence |
| ↳ `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field |
| ↳ `valueType` | string | The value shape: person, person-multi, company, company-multi, filterable-text, filterable-text-multi, number, number-multi, datetime, location, location-multi, text, ranked-dropdown, dropdown, dropdown-multi, formula-number, or interaction |
| ↳ `createdAt` | string | When the field was created |
| ↳ `filterability` | json | Supported filter operators, or the attributes that can be filtered on. Only present when requested through Includes |
| ↳ `sortability` | json | Whether the field can be sorted on, and by which attributes. Only present when requested through Includes |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
### Affinity List Field Value Changes [#affinity-list-field-value-changes]
Page through field value changes across the whole workspace. Built for delta sync: follow nextCursor to the end of a run, then resume from the last cursor next time.
#### Input [#input-36]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `filter` | string | No | Affinity Filtering Language expression over field.id, listEntry.id, changer.id, changedAt, or actionType. Resume a sync with e.g. "changedAt>2026-06-01T12:00:00Z" |
| `orderBy` | json | No | Sort order: \["changedAt"] for oldest first (the default), \["-changedAt"] for newest first |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
#### Output [#output-36]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------------------------- |
| `changes` | array | Field value changes across the workspace |
| ↳ `id` | number | The change's unique identifier |
| ↳ `type` | string | The value type the change applies to |
| ↳ `field` | json | The changed field as \{id, entityType, name, type} |
| ↳ `entity` | json | The entity whose field changed, as \{id} |
| ↳ `listEntry` | json | The list entry the change happened on, for list fields |
| ↳ `changer` | json | User who made the change |
| ↳ `changedAt` | string | When the change happened |
| ↳ `actionType` | string | add, update, or delete |
| ↳ `value` | json | The value that was added, set, or removed |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
### Affinity List Investor Executive Connections [#affinity-list-investor-executive-connections]
Find warm paths into a company through investment history: which investors in your Affinity data backed a company the people you want to reach once led. Grouped by target, strongest first.
#### Input [#input-37]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | ---------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `filter` | string | Yes | Required scope. The only supported filter is target.currentCompany.id, e.g. "target.currentCompany.id=123" |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of targets to return per page, 1-50. Defaults to 20 |
| `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query |
#### Output [#output-37]
| Parameter | Type | Description |
| --------------- | ------ | ----------------------------------------------------------------------------------------------- |
| `connections` | array | Targets and the investors who might introduce you |
| ↳ `target` | json | The person to reach, as \{fullName, title, linkedinUrl, currentCompany} |
| ↳ `connections` | array | People in your Affinity data who might know the target, each with the inference that links them |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
| `totalCount` | number | Total size of the collection, only when Total Count was requested |
### Affinity List List Entries [#affinity-list-list-entries]
Page through the rows of a list. Rows come back without field data unless Field IDs or Field Types asks for it.
#### Input [#input-38]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `listId` | string | Yes | The list ID |
| `fieldIds` | json | No | Field IDs to return values for, e.g. \["affinity-data-location"]. Mutually exclusive with Field Types |
| `fieldTypes` | json | No | Field categories to return values for: enriched, global, list, or relationship-intelligence. Mutually exclusive with Field IDs |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
#### Output [#output-38]
| Parameter | Type | Description |
| ------------- | ------ | -------------------------------------------------------------------------- |
| `listEntries` | array | Rows on the list, each with its entity inlined |
| ↳ `id` | number | The list entry's unique identifier |
| ↳ `type` | string | company, person, or opportunity |
| ↳ `listId` | number | The list the entry belongs to |
| ↳ `createdAt` | string | When the entity was added to the list |
| ↳ `creatorId` | number | User who added the entity |
| ↳ `entity` | json | The company, person, or opportunity on the row, including its field values |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
### Affinity List List Entry Field Value Changes [#affinity-list-list-entry-field-value-changes]
Page through the history of one list row — who changed which field, when, and to what.
#### Input [#input-39]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `listId` | string | Yes | The list ID |
| `listEntryId` | string | Yes | The list entry ID |
| `filter` | string | No | Affinity Filtering Language expression over field.id, changer.id, changedAt, or actionType, e.g. "field.id=field-1234" |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
#### Output [#output-39]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------------------------- |
| `changes` | array | Field value changes on the row |
| ↳ `id` | number | The change's unique identifier |
| ↳ `type` | string | The value type the change applies to |
| ↳ `field` | json | The changed field as \{id, entityType, name, type} |
| ↳ `entity` | json | The entity whose field changed, as \{id} |
| ↳ `listEntry` | json | The list entry the change happened on, for list fields |
| ↳ `changer` | json | User who made the change |
| ↳ `changedAt` | string | When the change happened |
| ↳ `actionType` | string | add, update, or delete |
| ↳ `value` | json | The value that was added, set, or removed |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
### Affinity List List Entry Fields [#affinity-list-list-entry-fields]
Page through every field value on one list row, including the list-specific columns. All fields are returned unless narrowed.
#### Input [#input-40]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `listId` | string | Yes | The list ID |
| `listEntryId` | string | Yes | The list entry ID |
| `ids` | json | No | Restrict to these field IDs. Mutually exclusive with Field Types |
| `types` | json | No | Restrict to these field categories: enriched, global, list, relationship-intelligence. Mutually exclusive with Field IDs |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 20 |
#### Output [#output-40]
| Parameter | Type | Description |
| -------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `fields` | array | Field values on the list row |
| ↳ `id` | string | The field's unique identifier |
| ↳ `name` | string | The field name |
| ↳ `type` | string | enriched, global, list, relationship-intelligence, or hidden |
| ↳ `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field |
| ↳ `value` | json | The typed value as \{type, data}, where type names the value type (person, company, dropdown, number, location, datetime, text, interaction, …) and data carries the value or null |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
### Affinity List List Field Dropdown Options [#affinity-list-list-field-dropdown-options]
List the selectable options on a dropdown, ranked-dropdown, or status-dropdown field of a list.
#### Input [#input-41]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `listId` | string | Yes | The list ID |
| `fieldId` | string | Yes | The dropdown field ID on that list |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
#### Output [#output-41]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------------- |
| `options` | array | Selectable options on the list field |
| ↳ `id` | number | The dropdown option's unique identifier |
| ↳ `text` | string | The option label |
| ↳ `type` | string | dropdown, ranked-dropdown, or status-dropdown |
| ↳ `rank` | number | Sort order, on ranked and status options |
| ↳ `color` | string | white, gray, blue, green, purple, orange, or red |
| ↳ `statusCategory` | string | open, won, lost, or on-hold, on status options |
| ↳ `winRate` | number | Win rate of a status option |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
### Affinity List List Fields [#affinity-list-list-fields]
List the fields available on one list, including its list-specific columns. Use these Field IDs when reading or writing list entries.
#### Input [#input-42]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `listId` | string | Yes | The list ID |
| `includes` | json | No | Extra properties to return: \["filterability","sortability"]. Both are omitted unless requested here |
| `filter` | string | No | Affinity Filtering Language expression. This endpoint filters on name only, e.g. "name=\~Stage" |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
#### Output [#output-42]
| Parameter | Type | Description |
| -------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `fields` | array | Field definitions available on the list |
| ↳ `id` | string | The field's unique identifier |
| ↳ `name` | string | The field name |
| ↳ `type` | string | enriched, global, list, or relationship-intelligence |
| ↳ `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field |
| ↳ `valueType` | string | The value shape: person, person-multi, company, company-multi, filterable-text, filterable-text-multi, number, number-multi, datetime, location, location-multi, text, ranked-dropdown, dropdown, dropdown-multi, formula-number, or interaction |
| ↳ `createdAt` | string | When the field was created |
| ↳ `filterability` | json | Supported filter operators, or the attributes that can be filtered on. Only present when requested through Includes |
| ↳ `sortability` | json | Whether the field can be sorted on, and by which attributes. Only present when requested through Includes |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
### Affinity List Lists [#affinity-list-lists]
Page through the lists in the organization that the caller can view.
#### Input [#input-43]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `term` | string | No | Case-insensitive substring match on the list name |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
#### Output [#output-43]
| Parameter | Type | Description |
| ------------- | ------- | ---------------------------------------------------------------- |
| `lists` | array | Lists the caller can view |
| ↳ `id` | number | The list's unique identifier |
| ↳ `name` | string | The list name |
| ↳ `creatorId` | number | User who created the list |
| ↳ `ownerId` | number | User who owns the list |
| ↳ `isPublic` | boolean | Whether the list is visible to the organization |
| ↳ `createdAt` | string | When the list was created |
| ↳ `type` | string | company, opportunity, or person — the entity kind the list holds |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
### Affinity List Meetings [#affinity-list-meetings]
Page through past and upcoming meetings with their organizer and attendees.
#### Input [#input-44]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `filter` | string | No | Affinity Filtering Language expression, e.g. "createdAt>=2026-01-01" |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
#### Output [#output-44]
| Parameter | Type | Description |
| -------------------- | ------- | ------------------------------------------------------- |
| `meetings` | array | Meetings with their attendees |
| ↳ `id` | number | The call's unique identifier |
| ↳ `loggingType` | string | automated or manual |
| ↳ `title` | string | The call title |
| ↳ `startTime` | string | When the call started |
| ↳ `endTime` | string | When the call ended |
| ↳ `allDay` | boolean | Whether the call spans the whole day |
| ↳ `creator` | json | Who logged the call |
| ↳ `createdAt` | string | When the record was created |
| ↳ `updatedAt` | string | When the record was last updated |
| ↳ `attendeesPreview` | json | Attendees, with a total count |
| ↳ `organizer` | json | Who organized the meeting |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
### Affinity List Merge Tasks [#affinity-list-merge-tasks]
Page through merge tasks, each summarizing how many of its merges are in progress, succeeded, or failed.
#### Input [#input-45]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `entityType` | string | Yes | Which merge tasks to list: companies or persons |
| `filter` | string | No | Affinity Filtering Language expression. This endpoint filters on status only, e.g. "status=in-progress" |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
#### Output [#output-45]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------------------------------------------------- |
| `tasks` | array | Merge tasks and their result summaries |
| ↳ `id` | string | The task's unique identifier |
| ↳ `status` | string | in-progress, success, or failed |
| ↳ `resultsSummary` | json | Counts of the grouped merges as \{total, inProgress, success, failed} |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
### Affinity List Merges [#affinity-list-merges]
Page through the company or person merges the organization has run, with the status and the records involved in each.
#### Input [#input-46]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ---------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `entityType` | string | Yes | Which merges to list: companies or persons |
| `filter` | string | No | Affinity Filtering Language expression over status or taskId, e.g. "status=failed" |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
#### Output [#output-46]
| Parameter | Type | Description |
| ---------------------- | ------ | ------------------------------------------------------- |
| `merges` | array | Merges the organization has run |
| ↳ `id` | number | The merge's unique identifier |
| ↳ `status` | string | in-progress, success, or failed |
| ↳ `taskId` | string | Task that groups this merge with its siblings |
| ↳ `startedAt` | string | When the merge started |
| ↳ `completedAt` | string | When the merge finished |
| ↳ `errorMessage` | string | Why the merge failed |
| ↳ `primaryCompanyId` | number | Company kept by a company merge |
| ↳ `duplicateCompanyId` | number | Company folded in by a company merge |
| ↳ `primaryPersonId` | number | Person kept by a person merge |
| ↳ `duplicatePersonId` | number | Person folded in by a person merge |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
### Affinity List Note Attached Companies [#affinity-list-note-attached-companies]
List the companies directly attached to one note.
#### Input [#input-47]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | ----------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `noteId` | string | Yes | The note ID |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
| `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query |
#### Output [#output-47]
| Parameter | Type | Description |
| ------------ | ------ | ----------------------------------------------------------------- |
| `companies` | array | Companies attached to the note |
| ↳ `id` | number | The company's unique identifier |
| ↳ `name` | string | The company name |
| ↳ `domain` | string | The company's primary domain |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
| `totalCount` | number | Total size of the collection, only when Total Count was requested |
### Affinity List Note Attached Opportunities [#affinity-list-note-attached-opportunities]
List the opportunities directly attached to one note.
#### Input [#input-48]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | ----------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `noteId` | string | Yes | The note ID |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
| `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query |
#### Output [#output-48]
| Parameter | Type | Description |
| ---------------- | ------- | ----------------------------------------------------------------- |
| `opportunities` | array | Opportunities attached to the note |
| ↳ `id` | number | The opportunity's unique identifier |
| ↳ `name` | string | The opportunity name |
| ↳ `listId` | number | The list the opportunity belongs to |
| ↳ `listName` | string | Name of that list |
| ↳ `isRestricted` | boolean | Whether list permissions restrict access to the opportunity |
| ↳ `isRedacted` | boolean | Whether the opportunity fields were redacted |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
| `totalCount` | number | Total size of the collection, only when Total Count was requested |
### Affinity List Note Attached Persons [#affinity-list-note-attached-persons]
List the persons directly attached to one note.
#### Input [#input-49]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | ----------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `noteId` | string | Yes | The note ID |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
| `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query |
#### Output [#output-49]
| Parameter | Type | Description |
| ----------------------- | ------ | ----------------------------------------------------------------- |
| `persons` | array | Persons attached to the note |
| ↳ `id` | number | The person's unique identifier |
| ↳ `firstName` | string | The person's first name |
| ↳ `lastName` | string | The person's last name |
| ↳ `primaryEmailAddress` | string | The person's primary email address |
| ↳ `type` | string | Whether the person is internal, a collaborator, or external |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
| `totalCount` | number | Total size of the collection, only when Total Count was requested |
### Affinity List Note Replies [#affinity-list-note-replies]
Page through the replies on one note, including AI Notetaker replies.
#### Input [#input-50]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | -------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `noteId` | string | Yes | The note ID whose replies to read |
| `filter` | string | No | Affinity Filtering Language expression, e.g. "createdAt>=2026-01-01" |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
| `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query |
#### Output [#output-50]
| Parameter | Type | Description |
| ------------------------ | ------ | ---------------------------------------------------------------------- |
| `replies` | array | Replies to the note |
| ↳ `id` | number | The note's unique identifier |
| ↳ `type` | string | entities, interaction, ai-notetaker, user-reply, or ai-notetaker-reply |
| ↳ `content` | json | The note body as \{html} |
| ↳ `creator` | object | Person who authored the note |
| ↳ `id` | number | The person's unique identifier |
| ↳ `firstName` | string | The person's first name |
| ↳ `lastName` | string | The person's last name |
| ↳ `primaryEmailAddress` | string | The person's primary email address |
| ↳ `type` | string | Whether the person is internal, a collaborator, or external |
| ↳ `mentions` | array | Persons mentioned in the note body |
| ↳ `createdAt` | string | When the note was created |
| ↳ `updatedAt` | string | When the note was last updated |
| ↳ `repliesCount` | number | Number of replies, on root notes only |
| ↳ `parent` | json | The note being replied to, on reply notes only |
| ↳ `interaction` | json | The meeting, call, chat message, or email the note is anchored to |
| ↳ `transcriptId` | number | Transcript behind an AI Notetaker note |
| ↳ `personsPreview` | json | Attached persons, with a count |
| ↳ `companiesPreview` | json | Attached companies, with a count |
| ↳ `opportunitiesPreview` | json | Attached opportunities, with a count |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
| `totalCount` | number | Total size of the collection, only when Total Count was requested |
### Affinity List Notes [#affinity-list-notes]
Page through every note the caller can see. Replies are excluded.
#### Input [#input-51]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `includes` | json | No | Extra properties to return, e.g. \["repliesCount","personsPreview","companiesPreview","opportunitiesPreview"]. Those four fields are omitted unless requested here |
| `filter` | string | No | Affinity Filtering Language expression, e.g. "createdAt>=2026-01-01" |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
| `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query |
#### Output [#output-51]
| Parameter | Type | Description |
| ------------------------ | ------ | ---------------------------------------------------------------------- |
| `notes` | array | Root notes, excluding replies |
| ↳ `id` | number | The note's unique identifier |
| ↳ `type` | string | entities, interaction, ai-notetaker, user-reply, or ai-notetaker-reply |
| ↳ `content` | json | The note body as \{html} |
| ↳ `creator` | object | Person who authored the note |
| ↳ `id` | number | The person's unique identifier |
| ↳ `firstName` | string | The person's first name |
| ↳ `lastName` | string | The person's last name |
| ↳ `primaryEmailAddress` | string | The person's primary email address |
| ↳ `type` | string | Whether the person is internal, a collaborator, or external |
| ↳ `mentions` | array | Persons mentioned in the note body |
| ↳ `createdAt` | string | When the note was created |
| ↳ `updatedAt` | string | When the note was last updated |
| ↳ `repliesCount` | number | Number of replies, on root notes only |
| ↳ `parent` | json | The note being replied to, on reply notes only |
| ↳ `interaction` | json | The meeting, call, chat message, or email the note is anchored to |
| ↳ `transcriptId` | number | Transcript behind an AI Notetaker note |
| ↳ `personsPreview` | json | Attached persons, with a count |
| ↳ `companiesPreview` | json | Attached companies, with a count |
| ↳ `opportunitiesPreview` | json | Attached opportunities, with a count |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
| `totalCount` | number | Total size of the collection, only when Total Count was requested |
### Affinity List Opportunities [#affinity-list-opportunities]
Page through opportunities. Field data lives on the list entry, not here — read it through the list or saved view the opportunity belongs to.
#### Input [#input-52]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `ids` | json | No | Restrict the page to these opportunity IDs, e.g. \[1, 2, 3] |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
#### Output [#output-52]
| Parameter | Type | Description |
| ---------------- | ------- | ----------------------------------------------------------- |
| `opportunities` | array | Opportunities the caller can view |
| ↳ `id` | number | The opportunity's unique identifier |
| ↳ `name` | string | The opportunity name |
| ↳ `listId` | number | The list the opportunity belongs to |
| ↳ `listName` | string | Name of that list |
| ↳ `isRestricted` | boolean | Whether list permissions restrict access to the opportunity |
| ↳ `isRedacted` | boolean | Whether the opportunity fields were redacted |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
### Affinity List Persons [#affinity-list-persons]
Page through persons. Persons come back without field data unless Field IDs or Field Types asks for it.
#### Input [#input-53]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `ids` | json | No | Restrict the page to these person IDs, e.g. \[1, 2, 3] |
| `fieldIds` | json | No | Field IDs to return values for, e.g. \["affinity-data-location"]. Mutually exclusive with Field Types |
| `fieldTypes` | json | No | Field categories to return values for: enriched, global, or relationship-intelligence. Mutually exclusive with Field IDs |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
#### Output [#output-53]
| Parameter | Type | Description |
| ----------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `persons` | array | Persons with any requested field values |
| ↳ `id` | number | The person's unique identifier |
| ↳ `firstName` | string | The person's first name |
| ↳ `lastName` | string | The person's last name |
| ↳ `primaryEmailAddress` | string | The person's primary email address |
| ↳ `emailAddresses` | array | Every email address on the person |
| ↳ `type` | string | Whether the person is internal or external |
| ↳ `fields` | array | Requested field values. Absent unless Field IDs or Field Types was supplied |
| ↳ `id` | string | The field's unique identifier |
| ↳ `name` | string | The field name |
| ↳ `type` | string | enriched, global, list, relationship-intelligence, or hidden |
| ↳ `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field |
| ↳ `value` | json | The typed value as \{type, data}, where type names the value type (person, company, dropdown, number, location, datetime, text, interaction, …) and data carries the value or null |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
### Affinity List Reminders [#affinity-list-reminders]
Page through the reminders the caller can see. Filter by status to surface what is overdue.
#### Input [#input-54]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | -------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `filter` | string | No | Affinity Filtering Language expression, e.g. "createdAt>=2026-01-01" |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
| `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query |
#### Output [#output-54]
| Parameter | Type | Description |
| --------------- | ------ | ---------------------------------------------------------------------- |
| `reminders` | array | Reminders visible to the caller |
| ↳ `id` | number | The reminder's unique identifier |
| ↳ `type` | string | one-time or recurring |
| ↳ `status` | string | active, overdue, or completed |
| ↳ `content` | string | The reminder text |
| ↳ `dueDate` | string | When the reminder is due |
| ↳ `creator` | json | User who created the reminder, as \{id} |
| ↳ `owner` | json | User the reminder is assigned to, as \{id} |
| ↳ `completer` | json | User who completed it, as \{id} |
| ↳ `company` | json | Tagged company, as \{id} |
| ↳ `person` | json | Tagged person, as \{id} |
| ↳ `opportunity` | json | Tagged opportunity, as \{id} |
| ↳ `completedAt` | string | When the reminder was completed |
| ↳ `recurrence` | json | Recurrence as \{resetTrigger, periodDays}, null on a one-time reminder |
| ↳ `createdAt` | string | When the reminder was created |
| ↳ `updatedAt` | string | When the reminder was last updated |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
| `totalCount` | number | Total size of the collection, only when Total Count was requested |
### Affinity List Saved View Entries [#affinity-list-saved-view-entries]
Page through the rows of a saved view. The view's own filters and columns decide which rows and which field data come back.
#### Input [#input-55]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `listId` | string | Yes | The list ID |
| `viewId` | string | Yes | The saved view ID |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
#### Output [#output-55]
| Parameter | Type | Description |
| ------------- | ------ | -------------------------------------------------------------------------- |
| `listEntries` | array | Rows the saved view exposes |
| ↳ `id` | number | The list entry's unique identifier |
| ↳ `type` | string | company, person, or opportunity |
| ↳ `listId` | number | The list the entry belongs to |
| ↳ `createdAt` | string | When the entity was added to the list |
| ↳ `creatorId` | number | User who added the entity |
| ↳ `entity` | json | The company, person, or opportunity on the row, including its field values |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
### Affinity List Saved Views [#affinity-list-saved-views]
List the saved views on a list that the caller can view.
#### Input [#input-56]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `listId` | string | Yes | The list ID |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
#### Output [#output-56]
| Parameter | Type | Description |
| ------------- | ------ | ------------------------------------------------------- |
| `savedViews` | array | Saved views on the list |
| ↳ `id` | number | The saved view's unique identifier |
| ↳ `name` | string | The saved view name |
| ↳ `type` | string | sheet, board, or dashboard |
| ↳ `createdAt` | string | When the saved view was created |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
### Affinity List Transcript Fragments [#affinity-list-transcript-fragments]
Page through everything said in a meeting, segment by segment with the speaker.
#### Input [#input-57]
| Parameter | Type | Required | Description |
| -------------- | ------- | -------- | ----------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `transcriptId` | string | Yes | The transcript ID |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
| `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query |
#### Output [#output-57]
| Parameter | Type | Description |
| ------------------ | ------ | ----------------------------------------------------------------- |
| `fragments` | array | Spoken segments in order |
| ↳ `content` | string | What was said |
| ↳ `speaker` | string | Who said it |
| ↳ `startTimestamp` | string | When the segment starts |
| ↳ `endTimestamp` | string | When the segment ends |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
| `totalCount` | number | Total size of the collection, only when Total Count was requested |
### Affinity List Transcripts [#affinity-list-transcripts]
Page through meeting transcript metadata. Read one transcript to get what was actually said.
#### Input [#input-58]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | -------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `filter` | string | No | Affinity Filtering Language expression, e.g. "createdAt>=2026-01-01" |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
| `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query |
#### Output [#output-58]
| Parameter | Type | Description |
| ------------- | ------ | ----------------------------------------------------------------- |
| `transcripts` | array | Transcript metadata, without the spoken content |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
| `totalCount` | number | Total size of the collection, only when Total Count was requested |
### Affinity List Users [#affinity-list-users]
Page through the internal users in the organization. Email addresses and roles are returned only to callers with the "Manage Users" permission.
#### Input [#input-59]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `term` | string | No | Case-insensitive match across first name, last name, and primary email |
| `filter` | string | No | Affinity Filtering Language expression over id or status, e.g. "status=active" |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
#### Output [#output-59]
| Parameter | Type | Description |
| ----------------------- | ------ | ----------------------------------------------------------------- |
| `users` | array | Internal users in the organization |
| ↳ `id` | number | The user's unique identifier, shared with their person ID |
| ↳ `firstName` | string | The user's first name |
| ↳ `lastName` | string | The user's last name |
| ↳ `primaryEmailAddress` | string | The user's primary email address |
| ↳ `emailAddresses` | array | Every email address, for callers with the Manage Users permission |
| ↳ `photoUrl` | string | URL of the user's photo |
| ↳ `status` | string | active, invited, or deactivated |
| ↳ `role` | string | Account role, for callers with the Manage Users permission |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
### Affinity Search Companies [#affinity-search-companies]
Search companies by filters, sorts, and a free-text term. Requires the "Export All Organizations directory" permission.
#### Input [#input-60]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `filters` | json | No | Filter group as \{operator: "and"\|"or", filters: \[...]}, at most 50 leaves. Each leaf is \{valueType, fieldId, operator, value}, and a leaf may itself be a nested group |
| `searchTerm` | string | No | Free-text term matched against the searchable fields. At least 3 characters |
| `searchFieldIds` | json | No | Field IDs the search term is matched against. Defaults to the searchable fields |
| `sorts` | json | No | Sort order as \[\{fieldId, direction: "asc"\|"desc", attributeId?}], up to 5, applied in order |
| `fieldIds` | json | No | Field IDs to return values for, e.g. \["affinity-data-location"]. Mutually exclusive with Field Types |
| `fieldTypes` | json | No | Field categories to return values for: enriched, global, or relationship-intelligence. Mutually exclusive with Field IDs |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
| `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query |
#### Output [#output-60]
| Parameter | Type | Description |
| -------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `companies` | array | Matching companies with any requested field values |
| ↳ `id` | number | The company's unique identifier |
| ↳ `name` | string | The company name |
| ↳ `domain` | string | The primary domain |
| ↳ `domains` | array | Every domain associated with the company |
| ↳ `isGlobal` | boolean | Whether this is an Affinity Data global company profile |
| ↳ `fields` | array | Requested field values. Absent unless Field IDs or Field Types was supplied |
| ↳ `id` | string | The field's unique identifier |
| ↳ `name` | string | The field name |
| ↳ `type` | string | enriched, global, list, relationship-intelligence, or hidden |
| ↳ `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field |
| ↳ `value` | json | The typed value as \{type, data}, where type names the value type (person, company, dropdown, number, location, datetime, text, interaction, …) and data carries the value or null |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
| `totalCount` | number | Total size of the collection, only when Total Count was requested |
### Affinity Search Files [#affinity-search-files]
Search files by keyword, ordered by relevance. Narrow to specific files or to one company, or leave both unset to search the whole account.
#### Input [#input-61]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `prompt` | string | Yes | What to search for. Between 3 and 500 characters |
| `ids` | json | No | Restrict the search to these file IDs. Cannot be combined with Company ID |
| `companyId` | string | No | Restrict the search to one company's files. Cannot be combined with file IDs |
| `limit` | number | No | Maximum number of files to return, 1-100. Defaults to 20 |
#### Output [#output-61]
| Parameter | Type | Description |
| -------------- | ------ | ---------------------------------------------------- |
| `results` | array | Matching files, most relevant first |
| ↳ `file` | json | The matched file as \{id, name} |
| ↳ `pageNumber` | number | Page the match was found on, for paginated documents |
| ↳ `preview` | string | Snippet of the file around the match |
| `count` | number | Number of matches returned |
### Affinity Search List Entries [#affinity-search-list-entries]
Search the rows of one list by filters, sorts, and a free-text term. Requires the "Export data from Lists" permission.
#### Input [#input-62]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `listId` | string | Yes | The list ID to search |
| `filters` | json | No | Filter group as \{operator: "and"\|"or", filters: \[...]}, at most 50 leaves. Each leaf is \{valueType, fieldId, operator, value}, and a leaf may itself be a nested group |
| `searchTerm` | string | No | Free-text term matched against the searchable fields. At least 3 characters |
| `searchFieldIds` | json | No | Field IDs the search term is matched against. Defaults to the searchable fields |
| `sorts` | json | No | Sort order as \[\{fieldId, direction: "asc"\|"desc", attributeId?}], up to 5, applied in order |
| `fieldIds` | json | No | Field IDs to return values for, e.g. \["affinity-data-location"]. Mutually exclusive with Field Types |
| `fieldTypes` | json | No | Field categories to return values for: enriched, global, list, or relationship-intelligence. Mutually exclusive with Field IDs |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
| `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query |
#### Output [#output-62]
| Parameter | Type | Description |
| ------------- | ------ | -------------------------------------------------------------------------- |
| `listEntries` | array | Matching rows on the list |
| ↳ `id` | number | The list entry's unique identifier |
| ↳ `type` | string | company, person, or opportunity |
| ↳ `listId` | number | The list the entry belongs to |
| ↳ `createdAt` | string | When the entity was added to the list |
| ↳ `creatorId` | number | User who added the entity |
| ↳ `entity` | json | The company, person, or opportunity on the row, including its field values |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
| `totalCount` | number | Total size of the collection, only when Total Count was requested |
### Affinity Search Notes [#affinity-search-notes]
Search notes by keyword, ordered by relevance. Narrow to specific notes or to one company, or leave both unset to search the whole account.
#### Input [#input-63]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `prompt` | string | Yes | What to search for. Between 3 and 500 characters |
| `ids` | json | No | Restrict the search to these note IDs. Cannot be combined with Company ID |
| `companyId` | string | No | Restrict the search to one company's notes. Cannot be combined with note IDs |
| `limit` | number | No | Maximum number of notes to return, 1-100. Defaults to 20 |
#### Output [#output-63]
| Parameter | Type | Description |
| ----------- | ------ | ------------------------------------ |
| `results` | array | Matching notes, most relevant first |
| ↳ `note` | json | The matched note as \{id, kind} |
| ↳ `preview` | string | Snippet of the note around the match |
| `count` | number | Number of matches returned |
### Affinity Search Persons [#affinity-search-persons]
Search persons by filters, sorts, and a free-text term. Requires the "Export All People directory" permission.
#### Input [#input-64]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `filters` | json | No | Filter group as \{operator: "and"\|"or", filters: \[...]}, at most 50 leaves. Each leaf is \{valueType, fieldId, operator, value}, and a leaf may itself be a nested group |
| `searchTerm` | string | No | Free-text term matched against the searchable fields. At least 3 characters |
| `searchFieldIds` | json | No | Field IDs the search term is matched against. Defaults to the searchable fields |
| `sorts` | json | No | Sort order as \[\{fieldId, direction: "asc"\|"desc", attributeId?}], up to 5, applied in order |
| `fieldIds` | json | No | Field IDs to return values for, e.g. \["affinity-data-location"]. Mutually exclusive with Field Types |
| `fieldTypes` | json | No | Field categories to return values for: enriched, global, or relationship-intelligence. Mutually exclusive with Field IDs |
| `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor |
| `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 |
| `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query |
#### Output [#output-64]
| Parameter | Type | Description |
| ----------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `persons` | array | Matching persons with any requested field values |
| ↳ `id` | number | The person's unique identifier |
| ↳ `firstName` | string | The person's first name |
| ↳ `lastName` | string | The person's last name |
| ↳ `primaryEmailAddress` | string | The person's primary email address |
| ↳ `emailAddresses` | array | Every email address on the person |
| ↳ `type` | string | Whether the person is internal or external |
| ↳ `fields` | array | Requested field values. Absent unless Field IDs or Field Types was supplied |
| ↳ `id` | string | The field's unique identifier |
| ↳ `name` | string | The field name |
| ↳ `type` | string | enriched, global, list, relationship-intelligence, or hidden |
| ↳ `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field |
| ↳ `value` | json | The typed value as \{type, data}, where type names the value type (person, company, dropdown, number, location, datetime, text, interaction, …) and data carries the value or null |
| `count` | number | Number of rows on this page |
| `nextCursor` | string | Cursor for the next page, or null on the last page |
| `prevCursor` | string | Cursor for the previous page, or null on the first page |
| `totalCount` | number | Total size of the collection, only when Total Count was requested |
### Affinity Semantic Search [#affinity-semantic-search]
Find companies from a description in plain language — industry, technology, stage, or business model. Currently searches companies only.
#### Input [#input-65]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `prompt` | string | Yes | What to look for, in plain language, e.g. "climate tech companies in our pipeline". Up to 500 characters |
| `listIds` | json | No | Restrict the search to companies on these lists, e.g. \[1, 2] |
| `limit` | number | No | Maximum number of companies to return, 1-100. Defaults to 100 |
#### Output [#output-65]
| Parameter | Type | Description |
| ------------- | ------- | ------------------------------------------------------- |
| `companies` | array | Matching companies, best match first |
| ↳ `id` | number | The company's unique identifier |
| ↳ `name` | string | The company name |
| ↳ `domain` | string | The company's primary domain |
| ↳ `domains` | array | Every domain associated with the company |
| ↳ `isGlobal` | boolean | Whether this is an Affinity Data global company profile |
| ↳ `score` | string | How well the company matched the prompt |
| `count` | number | Number of companies returned |
| `entityType` | string | The entity kind that was searched |
| `explanation` | string | How the search read the prompt |
### Affinity Update Entity Field Value [#affinity-update-entity-field-value]
Write one non-list field value on a company or person. The value type must match how the field is defined.
#### Input [#input-66]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `entityType` | string | Yes | Which entity to write the field on: companies or persons |
| `entityId` | string | Yes | ID of that company or person |
| `fieldId` | string | Yes | The field ID to write |
| `value` | json | Yes | The new value as \{type, data}, where type matches the field's value type. Examples: \{"type":"text","data":"Series B"}, \{"type":"number","data":42}, \{"type":"dropdown","data":\{"dropdownOptionId":7}}, \{"type":"person","data":\{"id":123}}, \{"type":"person-multi","data":\[\{"id":123}]}. Pass data as null to clear the field |
#### Output [#output-66]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------------- |
| `success` | boolean | Whether Affinity accepted the change |
| `id` | string | Identifier of the resource that was changed |
### Affinity Update List Entry Field [#affinity-update-list-entry-field]
Write one field value on a list row. Requires the "Export data from Lists" permission.
#### Input [#input-67]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `listId` | string | Yes | The list ID |
| `listEntryId` | string | Yes | The list entry ID |
| `fieldId` | string | Yes | The field ID to write |
| `value` | json | Yes | The new value as \{type, data}, where type matches the field's value type. Examples: \{"type":"text","data":"Series B"}, \{"type":"number","data":42}, \{"type":"dropdown","data":\{"dropdownOptionId":7}}, \{"type":"person","data":\{"id":123}}, \{"type":"person-multi","data":\[\{"id":123}]}. Pass data as null to clear the field |
#### Output [#output-67]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------------- |
| `success` | boolean | Whether Affinity accepted the change |
| `id` | string | Identifier of the resource that was changed |
### Affinity Update List Field Dropdown Option [#affinity-update-list-field-dropdown-option]
Change a dropdown option on a list field. Every field is optional — supply only what should change, and only fields the option's kind actually has.
#### Input [#input-68]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `listId` | string | Yes | The list ID |
| `fieldId` | string | Yes | The dropdown field ID on that list |
| `dropdownOptionId` | string | Yes | The dropdown option ID to update |
| `text` | string | No | Replacement option label. Supply at least one field to change |
| `rank` | number | No | Sort order. Required on a ranked-dropdown or status-dropdown option |
| `color` | string | No | Option color: white, gray, blue, green, purple, orange, or red. Required on a ranked-dropdown or status-dropdown option |
| `statusCategory` | string | No | Pipeline meaning of the option: open, won, lost, or on-hold. Status-dropdown options only |
| `winRate` | number | No | Expected win rate of the status. Status-dropdown options only |
#### Output [#output-68]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------------- |
| `success` | boolean | Whether Affinity accepted the change |
| `id` | string | Identifier of the resource that was changed |
### Affinity Update Note [#affinity-update-note]
Rewrite a note's body or replace which records it is attached to. Each list of IDs replaces that association wholesale, an empty list clears it, and omitting one leaves it untouched. A note's type cannot be changed.
#### Input [#input-69]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Affinity API key, sent as a bearer token |
| `noteId` | string | Yes | The note ID to update |
| `html` | string | No | Replacement note body as HTML |
| `companyIds` | json | No | Replacement set of attached companies, e.g. \[1, 2]. Send \[] to detach every company; omit to leave them unchanged |
| `personIds` | json | No | Replacement set of attached persons, e.g. \[1, 2]. Send \[] to detach every person; omit to leave them unchanged |
| `opportunityIds` | json | No | Replacement set of attached opportunities, e.g. \[1, 2]. Send \[] to detach every opportunity; omit to leave them unchanged |
#### Output [#output-69]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------------- |
| `success` | boolean | Whether Affinity accepted the change |
| `id` | string | Identifier of the resource that was changed |
---
# Vanta (/en/integrations/vanta)
{/* MANUAL-CONTENT-START:intro */}
[Vanta](https://www.vanta.com/) is a trust management platform that automates security and compliance for frameworks like SOC 2, ISO 27001, HIPAA, and GDPR. It continuously monitors your infrastructure, people, and vendors through automated tests, and centralizes the evidence auditors need.
With the Vanta integration in Studio, you can:
* **Monitor compliance posture**: List frameworks with control, document, and test completion counts, and drill into individual controls and their mapped tests and evidence documents.
* **Triage failing tests**: List automated compliance tests by status, framework, integration, or category, and pull the exact failing resource entities that need remediation.
* **Manage evidence documents**: List and inspect evidence documents, upload evidence files with descriptions and effective dates, download previously uploaded files, and submit document collections for auditor review.
* **Track people and security tasks**: List people with employment status, group membership, and outstanding security tasks (trainings, policy acceptance, background checks, device monitoring).
* **Review policies and vendors**: Check policy approval status and versions, and track vendors with risk levels, contract dates, and security review schedules.
* **Stay on top of vulnerabilities**: List vulnerabilities with severity and SLA deadline filters, review remediation history, and inspect the vulnerable assets behind each finding.
* **Watch device compliance**: List monitored computers with screenlock, disk encryption, password manager, and antivirus check outcomes.
* **Manage risk scenarios**: Query risk register scenarios with likelihood/impact scores, treatment decisions, and review status.
The integration authenticates with Vanta OAuth client credentials (created under Settings → Developer Console in Vanta) and supports both the commercial (api.vanta.com) and FedRAMP (api.vanta-gov.com) environments. Evidence uploads require credentials granted the `vanta-api.documents:upload` scope.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Vanta into the workflow. Monitor compliance frameworks, controls, and automated tests; find failing test entities; manage evidence documents including file upload, download, and submission; and track people, policies, vendors, monitored computers, vulnerabilities, and risk scenarios. Requires Vanta OAuth client credentials.
## Actions [#actions]
### Vanta List Frameworks [#vanta-list-frameworks]
List the compliance frameworks (e.g., SOC 2, ISO 27001) available in a Vanta account with completion counts
#### Input [#input]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `pageSize` | number | No | Maximum number of items per page (1-100, default 10) |
| `pageCursor` | string | No | Pagination cursor: pass the endCursor from the previous response to fetch the next page |
#### Output [#output]
| Parameter | Type | Description |
| ------------ | ----- | ------------------------------------------------------------------------------------------------- |
| `frameworks` | array | Frameworks in the Vanta account |
| `pageInfo` | json | Cursor pagination info for the returned page; pass endCursor as pageCursor to fetch the next page |
### Vanta Get Framework [#vanta-get-framework]
Get a Vanta compliance framework by ID, including its requirement categories and mapped controls
#### Input [#input-1]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `frameworkId` | string | Yes | Unique ID of the framework (e.g., soc2) |
#### Output [#output-1]
| Parameter | Type | Description |
| ----------- | ---- | --------------------------------------------------- |
| `framework` | json | The requested framework with requirement categories |
### Vanta List Framework Controls [#vanta-list-framework-controls]
List the controls that belong to a specific Vanta compliance framework
#### Input [#input-2]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `frameworkId` | string | Yes | Unique ID of the framework (e.g., soc2) |
| `pageSize` | number | No | Maximum number of items per page (1-100, default 10) |
| `pageCursor` | string | No | Pagination cursor: pass the endCursor from the previous response to fetch the next page |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------- | ----- | ------------------------------------------------------------------------------------------------- |
| `controls` | array | Controls belonging to the framework |
| `pageInfo` | json | Cursor pagination info for the returned page; pass endCursor as pageCursor to fetch the next page |
### Vanta List Controls [#vanta-list-controls]
List the security controls in a Vanta account, optionally filtered by framework
#### Input [#input-3]
| Parameter | Type | Required | Description |
| --------------------- | ------ | -------- | --------------------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `frameworkMatchesAny` | string | No | Comma-separated framework IDs to filter controls by (e.g., soc2,iso27001) |
| `pageSize` | number | No | Maximum number of items per page (1-100, default 10) |
| `pageCursor` | string | No | Pagination cursor: pass the endCursor from the previous response to fetch the next page |
#### Output [#output-3]
| Parameter | Type | Description |
| ---------- | ----- | ------------------------------------------------------------------------------------------------- |
| `controls` | array | Controls matching the filters |
| `pageInfo` | json | Cursor pagination info for the returned page; pass endCursor as pageCursor to fetch the next page |
### Vanta Get Control [#vanta-get-control]
Get a Vanta security control by ID, including its status and evidence pass/fail counts
#### Input [#input-4]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `controlId` | string | Yes | Unique ID of the control |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ---- | ----------------------------------------------------- |
| `control` | json | The requested control with status and evidence counts |
### Vanta List Control Tests [#vanta-list-control-tests]
List the automated tests mapped to a specific Vanta control
#### Input [#input-5]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `controlId` | string | Yes | Unique ID of the control |
| `pageSize` | number | No | Maximum number of items per page (1-100, default 10) |
| `pageCursor` | string | No | Pagination cursor: pass the endCursor from the previous response to fetch the next page |
#### Output [#output-5]
| Parameter | Type | Description |
| ---------- | ----- | ------------------------------------------------------------------------------------------------- |
| `tests` | array | Tests mapped to the control |
| `pageInfo` | json | Cursor pagination info for the returned page; pass endCursor as pageCursor to fetch the next page |
### Vanta List Control Documents [#vanta-list-control-documents]
List the evidence documents mapped to a specific Vanta control
#### Input [#input-6]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `controlId` | string | Yes | Unique ID of the control |
| `pageSize` | number | No | Maximum number of items per page (1-100, default 10) |
| `pageCursor` | string | No | Pagination cursor: pass the endCursor from the previous response to fetch the next page |
#### Output [#output-6]
| Parameter | Type | Description |
| ----------- | ----- | ------------------------------------------------------------------------------------------------- |
| `documents` | array | Documents mapped to the control |
| `pageInfo` | json | Cursor pagination info for the returned page; pass endCursor as pageCursor to fetch the next page |
### Vanta List Tests [#vanta-list-tests]
List the automated compliance tests in a Vanta account, with filters for status, framework, integration, control, owner, and category
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `statusFilter` | string | No | Filter by test status: OK, DEACTIVATED, NEEDS\_ATTENTION, IN\_PROGRESS, INVALID, or NOT\_APPLICABLE |
| `frameworkFilter` | string | No | Filter by framework ID (e.g., soc2) |
| `integrationFilter` | string | No | Filter by integration ID (e.g., aws) |
| `controlFilter` | string | No | Filter by control ID |
| `ownerFilter` | string | No | Filter by owner user ID |
| `categoryFilter` | string | No | Filter by test category (e.g., ACCOUNTS\_ACCESS, COMPUTERS, INFRASTRUCTURE, POLICIES, VULNERABILITY\_MANAGEMENT) |
| `isInRollout` | boolean | No | Filter by whether the test is in rollout |
| `pageSize` | number | No | Maximum number of items per page (1-100, default 10) |
| `pageCursor` | string | No | Pagination cursor: pass the endCursor from the previous response to fetch the next page |
#### Output [#output-7]
| Parameter | Type | Description |
| ---------- | ----- | ------------------------------------------------------------------------------------------------- |
| `tests` | array | Tests matching the filters |
| `pageInfo` | json | Cursor pagination info for the returned page; pass endCursor as pageCursor to fetch the next page |
### Vanta Get Test [#vanta-get-test]
Get a Vanta automated compliance test by ID, including its status and remediation info
#### Input [#input-8]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `testId` | string | Yes | Unique ID of the test (e.g., test-aws-cloudtrail-enabled) |
#### Output [#output-8]
| Parameter | Type | Description |
| --------- | ---- | ------------------ |
| `test` | json | The requested test |
### Vanta List Test Entities [#vanta-list-test-entities]
List the failing or deactivated resource entities for a specific Vanta test, useful for finding exactly which resources need remediation
#### Input [#input-9]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `testId` | string | Yes | Unique ID of the test (e.g., test-aws-cloudtrail-enabled) |
| `entityStatus` | string | No | Filter entities by status: FAILING or DEACTIVATED |
| `pageSize` | number | No | Maximum number of items per page (1-100, default 10) |
| `pageCursor` | string | No | Pagination cursor: pass the endCursor from the previous response to fetch the next page |
#### Output [#output-9]
| Parameter | Type | Description |
| ---------- | ----- | ------------------------------------------------------------------------------------------------- |
| `entities` | array | Resource entities for the test |
| `pageInfo` | json | Cursor pagination info for the returned page; pass endCursor as pageCursor to fetch the next page |
### Vanta List Documents [#vanta-list-documents]
List the evidence documents in a Vanta account, optionally filtered by framework or document status
#### Input [#input-10]
| Parameter | Type | Required | Description |
| --------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `frameworkMatchesAny` | string | No | Comma-separated framework IDs to filter documents by (e.g., soc2,iso27001) |
| `statusMatchesAny` | string | No | Comma-separated document statuses to filter by: "Needs document", "Needs update", "Not relevant", "OK" |
| `pageSize` | number | No | Maximum number of items per page (1-100, default 10) |
| `pageCursor` | string | No | Pagination cursor: pass the endCursor from the previous response to fetch the next page |
#### Output [#output-10]
| Parameter | Type | Description |
| ----------- | ----- | ------------------------------------------------------------------------------------------------- |
| `documents` | array | Documents matching the filters |
| `pageInfo` | json | Cursor pagination info for the returned page; pass endCursor as pageCursor to fetch the next page |
### Vanta Get Document [#vanta-get-document]
Get a Vanta evidence document by ID, including its renewal schedule and deactivation status
#### Input [#input-11]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `documentId` | string | Yes | Unique ID of the document |
#### Output [#output-11]
| Parameter | Type | Description |
| ---------- | ---- | ---------------------- |
| `document` | json | The requested document |
### Vanta List Document Uploads [#vanta-list-document-uploads]
List the files uploaded to a specific Vanta evidence document
#### Input [#input-12]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `documentId` | string | Yes | Unique ID of the document |
| `pageSize` | number | No | Maximum number of items per page (1-100, default 10) |
| `pageCursor` | string | No | Pagination cursor: pass the endCursor from the previous response to fetch the next page |
#### Output [#output-12]
| Parameter | Type | Description |
| ---------- | ----- | ------------------------------------------------------------------------------------------------- |
| `uploads` | array | Files uploaded to the document |
| `pageInfo` | json | Cursor pagination info for the returned page; pass endCursor as pageCursor to fetch the next page |
### Vanta Upload Document File [#vanta-upload-document-file]
Upload an evidence file to a Vanta document. Requires credentials with the vanta-api.documents:upload scope.
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `documentId` | string | Yes | Unique ID of the document to attach the file to |
| `file` | file | No | The evidence file to upload |
| `fileName` | string | No | Optional file name override |
| `mimeType` | string | No | MIME type of the file (e.g., application/pdf). Applies only to the base64 upload path; a file from the File input always sends the content type resolved from storage. |
| `description` | string | No | Description of the uploaded evidence (e.g., "Q3 access review evidence") |
| `effectiveAtDate` | string | No | ISO 8601 date indicating when the document is effective from |
#### Output [#output-13]
| Parameter | Type | Description |
| --------- | ---- | ----------------------------- |
| `upload` | json | Metadata of the uploaded file |
### Vanta Download Document File [#vanta-download-document-file]
Download a file previously uploaded to a Vanta evidence document and store it in execution files
#### Input [#input-14]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `documentId` | string | Yes | Unique ID of the document |
| `uploadedFileId` | string | Yes | Unique ID of the uploaded file (from List Document Uploads) |
#### Output [#output-14]
| 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 |
### Vanta Submit Document [#vanta-submit-document]
Submit a Vanta document collection for review so uploaded evidence becomes visible to auditors. Requires credentials with write access.
#### Input [#input-15]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `documentId` | string | Yes | Unique ID of the document to submit |
#### Output [#output-15]
| Parameter | Type | Description |
| ------------ | ------- | --------------------------------------------- |
| `documentId` | string | ID of the submitted document |
| `submitted` | boolean | Whether the document collection was submitted |
### Vanta List People [#vanta-list-people]
List the people tracked in a Vanta account with employment status, group membership, and security task completion
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ------------------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `emailAndNameFilter` | string | No | Filter people by email address or name |
| `employmentStatus` | string | No | Filter by employment status: UPCOMING, CURRENT, ON\_LEAVE, INACTIVE, or FORMER |
| `groupIdsMatchesAny` | string | No | Comma-separated group IDs to filter people by |
| `tasksSummaryStatusMatchesAny` | string | No | Comma-separated task summary statuses to filter by: NONE, DUE\_SOON, OVERDUE, COMPLETE, PAUSED, OFFBOARDING\_DUE\_SOON, OFFBOARDING\_OVERDUE, OFFBOARDING\_COMPLETE |
| `taskTypeMatchesAny` | string | No | Comma-separated task types to filter by: COMPLETE\_TRAININGS, ACCEPT\_POLICIES, COMPLETE\_CUSTOM\_TASKS, COMPLETE\_CUSTOM\_OFFBOARDING\_TASKS, INSTALL\_DEVICE\_MONITORING, COMPLETE\_BACKGROUND\_CHECKS |
| `taskStatusMatchesAny` | string | No | Comma-separated task statuses to filter by: COMPLETE, DUE\_SOON, OVERDUE, NONE |
| `pageSize` | number | No | Maximum number of items per page (1-100, default 10) |
| `pageCursor` | string | No | Pagination cursor: pass the endCursor from the previous response to fetch the next page |
#### Output [#output-16]
| Parameter | Type | Description |
| ---------- | ----- | ------------------------------------------------------------------------------------------------- |
| `people` | array | People matching the filters |
| `pageInfo` | json | Cursor pagination info for the returned page; pass endCursor as pageCursor to fetch the next page |
### Vanta Get Person [#vanta-get-person]
Get a person tracked in Vanta by ID, including employment, leave, and security task status
#### Input [#input-17]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `personId` | string | Yes | Unique ID of the person |
#### Output [#output-17]
| Parameter | Type | Description |
| --------- | ---- | -------------------- |
| `person` | json | The requested person |
### Vanta List Policies [#vanta-list-policies]
List the security policies in a Vanta account with approval status and version info
#### Input [#input-18]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `pageSize` | number | No | Maximum number of items per page (1-100, default 10) |
| `pageCursor` | string | No | Pagination cursor: pass the endCursor from the previous response to fetch the next page |
#### Output [#output-18]
| Parameter | Type | Description |
| ---------- | ----- | ------------------------------------------------------------------------------------------------- |
| `policies` | array | Policies in the Vanta account |
| `pageInfo` | json | Cursor pagination info for the returned page; pass endCursor as pageCursor to fetch the next page |
### Vanta Get Policy [#vanta-get-policy]
Get a Vanta security policy by ID, including its approval status and latest approved version documents
#### Input [#input-19]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `policyId` | string | Yes | Unique ID of the policy |
#### Output [#output-19]
| Parameter | Type | Description |
| --------- | ---- | -------------------- |
| `policy` | json | The requested policy |
### Vanta List Vendors [#vanta-list-vendors]
List the vendors tracked in a Vanta account with risk levels, contract dates, and security review schedules
#### Input [#input-20]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | --------------------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `name` | string | No | Filter vendors by name |
| `statusMatchesAny` | string | No | Comma-separated vendor statuses to filter by: MANAGED, ARCHIVED, IN\_PROCUREMENT |
| `pageSize` | number | No | Maximum number of items per page (1-100, default 10) |
| `pageCursor` | string | No | Pagination cursor: pass the endCursor from the previous response to fetch the next page |
#### Output [#output-20]
| Parameter | Type | Description |
| ---------- | ----- | ------------------------------------------------------------------------------------------------- |
| `vendors` | array | Vendors matching the filters |
| `pageInfo` | json | Cursor pagination info for the returned page; pass endCursor as pageCursor to fetch the next page |
### Vanta Get Vendor [#vanta-get-vendor]
Get a Vanta vendor by ID, including risk levels, contract details, and authentication info
#### Input [#input-21]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `vendorId` | string | Yes | Unique ID of the vendor |
#### Output [#output-21]
| Parameter | Type | Description |
| --------- | ---- | -------------------- |
| `vendor` | json | The requested vendor |
### Vanta List Monitored Computers [#vanta-list-monitored-computers]
List the monitored computers in a Vanta account with screenlock, disk encryption, password manager, and antivirus check outcomes
#### Input [#input-22]
| Parameter | Type | Required | Description |
| ---------------------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `complianceStatusFilterMatchesAny` | string | No | Comma-separated compliance issues to filter by: PWM\_NOT\_INSTALLED, HD\_NOT\_ENCRYPTED, AV\_NOT\_INSTALLED, SCREENLOCK\_NOT\_CONFIGURED, LAST\_CHECK\_OVER\_14\_DAYS |
| `pageSize` | number | No | Maximum number of items per page (1-100, default 10) |
| `pageCursor` | string | No | Pagination cursor: pass the endCursor from the previous response to fetch the next page |
#### Output [#output-22]
| Parameter | Type | Description |
| ----------- | ----- | ------------------------------------------------------------------------------------------------- |
| `computers` | array | Monitored computers matching the filters |
| `pageInfo` | json | Cursor pagination info for the returned page; pass endCursor as pageCursor to fetch the next page |
### Vanta List Vulnerabilities [#vanta-list-vulnerabilities]
List the vulnerabilities detected across a Vanta account with filters for severity, fixability, SLA deadlines, package, and integration
#### Input [#input-23]
| Parameter | Type | Required | Description |
| ----------------------------------- | ------- | -------- | --------------------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `q` | string | No | Search query for vulnerabilities |
| `severity` | string | No | Filter by severity: LOW, MEDIUM, HIGH, or CRITICAL |
| `isFixAvailable` | boolean | No | Filter by whether a fix is available |
| `isDeactivated` | boolean | No | Filter by whether vulnerability monitoring is deactivated |
| `includeVulnerabilitiesWithoutSlas` | boolean | No | Include vulnerabilities that have no SLA deadline |
| `packageIdentifier` | string | No | Filter by the affected package identifier |
| `externalVulnerabilityId` | string | No | Filter by external vulnerability ID (e.g., a CVE identifier) |
| `integrationId` | string | No | Filter by the integration that detected the vulnerability |
| `vulnerableAssetId` | string | No | Filter by the vulnerable asset ID |
| `slaDeadlineAfterDate` | string | No | Only include vulnerabilities with an SLA deadline after this ISO 8601 date |
| `slaDeadlineBeforeDate` | string | No | Only include vulnerabilities with an SLA deadline before this ISO 8601 date |
| `pageSize` | number | No | Maximum number of items per page (1-100, default 10) |
| `pageCursor` | string | No | Pagination cursor: pass the endCursor from the previous response to fetch the next page |
#### Output [#output-23]
| Parameter | Type | Description |
| ----------------- | ----- | ------------------------------------------------------------------------------------------------- |
| `vulnerabilities` | array | Vulnerabilities matching the filters |
| `pageInfo` | json | Cursor pagination info for the returned page; pass endCursor as pageCursor to fetch the next page |
### Vanta List Vulnerability Remediations [#vanta-list-vulnerability-remediations]
List remediated vulnerabilities in a Vanta account with detection, SLA deadline, and remediation dates
#### Input [#input-24]
| Parameter | Type | Required | Description |
| ---------------------- | ------- | -------- | --------------------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `integrationId` | string | No | Filter by the integration that detected the vulnerability |
| `severity` | string | No | Filter by severity: LOW, MEDIUM, HIGH, or CRITICAL |
| `isRemediatedOnTime` | boolean | No | Filter by whether the vulnerability was remediated before its SLA deadline |
| `remediatedAfterDate` | string | No | Only include remediations completed after this ISO 8601 date |
| `remediatedBeforeDate` | string | No | Only include remediations completed before this ISO 8601 date |
| `pageSize` | number | No | Maximum number of items per page (1-100, default 10) |
| `pageCursor` | string | No | Pagination cursor: pass the endCursor from the previous response to fetch the next page |
#### Output [#output-24]
| Parameter | Type | Description |
| -------------- | ----- | ------------------------------------------------------------------------------------------------- |
| `remediations` | array | Vulnerability remediations matching the filters |
| `pageInfo` | json | Cursor pagination info for the returned page; pass endCursor as pageCursor to fetch the next page |
### Vanta List Vulnerable Assets [#vanta-list-vulnerable-assets]
List the assets associated with vulnerabilities in a Vanta account (servers, repositories, workstations, and more)
#### Input [#input-25]
| Parameter | Type | Required | Description |
| ------------------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `q` | string | No | Search query for vulnerable assets |
| `integrationId` | string | No | Filter by the integration scanning the asset |
| `assetType` | string | No | Filter by asset type: SERVER, SERVERLESS\_FUNCTION, CONTAINER, CONTAINER\_REPOSITORY, CONTAINER\_REPOSITORY\_IMAGE, CODE\_REPOSITORY, MANIFEST\_FILE, WORKSTATION, or OTHER |
| `assetExternalAccountId` | string | No | Filter by the external account ID the asset belongs to |
| `pageSize` | number | No | Maximum number of items per page (1-100, default 10) |
| `pageCursor` | string | No | Pagination cursor: pass the endCursor from the previous response to fetch the next page |
#### Output [#output-25]
| Parameter | Type | Description |
| ---------- | ----- | ------------------------------------------------------------------------------------------------- |
| `assets` | array | Vulnerable assets matching the filters |
| `pageInfo` | json | Cursor pagination info for the returned page; pass endCursor as pageCursor to fetch the next page |
### Vanta Get Vulnerable Asset [#vanta-get-vulnerable-asset]
Get a vulnerable asset in Vanta by ID, including the scanners reporting it and per-scanner asset details
#### Input [#input-26]
| Parameter | Type | Required | Description |
| ------------------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `vulnerableAssetId` | string | Yes | Unique ID of the vulnerable asset |
#### Output [#output-26]
| Parameter | Type | Description |
| --------- | ---- | ------------------------------ |
| `asset` | json | The requested vulnerable asset |
### Vanta List Risk Scenarios [#vanta-list-risk-scenarios]
List the risk scenarios in a Vanta risk register with likelihood/impact scores, treatment decisions, and review status
#### Input [#input-27]
| Parameter | Type | Required | Description |
| ------------------------------ | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `searchString` | string | No | Search string to filter risk scenarios |
| `includeIgnored` | boolean | No | Include ignored risk scenarios |
| `type` | string | No | Filter by scenario type: "Risk Scenario" or "Enterprise Risk" |
| `ownerMatchesAny` | string | No | Comma-separated owner emails to filter by |
| `categoryMatchesAny` | string | No | Comma-separated risk categories to filter by |
| `ciaCategoryMatchesAny` | string | No | Comma-separated CIA categories to filter by: Confidentiality, Integrity, Availability |
| `treatmentTypeMatchesAny` | string | No | Comma-separated treatments to filter by: Mitigate, Transfer, Avoid, Accept |
| `inherentScoreGroupMatchesAny` | string | No | Comma-separated inherent score groups to filter by: "Very low", Low, Med, High, Critical |
| `residualScoreGroupMatchesAny` | string | No | Comma-separated residual score groups to filter by: "Very low", Low, Med, High, Critical |
| `reviewStatusMatchesAny` | string | No | Comma-separated review statuses to filter by: APPROVED, DRAFT, NOT\_REVIEWED, AWAITING\_SUBMISSION, PENDING\_APPROVAL, REQUESTED\_CHANGES |
| `orderBy` | string | No | Field to order results by: description or createdAt |
| `pageSize` | number | No | Maximum number of items per page (1-100, default 10) |
| `pageCursor` | string | No | Pagination cursor: pass the endCursor from the previous response to fetch the next page |
#### Output [#output-27]
| Parameter | Type | Description |
| --------------- | ----- | ------------------------------------------------------------------------------------------------- |
| `riskScenarios` | array | Risk scenarios matching the filters |
| `pageInfo` | json | Cursor pagination info for the returned page; pass endCursor as pageCursor to fetch the next page |
### Vanta Get Risk Scenario [#vanta-get-risk-scenario]
Get a Vanta risk scenario by ID, including its scores, treatment decision, and review status
#### Input [#input-28]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `clientId` | string | Yes | Vanta OAuth application client ID |
| `clientSecret` | string | Yes | Vanta OAuth application client secret |
| `region` | string | No | Vanta API region: "us" (api.vanta.com, default) or "gov" (api.vanta-gov.com) |
| `riskScenarioId` | string | Yes | Unique ID of the risk scenario |
#### Output [#output-28]
| Parameter | Type | Description |
| -------------- | ---- | --------------------------- |
| `riskScenario` | json | The requested risk scenario |
---
# SSH (/en/integrations/ssh)
{/* MANUAL-CONTENT-START:intro */}
The SSH block connects to remote servers using the Secure Shell protocol, supporting both password and private key (OpenSSH format) authentication. It provides direct command execution and file system access on any server reachable over SSH.
With SSH, you can:
* **Run commands and scripts**: Execute shell commands or upload and run multi-line scripts with a configurable interpreter
* **Manage the file system**: Upload, download, read, write, move, rename, and delete files and directories
* **Inspect the remote environment**: Check whether a command or path exists, list directory contents, and retrieve system information such as OS, architecture, uptime, and disk/memory usage
In Seeyu Agent Studio, the SSH block allows your agents to operate remote servers as part of a workflow—running commands and scripts, transferring and manipulating files, and gathering system diagnostics—all through authenticated SSH connections. This makes it possible to automate server administration, deployment steps, and remote data processing directly from an agent's workflow.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Execute commands, transfer files, and manage remote servers via SSH. Supports password and private key authentication for secure server access.
## Actions [#actions]
### SSH Execute Command [#ssh-execute-command]
Execute a shell command on a remote SSH server
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ------------------------------------------------------ |
| `host` | string | Yes | SSH server hostname or IP address |
| `port` | number | Yes | SSH server port (default: 22) |
| `username` | string | Yes | SSH username |
| `password` | string | No | Password for authentication (if not using private key) |
| `privateKey` | string | No | Private key for authentication (OpenSSH format) |
| `passphrase` | string | No | Passphrase for encrypted private key |
| `command` | string | Yes | Shell command to execute on the remote server |
| `workingDirectory` | string | No | Working directory for command execution |
#### Output [#output]
| Parameter | Type | Description |
| ---------- | ------- | --------------------------------------- |
| `stdout` | string | Standard output from command |
| `stderr` | string | Standard error output |
| `exitCode` | number | Command exit code |
| `success` | boolean | Whether command succeeded (exit code 0) |
| `message` | string | Operation status message |
### SSH Execute Script [#ssh-execute-script]
Upload and execute a multi-line script on a remote SSH server
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ------------------------------------------------------ |
| `host` | string | Yes | SSH server hostname or IP address |
| `port` | number | Yes | SSH server port (default: 22) |
| `username` | string | Yes | SSH username |
| `password` | string | No | Password for authentication (if not using private key) |
| `privateKey` | string | No | Private key for authentication (OpenSSH format) |
| `passphrase` | string | No | Passphrase for encrypted private key |
| `script` | string | Yes | Script content to execute (bash, python, etc.) |
| `interpreter` | string | No | Script interpreter (default: /bin/bash) |
| `workingDirectory` | string | No | Working directory for script execution |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------ | ------- | ---------------------------------------- |
| `stdout` | string | Standard output from script |
| `stderr` | string | Standard error output |
| `exitCode` | number | Script exit code |
| `success` | boolean | Whether script succeeded (exit code 0) |
| `scriptPath` | string | Temporary path where script was uploaded |
| `message` | string | Operation status message |
### SSH Check Command Exists [#ssh-check-command-exists]
Check if a command/program exists on the remote SSH server
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------ |
| `host` | string | Yes | SSH server hostname or IP address |
| `port` | number | Yes | SSH server port (default: 22) |
| `username` | string | Yes | SSH username |
| `password` | string | No | Password for authentication (if not using private key) |
| `privateKey` | string | No | Private key for authentication (OpenSSH format) |
| `passphrase` | string | No | Passphrase for encrypted private key |
| `commandName` | string | Yes | Command name to check (e.g., docker, git, python3) |
#### Output [#output-2]
| Parameter | Type | Description |
| --------------- | ------- | -------------------------------------- |
| `commandExists` | boolean | Whether the command exists |
| `commandPath` | string | Full path to the command (if found) |
| `version` | string | Command version output (if applicable) |
| `message` | string | Operation status message |
### SSH Upload File [#ssh-upload-file]
Upload a file to a remote SSH server
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | -------------------------------------------------------- |
| `host` | string | Yes | SSH server hostname or IP address |
| `port` | number | Yes | SSH server port (default: 22) |
| `username` | string | Yes | SSH username |
| `password` | string | No | Password for authentication (if not using private key) |
| `privateKey` | string | No | Private key for authentication (OpenSSH format) |
| `passphrase` | string | No | Passphrase for encrypted private key |
| `fileContent` | string | Yes | File content to upload (base64 encoded for binary files) |
| `fileName` | string | Yes | Name of the file being uploaded |
| `remotePath` | string | Yes | Destination path on the remote server |
| `permissions` | string | No | File permissions (e.g., 0644) |
| `overwrite` | boolean | No | Whether to overwrite existing files (default: true) |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------ | ------- | ------------------------------------------ |
| `uploaded` | boolean | Whether the file was uploaded successfully |
| `remotePath` | string | Final path on the remote server |
| `size` | number | File size in bytes |
| `message` | string | Operation status message |
### SSH Download File [#ssh-download-file]
Download a file from a remote SSH server
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------ |
| `host` | string | Yes | SSH server hostname or IP address |
| `port` | number | Yes | SSH server port (default: 22) |
| `username` | string | Yes | SSH username |
| `password` | string | No | Password for authentication (if not using private key) |
| `privateKey` | string | No | Private key for authentication (OpenSSH format) |
| `passphrase` | string | No | Passphrase for encrypted private key |
| `remotePath` | string | Yes | Path of the file on the remote server |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------ | ------ | ----------------------------------------- |
| `file` | file | Downloaded file stored in execution files |
| `remotePath` | string | Source path on the remote server |
### SSH List Directory [#ssh-list-directory]
List files and directories in a remote directory
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | ------------------------------------------------------- |
| `host` | string | Yes | SSH server hostname or IP address |
| `port` | number | Yes | SSH server port (default: 22) |
| `username` | string | Yes | SSH username |
| `password` | string | No | Password for authentication (if not using private key) |
| `privateKey` | string | No | Private key for authentication (OpenSSH format) |
| `passphrase` | string | No | Passphrase for encrypted private key |
| `path` | string | Yes | Remote directory path to list |
| `detailed` | boolean | No | Include file details (size, permissions, modified date) |
| `recursive` | boolean | No | List subdirectories recursively (default: false) |
#### Output [#output-5]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------- |
| `entries` | array | Array of file and directory entries |
| ↳ `name` | string | File or directory name |
| ↳ `type` | string | Entry type (file, directory, symlink) |
| ↳ `size` | number | File size in bytes |
| ↳ `permissions` | string | File permissions |
| ↳ `modified` | string | Last modified timestamp |
| `totalFiles` | number | Total number of files |
| `totalDirectories` | number | Total number of directories |
| `message` | string | Operation status message |
### SSH Check File Exists [#ssh-check-file-exists]
Check if a file or directory exists on the remote SSH server
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------ |
| `host` | string | Yes | SSH server hostname or IP address |
| `port` | number | Yes | SSH server port (default: 22) |
| `username` | string | Yes | SSH username |
| `password` | string | No | Password for authentication (if not using private key) |
| `privateKey` | string | No | Private key for authentication (OpenSSH format) |
| `passphrase` | string | No | Passphrase for encrypted private key |
| `path` | string | Yes | Remote file or directory path to check |
| `type` | string | No | Expected type: file, directory, or any (default: any) |
#### Output [#output-6]
| Parameter | Type | Description |
| ------------- | ------- | --------------------------------------------------- |
| `exists` | boolean | Whether the path exists |
| `type` | string | Type of path (file, directory, symlink, not\_found) |
| `size` | number | File size if it is a file |
| `permissions` | string | File permissions (e.g., 0755) |
| `modified` | string | Last modified timestamp |
| `message` | string | Operation status message |
### SSH Create Directory [#ssh-create-directory]
Create a directory on the remote SSH server
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | -------------------------------------------------------------- |
| `host` | string | Yes | SSH server hostname or IP address |
| `port` | number | Yes | SSH server port (default: 22) |
| `username` | string | Yes | SSH username |
| `password` | string | No | Password for authentication (if not using private key) |
| `privateKey` | string | No | Private key for authentication (OpenSSH format) |
| `passphrase` | string | No | Passphrase for encrypted private key |
| `path` | string | Yes | Directory path to create |
| `recursive` | boolean | No | Create parent directories if they do not exist (default: true) |
| `permissions` | string | No | Directory permissions (default: 0755) |
#### Output [#output-7]
| Parameter | Type | Description |
| --------------- | ------- | ---------------------------------------------- |
| `created` | boolean | Whether the directory was created successfully |
| `remotePath` | string | Created directory path |
| `alreadyExists` | boolean | Whether the directory already existed |
| `message` | string | Operation status message |
### SSH Delete File [#ssh-delete-file]
Delete a file or directory from the remote SSH server
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | ------------------------------------------------------ |
| `host` | string | Yes | SSH server hostname or IP address |
| `port` | number | Yes | SSH server port (default: 22) |
| `username` | string | Yes | SSH username |
| `password` | string | No | Password for authentication (if not using private key) |
| `privateKey` | string | No | Private key for authentication (OpenSSH format) |
| `passphrase` | string | No | Passphrase for encrypted private key |
| `path` | string | Yes | Path to delete |
| `recursive` | boolean | No | Recursively delete directories (default: false) |
| `force` | boolean | No | Force deletion without confirmation (default: false) |
#### Output [#output-8]
| Parameter | Type | Description |
| ------------ | ------- | ----------------------------------------- |
| `deleted` | boolean | Whether the path was deleted successfully |
| `remotePath` | string | Deleted path |
| `message` | string | Operation status message |
### SSH Move/Rename [#ssh-moverename]
Move or rename a file or directory on the remote SSH server
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ----------------- | ------- | -------- | ------------------------------------------------------ |
| `host` | string | Yes | SSH server hostname or IP address |
| `port` | number | Yes | SSH server port (default: 22) |
| `username` | string | Yes | SSH username |
| `password` | string | No | Password for authentication (if not using private key) |
| `privateKey` | string | No | Private key for authentication (OpenSSH format) |
| `passphrase` | string | No | Passphrase for encrypted private key |
| `sourcePath` | string | Yes | Current path of the file or directory |
| `destinationPath` | string | Yes | New path for the file or directory |
| `overwrite` | boolean | No | Overwrite destination if it exists (default: false) |
#### Output [#output-9]
| Parameter | Type | Description |
| ----------------- | ------- | ------------------------------------ |
| `moved` | boolean | Whether the operation was successful |
| `sourcePath` | string | Original path |
| `destinationPath` | string | New path |
| `message` | string | Operation status message |
### SSH Get System Info [#ssh-get-system-info]
Retrieve system information from the remote SSH server
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------ |
| `host` | string | Yes | SSH server hostname or IP address |
| `port` | number | Yes | SSH server port (default: 22) |
| `username` | string | Yes | SSH username |
| `password` | string | No | Password for authentication (if not using private key) |
| `privateKey` | string | No | Private key for authentication (OpenSSH format) |
| `passphrase` | string | No | Passphrase for encrypted private key |
#### Output [#output-10]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------------ |
| `hostname` | string | Server hostname |
| `os` | string | Operating system (e.g., Linux, Darwin) |
| `architecture` | string | CPU architecture (e.g., x64, arm64) |
| `uptime` | number | System uptime in seconds |
| `memory` | json | Memory information (total, free, used) |
| `diskSpace` | json | Disk space information (total, free, used) |
| `message` | string | Operation status message |
### SSH Read File Content [#ssh-read-file-content]
Read the contents of a remote file
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------ |
| `host` | string | Yes | SSH server hostname or IP address |
| `port` | number | Yes | SSH server port (default: 22) |
| `username` | string | Yes | SSH username |
| `password` | string | No | Password for authentication (if not using private key) |
| `privateKey` | string | No | Private key for authentication (OpenSSH format) |
| `passphrase` | string | No | Passphrase for encrypted private key |
| `path` | string | Yes | Remote file path to read |
| `encoding` | string | No | File encoding (default: utf-8) |
| `maxSize` | number | No | Maximum file size to read in MB (default: 10) |
#### Output [#output-11]
| Parameter | Type | Description |
| ------------ | ------ | ------------------------ |
| `content` | string | File content as string |
| `size` | number | File size in bytes |
| `lines` | number | Number of lines in file |
| `remotePath` | string | Remote file path |
| `message` | string | Operation status message |
### SSH Write File Content [#ssh-write-file-content]
Write or append content to a remote file
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------------- |
| `host` | string | Yes | SSH server hostname or IP address |
| `port` | number | Yes | SSH server port (default: 22) |
| `username` | string | Yes | SSH username |
| `password` | string | No | Password for authentication (if not using private key) |
| `privateKey` | string | No | Private key for authentication (OpenSSH format) |
| `passphrase` | string | No | Passphrase for encrypted private key |
| `path` | string | Yes | Remote file path to write to |
| `content` | string | Yes | Content to write to the file |
| `mode` | string | No | Write mode: overwrite, append, or create (default: overwrite) |
| `permissions` | string | No | File permissions (e.g., 0644) |
#### Output [#output-12]
| Parameter | Type | Description |
| ------------ | ------- | ----------------------------------------- |
| `written` | boolean | Whether the file was written successfully |
| `remotePath` | string | File path |
| `size` | number | Final file size in bytes |
| `message` | string | Operation status message |
---
# Wealthbox (/en/integrations/wealthbox)
{/* MANUAL-CONTENT-START:intro */}
[Wealthbox](https://www.wealthbox.com/) is a comprehensive CRM platform designed specifically for financial advisors and wealth management professionals. It provides a centralized system for managing client relationships, tracking interactions, and organizing business workflows in the financial services industry.
With Wealthbox, you can:
* **Manage client relationships**: Store detailed contact information, background data, and relationship histories for all your clients
* **Track interactions**: Create and maintain notes about meetings, calls, and other client touchpoints
* **Organize tasks**: Schedule and manage follow-up activities, deadlines, and important action items
* **Document workflows**: Keep comprehensive records of client communications and business processes
* **Access client data**: Retrieve information quickly with organized contact management and search capabilities
* **Automate follow-ups**: Set reminders and schedule tasks to ensure consistent client engagement
In Seeyu Agent Studio, the Wealthbox integration enables your agents to seamlessly interact with your CRM data through OAuth authentication. This allows for powerful automation scenarios such as automatically creating client notes from meeting transcripts, updating contact information, scheduling follow-up tasks, and retrieving client details for personalized communications. Your agents can read existing notes, contacts, and tasks to understand client history, while also creating new entries to maintain up-to-date records. This integration bridges the gap between your AI workflows and your client relationship management, enabling automated data entry, intelligent client insights, and streamlined administrative processes that free up time for more valuable client-facing activities.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Wealthbox into the workflow. Can read and write notes, read and write contacts, and read and write tasks.
## Actions [#actions]
### Read Wealthbox Note [#read-wealthbox-note]
Read content from a Wealthbox note
#### Input [#input]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------ |
| `noteId` | string | No | The ID of the note to read (e.g., "11111") |
#### Output [#output]
| Parameter | Type | Description |
| ------------ | ------- | ---------------------------- |
| `success` | boolean | Operation success status |
| `output` | object | Note data and metadata |
| ↳ `content` | string | Formatted note information |
| ↳ `note` | object | Raw note data from Wealthbox |
| ↳ `metadata` | object | Operation metadata |
| ↳ `itemId` | string | ID of the note |
| ↳ `noteId` | string | ID of the note |
| ↳ `itemType` | string | Type of item (note) |
### Write Wealthbox Note [#write-wealthbox-note]
Create or update a Wealthbox note
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | -------------------------------------------------- |
| `content` | string | Yes | The main body of the note |
| `contactId` | string | No | ID of contact to link to this note (e.g., "12345") |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------ | ------- | ----------------------------------------- |
| `success` | boolean | Operation success status |
| `output` | object | Created or updated note data and metadata |
| ↳ `note` | object | Raw note data from Wealthbox |
| ↳ `success` | boolean | Operation success indicator |
| ↳ `metadata` | object | Operation metadata |
| ↳ `itemId` | string | ID of the created/updated note |
| ↳ `noteId` | string | ID of the created/updated note |
| ↳ `itemType` | string | Type of item (note) |
### Read Wealthbox Contact [#read-wealthbox-contact]
Read content from a Wealthbox contact
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------- |
| `contactId` | string | No | The ID of the contact to read (e.g., "12345") |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------- | ------- | ------------------------------- |
| `success` | boolean | Operation success status |
| `output` | object | Contact data and metadata |
| ↳ `content` | string | Formatted contact information |
| ↳ `contact` | object | Raw contact data from Wealthbox |
| ↳ `metadata` | object | Operation metadata |
| ↳ `itemId` | string | ID of the contact |
| ↳ `contactId` | string | ID of the contact |
| ↳ `itemType` | string | Type of item (contact) |
### Write Wealthbox Contact [#write-wealthbox-contact]
Create a new Wealthbox contact
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ----------------------- | ------ | -------- | ---------------------------------------- |
| `firstName` | string | Yes | The first name of the contact |
| `lastName` | string | Yes | The last name of the contact |
| `emailAddress` | string | No | The email address of the contact |
| `backgroundInformation` | string | No | Background information about the contact |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------- | ------- | -------------------------------------------- |
| `success` | boolean | Operation success status |
| `output` | object | Created or updated contact data and metadata |
| ↳ `contact` | object | Raw contact data from Wealthbox |
| ↳ `success` | boolean | Operation success indicator |
| ↳ `metadata` | object | Operation metadata |
| ↳ `itemId` | string | ID of the created/updated contact |
| ↳ `contactId` | string | ID of the created/updated contact |
| ↳ `itemType` | string | Type of item (contact) |
### Read Wealthbox Task [#read-wealthbox-task]
Read content from a Wealthbox task
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------ |
| `taskId` | string | No | The ID of the task to read (e.g., "67890") |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------ | ------- | ---------------------------- |
| `success` | boolean | Operation success status |
| `output` | object | Task data and metadata |
| ↳ `content` | string | Formatted task information |
| ↳ `task` | object | Raw task data from Wealthbox |
| ↳ `metadata` | object | Operation metadata |
| ↳ `itemId` | string | ID of the task |
| ↳ `taskId` | string | ID of the task |
| ↳ `itemType` | string | Type of item (task) |
### Write Wealthbox Task [#write-wealthbox-task]
Create or update a Wealthbox task
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- |
| `title` | string | Yes | The name/title of the task |
| `dueDate` | string | Yes | The due date and time of the task (format: "YYYY-MM-DD HH:MM AM/PM -HHMM", e.g., "2015-05-24 11:00 AM -0400") |
| `contactId` | string | No | ID of contact to link to this task (e.g., "12345") |
| `description` | string | No | Description or notes about the task |
#### Output [#output-5]
| Parameter | Type | Description |
| ------------ | ------- | ----------------------------------------- |
| `success` | boolean | Operation success status |
| `output` | object | Created or updated task data and metadata |
| ↳ `task` | object | Raw task data from Wealthbox |
| ↳ `success` | boolean | Operation success indicator |
| ↳ `metadata` | object | Operation metadata |
| ↳ `itemId` | string | ID of the created/updated task |
| ↳ `taskId` | string | ID of the created/updated task |
| ↳ `itemType` | string | Type of item (task) |
---
# Discord (/en/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 Seeyu Agent Studio, 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.
## 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 |
---
# Oracle NetSuite Service Account (/en/integrations/netsuite-service-account)
Connect Oracle NetSuite with certificate-based OAuth 2.0 client credentials. Add the SuiteTalk URL, Client ID, Certificate ID, and matching private key once, then select the saved credential in each NetSuite block.
## Prerequisites [#prerequisites]
* A dedicated NetSuite integration role with **REST Web Services** and **Log in using OAuth 2.0 Access Tokens**, plus the record and SuiteAnalytics permissions your workflows require.
* An integration record with **Client Credentials (Machine to Machine) Grant** and the **REST Web Services** scope enabled.
* A 3072- or 4096-bit RSA key pair, or a P-256, P-384, or P-521 EC key pair, and a public certificate generated through your organization's certificate process.
* Access to **OAuth 2.0 Client Credentials (M2M) Setup** and **Company URLs** in the target NetSuite environment.
Create and map credentials separately in production, sandbox, and Release Preview. A sandbox refresh removes its OAuth 2.0 client-credential mappings, and each environment has a different authoritative SuiteTalk URL.
## Configure NetSuite [#configure-netsuite]
In **Setup → Company → Enable Features**, enable **REST Web Services** and **OAuth 2.0**. Enable **SuiteAnalytics Workbook** if workflows will use datasets.
Create a dedicated integration role and grant only the record, transaction, subsidiary, and analytics permissions the workflows need. Avoid using Administrator.
Under **Setup → Integration → Manage Integrations**, create or edit an integration, enable the machine-to-machine client-credentials grant and REST Web Services scope, then save its **Client ID**.
Upload only the public certificate under **OAuth 2.0 Client Credentials (M2M) Setup**. Map it to the integration, entity, and dedicated role, then save the generated **Certificate ID**. Keep the private key outside NetSuite.
Under **Setup → Company → Company Information → Company URLs**, copy the complete **SuiteTalk (SOAP and REST Web Services)** URL for this environment.
Oracle documents the [role setup](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_157771510070.html), [integration record](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_157771733782.html), [certificate requirements](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/subsect_162755332391.html), and [client-credential mapping](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_162686838198.html).
## Add the Credential to Studio [#add-the-credential-to-studio]
Add an **Oracle NetSuite** block to a workflow and open the **NetSuite Account** dropdown.
Choose to add a credential, then enter the authoritative SuiteTalk URL, Client ID, Certificate ID, and PEM private key that matches the uploaded certificate.
Save the credential. Studio validates the URL and key policy, signs a client assertion, and performs a real token exchange before storing the encrypted credential.
Select this credential in each NetSuite block. The private key stays encrypted in Studio; you do not need to paste it into individual blocks.
## Use Pickers and Manual Values [#use-pickers-and-manual-values]
Selecting the credential enables these account-backed fields:
| Field | Lists | Additional scope |
| ----------- | -------------------------------------------------------- | ---------------- |
| Record Type | Up to 1,000 record types visible in the metadata catalog | credential |
| Async Task | Up to 100 tasks belonging to a known batch job | job ID |
Picker results reflect the selected role's permissions. Switch any picker to Advanced mode to type an identifier or reference an upstream output. Enter SuiteAnalytics dataset IDs manually after finding them with **List SuiteAnalytics Datasets**. Record IDs, job IDs, transform targets, actions, fields, forms, subresources, and relationship IDs also remain manual because NetSuite does not expose bounded universal listings that would make those choices complete and reliable.
**Create Record** without `replace` returns HTTP 204 with no response body; with `replace`, it returns HTTP 201 and the created record object. Both responses expose NetSuite's validated `location`. The `replace` option applies to create and update, not upsert.
## Rotate or Revoke [#rotate-or-revoke]
To rotate a certificate, create and upload the replacement certificate and create its new NetSuite mapping. Then reconnect the existing Studio credential by re-entering all four required fields: SuiteTalk URL, Client ID, the new Certificate ID, and the replacement private key. Later runs use the replacement certificate and key.
After confirming workflows succeed, remove the old certificate mapping in NetSuite so the previous certificate can no longer mint tokens. Deleting a Studio credential removes its workflow bindings but does not revoke the corresponding NetSuite certificate mapping.
---
# Email Bison (/en/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 Studio, 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 |
| ---------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Email Bison API token |
| `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token |
| `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 |
| ------------ | ------ | -------- | ---------------------------------------------- |
| `apiKey` | string | Yes | Email Bison API token |
| `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token |
| `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 |
| ----------------- | ------ | -------- | ---------------------------------------------- |
| `apiKey` | string | Yes | Email Bison API token |
| `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token |
| `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 |
| ----------------- | ------ | -------- | ---------------------------------------------- |
| `apiKey` | string | Yes | Email Bison API token |
| `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token |
| `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 |
| ------------ | ------ | -------- | ---------------------------------------------- |
| `apiKey` | string | Yes | Email Bison API token |
| `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token |
#### 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 |
| -------------- | ------ | -------- | ---------------------------------------------- |
| `apiKey` | string | Yes | Email Bison API token |
| `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token |
| `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 |
| --------------------------- | ------- | -------- | ------------------------------------------------ |
| `apiKey` | string | Yes | Email Bison API token |
| `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token |
| `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 |
| ------------ | ------ | -------- | ---------------------------------------------- |
| `apiKey` | string | Yes | Email Bison API token |
| `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token |
| `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 |
| ---------------------- | ------- | -------- | ------------------------------------------------------ |
| `apiKey` | string | Yes | Email Bison API token |
| `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token |
| `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 |
| --------------- | ------- | -------- | -------------------------------------------------------------------- |
| `apiKey` | string | Yes | Email Bison API token |
| `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token |
| `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 |
| ------------ | ------ | -------- | ---------------------------------------------- |
| `apiKey` | string | Yes | Email Bison API token |
| `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token |
#### 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 |
| ------------ | ------ | -------- | ---------------------------------------------- |
| `apiKey` | string | Yes | Email Bison API token |
| `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token |
| `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 |
| -------------- | ------- | -------- | ---------------------------------------------- |
| `apiKey` | string | Yes | Email Bison API token |
| `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token |
| `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 |
---
# AWS Textract (/en/integrations/textract)
{/* MANUAL-CONTENT-START:intro */}
[AWS Textract](https://aws.amazon.com/textract/) is a powerful AI service from Amazon Web Services designed to automatically extract printed text, handwriting, tables, forms, key-value pairs, and other structured data from scanned documents and images. Textract leverages advanced optical character recognition (OCR) and document analysis to transform documents into actionable data, enabling automation, analytics, compliance, and more.
With AWS Textract, you can:
* **Extract text from images and documents**: Recognize printed text and handwriting in formats such as PDF, JPEG, PNG, or TIFF
* **Detect and extract tables**: Automatically find tables and output their structured content
* **Parse forms and key-value pairs**: Pull structured data from forms, including fields and their corresponding values
* **Identify signatures and layout features**: Detect signatures, geometric layout, and relationships between document elements
* **Customize extraction with queries**: Extract specific fields and answers using query-based extraction (e.g., "What is the invoice number?")
In Studio, the AWS Textract integration empowers your agents to intelligently process documents as part of their workflows. This unlocks automation scenarios such as data entry from invoices, onboarding documents, contracts, receipts, and more. Your agents can extract relevant data, analyze structured forms, and generate summaries or reports directly from document uploads or URLs. By connecting Studio with AWS Textract, you can reduce manual effort, improve data accuracy, and streamline your business processes with robust document understanding.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate AWS Textract into your workflow to extract text, tables, forms, and key-value pairs from documents. Single-page mode supports JPEG, PNG, and single-page PDF. Multi-page mode supports multi-page PDF and TIFF.
## Actions [#actions]
### AWS Textract Parser [#aws-textract-parser]
Parse documents using AWS Textract OCR and document analysis
#### Input [#input]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ |
| `accessKeyId` | string | Yes | AWS Access Key ID |
| `secretAccessKey` | string | Yes | AWS Secret Access Key |
| `region` | string | Yes | AWS region for Textract service (e.g., us-east-1) |
| `processingMode` | string | No | Document type: single-page or multi-page. Defaults to single-page. |
| `file` | file | No | Document to be processed (JPEG, PNG, or single-page PDF). |
| `s3Uri` | string | No | S3 URI for multi-page processing (s3://bucket/key). |
| `featureTypes` | array | No | Feature types to detect: TABLES, FORMS, QUERIES, SIGNATURES, LAYOUT. If not specified, only text detection is performed. |
| `queries` | array | No | Custom queries to extract specific information. Only used when featureTypes includes QUERIES. |
#### Output [#output]
| Parameter | Type | Description |
| ------------------- | ------ | ---------------------------------------------------------------------------------- |
| `blocks` | array | Array of Block objects containing detected text, tables, forms, and other elements |
| ↳ `BlockType` | string | Type of block (PAGE, LINE, WORD, TABLE, CELL, KEY\_VALUE\_SET, etc.) |
| ↳ `Id` | string | Unique identifier for the block |
| ↳ `Text` | string | The text content (for LINE and WORD blocks) |
| ↳ `TextType` | string | Type of text (PRINTED or HANDWRITING) |
| ↳ `Confidence` | number | Confidence score (0-100) |
| ↳ `Page` | number | Page number |
| ↳ `Geometry` | object | Location and bounding box information |
| ↳ `BoundingBox` | object | BoundingBox output from the tool |
| ↳ `Height` | number | Height as ratio of document height |
| ↳ `Left` | number | Left position as ratio of document width |
| ↳ `Top` | number | Top position as ratio of document height |
| ↳ `Width` | number | Width as ratio of document width |
| ↳ `Polygon` | array | Polygon coordinates |
| ↳ `X` | number | X coordinate |
| ↳ `Y` | number | Y coordinate |
| ↳ `Relationships` | array | Relationships to other blocks |
| ↳ `Type` | string | Relationship type (CHILD, VALUE, ANSWER, etc.) |
| ↳ `Ids` | array | IDs of related blocks |
| ↳ `EntityTypes` | array | Entity types for KEY\_VALUE\_SET (KEY or VALUE) |
| ↳ `SelectionStatus` | string | For checkboxes: SELECTED or NOT\_SELECTED |
| ↳ `RowIndex` | number | Row index for table cells |
| ↳ `ColumnIndex` | number | Column index for table cells |
| ↳ `RowSpan` | number | Row span for merged cells |
| ↳ `ColumnSpan` | number | Column span for merged cells |
| ↳ `Query` | object | Query information for QUERY blocks |
| ↳ `Text` | string | Query text |
| ↳ `Alias` | string | Query alias |
| ↳ `Pages` | array | Pages to search |
| `documentMetadata` | object | Metadata about the analyzed document |
| ↳ `pages` | number | Number of pages in the document |
| `modelVersion` | string | Version of the Textract model used for processing |
### AWS Textract Analyze Expense [#aws-textract-analyze-expense]
Extract structured invoice and receipt fields using AWS Textract AnalyzeExpense
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | ----------------------------------------------------------------------- |
| `accessKeyId` | string | Yes | AWS Access Key ID |
| `secretAccessKey` | string | Yes | AWS Secret Access Key |
| `region` | string | Yes | AWS region for Textract service (e.g., us-east-1) |
| `processingMode` | string | No | Document type: single-page or multi-page. Defaults to single-page. |
| `file` | file | No | Invoice or receipt to be processed (JPEG, PNG, or single-page PDF). |
| `filePath` | string | No | URL to an invoice or receipt to be processed, if not uploaded directly. |
| `s3Uri` | string | No | S3 URI for multi-page processing (s3://bucket/key). |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------------------- | ------ | ---------------------------------------------------------------- |
| `expenseDocuments` | array | Detected expense documents with summary fields and line items |
| ↳ `expenseIndex` | number | Index of the expense document |
| ↳ `summaryFields` | array | Header fields such as vendor name, invoice date, and totals |
| ↳ `lineItemGroups` | array | Groups of line items (e.g., purchased items and their prices) |
| ↳ `lineItemGroupIndex` | number | Index of the line item group |
| ↳ `lineItems` | array | Individual line items within the group |
| ↳ `lineItemExpenseFields` | array | Fields for a single line item (description, quantity, price) |
| `documentMetadata` | object | Metadata about the analyzed document |
| ↳ `pages` | number | Number of pages in the document |
| `modelVersion` | string | Version of the AnalyzeExpense model used (multi-page/async only) |
### AWS Textract Analyze ID [#aws-textract-analyze-id]
Extract identity document fields using AWS Textract AnalyzeID
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ----------------- | ------ | -------- | -------------------------------------------------------------------- |
| `accessKeyId` | string | Yes | AWS Access Key ID |
| `secretAccessKey` | string | Yes | AWS Secret Access Key |
| `region` | string | Yes | AWS region for Textract service (e.g., us-east-1) |
| `file` | file | No | Front of the identity document (JPEG, PNG, or PDF). |
| `filePath` | string | No | URL to the front of the identity document, if not uploaded directly. |
| `fileBack` | file | No | Back of the identity document, if applicable (JPEG, PNG, or PDF). |
| `filePathBack` | string | No | URL to the back of the identity document, if not uploaded directly. |
#### Output [#output-2]
| Parameter | Type | Description |
| -------------------------- | ------ | ------------------------------------------------------------------------------------------------------ |
| `identityDocuments` | array | Detected identity documents with normalized fields |
| ↳ `documentIndex` | number | Index of the document page set |
| ↳ `identityDocumentFields` | array | Normalized fields such as FIRST\_NAME, LAST\_NAME, DATE\_OF\_BIRTH, DOCUMENT\_NUMBER, EXPIRATION\_DATE |
| ↳ `type` | object | Normalized field label |
| ↳ `text` | string | Field label text |
| ↳ `confidence` | number | Confidence score (0-100) |
| ↳ `valueDetection` | object | Detected value for the field, with a normalized value for dates |
| ↳ `text` | string | Field value text |
| ↳ `confidence` | number | Confidence score (0-100) |
| `documentMetadata` | object | Metadata about the analyzed document |
| ↳ `pages` | number | Number of pages analyzed |
| `modelVersion` | string | Version of the AnalyzeID model used for processing |
---
# Persona (/en/integrations/persona)
{/* MANUAL-CONTENT-START:intro */}
[Persona](https://withpersona.com/) is an identity verification platform that helps businesses verify who their users are. Persona handles the full identity lifecycle — collecting government IDs, selfies, and documents through hosted verification flows, screening individuals against global watchlists and sanctions lists, and routing edge cases to human review.
With Persona, you can:
* **Verify identities end to end**: Create inquiries from your verification templates, send customers one-time verification links, and read back collected fields and decision results
* **Automate KYC and compliance decisions**: Approve or decline inquiries programmatically, run watchlist, adverse media, and politically-exposed-person screening reports, and monitor cases that need manual review
* **Manage your verified user base**: Create and look up accounts, bulk-import existing users from CSV, and keep your user model in sync with Persona via reference IDs
* **Keep an audit trail**: Download inquiry summary PDFs and retrieve the underlying verifications and documents behind every decision
In Studio, the Persona block lets your agents drive identity verification as part of real workflows. Trigger verification when a customer signs up, route on approval status, screen names against watchlists before activating accounts, post pending reviews to Slack, or archive verification PDFs to cloud storage — all using your Persona API key and templates.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Persona identity verification into the workflow. Manage the full inquiry lifecycle (create, update, approve, decline, review, resume, expire, redact), generate one-time verification links and PDF summaries, manage accounts including CSV bulk import, run watchlist and adverse media reports, review cases, retrieve verifications and documents, and discover inquiry templates.
## Actions [#actions]
### Persona Create Inquiry [#persona-create-inquiry]
Create a new identity verification inquiry from an inquiry template. Returns the created inquiry, which can then be completed by the individual via a one-time link.
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Persona API key |
| `inquiryTemplateId` | string | Yes | Inquiry template ID (starts with itmpl\_), inquiry template version ID (starts with itmplv\_), or legacy template ID (starts with tmpl\_) |
| `accountId` | string | No | Account ID (starts with act\_) to associate with this inquiry |
| `referenceId` | string | No | Reference ID that refers to an entity in your user model. An account is auto-created for it if one does not exist. |
| `fields` | json | No | JSON object of field name to field value pairs to pre-fill, as defined by the inquiry template (e.g. \{"name-first": "Jane"}) |
| `note` | string | No | Free-form note to attach to the inquiry |
| `redirectUri` | string | No | URI to redirect the individual to after completing the inquiry flow |
#### Output [#output]
| Parameter | Type | Description |
| --------- | ------ | ------------------- |
| `inquiry` | object | The created inquiry |
### Persona Get Inquiry [#persona-get-inquiry]
Retrieve a single identity verification inquiry by ID, including its status, collected fields, and decision timestamps.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------ |
| `apiKey` | string | Yes | Persona API key |
| `inquiryId` | string | Yes | Inquiry ID to retrieve (starts with inq\_) |
#### Output [#output-1]
| Parameter | Type | Description |
| --------- | ------ | --------------------- |
| `inquiry` | object | The retrieved inquiry |
### Persona List Inquiries [#persona-list-inquiries]
List identity verification inquiries, optionally filtered by status, account ID, reference ID, or creation date range. Results are cursor-paginated.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Persona API key |
| `status` | string | No | Filter by inquiry status (created, pending, completed, failed, expired, needs\_review, approved, declined) |
| `accountId` | string | No | Filter by account ID (starts with act\_); comma-separate multiple IDs |
| `referenceId` | string | No | Filter by reference ID |
| `createdAtStart` | string | No | Filter to inquiries created at or after this ISO 8601 timestamp |
| `createdAtEnd` | string | No | Filter to inquiries created at or before this ISO 8601 timestamp |
| `pageSize` | number | No | Number of inquiries to return per page (1-100, default 10) |
| `pageAfter` | string | No | Pagination cursor: return inquiries after this inquiry ID |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------ | ------ | ---------------------------------------------------------------------- |
| `inquiries` | array | Inquiries matching the filters |
| `nextCursor` | string | Cursor for the next page (pass as pageAfter), or null on the last page |
### Persona Update Inquiry [#persona-update-inquiry]
Update an inquiry’s note, fields, tags, or redirect URI. Only the provided values are changed.
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Persona API key |
| `inquiryId` | string | Yes | Inquiry ID to update (starts with inq\_) |
| `note` | string | No | Free-form note to set on the inquiry |
| `fields` | json | No | JSON object of field name to field value pairs to set, as defined by the inquiry template (e.g. \{"name-first": "Jane"}) |
| `tags` | array | No | JSON array of tag names to set on the inquiry (e.g. \["vip"]) |
| `redirectUri` | string | No | URI to redirect the individual to after completing the inquiry flow |
#### Output [#output-3]
| Parameter | Type | Description |
| --------- | ------ | ------------------- |
| `inquiry` | object | The updated inquiry |
### Persona Approve Inquiry [#persona-approve-inquiry]
Approve an identity verification inquiry. Approving prevents further progress on the inquiry and triggers any associated workflows and webhooks.
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------- |
| `apiKey` | string | Yes | Persona API key |
| `inquiryId` | string | Yes | Inquiry ID to approve (starts with inq\_) |
#### Output [#output-4]
| Parameter | Type | Description |
| --------- | ------ | -------------------- |
| `inquiry` | object | The approved inquiry |
### Persona Decline Inquiry [#persona-decline-inquiry]
Decline an identity verification inquiry. Declining prevents further progress on the inquiry and triggers any associated workflows and webhooks.
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------- |
| `apiKey` | string | Yes | Persona API key |
| `inquiryId` | string | Yes | Inquiry ID to decline (starts with inq\_) |
#### Output [#output-5]
| Parameter | Type | Description |
| --------- | ------ | -------------------- |
| `inquiry` | object | The declined inquiry |
### Persona Mark Inquiry for Review [#persona-mark-inquiry-for-review]
Mark an identity verification inquiry for manual review, moving it to the needs\_review status.
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------- |
| `apiKey` | string | Yes | Persona API key |
| `inquiryId` | string | Yes | Inquiry ID to mark for review (starts with inq\_) |
#### Output [#output-6]
| Parameter | Type | Description |
| --------- | ------ | ----------------------------- |
| `inquiry` | object | The inquiry marked for review |
### Persona Resume Inquiry [#persona-resume-inquiry]
Resume a pending or expired inquiry, creating a new session so the individual can continue verification. Returns a session token.
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Persona API key |
| `inquiryId` | string | Yes | Inquiry ID to resume (starts with inq\_) |
#### Output [#output-7]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------------------------------------------------------- |
| `inquiry` | object | The resumed inquiry |
| `sessionToken` | string | Session token for the new inquiry session, used to continue the flow in embedded SDKs |
### Persona Expire Inquiry [#persona-expire-inquiry]
Expire an in-progress inquiry, invalidating its sessions and one-time links so the individual can no longer continue it.
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Persona API key |
| `inquiryId` | string | Yes | Inquiry ID to expire (starts with inq\_) |
#### Output [#output-8]
| Parameter | Type | Description |
| --------- | ------ | ------------------- |
| `inquiry` | object | The expired inquiry |
### Persona Generate Inquiry Link [#persona-generate-inquiry-link]
Generate a one-time link for an inquiry that the individual can open to complete their identity verification.
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Persona API key |
| `inquiryId` | string | Yes | Inquiry ID to generate a one-time link for (starts with inq\_) |
| `expiresInSeconds` | number | No | Number of seconds from now until the link expires (must be greater than 0; defaults to the inquiry template setting, typically 24 hours) |
#### Output [#output-9]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------------------- |
| `inquiry` | object | The inquiry the link was generated for |
| `oneTimeLink` | string | One-time link the individual can open to complete the inquiry |
| `oneTimeLinkShort` | string | Shortened version of the one-time link |
### Persona Print Inquiry PDF [#persona-print-inquiry-pdf]
Download a PDF summary of an inquiry, including its collected information and verification results.
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------- |
| `apiKey` | string | Yes | Persona API key |
| `inquiryId` | string | Yes | Inquiry ID to print (starts with inq\_) |
#### Output [#output-10]
| Parameter | Type | Description |
| --------- | ---- | ----------------------------------------------------- |
| `file` | file | PDF summary of the inquiry, stored in execution files |
### Persona Redact Inquiry [#persona-redact-inquiry]
Permanently delete all personally identifiable information collected by an inquiry, for example to honor a data deletion request. This cannot be undone.
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Persona API key |
| `inquiryId` | string | Yes | Inquiry ID to redact (starts with inq\_) |
#### Output [#output-11]
| Parameter | Type | Description |
| --------- | ------ | --------------------------------------------- |
| `inquiry` | object | The redacted inquiry (PII fields are removed) |
### Persona Create Account [#persona-create-account]
Create an account that represents an individual in Persona. Accounts consolidate inquiries, verifications, and reports for the same person.
#### Input [#input-12]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Persona API key |
| `accountTypeId` | string | No | Account type ID to create the account for (starts with acttp\_); defaults to your organization default |
| `referenceId` | string | No | Reference ID that refers to an entity in your user model |
| `countryCode` | string | No | ISO 3166-1 alpha-2 country code (e.g. US) |
| `fields` | json | No | JSON object of field name to field value pairs, as defined by the account type (e.g. \{"name-first": "Jane"}) |
| `tags` | array | No | JSON array of tag names to associate with the account (e.g. \["vip"]) |
#### Output [#output-12]
| Parameter | Type | Description |
| --------- | ------ | ------------------- |
| `account` | object | The created account |
### Persona Get Account [#persona-get-account]
Retrieve a single account by ID, including its reference ID, fields, tags, and status.
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------ |
| `apiKey` | string | Yes | Persona API key |
| `accountId` | string | Yes | Account ID to retrieve (starts with act\_) |
#### Output [#output-13]
| Parameter | Type | Description |
| --------- | ------ | --------------------- |
| `account` | object | The retrieved account |
### Persona List Accounts [#persona-list-accounts]
List accounts in your Persona organization, optionally filtered by reference ID. Results are cursor-paginated.
#### Input [#input-14]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | --------------------------------------------------------- |
| `apiKey` | string | Yes | Persona API key |
| `referenceId` | string | No | Filter by reference ID |
| `pageSize` | number | No | Number of accounts to return per page (1-100, default 10) |
| `pageAfter` | string | No | Pagination cursor: return accounts after this account ID |
#### Output [#output-14]
| Parameter | Type | Description |
| ------------ | ------ | ---------------------------------------------------------------------- |
| `accounts` | array | Accounts matching the filters |
| `nextCursor` | string | Cursor for the next page (pass as pageAfter), or null on the last page |
### Persona Update Account [#persona-update-account]
Update an account’s reference ID, country code, fields, or tags. Only the provided values are changed.
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Persona API key |
| `accountId` | string | Yes | Account ID to update (starts with act\_) |
| `referenceId` | string | No | Reference ID that refers to an entity in your user model |
| `countryCode` | string | No | ISO 3166-1 alpha-2 country code (e.g. US) |
| `fields` | json | No | JSON object of field name to field value pairs to set, as defined by the account type (e.g. \{"name-first": "Jane"}) |
| `tags` | array | No | JSON array of tag names to set on the account (e.g. \["vip"]) |
#### Output [#output-15]
| Parameter | Type | Description |
| --------- | ------ | ------------------- |
| `account` | object | The updated account |
### Persona Import Accounts [#persona-import-accounts]
Bulk-import accounts into Persona from a CSV file. Returns an importer whose status can be polled until processing completes.
#### Input [#input-16]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------ |
| `apiKey` | string | Yes | Persona API key |
| `file` | file | Yes | CSV file of accounts to import |
#### Output [#output-16]
| Parameter | Type | Description |
| ---------- | ------ | ---------------------------- |
| `importer` | object | The created account importer |
### Persona Redact Account [#persona-redact-account]
Permanently delete all personally identifiable information stored on an account, for example to honor a data deletion request. This cannot be undone.
#### Input [#input-17]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Persona API key |
| `accountId` | string | Yes | Account ID to redact (starts with act\_) |
#### Output [#output-17]
| Parameter | Type | Description |
| --------- | ------ | --------------------------------------------- |
| `account` | object | The redacted account (PII fields are removed) |
### Persona List Cases [#persona-list-cases]
List manual review cases, optionally filtered by status, account ID, or reference ID. Results are cursor-paginated.
#### Input [#input-18]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------ |
| `apiKey` | string | Yes | Persona API key |
| `status` | string | No | Filter by case status (e.g. Open, Resolved) |
| `accountId` | string | No | Filter by account ID (starts with act\_) |
| `referenceId` | string | No | Filter by reference ID |
| `pageSize` | number | No | Number of cases to return per page (1-100, default 10) |
| `pageAfter` | string | No | Pagination cursor: return cases after this case ID |
#### Output [#output-18]
| Parameter | Type | Description |
| ------------ | ------ | ---------------------------------------------------------------------- |
| `cases` | array | Cases matching the filters |
| `nextCursor` | string | Cursor for the next page (pass as pageAfter), or null on the last page |
### Persona Get Case [#persona-get-case]
Retrieve a single manual review case by ID, including its status, resolution, and assignee.
#### Input [#input-19]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------- |
| `apiKey` | string | Yes | Persona API key |
| `caseId` | string | Yes | Case ID to retrieve (starts with case\_) |
#### Output [#output-19]
| Parameter | Type | Description |
| --------- | ------ | ------------------ |
| `case` | object | The retrieved case |
### Persona Create Report [#persona-create-report]
Run a screening report (watchlist, adverse media, or politically exposed person) against an individual by name or search term.
#### Input [#input-20]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Persona API key |
| `reportType` | string | Yes | Type of report to run: watchlist, adverse-media, or politically-exposed-person |
| `reportTemplateId` | string | Yes | Report template ID to run (starts with rptp\_) |
| `term` | string | No | Full-name search term (e.g. "Jane Q Doe"). Provide this or the separate name parts. |
| `nameFirst` | string | No | First name of the individual to search |
| `nameMiddle` | string | No | Middle name of the individual to search |
| `nameLast` | string | No | Last name of the individual to search |
| `birthdate` | string | No | Birthdate of the individual, formatted as YYYY-MM-DD |
| `countryCode` | string | No | ISO 3166-1 alpha-2 country code (e.g. US) |
| `accountId` | string | No | Account ID (starts with act\_) to associate with this report |
#### Output [#output-20]
| Parameter | Type | Description |
| --------- | ------ | --------------------------------------------------------------------------- |
| `report` | object | The created report. Reports run asynchronously; poll until status is ready. |
### Persona Get Report [#persona-get-report]
Retrieve a single screening report by ID, including its status, match results, and full type-specific attributes.
#### Input [#input-21]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------- |
| `apiKey` | string | Yes | Persona API key |
| `reportId` | string | Yes | Report ID to retrieve (starts with rep\_) |
#### Output [#output-21]
| Parameter | Type | Description |
| --------- | ------ | -------------------- |
| `report` | object | The retrieved report |
### Persona List Reports [#persona-list-reports]
List screening reports, optionally filtered by account ID or reference ID. Results are cursor-paginated.
#### Input [#input-22]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | -------------------------------------------------------- |
| `apiKey` | string | Yes | Persona API key |
| `accountId` | string | No | Filter by account ID (starts with act\_) |
| `referenceId` | string | No | Filter by reference ID |
| `pageSize` | number | No | Number of reports to return per page (1-100, default 10) |
| `pageAfter` | string | No | Pagination cursor: return reports after this report ID |
#### Output [#output-22]
| Parameter | Type | Description |
| ------------ | ------ | ---------------------------------------------------------------------- |
| `reports` | array | Reports matching the filters |
| `nextCursor` | string | Cursor for the next page (pass as pageAfter), or null on the last page |
### Persona Get Verification [#persona-get-verification]
Retrieve a single verification by ID (government ID, selfie, document, database, and more), including its status and the checks that ran.
#### Input [#input-23]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ----------------------------------------------- |
| `apiKey` | string | Yes | Persona API key |
| `verificationId` | string | Yes | Verification ID to retrieve (starts with ver\_) |
#### Output [#output-23]
| Parameter | Type | Description |
| -------------- | ------ | -------------------------- |
| `verification` | object | The retrieved verification |
### Persona Get Document [#persona-get-document]
Retrieve a single document by ID (government ID, generic document, and more), including its processing status and uploaded files.
#### Input [#input-24]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------- |
| `apiKey` | string | Yes | Persona API key |
| `documentId` | string | Yes | Document ID to retrieve (starts with doc\_) |
#### Output [#output-24]
| Parameter | Type | Description |
| ---------- | ------ | ---------------------- |
| `document` | object | The retrieved document |
### Persona List Inquiry Templates [#persona-list-inquiry-templates]
List the inquiry templates in your Persona organization, to discover template IDs for creating inquiries. Results are cursor-paginated.
#### Input [#input-25]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------- |
| `apiKey` | string | Yes | Persona API key |
| `pageSize` | number | No | Number of templates to return per page (1-100, default 10) |
| `pageAfter` | string | No | Pagination cursor: return templates after this template ID |
#### Output [#output-25]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------------------------------------------------- |
| `inquiryTemplates` | array | Inquiry templates in the organization |
| `nextCursor` | string | Cursor for the next page (pass as pageAfter), or null on the last page |
---
# Instantly (/en/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 Studio, 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 |
| ----------------------- | ------- | -------- | ---------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Instantly API key with the required V2 scopes |
| `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 |
| --------- | ------ | -------- | --------------------------------------------- |
| `apiKey` | string | Yes | Instantly API key with the required V2 scopes |
| `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 |
| ------------------------------ | ------- | -------- | ------------------------------------------------------------------- |
| `apiKey` | string | Yes | Instantly API key with the required V2 scopes |
| `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 |
| -------------------- | ------ | -------- | ------------------------------------------------------------------- |
| `apiKey` | string | Yes | Instantly API key with the required V2 scopes |
| `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 |
| ------------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Instantly API key with the required V2 scopes |
| `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 |
| ----------------------- | ------- | -------- | ------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Instantly API key with the required V2 scopes |
| `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 |
| ------------------- | ------ | -------- | --------------------------------------------- |
| `apiKey` | string | Yes | Instantly API key with the required V2 scopes |
| `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 |
| ------------------- | ------- | -------- | --------------------------------------------- |
| `apiKey` | string | Yes | Instantly API key with the required V2 scopes |
| `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 |
| ------------------- | ------- | -------- | --------------------------------------------- |
| `apiKey` | string | Yes | Instantly API key with the required V2 scopes |
| `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 |
| ------------ | ------ | -------- | --------------------------------------------- |
| `apiKey` | string | Yes | Instantly API key with the required V2 scopes |
| `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 |
| ------------ | ------ | -------- | --------------------------------------------- |
| `apiKey` | string | Yes | Instantly API key with the required V2 scopes |
| `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 |
| ------------ | ------ | -------- | --------------------------------------------- |
| `apiKey` | string | Yes | Instantly API key with the required V2 scopes |
| `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 |
| ---------------- | ------- | -------- | --------------------------------------------------- |
| `apiKey` | string | Yes | Instantly API key with the required V2 scopes |
| `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 |
| ------------------------ | ------ | -------- | ---------------------------------------------- |
| `apiKey` | string | Yes | Instantly API key with the required V2 scopes |
| `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 |
| --------------------- | ------- | -------- | --------------------------------------------- |
| `apiKey` | string | Yes | Instantly API key with the required V2 scopes |
| `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 |
| --------------------- | ------- | -------- | ------------------------------------------------------ |
| `apiKey` | string | Yes | Instantly API key with the required V2 scopes |
| `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 |
---
# ArXiv (/en/integrations/arxiv)
{/* MANUAL-CONTENT-START:intro */}
[arXiv](https://arxiv.org/) hosts research papers. Search by keyword, author, title, or category, retrieve a paper’s metadata, or list papers by an author. This integration does not require an API key or OAuth connection.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrates ArXiv into the workflow. Can search for papers, get paper details, and get author papers. Does not require OAuth or an API key.
## Actions [#actions]
### ArXiv Search [#arxiv-search]
Search for academic papers on ArXiv by keywords, authors, titles, or other fields.
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `searchQuery` | string | Yes | The search query to execute |
| `searchField` | string | No | Field to search in: all, ti (title), au (author), abs (abstract), co (comment), jr (journal), cat (category), rn (report number) |
| `maxResults` | number | No | Maximum number of results to return (default: 10, max: 2000) |
| `sortBy` | string | No | Sort by: relevance, lastUpdatedDate, submittedDate (default: relevance) |
| `sortOrder` | string | No | Sort order: ascending, descending (default: descending) |
#### Output [#output]
| Parameter | Type | Description |
| -------------- | ------ | -------------------------------------------------- |
| `papers` | json | Array of papers matching the search query |
| `totalResults` | number | Total number of results found for the search query |
### ArXiv Get Paper [#arxiv-get-paper]
Get detailed information about a specific ArXiv paper by its ID.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ----------------------------------- |
| `paperId` | string | Yes | ArXiv paper ID (e.g., "1706.03762") |
#### Output [#output-1]
| Parameter | Type | Description |
| --------- | ---- | ---------------------------------------------------- |
| `paper` | json | Detailed information about the requested ArXiv paper |
### ArXiv Get Author Papers [#arxiv-get-author-papers]
Search for papers by a specific author on ArXiv.
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------ |
| `authorName` | string | Yes | Author name to search for |
| `maxResults` | number | No | Maximum number of results to return (default: 10, max: 2000) |
#### Output [#output-2]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------------------ |
| `authorPapers` | json | Array of papers authored by the specified author |
| `totalResults` | number | Total number of papers found for the author |
---
# Square (/en/integrations/square)
{/* MANUAL-CONTENT-START:intro */}
[Square](https://squareup.com/) is a commerce platform that provides payment processing, point-of-sale, and business management tools for businesses of all sizes. It offers APIs for accepting payments, managing customers, and handling orders, invoices, and catalog data across online and in-person sales channels.
With Square, you can:
* **Process payments and refunds**: Take, retrieve, list, cancel, complete, and refund payments
* **Manage customers**: Create, retrieve, list, search, update, and delete customer profiles
* **Manage orders and invoices**: Create, retrieve, search, and pay for orders, and create, publish, cancel, and delete invoices
* **Manage catalog and inventory**: Upsert, retrieve, list, and search catalog objects, upload catalog images, and check inventory counts
In Studio, the Square integration allows your agents to take and refund payments, manage customer profiles, look up business locations, create and track orders and invoices, and manage catalog items and inventory — all programmatically through API calls. This enables agents to handle real commerce operations such as charging a customer, issuing a refund, keeping customer records up to date, sending invoices, and maintaining product catalog and stock data, directly from a workflow.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Square into the workflow. Take and refund payments, manage customers, build catalog items and images, create and search orders, and issue invoices. Authenticate with a Square access token (personal access token).
## Actions [#actions]
### Square Create Payment [#square-create-payment]
Take a payment using a payment source such as a card nonce or a card on file
#### Input [#input]
| Parameter | Type | Required | Description |
| ---------------- | ------- | -------- | ----------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `sourceId` | string | Yes | ID of the payment source (card nonce, card-on-file ID, or wallet token) |
| `amount` | number | Yes | Amount in the smallest currency denomination (e.g. 1000 = $10.00) |
| `currency` | string | Yes | Three-letter ISO 4217 currency code (e.g. USD) |
| `idempotencyKey` | string | No | Unique key to make the request idempotent (auto-generated if omitted) |
| `customerId` | string | No | ID of the customer associated with the payment |
| `locationId` | string | No | ID of the location where the payment is taken (defaults to the main location) |
| `orderId` | string | No | ID of the order associated with the payment |
| `referenceId` | string | No | Optional external reference for the payment |
| `note` | string | No | Optional note attached to the payment |
| `autocomplete` | boolean | No | Whether to immediately capture the payment (defaults to true) |
#### Output [#output]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------------------------------ |
| `payment` | object | The created payment object |
| ↳ `id` | string | Unique ID for the payment |
| ↳ `status` | string | Payment status (APPROVED, PENDING, COMPLETED, CANCELED, or FAILED) |
| ↳ `amount_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `total_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `approved_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `app_fee_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `refunded_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `tip_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `source_type` | string | Source of the payment (CARD, BANK\_ACCOUNT, WALLET, etc.) |
| ↳ `card_details` | json | Details about a card payment |
| ↳ `location_id` | string | ID of the location where the payment was taken |
| ↳ `order_id` | string | ID of the associated order |
| ↳ `customer_id` | string | ID of the associated customer |
| ↳ `reference_id` | string | Optional external reference for the payment |
| ↳ `receipt_number` | string | Receipt number for the payment |
| ↳ `receipt_url` | string | URL of the payment receipt |
| ↳ `note` | string | Optional note attached to the payment |
| ↳ `refund_ids` | array | IDs of refunds associated with the payment |
| ↳ `processing_fee` | array | Processing fees applied to the payment |
| ↳ `created_at` | string | Timestamp when the payment was created (RFC 3339) |
| ↳ `updated_at` | string | Timestamp when the payment was last updated (RFC 3339) |
| ↳ `version_token` | string | Optimistic concurrency token for the payment |
| `metadata` | json | Payment summary metadata |
| ↳ `id` | string | Square payment ID |
| ↳ `status` | string | Current payment status |
| ↳ `order_id` | string | Associated order ID |
### Square Get Payment [#square-get-payment]
Retrieve details for a single payment by its ID
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `paymentId` | string | Yes | ID of the payment to retrieve |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------------------------------ |
| `payment` | object | The retrieved payment object |
| ↳ `id` | string | Unique ID for the payment |
| ↳ `status` | string | Payment status (APPROVED, PENDING, COMPLETED, CANCELED, or FAILED) |
| ↳ `amount_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `total_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `approved_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `app_fee_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `refunded_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `tip_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `source_type` | string | Source of the payment (CARD, BANK\_ACCOUNT, WALLET, etc.) |
| ↳ `card_details` | json | Details about a card payment |
| ↳ `location_id` | string | ID of the location where the payment was taken |
| ↳ `order_id` | string | ID of the associated order |
| ↳ `customer_id` | string | ID of the associated customer |
| ↳ `reference_id` | string | Optional external reference for the payment |
| ↳ `receipt_number` | string | Receipt number for the payment |
| ↳ `receipt_url` | string | URL of the payment receipt |
| ↳ `note` | string | Optional note attached to the payment |
| ↳ `refund_ids` | array | IDs of refunds associated with the payment |
| ↳ `processing_fee` | array | Processing fees applied to the payment |
| ↳ `created_at` | string | Timestamp when the payment was created (RFC 3339) |
| ↳ `updated_at` | string | Timestamp when the payment was last updated (RFC 3339) |
| ↳ `version_token` | string | Optimistic concurrency token for the payment |
| `metadata` | json | Payment summary metadata |
| ↳ `id` | string | Square payment ID |
| ↳ `status` | string | Current payment status |
| ↳ `order_id` | string | Associated order ID |
### Square List Payments [#square-list-payments]
List payments taken by the account, optionally filtered by location and time range
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------------------------ |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `locationId` | string | No | Filter payments by location ID |
| `beginTime` | string | No | RFC 3339 timestamp for the beginning of the reporting period |
| `endTime` | string | No | RFC 3339 timestamp for the end of the reporting period |
| `limit` | number | No | Maximum number of results to return per page |
| `cursor` | string | No | Pagination cursor from a previous response |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------------------------------ |
| `payments` | array | Array of payment objects |
| ↳ `id` | string | Unique ID for the payment |
| ↳ `status` | string | Payment status (APPROVED, PENDING, COMPLETED, CANCELED, or FAILED) |
| ↳ `amount_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `total_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `approved_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `app_fee_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `refunded_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `tip_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `source_type` | string | Source of the payment (CARD, BANK\_ACCOUNT, WALLET, etc.) |
| ↳ `card_details` | json | Details about a card payment |
| ↳ `location_id` | string | ID of the location where the payment was taken |
| ↳ `order_id` | string | ID of the associated order |
| ↳ `customer_id` | string | ID of the associated customer |
| ↳ `reference_id` | string | Optional external reference for the payment |
| ↳ `receipt_number` | string | Receipt number for the payment |
| ↳ `receipt_url` | string | URL of the payment receipt |
| ↳ `note` | string | Optional note attached to the payment |
| ↳ `refund_ids` | array | IDs of refunds associated with the payment |
| ↳ `processing_fee` | array | Processing fees applied to the payment |
| ↳ `created_at` | string | Timestamp when the payment was created (RFC 3339) |
| ↳ `updated_at` | string | Timestamp when the payment was last updated (RFC 3339) |
| ↳ `version_token` | string | Optimistic concurrency token for the payment |
| `metadata` | json | List pagination metadata |
| ↳ `count` | number | Number of items returned in this page |
| ↳ `cursor` | string | Pagination cursor to fetch the next page, if more results exist |
### Square Cancel Payment [#square-cancel-payment]
Cancel (void) an authorized payment that has not been captured
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `paymentId` | string | Yes | ID of the payment to cancel |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------------------------------ |
| `payment` | object | The canceled payment object |
| ↳ `id` | string | Unique ID for the payment |
| ↳ `status` | string | Payment status (APPROVED, PENDING, COMPLETED, CANCELED, or FAILED) |
| ↳ `amount_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `total_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `approved_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `app_fee_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `refunded_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `tip_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `source_type` | string | Source of the payment (CARD, BANK\_ACCOUNT, WALLET, etc.) |
| ↳ `card_details` | json | Details about a card payment |
| ↳ `location_id` | string | ID of the location where the payment was taken |
| ↳ `order_id` | string | ID of the associated order |
| ↳ `customer_id` | string | ID of the associated customer |
| ↳ `reference_id` | string | Optional external reference for the payment |
| ↳ `receipt_number` | string | Receipt number for the payment |
| ↳ `receipt_url` | string | URL of the payment receipt |
| ↳ `note` | string | Optional note attached to the payment |
| ↳ `refund_ids` | array | IDs of refunds associated with the payment |
| ↳ `processing_fee` | array | Processing fees applied to the payment |
| ↳ `created_at` | string | Timestamp when the payment was created (RFC 3339) |
| ↳ `updated_at` | string | Timestamp when the payment was last updated (RFC 3339) |
| ↳ `version_token` | string | Optimistic concurrency token for the payment |
| `metadata` | json | Payment summary metadata |
| ↳ `id` | string | Square payment ID |
| ↳ `status` | string | Current payment status |
| ↳ `order_id` | string | Associated order ID |
### Square Complete Payment [#square-complete-payment]
Capture (complete) a payment that was authorized with delayed capture
#### Input [#input-4]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | --------------------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `paymentId` | string | Yes | ID of the payment to complete |
| `versionToken` | string | No | Optional version token for optimistic concurrency control |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------------------------------ |
| `payment` | object | The completed payment object |
| ↳ `id` | string | Unique ID for the payment |
| ↳ `status` | string | Payment status (APPROVED, PENDING, COMPLETED, CANCELED, or FAILED) |
| ↳ `amount_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `total_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `approved_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `app_fee_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `refunded_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `tip_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `source_type` | string | Source of the payment (CARD, BANK\_ACCOUNT, WALLET, etc.) |
| ↳ `card_details` | json | Details about a card payment |
| ↳ `location_id` | string | ID of the location where the payment was taken |
| ↳ `order_id` | string | ID of the associated order |
| ↳ `customer_id` | string | ID of the associated customer |
| ↳ `reference_id` | string | Optional external reference for the payment |
| ↳ `receipt_number` | string | Receipt number for the payment |
| ↳ `receipt_url` | string | URL of the payment receipt |
| ↳ `note` | string | Optional note attached to the payment |
| ↳ `refund_ids` | array | IDs of refunds associated with the payment |
| ↳ `processing_fee` | array | Processing fees applied to the payment |
| ↳ `created_at` | string | Timestamp when the payment was created (RFC 3339) |
| ↳ `updated_at` | string | Timestamp when the payment was last updated (RFC 3339) |
| ↳ `version_token` | string | Optimistic concurrency token for the payment |
| `metadata` | json | Payment summary metadata |
| ↳ `id` | string | Square payment ID |
| ↳ `status` | string | Current payment status |
| ↳ `order_id` | string | Associated order ID |
### Square Refund Payment [#square-refund-payment]
Refund all or part of a completed payment
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `paymentId` | string | Yes | ID of the payment to refund |
| `amount` | number | Yes | Amount to refund in the smallest currency denomination (e.g. 100 = $1.00) |
| `currency` | string | Yes | Three-letter ISO 4217 currency code (e.g. USD) |
| `idempotencyKey` | string | No | Unique key to make the request idempotent (auto-generated if omitted) |
| `reason` | string | No | Reason for the refund |
#### Output [#output-5]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------------------------------ |
| `refund` | object | The created refund object |
| ↳ `id` | string | Unique ID for the refund |
| ↳ `status` | string | Refund status (PENDING, COMPLETED, REJECTED, or FAILED) |
| ↳ `amount_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `processing_fee` | array | Processing fees refunded |
| ↳ `payment_id` | string | ID of the payment being refunded |
| ↳ `order_id` | string | ID of the associated order |
| ↳ `location_id` | string | ID of the associated location |
| ↳ `reason` | string | Reason for the refund |
| ↳ `created_at` | string | Timestamp when the refund was created (RFC 3339) |
| ↳ `updated_at` | string | Timestamp when the refund was last updated (RFC 3339) |
| `metadata` | json | Refund summary metadata |
| ↳ `id` | string | Square refund ID |
| ↳ `status` | string | Current refund status |
| ↳ `payment_id` | string | Refunded payment ID |
### Square Get Refund [#square-get-refund]
Retrieve a single payment refund by its ID
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `refundId` | string | Yes | ID of the refund to retrieve |
#### Output [#output-6]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------------------------------ |
| `refund` | object | The retrieved refund object |
| ↳ `id` | string | Unique ID for the refund |
| ↳ `status` | string | Refund status (PENDING, COMPLETED, REJECTED, or FAILED) |
| ↳ `amount_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `processing_fee` | array | Processing fees refunded |
| ↳ `payment_id` | string | ID of the payment being refunded |
| ↳ `order_id` | string | ID of the associated order |
| ↳ `location_id` | string | ID of the associated location |
| ↳ `reason` | string | Reason for the refund |
| ↳ `created_at` | string | Timestamp when the refund was created (RFC 3339) |
| ↳ `updated_at` | string | Timestamp when the refund was last updated (RFC 3339) |
| `metadata` | json | Refund summary metadata |
| ↳ `id` | string | Square refund ID |
| ↳ `status` | string | Current refund status |
| ↳ `payment_id` | string | Refunded payment ID |
### Square List Refunds [#square-list-refunds]
List payment refunds, optionally filtered by location, status, and time range
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ----------------------------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `locationId` | string | No | Filter refunds by location ID |
| `status` | string | No | Filter by refund status (PENDING, COMPLETED, REJECTED, or FAILED) |
| `beginTime` | string | No | RFC 3339 timestamp for the beginning of the reporting period |
| `endTime` | string | No | RFC 3339 timestamp for the end of the reporting period |
| `limit` | number | No | Maximum number of results to return per page |
| `cursor` | string | No | Pagination cursor from a previous response |
#### Output [#output-7]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------------------------------ |
| `refunds` | array | Array of refund objects |
| ↳ `id` | string | Unique ID for the refund |
| ↳ `status` | string | Refund status (PENDING, COMPLETED, REJECTED, or FAILED) |
| ↳ `amount_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `processing_fee` | array | Processing fees refunded |
| ↳ `payment_id` | string | ID of the payment being refunded |
| ↳ `order_id` | string | ID of the associated order |
| ↳ `location_id` | string | ID of the associated location |
| ↳ `reason` | string | Reason for the refund |
| ↳ `created_at` | string | Timestamp when the refund was created (RFC 3339) |
| ↳ `updated_at` | string | Timestamp when the refund was last updated (RFC 3339) |
| `metadata` | json | List pagination metadata |
| ↳ `count` | number | Number of items returned in this page |
| ↳ `cursor` | string | Pagination cursor to fetch the next page, if more results exist |
### Square Create Customer [#square-create-customer]
Create a new customer profile in the Square customer directory
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `givenName` | string | No | First name of the customer |
| `familyName` | string | No | Last name of the customer |
| `companyName` | string | No | Business name of the customer |
| `nickname` | string | No | Nickname of the customer |
| `emailAddress` | string | No | Email address of the customer |
| `phoneNumber` | string | No | Phone number of the customer |
| `birthday` | string | No | Birthday in YYYY-MM-DD or MM-DD format |
| `note` | string | No | Note about the customer |
| `referenceId` | string | No | Optional external reference for the customer |
| `address` | json | No | Square address object for the customer |
| `idempotencyKey` | string | No | Unique key to make the request idempotent (auto-generated if omitted) |
#### Output [#output-8]
| Parameter | Type | Description |
| ----------------------------------- | ------ | ------------------------------------------------------- |
| `customer` | object | The created customer object |
| ↳ `id` | string | Unique ID for the customer |
| ↳ `given_name` | string | First name of the customer |
| ↳ `family_name` | string | Last name of the customer |
| ↳ `nickname` | string | Nickname of the customer |
| ↳ `company_name` | string | Business name of the customer |
| ↳ `email_address` | string | Email address of the customer |
| ↳ `phone_number` | string | Phone number of the customer |
| ↳ `address` | object | Physical address |
| ↳ `address_line_1` | string | First line of the address |
| ↳ `address_line_2` | string | Second line of the address |
| ↳ `address_line_3` | string | Third line of the address |
| ↳ `locality` | string | City or town |
| ↳ `sublocality` | string | Neighborhood or district |
| ↳ `administrative_district_level_1` | string | State, province, or region |
| ↳ `postal_code` | string | Postal or ZIP code |
| ↳ `country` | string | Two-letter ISO 3166-1 alpha-2 country code |
| ↳ `first_name` | string | First name of the addressee |
| ↳ `last_name` | string | Last name of the addressee |
| ↳ `birthday` | string | Birthday in YYYY-MM-DD or MM-DD format |
| ↳ `reference_id` | string | Optional external reference for the customer |
| ↳ `note` | string | Note about the customer |
| ↳ `creation_source` | string | How the customer profile was created |
| ↳ `preferences` | json | Customer communication preferences |
| ↳ `group_ids` | array | IDs of customer groups the customer belongs to |
| ↳ `segment_ids` | array | IDs of customer segments the customer belongs to |
| ↳ `version` | number | Optimistic concurrency version of the customer |
| ↳ `created_at` | string | Timestamp when the customer was created (RFC 3339) |
| ↳ `updated_at` | string | Timestamp when the customer was last updated (RFC 3339) |
| `metadata` | json | Customer summary metadata |
| ↳ `id` | string | Square customer ID |
| ↳ `email_address` | string | Customer email address |
| ↳ `given_name` | string | Customer first name |
| ↳ `family_name` | string | Customer last name |
### Square Get Customer [#square-get-customer]
Retrieve a single customer profile by its ID
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `customerId` | string | Yes | ID of the customer to retrieve |
#### Output [#output-9]
| Parameter | Type | Description |
| ----------------------------------- | ------ | ------------------------------------------------------- |
| `customer` | object | The retrieved customer object |
| ↳ `id` | string | Unique ID for the customer |
| ↳ `given_name` | string | First name of the customer |
| ↳ `family_name` | string | Last name of the customer |
| ↳ `nickname` | string | Nickname of the customer |
| ↳ `company_name` | string | Business name of the customer |
| ↳ `email_address` | string | Email address of the customer |
| ↳ `phone_number` | string | Phone number of the customer |
| ↳ `address` | object | Physical address |
| ↳ `address_line_1` | string | First line of the address |
| ↳ `address_line_2` | string | Second line of the address |
| ↳ `address_line_3` | string | Third line of the address |
| ↳ `locality` | string | City or town |
| ↳ `sublocality` | string | Neighborhood or district |
| ↳ `administrative_district_level_1` | string | State, province, or region |
| ↳ `postal_code` | string | Postal or ZIP code |
| ↳ `country` | string | Two-letter ISO 3166-1 alpha-2 country code |
| ↳ `first_name` | string | First name of the addressee |
| ↳ `last_name` | string | Last name of the addressee |
| ↳ `birthday` | string | Birthday in YYYY-MM-DD or MM-DD format |
| ↳ `reference_id` | string | Optional external reference for the customer |
| ↳ `note` | string | Note about the customer |
| ↳ `creation_source` | string | How the customer profile was created |
| ↳ `preferences` | json | Customer communication preferences |
| ↳ `group_ids` | array | IDs of customer groups the customer belongs to |
| ↳ `segment_ids` | array | IDs of customer segments the customer belongs to |
| ↳ `version` | number | Optimistic concurrency version of the customer |
| ↳ `created_at` | string | Timestamp when the customer was created (RFC 3339) |
| ↳ `updated_at` | string | Timestamp when the customer was last updated (RFC 3339) |
| `metadata` | json | Customer summary metadata |
| ↳ `id` | string | Square customer ID |
| ↳ `email_address` | string | Customer email address |
| ↳ `given_name` | string | Customer first name |
| ↳ `family_name` | string | Customer last name |
### Square List Customers [#square-list-customers]
List customer profiles in the Square customer directory
#### Input [#input-10]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------ |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `limit` | number | No | Maximum number of results to return per page (max 100) |
| `cursor` | string | No | Pagination cursor from a previous response |
| `sortField` | string | No | Field to sort by (DEFAULT or CREATED\_AT) |
| `sortOrder` | string | No | Sort order (ASC or DESC) |
#### Output [#output-10]
| Parameter | Type | Description |
| ----------------------------------- | ------ | --------------------------------------------------------------- |
| `customers` | array | Array of customer objects |
| ↳ `id` | string | Unique ID for the customer |
| ↳ `given_name` | string | First name of the customer |
| ↳ `family_name` | string | Last name of the customer |
| ↳ `nickname` | string | Nickname of the customer |
| ↳ `company_name` | string | Business name of the customer |
| ↳ `email_address` | string | Email address of the customer |
| ↳ `phone_number` | string | Phone number of the customer |
| ↳ `address` | object | Physical address |
| ↳ `address_line_1` | string | First line of the address |
| ↳ `address_line_2` | string | Second line of the address |
| ↳ `address_line_3` | string | Third line of the address |
| ↳ `locality` | string | City or town |
| ↳ `sublocality` | string | Neighborhood or district |
| ↳ `administrative_district_level_1` | string | State, province, or region |
| ↳ `postal_code` | string | Postal or ZIP code |
| ↳ `country` | string | Two-letter ISO 3166-1 alpha-2 country code |
| ↳ `first_name` | string | First name of the addressee |
| ↳ `last_name` | string | Last name of the addressee |
| ↳ `birthday` | string | Birthday in YYYY-MM-DD or MM-DD format |
| ↳ `reference_id` | string | Optional external reference for the customer |
| ↳ `note` | string | Note about the customer |
| ↳ `creation_source` | string | How the customer profile was created |
| ↳ `preferences` | json | Customer communication preferences |
| ↳ `group_ids` | array | IDs of customer groups the customer belongs to |
| ↳ `segment_ids` | array | IDs of customer segments the customer belongs to |
| ↳ `version` | number | Optimistic concurrency version of the customer |
| ↳ `created_at` | string | Timestamp when the customer was created (RFC 3339) |
| ↳ `updated_at` | string | Timestamp when the customer was last updated (RFC 3339) |
| `metadata` | json | List pagination metadata |
| ↳ `count` | number | Number of items returned in this page |
| ↳ `cursor` | string | Pagination cursor to fetch the next page, if more results exist |
### Square Search Customers [#square-search-customers]
Search customer profiles using filters such as email, phone, or creation date
#### Input [#input-11]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `query` | json | No | Square customer query object with optional filter and sort (e.g. \{"filter":\{"email\_address":\{"exact":"[a@b.com](mailto:a@b.com)"}}}) |
| `limit` | number | No | Maximum number of results to return per page |
| `cursor` | string | No | Pagination cursor from a previous response |
#### Output [#output-11]
| Parameter | Type | Description |
| ----------------------------------- | ------ | --------------------------------------------------------------- |
| `customers` | array | Array of matching customer objects |
| ↳ `id` | string | Unique ID for the customer |
| ↳ `given_name` | string | First name of the customer |
| ↳ `family_name` | string | Last name of the customer |
| ↳ `nickname` | string | Nickname of the customer |
| ↳ `company_name` | string | Business name of the customer |
| ↳ `email_address` | string | Email address of the customer |
| ↳ `phone_number` | string | Phone number of the customer |
| ↳ `address` | object | Physical address |
| ↳ `address_line_1` | string | First line of the address |
| ↳ `address_line_2` | string | Second line of the address |
| ↳ `address_line_3` | string | Third line of the address |
| ↳ `locality` | string | City or town |
| ↳ `sublocality` | string | Neighborhood or district |
| ↳ `administrative_district_level_1` | string | State, province, or region |
| ↳ `postal_code` | string | Postal or ZIP code |
| ↳ `country` | string | Two-letter ISO 3166-1 alpha-2 country code |
| ↳ `first_name` | string | First name of the addressee |
| ↳ `last_name` | string | Last name of the addressee |
| ↳ `birthday` | string | Birthday in YYYY-MM-DD or MM-DD format |
| ↳ `reference_id` | string | Optional external reference for the customer |
| ↳ `note` | string | Note about the customer |
| ↳ `creation_source` | string | How the customer profile was created |
| ↳ `preferences` | json | Customer communication preferences |
| ↳ `group_ids` | array | IDs of customer groups the customer belongs to |
| ↳ `segment_ids` | array | IDs of customer segments the customer belongs to |
| ↳ `version` | number | Optimistic concurrency version of the customer |
| ↳ `created_at` | string | Timestamp when the customer was created (RFC 3339) |
| ↳ `updated_at` | string | Timestamp when the customer was last updated (RFC 3339) |
| `metadata` | json | List pagination metadata |
| ↳ `count` | number | Number of items returned in this page |
| ↳ `cursor` | string | Pagination cursor to fetch the next page, if more results exist |
### Square Update Customer [#square-update-customer]
Update fields on an existing customer profile
#### Input [#input-12]
| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | -------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `customerId` | string | Yes | ID of the customer to update |
| `givenName` | string | No | First name of the customer |
| `familyName` | string | No | Last name of the customer |
| `companyName` | string | No | Business name of the customer |
| `nickname` | string | No | Nickname of the customer |
| `emailAddress` | string | No | Email address of the customer |
| `phoneNumber` | string | No | Phone number of the customer |
| `birthday` | string | No | Birthday in YYYY-MM-DD or MM-DD format |
| `note` | string | No | Note about the customer |
| `referenceId` | string | No | Optional external reference for the customer |
| `address` | json | No | Square address object for the customer |
#### Output [#output-12]
| Parameter | Type | Description |
| ----------------------------------- | ------ | ------------------------------------------------------- |
| `customer` | object | The updated customer object |
| ↳ `id` | string | Unique ID for the customer |
| ↳ `given_name` | string | First name of the customer |
| ↳ `family_name` | string | Last name of the customer |
| ↳ `nickname` | string | Nickname of the customer |
| ↳ `company_name` | string | Business name of the customer |
| ↳ `email_address` | string | Email address of the customer |
| ↳ `phone_number` | string | Phone number of the customer |
| ↳ `address` | object | Physical address |
| ↳ `address_line_1` | string | First line of the address |
| ↳ `address_line_2` | string | Second line of the address |
| ↳ `address_line_3` | string | Third line of the address |
| ↳ `locality` | string | City or town |
| ↳ `sublocality` | string | Neighborhood or district |
| ↳ `administrative_district_level_1` | string | State, province, or region |
| ↳ `postal_code` | string | Postal or ZIP code |
| ↳ `country` | string | Two-letter ISO 3166-1 alpha-2 country code |
| ↳ `first_name` | string | First name of the addressee |
| ↳ `last_name` | string | Last name of the addressee |
| ↳ `birthday` | string | Birthday in YYYY-MM-DD or MM-DD format |
| ↳ `reference_id` | string | Optional external reference for the customer |
| ↳ `note` | string | Note about the customer |
| ↳ `creation_source` | string | How the customer profile was created |
| ↳ `preferences` | json | Customer communication preferences |
| ↳ `group_ids` | array | IDs of customer groups the customer belongs to |
| ↳ `segment_ids` | array | IDs of customer segments the customer belongs to |
| ↳ `version` | number | Optimistic concurrency version of the customer |
| ↳ `created_at` | string | Timestamp when the customer was created (RFC 3339) |
| ↳ `updated_at` | string | Timestamp when the customer was last updated (RFC 3339) |
| `metadata` | json | Customer summary metadata |
| ↳ `id` | string | Square customer ID |
| ↳ `email_address` | string | Customer email address |
| ↳ `given_name` | string | Customer first name |
| ↳ `family_name` | string | Customer last name |
### Square Delete Customer [#square-delete-customer]
Delete a customer profile from the Square customer directory
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `customerId` | string | Yes | ID of the customer to delete |
#### Output [#output-13]
| Parameter | Type | Description |
| --------- | ------- | -------------------------------- |
| `deleted` | boolean | Whether the customer was deleted |
| `id` | string | ID of the deleted customer |
### Square List Locations [#square-list-locations]
List all locations associated with the Square account
#### Input [#input-14]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
#### Output [#output-14]
| Parameter | Type | Description |
| ----------------------------------- | ------ | ------------------------------------------------------------ |
| `locations` | array | Array of location objects |
| ↳ `id` | string | Unique ID for the location |
| ↳ `name` | string | Name of the location |
| ↳ `address` | object | Physical address |
| ↳ `address_line_1` | string | First line of the address |
| ↳ `address_line_2` | string | Second line of the address |
| ↳ `address_line_3` | string | Third line of the address |
| ↳ `locality` | string | City or town |
| ↳ `sublocality` | string | Neighborhood or district |
| ↳ `administrative_district_level_1` | string | State, province, or region |
| ↳ `postal_code` | string | Postal or ZIP code |
| ↳ `country` | string | Two-letter ISO 3166-1 alpha-2 country code |
| ↳ `first_name` | string | First name of the addressee |
| ↳ `last_name` | string | Last name of the addressee |
| ↳ `timezone` | string | IANA timezone of the location |
| ↳ `status` | string | Location status (ACTIVE or INACTIVE) |
| ↳ `type` | string | Location type (PHYSICAL or MOBILE) |
| ↳ `merchant_id` | string | ID of the merchant that owns the location |
| ↳ `country` | string | Country code of the location |
| ↳ `language_code` | string | Language code of the location |
| ↳ `currency` | string | Currency used by the location |
| ↳ `phone_number` | string | Phone number of the location |
| ↳ `business_name` | string | Business name shown to customers |
| ↳ `business_email` | string | Email of the business |
| ↳ `description` | string | Description of the location |
| ↳ `capabilities` | array | Capabilities of the location (e.g. CREDIT\_CARD\_PROCESSING) |
| ↳ `created_at` | string | Timestamp when the location was created (RFC 3339) |
| `metadata` | json | List metadata |
| ↳ `count` | number | Number of locations returned |
### Square Get Location [#square-get-location]
Retrieve a single location by its ID
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ----------------------------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `locationId` | string | Yes | ID of the location to retrieve (use "main" for the main location) |
#### Output [#output-15]
| Parameter | Type | Description |
| ----------------------------------- | ------ | ------------------------------------------------------------ |
| `location` | object | The retrieved location object |
| ↳ `id` | string | Unique ID for the location |
| ↳ `name` | string | Name of the location |
| ↳ `address` | object | Physical address |
| ↳ `address_line_1` | string | First line of the address |
| ↳ `address_line_2` | string | Second line of the address |
| ↳ `address_line_3` | string | Third line of the address |
| ↳ `locality` | string | City or town |
| ↳ `sublocality` | string | Neighborhood or district |
| ↳ `administrative_district_level_1` | string | State, province, or region |
| ↳ `postal_code` | string | Postal or ZIP code |
| ↳ `country` | string | Two-letter ISO 3166-1 alpha-2 country code |
| ↳ `first_name` | string | First name of the addressee |
| ↳ `last_name` | string | Last name of the addressee |
| ↳ `timezone` | string | IANA timezone of the location |
| ↳ `status` | string | Location status (ACTIVE or INACTIVE) |
| ↳ `type` | string | Location type (PHYSICAL or MOBILE) |
| ↳ `merchant_id` | string | ID of the merchant that owns the location |
| ↳ `country` | string | Country code of the location |
| ↳ `language_code` | string | Language code of the location |
| ↳ `currency` | string | Currency used by the location |
| ↳ `phone_number` | string | Phone number of the location |
| ↳ `business_name` | string | Business name shown to customers |
| ↳ `business_email` | string | Email of the business |
| ↳ `description` | string | Description of the location |
| ↳ `capabilities` | array | Capabilities of the location (e.g. CREDIT\_CARD\_PROCESSING) |
| ↳ `created_at` | string | Timestamp when the location was created (RFC 3339) |
| `metadata` | json | Location summary metadata |
| ↳ `id` | string | Square location ID |
| ↳ `name` | string | Location name |
### Square Create Order [#square-create-order]
Create an order with line items, taxes, discounts, and fulfillments
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `order` | json | Yes | Square order object including location\_id and line\_items (e.g. \{"location\_id":"L1","line\_items":\[\{"name":"Coffee","quantity":"1","base\_price\_money":\{"amount":250,"currency":"USD"}}]}) |
| `idempotencyKey` | string | No | Unique key to make the request idempotent (auto-generated if omitted) |
#### Output [#output-16]
| Parameter | Type | Description |
| ------------------------------ | ------ | ------------------------------------------------------------------------ |
| `order` | object | The created order object |
| ↳ `id` | string | Unique ID for the order |
| ↳ `location_id` | string | ID of the location for the order |
| ↳ `reference_id` | string | Optional external reference for the order |
| ↳ `customer_id` | string | ID of the associated customer |
| ↳ `state` | string | Order state (OPEN, COMPLETED, or CANCELED) |
| ↳ `version` | number | Optimistic concurrency version of the order |
| ↳ `line_items` | array | Line items in the order |
| ↳ `taxes` | array | Taxes applied to the order |
| ↳ `discounts` | array | Discounts applied to the order |
| ↳ `fulfillments` | array | Fulfillments for the order |
| ↳ `net_amounts` | json | Net money amounts for the order |
| ↳ `total_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `total_tax_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `total_discount_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `total_service_charge_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `total_tip_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `created_at` | string | Timestamp when the order was created (RFC 3339) |
| ↳ `updated_at` | string | Timestamp when the order was last updated (RFC 3339) |
| ↳ `closed_at` | string | Timestamp when the order was closed (RFC 3339) |
| `metadata` | json | Order summary metadata |
| ↳ `id` | string | Square order ID |
| ↳ `state` | string | Current order state |
| ↳ `location_id` | string | Order location ID |
### Square Get Order [#square-get-order]
Retrieve a single order by its ID
#### Input [#input-17]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `orderId` | string | Yes | ID of the order to retrieve |
#### Output [#output-17]
| Parameter | Type | Description |
| ------------------------------ | ------ | ------------------------------------------------------------------------ |
| `order` | object | The retrieved order object |
| ↳ `id` | string | Unique ID for the order |
| ↳ `location_id` | string | ID of the location for the order |
| ↳ `reference_id` | string | Optional external reference for the order |
| ↳ `customer_id` | string | ID of the associated customer |
| ↳ `state` | string | Order state (OPEN, COMPLETED, or CANCELED) |
| ↳ `version` | number | Optimistic concurrency version of the order |
| ↳ `line_items` | array | Line items in the order |
| ↳ `taxes` | array | Taxes applied to the order |
| ↳ `discounts` | array | Discounts applied to the order |
| ↳ `fulfillments` | array | Fulfillments for the order |
| ↳ `net_amounts` | json | Net money amounts for the order |
| ↳ `total_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `total_tax_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `total_discount_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `total_service_charge_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `total_tip_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `created_at` | string | Timestamp when the order was created (RFC 3339) |
| ↳ `updated_at` | string | Timestamp when the order was last updated (RFC 3339) |
| ↳ `closed_at` | string | Timestamp when the order was closed (RFC 3339) |
| `metadata` | json | Order summary metadata |
| ↳ `id` | string | Square order ID |
| ↳ `state` | string | Current order state |
| ↳ `location_id` | string | Order location ID |
### Square Search Orders [#square-search-orders]
Search orders across one or more locations using filters and sorting
#### Input [#input-18]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `locationIds` | array | Yes | Array of location IDs to search within |
| `query` | json | No | Square order query object with optional filter and sort (e.g. \{"filter":\{"state\_filter":\{"states":\["OPEN"]}}}) |
| `limit` | number | No | Maximum number of results to return per page |
| `cursor` | string | No | Pagination cursor from a previous response |
#### Output [#output-18]
| Parameter | Type | Description |
| ------------------------------ | ------ | ------------------------------------------------------------------------ |
| `orders` | array | Array of matching order objects |
| ↳ `id` | string | Unique ID for the order |
| ↳ `location_id` | string | ID of the location for the order |
| ↳ `reference_id` | string | Optional external reference for the order |
| ↳ `customer_id` | string | ID of the associated customer |
| ↳ `state` | string | Order state (OPEN, COMPLETED, or CANCELED) |
| ↳ `version` | number | Optimistic concurrency version of the order |
| ↳ `line_items` | array | Line items in the order |
| ↳ `taxes` | array | Taxes applied to the order |
| ↳ `discounts` | array | Discounts applied to the order |
| ↳ `fulfillments` | array | Fulfillments for the order |
| ↳ `net_amounts` | json | Net money amounts for the order |
| ↳ `total_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `total_tax_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `total_discount_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `total_service_charge_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `total_tip_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `created_at` | string | Timestamp when the order was created (RFC 3339) |
| ↳ `updated_at` | string | Timestamp when the order was last updated (RFC 3339) |
| ↳ `closed_at` | string | Timestamp when the order was closed (RFC 3339) |
| `metadata` | json | List pagination metadata |
| ↳ `count` | number | Number of items returned in this page |
| ↳ `cursor` | string | Pagination cursor to fetch the next page, if more results exist |
### Square Pay Order [#square-pay-order]
Pay for an order using one or more already-approved payments
#### Input [#input-19]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `orderId` | string | Yes | ID of the order to pay for |
| `paymentIds` | array | No | IDs of approved payments to apply to the order |
| `orderVersion` | number | No | Version of the order being paid (for optimistic concurrency) |
| `idempotencyKey` | string | No | Unique key to make the request idempotent (auto-generated if omitted) |
#### Output [#output-19]
| Parameter | Type | Description |
| ------------------------------ | ------ | ------------------------------------------------------------------------ |
| `order` | object | The paid order object |
| ↳ `id` | string | Unique ID for the order |
| ↳ `location_id` | string | ID of the location for the order |
| ↳ `reference_id` | string | Optional external reference for the order |
| ↳ `customer_id` | string | ID of the associated customer |
| ↳ `state` | string | Order state (OPEN, COMPLETED, or CANCELED) |
| ↳ `version` | number | Optimistic concurrency version of the order |
| ↳ `line_items` | array | Line items in the order |
| ↳ `taxes` | array | Taxes applied to the order |
| ↳ `discounts` | array | Discounts applied to the order |
| ↳ `fulfillments` | array | Fulfillments for the order |
| ↳ `net_amounts` | json | Net money amounts for the order |
| ↳ `total_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `total_tax_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `total_discount_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `total_service_charge_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `total_tip_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `created_at` | string | Timestamp when the order was created (RFC 3339) |
| ↳ `updated_at` | string | Timestamp when the order was last updated (RFC 3339) |
| ↳ `closed_at` | string | Timestamp when the order was closed (RFC 3339) |
| `metadata` | json | Order summary metadata |
| ↳ `id` | string | Square order ID |
| ↳ `state` | string | Current order state |
| ↳ `location_id` | string | Order location ID |
### Square Create Invoice [#square-create-invoice]
Create a draft invoice for an existing order and customer
#### Input [#input-20]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `invoice` | json | Yes | Square invoice object including location\_id, order\_id, primary\_recipient, and payment\_requests (e.g. \{"location\_id":"L1","order\_id":"O1","primary\_recipient":\{"customer\_id":"C1"},"payment\_requests":\[\{"request\_type":"BALANCE","due\_date":"2026-07-01"}]}) |
| `idempotencyKey` | string | No | Unique key to make the request idempotent (auto-generated if omitted) |
#### Output [#output-20]
| Parameter | Type | Description |
| ----------------------------- | ------ | ------------------------------------------------------------------------ |
| `invoice` | object | The created invoice object |
| ↳ `id` | string | Unique ID for the invoice |
| ↳ `version` | number | Optimistic concurrency version of the invoice |
| ↳ `location_id` | string | ID of the location for the invoice |
| ↳ `order_id` | string | ID of the order the invoice bills for |
| ↳ `status` | string | Invoice status (DRAFT, UNPAID, SCHEDULED, PARTIALLY\_PAID, PAID, etc.) |
| ↳ `invoice_number` | string | Human-readable invoice number |
| ↳ `title` | string | Title of the invoice |
| ↳ `description` | string | Description of the invoice |
| ↳ `public_url` | string | URL where the customer can view and pay the invoice |
| ↳ `primary_recipient` | json | Primary recipient of the invoice |
| ↳ `payment_requests` | array | Payment requests for the invoice |
| ↳ `next_payment_amount_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `scheduled_at` | string | Timestamp when the invoice is scheduled to be sent (RFC 3339) |
| ↳ `timezone` | string | Timezone used for invoice dates |
| ↳ `delivery_method` | string | How the invoice is delivered (EMAIL, SHARE\_MANUALLY, SMS) |
| ↳ `created_at` | string | Timestamp when the invoice was created (RFC 3339) |
| ↳ `updated_at` | string | Timestamp when the invoice was last updated (RFC 3339) |
| `metadata` | json | Invoice summary metadata |
| ↳ `id` | string | Square invoice ID |
| ↳ `status` | string | Current invoice status |
| ↳ `version` | number | Invoice version |
### Square Get Invoice [#square-get-invoice]
Retrieve a single invoice by its ID
#### Input [#input-21]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `invoiceId` | string | Yes | ID of the invoice to retrieve |
#### Output [#output-21]
| Parameter | Type | Description |
| ----------------------------- | ------ | ------------------------------------------------------------------------ |
| `invoice` | object | The retrieved invoice object |
| ↳ `id` | string | Unique ID for the invoice |
| ↳ `version` | number | Optimistic concurrency version of the invoice |
| ↳ `location_id` | string | ID of the location for the invoice |
| ↳ `order_id` | string | ID of the order the invoice bills for |
| ↳ `status` | string | Invoice status (DRAFT, UNPAID, SCHEDULED, PARTIALLY\_PAID, PAID, etc.) |
| ↳ `invoice_number` | string | Human-readable invoice number |
| ↳ `title` | string | Title of the invoice |
| ↳ `description` | string | Description of the invoice |
| ↳ `public_url` | string | URL where the customer can view and pay the invoice |
| ↳ `primary_recipient` | json | Primary recipient of the invoice |
| ↳ `payment_requests` | array | Payment requests for the invoice |
| ↳ `next_payment_amount_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `scheduled_at` | string | Timestamp when the invoice is scheduled to be sent (RFC 3339) |
| ↳ `timezone` | string | Timezone used for invoice dates |
| ↳ `delivery_method` | string | How the invoice is delivered (EMAIL, SHARE\_MANUALLY, SMS) |
| ↳ `created_at` | string | Timestamp when the invoice was created (RFC 3339) |
| ↳ `updated_at` | string | Timestamp when the invoice was last updated (RFC 3339) |
| `metadata` | json | Invoice summary metadata |
| ↳ `id` | string | Square invoice ID |
| ↳ `status` | string | Current invoice status |
| ↳ `version` | number | Invoice version |
### Square List Invoices [#square-list-invoices]
List invoices for a specific location
#### Input [#input-22]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | -------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `locationId` | string | Yes | ID of the location to list invoices for |
| `limit` | number | No | Maximum number of results to return per page |
| `cursor` | string | No | Pagination cursor from a previous response |
#### Output [#output-22]
| Parameter | Type | Description |
| ----------------------------- | ------ | ------------------------------------------------------------------------ |
| `invoices` | array | Array of invoice objects |
| ↳ `id` | string | Unique ID for the invoice |
| ↳ `version` | number | Optimistic concurrency version of the invoice |
| ↳ `location_id` | string | ID of the location for the invoice |
| ↳ `order_id` | string | ID of the order the invoice bills for |
| ↳ `status` | string | Invoice status (DRAFT, UNPAID, SCHEDULED, PARTIALLY\_PAID, PAID, etc.) |
| ↳ `invoice_number` | string | Human-readable invoice number |
| ↳ `title` | string | Title of the invoice |
| ↳ `description` | string | Description of the invoice |
| ↳ `public_url` | string | URL where the customer can view and pay the invoice |
| ↳ `primary_recipient` | json | Primary recipient of the invoice |
| ↳ `payment_requests` | array | Payment requests for the invoice |
| ↳ `next_payment_amount_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `scheduled_at` | string | Timestamp when the invoice is scheduled to be sent (RFC 3339) |
| ↳ `timezone` | string | Timezone used for invoice dates |
| ↳ `delivery_method` | string | How the invoice is delivered (EMAIL, SHARE\_MANUALLY, SMS) |
| ↳ `created_at` | string | Timestamp when the invoice was created (RFC 3339) |
| ↳ `updated_at` | string | Timestamp when the invoice was last updated (RFC 3339) |
| `metadata` | json | List pagination metadata |
| ↳ `count` | number | Number of items returned in this page |
| ↳ `cursor` | string | Pagination cursor to fetch the next page, if more results exist |
### Square Search Invoices [#square-search-invoices]
Search invoices across one or more locations
#### Input [#input-23]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | --------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `locationId` | string | Yes | ID of the location to search within (Square allows one location per search) |
| `limit` | number | No | Maximum number of results to return per page |
| `cursor` | string | No | Pagination cursor from a previous response |
#### Output [#output-23]
| Parameter | Type | Description |
| ----------------------------- | ------ | ------------------------------------------------------------------------ |
| `invoices` | array | Array of matching invoice objects |
| ↳ `id` | string | Unique ID for the invoice |
| ↳ `version` | number | Optimistic concurrency version of the invoice |
| ↳ `location_id` | string | ID of the location for the invoice |
| ↳ `order_id` | string | ID of the order the invoice bills for |
| ↳ `status` | string | Invoice status (DRAFT, UNPAID, SCHEDULED, PARTIALLY\_PAID, PAID, etc.) |
| ↳ `invoice_number` | string | Human-readable invoice number |
| ↳ `title` | string | Title of the invoice |
| ↳ `description` | string | Description of the invoice |
| ↳ `public_url` | string | URL where the customer can view and pay the invoice |
| ↳ `primary_recipient` | json | Primary recipient of the invoice |
| ↳ `payment_requests` | array | Payment requests for the invoice |
| ↳ `next_payment_amount_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `scheduled_at` | string | Timestamp when the invoice is scheduled to be sent (RFC 3339) |
| ↳ `timezone` | string | Timezone used for invoice dates |
| ↳ `delivery_method` | string | How the invoice is delivered (EMAIL, SHARE\_MANUALLY, SMS) |
| ↳ `created_at` | string | Timestamp when the invoice was created (RFC 3339) |
| ↳ `updated_at` | string | Timestamp when the invoice was last updated (RFC 3339) |
| `metadata` | json | List pagination metadata |
| ↳ `count` | number | Number of items returned in this page |
| ↳ `cursor` | string | Pagination cursor to fetch the next page, if more results exist |
### Square Publish Invoice [#square-publish-invoice]
Publish a draft invoice so it is sent to the customer and becomes payable
#### Input [#input-24]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `invoiceId` | string | Yes | ID of the invoice to publish |
| `version` | number | Yes | Current version of the invoice (use the version returned by Create Invoice) |
| `idempotencyKey` | string | No | Unique key to make the request idempotent (auto-generated if omitted) |
#### Output [#output-24]
| Parameter | Type | Description |
| ----------------------------- | ------ | ------------------------------------------------------------------------ |
| `invoice` | object | The published invoice object |
| ↳ `id` | string | Unique ID for the invoice |
| ↳ `version` | number | Optimistic concurrency version of the invoice |
| ↳ `location_id` | string | ID of the location for the invoice |
| ↳ `order_id` | string | ID of the order the invoice bills for |
| ↳ `status` | string | Invoice status (DRAFT, UNPAID, SCHEDULED, PARTIALLY\_PAID, PAID, etc.) |
| ↳ `invoice_number` | string | Human-readable invoice number |
| ↳ `title` | string | Title of the invoice |
| ↳ `description` | string | Description of the invoice |
| ↳ `public_url` | string | URL where the customer can view and pay the invoice |
| ↳ `primary_recipient` | json | Primary recipient of the invoice |
| ↳ `payment_requests` | array | Payment requests for the invoice |
| ↳ `next_payment_amount_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `scheduled_at` | string | Timestamp when the invoice is scheduled to be sent (RFC 3339) |
| ↳ `timezone` | string | Timezone used for invoice dates |
| ↳ `delivery_method` | string | How the invoice is delivered (EMAIL, SHARE\_MANUALLY, SMS) |
| ↳ `created_at` | string | Timestamp when the invoice was created (RFC 3339) |
| ↳ `updated_at` | string | Timestamp when the invoice was last updated (RFC 3339) |
| `metadata` | json | Invoice summary metadata |
| ↳ `id` | string | Square invoice ID |
| ↳ `status` | string | Current invoice status |
| ↳ `version` | number | Invoice version |
### Square Cancel Invoice [#square-cancel-invoice]
Cancel a published invoice that is unpaid or partially paid
#### Input [#input-25]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `invoiceId` | string | Yes | ID of the invoice to cancel |
| `version` | number | Yes | Current version of the invoice |
#### Output [#output-25]
| Parameter | Type | Description |
| ----------------------------- | ------ | ------------------------------------------------------------------------ |
| `invoice` | object | The canceled invoice object |
| ↳ `id` | string | Unique ID for the invoice |
| ↳ `version` | number | Optimistic concurrency version of the invoice |
| ↳ `location_id` | string | ID of the location for the invoice |
| ↳ `order_id` | string | ID of the order the invoice bills for |
| ↳ `status` | string | Invoice status (DRAFT, UNPAID, SCHEDULED, PARTIALLY\_PAID, PAID, etc.) |
| ↳ `invoice_number` | string | Human-readable invoice number |
| ↳ `title` | string | Title of the invoice |
| ↳ `description` | string | Description of the invoice |
| ↳ `public_url` | string | URL where the customer can view and pay the invoice |
| ↳ `primary_recipient` | json | Primary recipient of the invoice |
| ↳ `payment_requests` | array | Payment requests for the invoice |
| ↳ `next_payment_amount_money` | object | Monetary amount with a currency |
| ↳ `amount` | number | Amount in the smallest denomination of the currency (e.g. cents for USD) |
| ↳ `currency` | string | Three-letter ISO 4217 currency code (e.g. USD) |
| ↳ `scheduled_at` | string | Timestamp when the invoice is scheduled to be sent (RFC 3339) |
| ↳ `timezone` | string | Timezone used for invoice dates |
| ↳ `delivery_method` | string | How the invoice is delivered (EMAIL, SHARE\_MANUALLY, SMS) |
| ↳ `created_at` | string | Timestamp when the invoice was created (RFC 3339) |
| ↳ `updated_at` | string | Timestamp when the invoice was last updated (RFC 3339) |
| `metadata` | json | Invoice summary metadata |
| ↳ `id` | string | Square invoice ID |
| ↳ `status` | string | Current invoice status |
| ↳ `version` | number | Invoice version |
### Square Delete Invoice [#square-delete-invoice]
Delete a draft invoice
#### Input [#input-26]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `invoiceId` | string | Yes | ID of the draft invoice to delete |
| `version` | number | No | Current version of the invoice (required if the invoice has been updated) |
#### Output [#output-26]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------- |
| `deleted` | boolean | Whether the invoice was deleted |
| `id` | string | ID of the deleted invoice |
### Square Upsert Catalog Object [#square-upsert-catalog-object]
Create or update a catalog object such as an item, variation, or category
#### Input [#input-27]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `object` | json | Yes | Square catalog object to create or update. Use ID "#name" for new objects (e.g. \{"type":"ITEM","id":"#Coffee","item\_data":\{"name":"Coffee"}}) |
| `idempotencyKey` | string | No | Unique key to make the request idempotent (auto-generated if omitted) |
#### Output [#output-27]
| Parameter | Type | Description |
| ---------------------------- | ------- | --------------------------------------------------------------------- |
| `object` | object | The created or updated catalog object |
| ↳ `type` | string | Type of catalog object (ITEM, ITEM\_VARIATION, CATEGORY, IMAGE, etc.) |
| ↳ `id` | string | Unique ID for the catalog object |
| ↳ `version` | number | Optimistic concurrency version of the object |
| ↳ `updated_at` | string | Timestamp when the object was last updated (RFC 3339) |
| ↳ `is_deleted` | boolean | Whether the object is deleted |
| ↳ `present_at_all_locations` | boolean | Whether the object is present at all locations |
| ↳ `item_data` | json | Item-specific data (when type is ITEM) |
| ↳ `item_variation_data` | json | Variation-specific data (when type is ITEM\_VARIATION) |
| ↳ `category_data` | json | Category-specific data (when type is CATEGORY) |
| ↳ `image_data` | json | Image-specific data (when type is IMAGE) |
| `metadata` | json | Catalog object summary metadata |
| ↳ `id` | string | Square catalog object ID |
| ↳ `type` | string | Catalog object type |
| ↳ `version` | number | Catalog object version |
### Square Get Catalog Object [#square-get-catalog-object]
Retrieve a single catalog object by its ID
#### Input [#input-28]
| Parameter | Type | Required | Description |
| ----------------------- | ------- | -------- | ------------------------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `objectId` | string | Yes | ID of the catalog object to retrieve |
| `includeRelatedObjects` | boolean | No | Whether to include related objects such as an item variations |
#### Output [#output-28]
| Parameter | Type | Description |
| ---------------------------- | ------- | --------------------------------------------------------------------- |
| `object` | object | The retrieved catalog object |
| ↳ `type` | string | Type of catalog object (ITEM, ITEM\_VARIATION, CATEGORY, IMAGE, etc.) |
| ↳ `id` | string | Unique ID for the catalog object |
| ↳ `version` | number | Optimistic concurrency version of the object |
| ↳ `updated_at` | string | Timestamp when the object was last updated (RFC 3339) |
| ↳ `is_deleted` | boolean | Whether the object is deleted |
| ↳ `present_at_all_locations` | boolean | Whether the object is present at all locations |
| ↳ `item_data` | json | Item-specific data (when type is ITEM) |
| ↳ `item_variation_data` | json | Variation-specific data (when type is ITEM\_VARIATION) |
| ↳ `category_data` | json | Category-specific data (when type is CATEGORY) |
| ↳ `image_data` | json | Image-specific data (when type is IMAGE) |
| `metadata` | json | Catalog object summary metadata |
| ↳ `id` | string | Square catalog object ID |
| ↳ `type` | string | Catalog object type |
| ↳ `version` | number | Catalog object version |
### Square List Catalog [#square-list-catalog]
List catalog objects, optionally filtered by type
#### Input [#input-29]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `types` | string | No | Comma-separated catalog object types to return (e.g. ITEM,CATEGORY). Defaults to all top-level types |
| `cursor` | string | No | Pagination cursor from a previous response |
#### Output [#output-29]
| Parameter | Type | Description |
| ---------------------------- | ------- | --------------------------------------------------------------------- |
| `objects` | array | Array of catalog objects |
| ↳ `type` | string | Type of catalog object (ITEM, ITEM\_VARIATION, CATEGORY, IMAGE, etc.) |
| ↳ `id` | string | Unique ID for the catalog object |
| ↳ `version` | number | Optimistic concurrency version of the object |
| ↳ `updated_at` | string | Timestamp when the object was last updated (RFC 3339) |
| ↳ `is_deleted` | boolean | Whether the object is deleted |
| ↳ `present_at_all_locations` | boolean | Whether the object is present at all locations |
| ↳ `item_data` | json | Item-specific data (when type is ITEM) |
| ↳ `item_variation_data` | json | Variation-specific data (when type is ITEM\_VARIATION) |
| ↳ `category_data` | json | Category-specific data (when type is CATEGORY) |
| ↳ `image_data` | json | Image-specific data (when type is IMAGE) |
| `metadata` | json | List pagination metadata |
| ↳ `count` | number | Number of items returned in this page |
| ↳ `cursor` | string | Pagination cursor to fetch the next page, if more results exist |
### Square Search Catalog Objects [#square-search-catalog-objects]
Search catalog objects by type and query filters
#### Input [#input-30]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `objectTypes` | array | No | Array of catalog object types to search (e.g. \["ITEM","CATEGORY"]) |
| `query` | json | No | Square catalog query object (e.g. \{"text\_query":\{"keywords":\["coffee"]}} or \{"prefix\_query":\{...}}) |
| `limit` | number | No | Maximum number of results to return per page |
| `cursor` | string | No | Pagination cursor from a previous response |
#### Output [#output-30]
| Parameter | Type | Description |
| ---------------------------- | ------- | --------------------------------------------------------------------- |
| `objects` | array | Array of matching catalog objects |
| ↳ `type` | string | Type of catalog object (ITEM, ITEM\_VARIATION, CATEGORY, IMAGE, etc.) |
| ↳ `id` | string | Unique ID for the catalog object |
| ↳ `version` | number | Optimistic concurrency version of the object |
| ↳ `updated_at` | string | Timestamp when the object was last updated (RFC 3339) |
| ↳ `is_deleted` | boolean | Whether the object is deleted |
| ↳ `present_at_all_locations` | boolean | Whether the object is present at all locations |
| ↳ `item_data` | json | Item-specific data (when type is ITEM) |
| ↳ `item_variation_data` | json | Variation-specific data (when type is ITEM\_VARIATION) |
| ↳ `category_data` | json | Category-specific data (when type is CATEGORY) |
| ↳ `image_data` | json | Image-specific data (when type is IMAGE) |
| `metadata` | json | List pagination metadata |
| ↳ `count` | number | Number of items returned in this page |
| ↳ `cursor` | string | Pagination cursor to fetch the next page, if more results exist |
### Square Create Catalog Image [#square-create-catalog-image]
Upload an image and attach it to the catalog, optionally to a specific item
#### Input [#input-31]
| Parameter | Type | Required | Description |
| ---------------- | ------ | -------- | --------------------------------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `file` | file | Yes | The image file to upload (UserFile object) |
| `fileName` | string | No | Optional filename override for the image |
| `objectId` | string | No | ID of the catalog object (e.g. an item) to attach the image to |
| `caption` | string | No | Caption (alt text) for the image |
| `idempotencyKey` | string | No | Unique key to make the request idempotent (auto-generated if omitted) |
#### Output [#output-31]
| Parameter | Type | Description |
| ---------------------------- | ------- | --------------------------------------------------------------------- |
| `object` | object | The created catalog image object |
| ↳ `type` | string | Type of catalog object (ITEM, ITEM\_VARIATION, CATEGORY, IMAGE, etc.) |
| ↳ `id` | string | Unique ID for the catalog object |
| ↳ `version` | number | Optimistic concurrency version of the object |
| ↳ `updated_at` | string | Timestamp when the object was last updated (RFC 3339) |
| ↳ `is_deleted` | boolean | Whether the object is deleted |
| ↳ `present_at_all_locations` | boolean | Whether the object is present at all locations |
| ↳ `item_data` | json | Item-specific data (when type is ITEM) |
| ↳ `item_variation_data` | json | Variation-specific data (when type is ITEM\_VARIATION) |
| ↳ `category_data` | json | Category-specific data (when type is CATEGORY) |
| ↳ `image_data` | json | Image-specific data (when type is IMAGE) |
| `metadata` | json | Catalog object summary metadata |
| ↳ `id` | string | Square catalog object ID |
| ↳ `type` | string | Catalog object type |
| ↳ `version` | number | Catalog object version |
### Square Delete Catalog Object [#square-delete-catalog-object]
Delete a catalog object and its children (e.g. an item and its variations)
#### Input [#input-32]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `objectId` | string | Yes | ID of the catalog object to delete |
#### Output [#output-32]
| Parameter | Type | Description |
| -------------------- | ------- | ------------------------------------------------------- |
| `deleted` | boolean | Whether the catalog object was deleted |
| `deleted_object_ids` | array | IDs of all catalog objects deleted (including children) |
| `deleted_at` | string | Timestamp when the deletion occurred (RFC 3339) |
### Square Batch Retrieve Inventory Counts [#square-batch-retrieve-inventory-counts]
Retrieve current inventory counts for catalog items across locations
#### Input [#input-33]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ----------------------------------------------------------------------- |
| `apiKey` | string | Yes | Square access token (personal access token) |
| `catalogObjectIds` | array | No | IDs of the catalog item variations to retrieve counts for |
| `locationIds` | array | No | IDs of the locations to retrieve counts for (defaults to all locations) |
| `states` | array | No | Inventory states to filter by (e.g. IN\_STOCK, SOLD, IN\_TRANSIT) |
| `updatedAfter` | string | No | Only return counts updated after this RFC 3339 timestamp |
| `limit` | number | No | Maximum number of results to return per page (1-1000) |
| `cursor` | string | No | Pagination cursor from a previous response |
#### Output [#output-33]
| Parameter | Type | Description |
| ----------------------- | ------ | --------------------------------------------------------------- |
| `counts` | array | Array of inventory count objects |
| ↳ `catalog_object_id` | string | ID of the catalog object (item variation) being counted |
| ↳ `catalog_object_type` | string | Type of the counted catalog object (usually ITEM\_VARIATION) |
| ↳ `state` | string | Inventory state (e.g. IN\_STOCK, SOLD, WASTE) |
| ↳ `location_id` | string | ID of the location for this count |
| ↳ `quantity` | string | Number of units in the given state at the location |
| ↳ `calculated_at` | string | Timestamp when the count was calculated (RFC 3339) |
| `metadata` | json | List pagination metadata |
| ↳ `count` | number | Number of items returned in this page |
| ↳ `cursor` | string | Pagination cursor to fetch the next page, if more results exist |
---
# Sportmonks (/en/integrations/sportmonks)
{/* MANUAL-CONTENT-START:intro */}
[Sportmonks](https://www.sportmonks.com/) is a sports data provider offering structured APIs for football, motorsport, odds, and reference data used to power scores, statistics, and betting-related applications.
With Sportmonks, you can access:
* **Football data**: fixtures, livescores, leagues, seasons, stages, rounds, teams, squads, players, coaches, referees, venues, standings, topscorers, transfers, schedules, commentaries, TV stations, rivals, expected goals (xG), and predictions
* **Motorsport data**: sessions, drivers, teams, championship standings, laps, and pitstops
* **Odds data**: pre-match and in-play odds, bookmakers, and markets
* **Core reference data**: continents, countries, regions, cities, types, and time zones
In Studio, the Sportmonks integration allows your agents to query fixtures, player and team statistics, transfer activity, standings, and odds directly within a workflow. Agents can pull expected goals (xG) by player or team, retrieve match commentaries and brackets, look up coaches and their histories, and enrich any of these with related data through the `include` parameter—enabling workflows that build match reports, track transfer rumours, or surface live odds and predictions.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate the Sportmonks sports data APIs into the workflow from a single block. Football: fixtures, livescores, leagues, seasons, stages, rounds, teams, squads, players, coaches, referees, venues, standings, topscorers, transfers, schedules, commentaries, TV stations, rivals, expected goals (xG), and predictions. Motorsport: sessions, drivers, teams, championship standings, laps, and pitstops. Odds: pre-match and in-play odds, bookmakers, and markets. Core: continents, countries, regions, cities, types, and time zones.
## Actions [#actions]
### Get Expected xG by Player [#get-expected-xg-by-player]
Retrieve lineup-level expected goals (xG) values per player from Sportmonks
#### Input [#input]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. fixture;player;team;type) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------------------- |
| `expected` | array | Array of player-level expected goals (xG) entries |
| ↳ `id` | number | Unique id of the expected value |
| ↳ `fixture_id` | number | Fixture related to the value |
| ↳ `player_id` | number | Player related to the value |
| ↳ `team_id` | number | Team related to the value |
| ↳ `lineup_id` | number | Lineup record the player relates to |
| ↳ `type_id` | number | Type of the expected value |
| ↳ `data` | object | The expected value payload |
| ↳ `value` | number | The xG value |
### Get Expected xG by Team [#get-expected-xg-by-team]
Retrieve fixture-level expected goals (xG) values per team from Sportmonks
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. fixture;participant;type) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------------ | ------ | ----------------------------------------------- |
| `expected` | array | Array of team-level expected goals (xG) entries |
| ↳ `id` | number | Unique id of the expected value |
| ↳ `fixture_id` | number | Fixture related to the value |
| ↳ `type_id` | number | Type of the expected value |
| ↳ `participant_id` | number | Team related to the expected value |
| ↳ `data` | object | The expected value payload |
| ↳ `value` | number | The xG value |
| ↳ `location` | string | Home or away |
### Get All Commentaries [#get-all-commentaries]
Retrieve all textual commentaries available within your Sportmonks subscription
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. fixture;player) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------------------ |
| `commentaries` | array | Array of commentary entries |
| ↳ `id` | number | Unique id of the commentary |
| ↳ `fixture_id` | number | Fixture related to the commentary |
| ↳ `comment` | string | The commentary text |
| ↳ `minute` | number | Match minute of the comment |
| ↳ `extra_minute` | number | Extra (injury) minute of the comment |
| ↳ `is_goal` | boolean | Whether the comment is a goal |
| ↳ `is_important` | boolean | Whether the comment is important |
| ↳ `order` | number | Order of the comment |
### Get All Fixtures [#get-all-fixtures]
Retrieve all football fixtures available within your Sportmonks subscription
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participants;scores) |
| `filters` | string | No | Filters to apply (e.g. fixtureLeagues:501) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------ |
| `fixtures` | array | Array of fixture objects |
| ↳ `id` | number | Unique id of the fixture |
| ↳ `sport_id` | number | Sport the fixture is played at |
| ↳ `league_id` | number | League the fixture is played in |
| ↳ `season_id` | number | Season the fixture is played in |
| ↳ `stage_id` | number | Stage the fixture is played in |
| ↳ `group_id` | number | Group the fixture is played in |
| ↳ `aggregate_id` | number | Aggregate the fixture belongs to |
| ↳ `round_id` | number | Round the fixture is played in |
| ↳ `state_id` | number | State (status) of the fixture |
| ↳ `venue_id` | number | Venue the fixture is played at |
| ↳ `name` | string | Name of the fixture (participants) |
| ↳ `starting_at` | string | Datetime the fixture starts |
| ↳ `result_info` | string | Final result summary |
| ↳ `leg` | string | Leg of the fixture (e.g. 1/1) |
| ↳ `details` | string | Details about the fixture |
| ↳ `length` | number | Length of the fixture in minutes |
| ↳ `placeholder` | boolean | Whether the fixture is a placeholder |
| ↳ `has_odds` | boolean | Whether odds are available |
| ↳ `has_premium_odds` | boolean | Whether premium odds are available |
| ↳ `starting_at_timestamp` | number | UNIX timestamp of the start time |
### Get All Players [#get-all-players]
Retrieve all football players available within your Sportmonks subscription
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. nationality;position) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order players by id (asc or desc) |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------------------ | ------ | ------------------------------- |
| `players` | array | Array of player objects |
| ↳ `id` | number | Unique id of the player |
| ↳ `sport_id` | number | Sport of the player |
| ↳ `country_id` | number | Country of birth of the player |
| ↳ `nationality_id` | number | Nationality of the player |
| ↳ `city_id` | number | City of birth of the player |
| ↳ `position_id` | number | Position of the player |
| ↳ `detailed_position_id` | number | Detailed position of the player |
| ↳ `type_id` | number | Type of the player |
| ↳ `common_name` | string | Name the player is known for |
| ↳ `firstname` | string | First name of the player |
| ↳ `lastname` | string | Last name of the player |
| ↳ `name` | string | Name of the player |
| ↳ `display_name` | string | Display name of the player |
| ↳ `image_path` | string | URL to the player headshot |
| ↳ `height` | number | Height of the player in cm |
| ↳ `weight` | number | Weight of the player in kg |
| ↳ `date_of_birth` | string | Date of birth of the player |
| ↳ `gender` | string | Gender of the player |
### Get All Rivals [#get-all-rivals]
Retrieve all teams with their rivals information from Sportmonks
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. team;rival) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-5]
| Parameter | Type | Description |
| ------------ | ------ | ---------------------------- |
| `rivals` | array | Array of rival relationships |
| ↳ `sport_id` | number | Sport of the rival |
| ↳ `team_id` | number | Team the rivalry belongs to |
| ↳ `rival_id` | number | Rival team id |
### Get All Teams [#get-all-teams]
Retrieve all football teams available within your Sportmonks subscription
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;venue) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order teams by id (asc or desc) |
#### Output [#output-6]
| Parameter | Type | Description |
| ------------------ | ------- | -------------------------------------- |
| `teams` | array | Array of team objects |
| ↳ `id` | number | Unique id of the team |
| ↳ `sport_id` | number | Sport of the team |
| ↳ `country_id` | number | Country of the team |
| ↳ `venue_id` | number | Home venue of the team |
| ↳ `gender` | string | Gender of the team |
| ↳ `name` | string | Name of the team |
| ↳ `short_code` | string | Short code of the team |
| ↳ `image_path` | string | URL to the team logo |
| ↳ `founded` | number | Founding year of the team |
| ↳ `type` | string | Type of the team |
| ↳ `placeholder` | boolean | Whether the team is a placeholder |
| ↳ `last_played_at` | string | Date and time of the last played match |
### Get All Transfer Rumours [#get-all-transfer-rumours]
Retrieve all transfer rumours available within your Sportmonks subscription
#### Input [#input-7]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. player;fromTeam;toTeam) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-7]
| Parameter | Type | Description |
| ------------------- | ------ | ------------------------------------ |
| `transferRumours` | array | Array of transfer rumour objects |
| ↳ `id` | number | Unique id of the transfer rumour |
| ↳ `sport_id` | number | Sport of the transfer rumour |
| ↳ `player_id` | number | Player the rumour relates to |
| ↳ `position_id` | number | Position id of the player |
| ↳ `from_team_id` | number | Team the player would transfer from |
| ↳ `to_team_id` | number | Team the player would transfer to |
| ↳ `transfer_fee_id` | number | Transfer fee id of the rumour |
| ↳ `probability` | string | Probability of the rumour (e.g. LOW) |
| ↳ `source_name` | string | Name of the source of the rumour |
| ↳ `source_url` | string | URL of the source of the rumour |
| ↳ `amount` | number | Estimated transfer fee amount |
| ↳ `currency` | string | Currency of the amount |
| ↳ `date` | string | Date of the rumour |
| ↳ `type_id` | number | Type of the transfer rumour |
### Get All Transfers [#get-all-transfers]
Retrieve all transfers available within your Sportmonks subscription
#### Input [#input-8]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. player;fromTeam;toTeam) |
| `filters` | string | No | Filters to apply (e.g. transferTypes:219,220) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-8]
| Parameter | Type | Description |
| ------------------------ | ------- | ------------------------------------- |
| `transfers` | array | Array of transfer objects |
| ↳ `id` | number | Unique id of the transfer |
| ↳ `sport_id` | number | Sport of the transfer |
| ↳ `player_id` | number | Player who transferred |
| ↳ `type_id` | number | Type of the transfer |
| ↳ `from_team_id` | number | Team the player transferred from |
| ↳ `to_team_id` | number | Team the player transferred to |
| ↳ `position_id` | number | Position id of the transfer |
| ↳ `detailed_position_id` | number | Detailed position id of the transfer |
| ↳ `date` | string | Date of the transfer |
| ↳ `career_ended` | boolean | Whether the transfer ended the career |
| ↳ `completed` | boolean | Whether the transfer is completed |
| ↳ `amount` | number | Transfer fee amount |
### Get Brackets by Season [#get-brackets-by-season]
Retrieve the knockout-stage tournament bracket (stages and progression edges) for a season ID
#### Input [#input-9]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
| `include` | string | No | Semicolon-separated relations to enrich the response |
#### Output [#output-9]
| Parameter | Type | Description |
| ---------- | ---- | -------------------------------------------------------------------------------------------------------------------- |
| `brackets` | json | Bracket object containing stages (fixtures grouped by knockout round) and edges (progression paths between fixtures) |
### Get Coach by ID [#get-coach-by-id]
Retrieve a single football coach by their ID from Sportmonks
#### Input [#input-10]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `coachId` | string | Yes | The unique id of the coach |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;teams;statistics) |
| `filters` | string | No | Filters to apply |
#### Output [#output-10]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------- |
| `coach` | object | The requested coach object |
| ↳ `id` | number | Unique id of the coach |
| ↳ `player_id` | number | Player related to the coach |
| ↳ `sport_id` | number | Sport of the coach |
| ↳ `country_id` | number | Country of the coach |
| ↳ `nationality_id` | number | Nationality of the coach |
| ↳ `city_id` | number | Birth city of the coach |
| ↳ `common_name` | string | Common name of the coach |
| ↳ `firstname` | string | First name of the coach |
| ↳ `lastname` | string | Last name of the coach |
| ↳ `name` | string | Name of the coach |
| ↳ `display_name` | string | Display name of the coach |
| ↳ `image_path` | string | URL to the coach headshot |
| ↳ `height` | number | Height of the coach in cm |
| ↳ `weight` | number | Weight of the coach in kg |
| ↳ `date_of_birth` | string | Date of birth of the coach |
| ↳ `gender` | string | Gender of the coach |
### Get Coaches [#get-coaches]
Retrieve all football coaches available within your Sportmonks subscription
#### Input [#input-11]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;teams) |
| `filters` | string | No | Filters to apply (e.g. coachCountries:462) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-11]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------- |
| `coaches` | array | Array of coach objects |
| ↳ `id` | number | Unique id of the coach |
| ↳ `player_id` | number | Player related to the coach |
| ↳ `sport_id` | number | Sport of the coach |
| ↳ `country_id` | number | Country of the coach |
| ↳ `nationality_id` | number | Nationality of the coach |
| ↳ `city_id` | number | Birth city of the coach |
| ↳ `common_name` | string | Common name of the coach |
| ↳ `firstname` | string | First name of the coach |
| ↳ `lastname` | string | Last name of the coach |
| ↳ `name` | string | Name of the coach |
| ↳ `display_name` | string | Display name of the coach |
| ↳ `image_path` | string | URL to the coach headshot |
| ↳ `height` | number | Height of the coach in cm |
| ↳ `weight` | number | Weight of the coach in kg |
| ↳ `date_of_birth` | string | Date of birth of the coach |
| ↳ `gender` | string | Gender of the coach |
### Get Coaches by Country [#get-coaches-by-country]
Retrieve all coaches for a country ID from Sportmonks
#### Input [#input-12]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `countryId` | string | Yes | The unique id of the country |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;nationality) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-12]
| Parameter | Type | Description |
| ------------------ | ------ | -------------------------------------- |
| `coaches` | array | Array of coach objects for the country |
| ↳ `id` | number | Unique id of the coach |
| ↳ `player_id` | number | Player related to the coach |
| ↳ `sport_id` | number | Sport of the coach |
| ↳ `country_id` | number | Country of the coach |
| ↳ `nationality_id` | number | Nationality of the coach |
| ↳ `city_id` | number | Birth city of the coach |
| ↳ `common_name` | string | Common name of the coach |
| ↳ `firstname` | string | First name of the coach |
| ↳ `lastname` | string | Last name of the coach |
| ↳ `name` | string | Name of the coach |
| ↳ `display_name` | string | Display name of the coach |
| ↳ `image_path` | string | URL to the coach headshot |
| ↳ `height` | number | Height of the coach in cm |
| ↳ `weight` | number | Weight of the coach in kg |
| ↳ `date_of_birth` | string | Date of birth of the coach |
| ↳ `gender` | string | Gender of the coach |
### Get Commentaries by Fixture [#get-commentaries-by-fixture]
Retrieve textual commentary for a fixture by fixture ID from Sportmonks
#### Input [#input-13]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | -------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. player;relatedPlayer) |
#### Output [#output-13]
| Parameter | Type | Description |
| ---------------- | ------- | ------------------------------------------- |
| `commentaries` | array | Array of commentary entries for the fixture |
| ↳ `id` | number | Unique id of the commentary |
| ↳ `fixture_id` | number | Fixture related to the commentary |
| ↳ `comment` | string | The commentary text |
| ↳ `minute` | number | Match minute of the comment |
| ↳ `extra_minute` | number | Extra (injury) minute of the comment |
| ↳ `is_goal` | boolean | Whether the comment is a goal |
| ↳ `is_important` | boolean | Whether the comment is important |
| ↳ `order` | number | Order of the comment |
### Get Current Leagues by Team [#get-current-leagues-by-team]
Retrieve all current leagues for a team ID from Sportmonks
#### Input [#input-14]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `teamId` | string | Yes | The unique id of the team |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;currentSeason) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order leagues (asc or desc) |
#### Output [#output-14]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------ |
| `leagues` | array | Array of current league objects for the team |
| ↳ `id` | number | Unique id of the league |
| ↳ `sport_id` | number | Sport of the league |
| ↳ `country_id` | number | Country of the league |
| ↳ `name` | string | Name of the league |
| ↳ `active` | number | Whether the league is active (1) or inactive (0) |
| ↳ `short_code` | string | Short code of the league |
| ↳ `image_path` | string | URL to the league logo |
| ↳ `type` | string | Type of the league |
| ↳ `sub_type` | string | Subtype of the league |
| ↳ `last_played_at` | string | Date the last fixture was played |
| ↳ `category` | number | Importance category of the league (1-4) |
### Get Expected Lineups by Player [#get-expected-lineups-by-player]
Retrieve the premium expected lineups for a player ID from Sportmonks
#### Input [#input-15]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `playerId` | string | Yes | The unique id of the player |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. player;fixture) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-15]
| Parameter | Type | Description |
| ------------------------ | ------ | ----------------------------------------------- |
| `expectedLineups` | array | Array of expected lineup entries for the player |
| ↳ `id` | number | Unique id of the expected lineup record |
| ↳ `sport_id` | number | Sport of the expected lineup |
| ↳ `fixture_id` | number | Fixture the expected lineup relates to |
| ↳ `player_id` | number | Player in the expected lineup |
| ↳ `team_id` | number | Team of the expected lineup player |
| ↳ `formation_field` | string | Formation field of the player |
| ↳ `position_id` | number | Position id of the player |
| ↳ `detailed_position_id` | number | Detailed position id of the player |
| ↳ `type_id` | number | Type of the expected lineup record |
| ↳ `formation_position` | number | Position of the player in the formation |
| ↳ `player_name` | string | Name of the player |
| ↳ `jersey_number` | number | Jersey number of the player |
### Get Expected Lineups by Team [#get-expected-lineups-by-team]
Retrieve the premium expected lineups for a team ID from Sportmonks
#### Input [#input-16]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `teamId` | string | Yes | The unique id of the team |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. player;fixture) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-16]
| Parameter | Type | Description |
| ------------------------ | ------ | --------------------------------------------- |
| `expectedLineups` | array | Array of expected lineup entries for the team |
| ↳ `id` | number | Unique id of the expected lineup record |
| ↳ `sport_id` | number | Sport of the expected lineup |
| ↳ `fixture_id` | number | Fixture the expected lineup relates to |
| ↳ `player_id` | number | Player in the expected lineup |
| ↳ `team_id` | number | Team of the expected lineup player |
| ↳ `formation_field` | string | Formation field of the player |
| ↳ `position_id` | number | Position id of the player |
| ↳ `detailed_position_id` | number | Detailed position id of the player |
| ↳ `type_id` | number | Type of the expected lineup record |
| ↳ `formation_position` | number | Position of the player in the formation |
| ↳ `player_name` | string | Name of the player |
| ↳ `jersey_number` | number | Jersey number of the player |
### Get Extended Team Squad [#get-extended-team-squad]
Retrieve all squad entries for a team (based on current seasons) by team ID
#### Input [#input-17]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `teamId` | string | Yes | The unique id of the team |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. player;position) |
| `filters` | string | No | Filters to apply |
#### Output [#output-17]
| Parameter | Type | Description |
| ------------------------ | ------ | -------------------------------------------- |
| `squad` | array | Array of extended squad entries for the team |
| ↳ `id` | number | Unique id of the squad record |
| ↳ `transfer_id` | number | Transfer id of the squad record |
| ↳ `player_id` | number | Player in the squad |
| ↳ `team_id` | number | Team of the squad |
| ↳ `position_id` | number | Position of the player in the squad |
| ↳ `detailed_position_id` | number | Detailed position of the player in the squad |
| ↳ `jersey_number` | number | Jersey number of the player |
| ↳ `start` | string | Start contract date of the player |
| ↳ `end` | string | End contract date of the player |
### Get Fixture by ID [#get-fixture-by-id]
Retrieve a single football fixture by its ID from Sportmonks
#### Input [#input-18]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participants;scores;events;lineups;statistics) |
| `filters` | string | No | Filters to apply (e.g. eventTypes:14) |
#### Output [#output-18]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------ |
| `fixture` | object | The requested fixture object |
| ↳ `id` | number | Unique id of the fixture |
| ↳ `sport_id` | number | Sport the fixture is played at |
| ↳ `league_id` | number | League the fixture is played in |
| ↳ `season_id` | number | Season the fixture is played in |
| ↳ `stage_id` | number | Stage the fixture is played in |
| ↳ `group_id` | number | Group the fixture is played in |
| ↳ `aggregate_id` | number | Aggregate the fixture belongs to |
| ↳ `round_id` | number | Round the fixture is played in |
| ↳ `state_id` | number | State (status) of the fixture |
| ↳ `venue_id` | number | Venue the fixture is played at |
| ↳ `name` | string | Name of the fixture (participants) |
| ↳ `starting_at` | string | Datetime the fixture starts |
| ↳ `result_info` | string | Final result summary |
| ↳ `leg` | string | Leg of the fixture (e.g. 1/1) |
| ↳ `details` | string | Details about the fixture |
| ↳ `length` | number | Length of the fixture in minutes |
| ↳ `placeholder` | boolean | Whether the fixture is a placeholder |
| ↳ `has_odds` | boolean | Whether odds are available |
| ↳ `has_premium_odds` | boolean | Whether premium odds are available |
| ↳ `starting_at_timestamp` | number | UNIX timestamp of the start time |
### Get Fixtures by Date [#get-fixtures-by-date]
Retrieve all football fixtures on a specific date (YYYY-MM-DD) from Sportmonks
#### Input [#input-19]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `date` | string | Yes | The date to fetch fixtures for, in YYYY-MM-DD format |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participants;scores;league) |
| `filters` | string | No | Filters to apply (e.g. fixtureLeagues:501,271) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order fixtures by starting\_at (asc or desc) |
#### Output [#output-19]
| Parameter | Type | Description |
| ------------------------- | ------- | ----------------------------------------------- |
| `fixtures` | array | Array of fixture objects for the requested date |
| ↳ `id` | number | Unique id of the fixture |
| ↳ `sport_id` | number | Sport the fixture is played at |
| ↳ `league_id` | number | League the fixture is played in |
| ↳ `season_id` | number | Season the fixture is played in |
| ↳ `stage_id` | number | Stage the fixture is played in |
| ↳ `group_id` | number | Group the fixture is played in |
| ↳ `aggregate_id` | number | Aggregate the fixture belongs to |
| ↳ `round_id` | number | Round the fixture is played in |
| ↳ `state_id` | number | State (status) of the fixture |
| ↳ `venue_id` | number | Venue the fixture is played at |
| ↳ `name` | string | Name of the fixture (participants) |
| ↳ `starting_at` | string | Datetime the fixture starts |
| ↳ `result_info` | string | Final result summary |
| ↳ `leg` | string | Leg of the fixture (e.g. 1/1) |
| ↳ `details` | string | Details about the fixture |
| ↳ `length` | number | Length of the fixture in minutes |
| ↳ `placeholder` | boolean | Whether the fixture is a placeholder |
| ↳ `has_odds` | boolean | Whether odds are available |
| ↳ `has_premium_odds` | boolean | Whether premium odds are available |
| ↳ `starting_at_timestamp` | number | UNIX timestamp of the start time |
### Get Fixtures by Date Range [#get-fixtures-by-date-range]
Retrieve football fixtures between two dates (YYYY-MM-DD) from Sportmonks. Max range is 100 days.
#### Input [#input-20]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `startDate` | string | Yes | Start date in YYYY-MM-DD format |
| `endDate` | string | Yes | End date in YYYY-MM-DD format (max 100 days after start) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participants;scores) |
| `filters` | string | No | Filters to apply (e.g. fixtureLeagues:501,271) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order fixtures by starting\_at (asc or desc) |
#### Output [#output-20]
| Parameter | Type | Description |
| ------------------------- | ------- | -------------------------------------------------------- |
| `fixtures` | array | Array of fixture objects within the requested date range |
| ↳ `id` | number | Unique id of the fixture |
| ↳ `sport_id` | number | Sport the fixture is played at |
| ↳ `league_id` | number | League the fixture is played in |
| ↳ `season_id` | number | Season the fixture is played in |
| ↳ `stage_id` | number | Stage the fixture is played in |
| ↳ `group_id` | number | Group the fixture is played in |
| ↳ `aggregate_id` | number | Aggregate the fixture belongs to |
| ↳ `round_id` | number | Round the fixture is played in |
| ↳ `state_id` | number | State (status) of the fixture |
| ↳ `venue_id` | number | Venue the fixture is played at |
| ↳ `name` | string | Name of the fixture (participants) |
| ↳ `starting_at` | string | Datetime the fixture starts |
| ↳ `result_info` | string | Final result summary |
| ↳ `leg` | string | Leg of the fixture (e.g. 1/1) |
| ↳ `details` | string | Details about the fixture |
| ↳ `length` | number | Length of the fixture in minutes |
| ↳ `placeholder` | boolean | Whether the fixture is a placeholder |
| ↳ `has_odds` | boolean | Whether odds are available |
| ↳ `has_premium_odds` | boolean | Whether premium odds are available |
| ↳ `starting_at_timestamp` | number | UNIX timestamp of the start time |
### Get Fixtures by Date Range for Team [#get-fixtures-by-date-range-for-team]
Retrieve fixtures for a team within a date range (YYYY-MM-DD) from Sportmonks
#### Input [#input-21]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `startDate` | string | Yes | Start date in YYYY-MM-DD format |
| `endDate` | string | Yes | End date in YYYY-MM-DD format |
| `teamId` | string | Yes | The unique id of the team |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participants;scores) |
| `filters` | string | No | Filters to apply (e.g. fixtureLeagues:501) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order fixtures by starting\_at (asc or desc) |
#### Output [#output-21]
| Parameter | Type | Description |
| ------------------------- | ------- | ----------------------------------------------------------- |
| `fixtures` | array | Array of fixture objects for the team within the date range |
| ↳ `id` | number | Unique id of the fixture |
| ↳ `sport_id` | number | Sport the fixture is played at |
| ↳ `league_id` | number | League the fixture is played in |
| ↳ `season_id` | number | Season the fixture is played in |
| ↳ `stage_id` | number | Stage the fixture is played in |
| ↳ `group_id` | number | Group the fixture is played in |
| ↳ `aggregate_id` | number | Aggregate the fixture belongs to |
| ↳ `round_id` | number | Round the fixture is played in |
| ↳ `state_id` | number | State (status) of the fixture |
| ↳ `venue_id` | number | Venue the fixture is played at |
| ↳ `name` | string | Name of the fixture (participants) |
| ↳ `starting_at` | string | Datetime the fixture starts |
| ↳ `result_info` | string | Final result summary |
| ↳ `leg` | string | Leg of the fixture (e.g. 1/1) |
| ↳ `details` | string | Details about the fixture |
| ↳ `length` | number | Length of the fixture in minutes |
| ↳ `placeholder` | boolean | Whether the fixture is a placeholder |
| ↳ `has_odds` | boolean | Whether odds are available |
| ↳ `has_premium_odds` | boolean | Whether premium odds are available |
| ↳ `starting_at_timestamp` | number | UNIX timestamp of the start time |
### Get Fixtures by Multiple IDs [#get-fixtures-by-multiple-ids]
Retrieve multiple football fixtures by a comma-separated list of IDs (max 50)
#### Input [#input-22]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `ids` | string | Yes | Comma-separated fixture IDs (e.g. 18535517,18535518). Maximum of 50 IDs |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participants;scores) |
| `filters` | string | No | Filters to apply (e.g. fixtureLeagues:501) |
#### Output [#output-22]
| Parameter | Type | Description |
| ------------------------- | ------- | ---------------------------------------------- |
| `fixtures` | array | Array of fixture objects for the requested IDs |
| ↳ `id` | number | Unique id of the fixture |
| ↳ `sport_id` | number | Sport the fixture is played at |
| ↳ `league_id` | number | League the fixture is played in |
| ↳ `season_id` | number | Season the fixture is played in |
| ↳ `stage_id` | number | Stage the fixture is played in |
| ↳ `group_id` | number | Group the fixture is played in |
| ↳ `aggregate_id` | number | Aggregate the fixture belongs to |
| ↳ `round_id` | number | Round the fixture is played in |
| ↳ `state_id` | number | State (status) of the fixture |
| ↳ `venue_id` | number | Venue the fixture is played at |
| ↳ `name` | string | Name of the fixture (participants) |
| ↳ `starting_at` | string | Datetime the fixture starts |
| ↳ `result_info` | string | Final result summary |
| ↳ `leg` | string | Leg of the fixture (e.g. 1/1) |
| ↳ `details` | string | Details about the fixture |
| ↳ `length` | number | Length of the fixture in minutes |
| ↳ `placeholder` | boolean | Whether the fixture is a placeholder |
| ↳ `has_odds` | boolean | Whether odds are available |
| ↳ `has_premium_odds` | boolean | Whether premium odds are available |
| ↳ `starting_at_timestamp` | number | UNIX timestamp of the start time |
### Get Grouped Standings by Round [#get-grouped-standings-by-round]
Retrieve the standing table for a round ID grouped by group where applicable from Sportmonks
#### Input [#input-23]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `roundId` | string | Yes | The unique id of the round |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participant;details) |
| `filters` | string | No | Filters to apply (e.g. standingGroups:246697) |
#### Output [#output-23]
| Parameter | Type | Description |
| ----------- | ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `standings` | json | Standings for the round: an array of groups (each with id, name and a standings array) when groups exist, otherwise a flat array of standing entries |
### Get Head to Head [#get-head-to-head]
Retrieve the head-to-head fixtures between two teams from Sportmonks
#### Input [#input-24]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `team1` | string | Yes | The id of the first team |
| `team2` | string | Yes | The id of the second team |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participants;scores) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order fixtures by starting\_at (asc or desc) |
#### Output [#output-24]
| Parameter | Type | Description |
| ------------------------- | ------- | ----------------------------------------------------------- |
| `fixtures` | array | Array of head-to-head fixture objects between the two teams |
| ↳ `id` | number | Unique id of the fixture |
| ↳ `sport_id` | number | Sport the fixture is played at |
| ↳ `league_id` | number | League the fixture is played in |
| ↳ `season_id` | number | Season the fixture is played in |
| ↳ `stage_id` | number | Stage the fixture is played in |
| ↳ `group_id` | number | Group the fixture is played in |
| ↳ `aggregate_id` | number | Aggregate the fixture belongs to |
| ↳ `round_id` | number | Round the fixture is played in |
| ↳ `state_id` | number | State (status) of the fixture |
| ↳ `venue_id` | number | Venue the fixture is played at |
| ↳ `name` | string | Name of the fixture (participants) |
| ↳ `starting_at` | string | Datetime the fixture starts |
| ↳ `result_info` | string | Final result summary |
| ↳ `leg` | string | Leg of the fixture (e.g. 1/1) |
| ↳ `details` | string | Details about the fixture |
| ↳ `length` | number | Length of the fixture in minutes |
| ↳ `placeholder` | boolean | Whether the fixture is a placeholder |
| ↳ `has_odds` | boolean | Whether odds are available |
| ↳ `has_premium_odds` | boolean | Whether premium odds are available |
| ↳ `starting_at_timestamp` | number | UNIX timestamp of the start time |
### Get Inplay Livescores [#get-inplay-livescores]
Retrieve all fixtures that are currently being played (in-play) from Sportmonks
#### Input [#input-25]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participants;scores;events) |
| `filters` | string | No | Filters to apply (e.g. fixtureLeagues:501) |
#### Output [#output-25]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------ |
| `fixtures` | array | Array of in-play fixture objects |
| ↳ `id` | number | Unique id of the fixture |
| ↳ `sport_id` | number | Sport the fixture is played at |
| ↳ `league_id` | number | League the fixture is played in |
| ↳ `season_id` | number | Season the fixture is played in |
| ↳ `stage_id` | number | Stage the fixture is played in |
| ↳ `group_id` | number | Group the fixture is played in |
| ↳ `aggregate_id` | number | Aggregate the fixture belongs to |
| ↳ `round_id` | number | Round the fixture is played in |
| ↳ `state_id` | number | State (status) of the fixture |
| ↳ `venue_id` | number | Venue the fixture is played at |
| ↳ `name` | string | Name of the fixture (participants) |
| ↳ `starting_at` | string | Datetime the fixture starts |
| ↳ `result_info` | string | Final result summary |
| ↳ `leg` | string | Leg of the fixture (e.g. 1/1) |
| ↳ `details` | string | Details about the fixture |
| ↳ `length` | number | Length of the fixture in minutes |
| ↳ `placeholder` | boolean | Whether the fixture is a placeholder |
| ↳ `has_odds` | boolean | Whether odds are available |
| ↳ `has_premium_odds` | boolean | Whether premium odds are available |
| ↳ `starting_at_timestamp` | number | UNIX timestamp of the start time |
### Get Last Updated Coaches [#get-last-updated-coaches]
Retrieve all coaches that have received updates in the past two hours
#### Input [#input-26]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;nationality) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-26]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------------------- |
| `coaches` | array | Array of recently updated coach objects |
| ↳ `id` | number | Unique id of the coach |
| ↳ `player_id` | number | Player related to the coach |
| ↳ `sport_id` | number | Sport of the coach |
| ↳ `country_id` | number | Country of the coach |
| ↳ `nationality_id` | number | Nationality of the coach |
| ↳ `city_id` | number | Birth city of the coach |
| ↳ `common_name` | string | Common name of the coach |
| ↳ `firstname` | string | First name of the coach |
| ↳ `lastname` | string | Last name of the coach |
| ↳ `name` | string | Name of the coach |
| ↳ `display_name` | string | Display name of the coach |
| ↳ `image_path` | string | URL to the coach headshot |
| ↳ `height` | number | Height of the coach in cm |
| ↳ `weight` | number | Weight of the coach in kg |
| ↳ `date_of_birth` | string | Date of birth of the coach |
| ↳ `gender` | string | Gender of the coach |
### Get Latest Updated Fixtures [#get-latest-updated-fixtures]
Retrieve all fixtures that have received updates within the last 10 seconds
#### Input [#input-27]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participants;scores) |
| `filters` | string | No | Filters to apply (e.g. fixtureLeagues:501) |
#### Output [#output-27]
| Parameter | Type | Description |
| ------------------------- | ------- | ----------------------------------------- |
| `fixtures` | array | Array of recently updated fixture objects |
| ↳ `id` | number | Unique id of the fixture |
| ↳ `sport_id` | number | Sport the fixture is played at |
| ↳ `league_id` | number | League the fixture is played in |
| ↳ `season_id` | number | Season the fixture is played in |
| ↳ `stage_id` | number | Stage the fixture is played in |
| ↳ `group_id` | number | Group the fixture is played in |
| ↳ `aggregate_id` | number | Aggregate the fixture belongs to |
| ↳ `round_id` | number | Round the fixture is played in |
| ↳ `state_id` | number | State (status) of the fixture |
| ↳ `venue_id` | number | Venue the fixture is played at |
| ↳ `name` | string | Name of the fixture (participants) |
| ↳ `starting_at` | string | Datetime the fixture starts |
| ↳ `result_info` | string | Final result summary |
| ↳ `leg` | string | Leg of the fixture (e.g. 1/1) |
| ↳ `details` | string | Details about the fixture |
| ↳ `length` | number | Length of the fixture in minutes |
| ↳ `placeholder` | boolean | Whether the fixture is a placeholder |
| ↳ `has_odds` | boolean | Whether odds are available |
| ↳ `has_premium_odds` | boolean | Whether premium odds are available |
| ↳ `starting_at_timestamp` | number | UNIX timestamp of the start time |
### Get Latest Updated Livescores [#get-latest-updated-livescores]
Retrieve all livescores that have received updates within the last 10 seconds
#### Input [#input-28]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participants;scores) |
| `filters` | string | No | Filters to apply (e.g. fixtureLeagues:501) |
#### Output [#output-28]
| Parameter | Type | Description |
| ------------------------- | ------- | ---------------------------------------------- |
| `fixtures` | array | Array of recently updated live fixture objects |
| ↳ `id` | number | Unique id of the fixture |
| ↳ `sport_id` | number | Sport the fixture is played at |
| ↳ `league_id` | number | League the fixture is played in |
| ↳ `season_id` | number | Season the fixture is played in |
| ↳ `stage_id` | number | Stage the fixture is played in |
| ↳ `group_id` | number | Group the fixture is played in |
| ↳ `aggregate_id` | number | Aggregate the fixture belongs to |
| ↳ `round_id` | number | Round the fixture is played in |
| ↳ `state_id` | number | State (status) of the fixture |
| ↳ `venue_id` | number | Venue the fixture is played at |
| ↳ `name` | string | Name of the fixture (participants) |
| ↳ `starting_at` | string | Datetime the fixture starts |
| ↳ `result_info` | string | Final result summary |
| ↳ `leg` | string | Leg of the fixture (e.g. 1/1) |
| ↳ `details` | string | Details about the fixture |
| ↳ `length` | number | Length of the fixture in minutes |
| ↳ `placeholder` | boolean | Whether the fixture is a placeholder |
| ↳ `has_odds` | boolean | Whether odds are available |
| ↳ `has_premium_odds` | boolean | Whether premium odds are available |
| ↳ `starting_at_timestamp` | number | UNIX timestamp of the start time |
### Get Last Updated Players [#get-last-updated-players]
Retrieve all players that have received updates in the past two hours
#### Input [#input-29]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. nationality;position) |
| `filters` | string | No | Filters to apply |
#### Output [#output-29]
| Parameter | Type | Description |
| ------------------------ | ------ | ---------------------------------------- |
| `players` | array | Array of recently updated player objects |
| ↳ `id` | number | Unique id of the player |
| ↳ `sport_id` | number | Sport of the player |
| ↳ `country_id` | number | Country of birth of the player |
| ↳ `nationality_id` | number | Nationality of the player |
| ↳ `city_id` | number | City of birth of the player |
| ↳ `position_id` | number | Position of the player |
| ↳ `detailed_position_id` | number | Detailed position of the player |
| ↳ `type_id` | number | Type of the player |
| ↳ `common_name` | string | Name the player is known for |
| ↳ `firstname` | string | First name of the player |
| ↳ `lastname` | string | Last name of the player |
| ↳ `name` | string | Name of the player |
| ↳ `display_name` | string | Display name of the player |
| ↳ `image_path` | string | URL to the player headshot |
| ↳ `height` | number | Height of the player in cm |
| ↳ `weight` | number | Weight of the player in kg |
| ↳ `date_of_birth` | string | Date of birth of the player |
| ↳ `gender` | string | Gender of the player |
### Get Latest Team of the Week [#get-latest-team-of-the-week]
Retrieve the latest Team of the Week (TOTW) for a league ID from Sportmonks
#### Input [#input-30]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `leagueId` | string | Yes | The unique id of the league |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. fixture;team;player;round) |
#### Output [#output-30]
| Parameter | Type | Description |
| ---------------------- | ------ | ----------------------------------------------------------- |
| `totw` | array | Array of the latest Team of the Week entries for the league |
| ↳ `id` | number | Unique id of the TOTW entry |
| ↳ `player_id` | number | Player of the team of the week |
| ↳ `fixture_id` | number | Fixture the TOTW player played in |
| ↳ `round_id` | number | Round the fixture is played at |
| ↳ `team_id` | number | Team the TOTW player played for |
| ↳ `rating` | string | Rating of the TOTW player |
| ↳ `formation_position` | number | Player position in the TOTW formation |
| ↳ `formation` | string | The TOTW's formation |
### Get Latest Transfers [#get-latest-transfers]
Retrieve the latest transfers available within your Sportmonks subscription
#### Input [#input-31]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. player;fromTeam;toTeam) |
| `filters` | string | No | Filters to apply (e.g. transferTypes:219,220) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-31]
| Parameter | Type | Description |
| ------------------------ | ------- | ------------------------------------- |
| `transfers` | array | Array of the latest transfer objects |
| ↳ `id` | number | Unique id of the transfer |
| ↳ `sport_id` | number | Sport of the transfer |
| ↳ `player_id` | number | Player who transferred |
| ↳ `type_id` | number | Type of the transfer |
| ↳ `from_team_id` | number | Team the player transferred from |
| ↳ `to_team_id` | number | Team the player transferred to |
| ↳ `position_id` | number | Position id of the transfer |
| ↳ `detailed_position_id` | number | Detailed position id of the transfer |
| ↳ `date` | string | Date of the transfer |
| ↳ `career_ended` | boolean | Whether the transfer ended the career |
| ↳ `completed` | boolean | Whether the transfer is completed |
| ↳ `amount` | number | Transfer fee amount |
### Get League by ID [#get-league-by-id]
Retrieve a single football league by its ID from Sportmonks
#### Input [#input-32]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `leagueId` | string | Yes | The unique id of the league |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;currentSeason;seasons) |
| `filters` | string | No | Filters to apply |
#### Output [#output-32]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------ |
| `league` | object | The requested league object |
| ↳ `id` | number | Unique id of the league |
| ↳ `sport_id` | number | Sport of the league |
| ↳ `country_id` | number | Country of the league |
| ↳ `name` | string | Name of the league |
| ↳ `active` | number | Whether the league is active (1) or inactive (0) |
| ↳ `short_code` | string | Short code of the league |
| ↳ `image_path` | string | URL to the league logo |
| ↳ `type` | string | Type of the league |
| ↳ `sub_type` | string | Subtype of the league |
| ↳ `last_played_at` | string | Date the last fixture was played |
| ↳ `category` | number | Importance category of the league (1-4) |
### Get Leagues [#get-leagues]
Retrieve all football leagues available within your Sportmonks subscription
#### Input [#input-33]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;currentSeason) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order leagues (asc or desc) |
#### Output [#output-33]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------ |
| `leagues` | array | Array of league objects |
| ↳ `id` | number | Unique id of the league |
| ↳ `sport_id` | number | Sport of the league |
| ↳ `country_id` | number | Country of the league |
| ↳ `name` | string | Name of the league |
| ↳ `active` | number | Whether the league is active (1) or inactive (0) |
| ↳ `short_code` | string | Short code of the league |
| ↳ `image_path` | string | URL to the league logo |
| ↳ `type` | string | Type of the league |
| ↳ `sub_type` | string | Subtype of the league |
| ↳ `last_played_at` | string | Date the last fixture was played |
| ↳ `category` | number | Importance category of the league (1-4) |
### Get Leagues by Country [#get-leagues-by-country]
Retrieve all leagues for a country ID from Sportmonks
#### Input [#input-34]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `countryId` | string | Yes | The unique id of the country |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;currentSeason) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order leagues (asc or desc) |
#### Output [#output-34]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------ |
| `leagues` | array | Array of league objects for the country |
| ↳ `id` | number | Unique id of the league |
| ↳ `sport_id` | number | Sport of the league |
| ↳ `country_id` | number | Country of the league |
| ↳ `name` | string | Name of the league |
| ↳ `active` | number | Whether the league is active (1) or inactive (0) |
| ↳ `short_code` | string | Short code of the league |
| ↳ `image_path` | string | URL to the league logo |
| ↳ `type` | string | Type of the league |
| ↳ `sub_type` | string | Subtype of the league |
| ↳ `last_played_at` | string | Date the last fixture was played |
| ↳ `category` | number | Importance category of the league (1-4) |
### Get Leagues by Date [#get-leagues-by-date]
Retrieve all leagues with fixtures on a given date (YYYY-MM-DD) from Sportmonks
#### Input [#input-35]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `date` | string | Yes | The fixture date in YYYY-MM-DD format |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;currentSeason) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order leagues (asc or desc) |
#### Output [#output-35]
| Parameter | Type | Description |
| ------------------ | ------ | ----------------------------------------------------------- |
| `leagues` | array | Array of league objects with fixtures on the requested date |
| ↳ `id` | number | Unique id of the league |
| ↳ `sport_id` | number | Sport of the league |
| ↳ `country_id` | number | Country of the league |
| ↳ `name` | string | Name of the league |
| ↳ `active` | number | Whether the league is active (1) or inactive (0) |
| ↳ `short_code` | string | Short code of the league |
| ↳ `image_path` | string | URL to the league logo |
| ↳ `type` | string | Type of the league |
| ↳ `sub_type` | string | Subtype of the league |
| ↳ `last_played_at` | string | Date the last fixture was played |
| ↳ `category` | number | Importance category of the league (1-4) |
### Get Leagues by Team [#get-leagues-by-team]
Retrieve all current and historical leagues for a team ID from Sportmonks
#### Input [#input-36]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `teamId` | string | Yes | The unique id of the team |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;currentSeason) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order leagues (asc or desc) |
#### Output [#output-36]
| Parameter | Type | Description |
| ------------------ | ------ | ----------------------------------------------------------- |
| `leagues` | array | Array of current and historical league objects for the team |
| ↳ `id` | number | Unique id of the league |
| ↳ `sport_id` | number | Sport of the league |
| ↳ `country_id` | number | Country of the league |
| ↳ `name` | string | Name of the league |
| ↳ `active` | number | Whether the league is active (1) or inactive (0) |
| ↳ `short_code` | string | Short code of the league |
| ↳ `image_path` | string | URL to the league logo |
| ↳ `type` | string | Type of the league |
| ↳ `sub_type` | string | Subtype of the league |
| ↳ `last_played_at` | string | Date the last fixture was played |
| ↳ `category` | number | Importance category of the league (1-4) |
### Get Live Leagues [#get-live-leagues]
Retrieve all leagues that have fixtures currently being played from Sportmonks
#### Input [#input-37]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;currentSeason) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order leagues (asc or desc) |
#### Output [#output-37]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------ |
| `leagues` | array | Array of currently live league objects |
| ↳ `id` | number | Unique id of the league |
| ↳ `sport_id` | number | Sport of the league |
| ↳ `country_id` | number | Country of the league |
| ↳ `name` | string | Name of the league |
| ↳ `active` | number | Whether the league is active (1) or inactive (0) |
| ↳ `short_code` | string | Short code of the league |
| ↳ `image_path` | string | URL to the league logo |
| ↳ `type` | string | Type of the league |
| ↳ `sub_type` | string | Subtype of the league |
| ↳ `last_played_at` | string | Date the last fixture was played |
| ↳ `category` | number | Importance category of the league (1-4) |
### Get Live Probabilities [#get-live-probabilities]
Retrieve all live (in-play) prediction probabilities from Sportmonks
#### Input [#input-38]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. type;fixture) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-38]
| Parameter | Type | Description |
| --------------- | ------ | -------------------------------------------------------- |
| `predictions` | array | Array of live probability prediction objects |
| ↳ `id` | number | Unique id of the live prediction record |
| ↳ `fixture_id` | number | Fixture the prediction belongs to |
| ↳ `period_id` | number | Match period the prediction was recorded in |
| ↳ `minute` | number | Match minute the prediction was generated |
| ↳ `predictions` | json | Home win, away win and draw probabilities as percentages |
| ↳ `type_id` | number | Type of the prediction (237 for fulltime result) |
### Get Live Probabilities by Fixture [#get-live-probabilities-by-fixture]
Retrieve all live (in-play) prediction probabilities for a fixture ID from Sportmonks
#### Input [#input-39]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. type;fixture) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-39]
| Parameter | Type | Description |
| --------------- | ------ | ------------------------------------------------------------ |
| `predictions` | array | Array of live probability prediction objects for the fixture |
| ↳ `id` | number | Unique id of the live prediction record |
| ↳ `fixture_id` | number | Fixture the prediction belongs to |
| ↳ `period_id` | number | Match period the prediction was recorded in |
| ↳ `minute` | number | Match minute the prediction was generated |
| ↳ `predictions` | json | Home win, away win and draw probabilities as percentages |
| ↳ `type_id` | number | Type of the prediction (237 for fulltime result) |
### Get Live Standings by League [#get-live-standings-by-league]
Retrieve the live standing table for a league ID from Sportmonks
#### Input [#input-40]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `leagueId` | string | Yes | The unique id of the league |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participant;details) |
| `filters` | string | No | Filters to apply (e.g. standingGroups:246697) |
#### Output [#output-40]
| Parameter | Type | Description |
| -------------------- | ------ | --------------------------------------------- |
| `standings` | array | Array of live standing entries for the league |
| ↳ `id` | number | Unique id of the standing |
| ↳ `participant_id` | number | Team related to the standing |
| ↳ `sport_id` | number | Sport related to the standing |
| ↳ `league_id` | number | League related to the standing |
| ↳ `season_id` | number | Season related to the standing |
| ↳ `stage_id` | number | Stage related to the standing |
| ↳ `group_id` | number | Group related to the standing |
| ↳ `round_id` | number | Round related to the standing |
| ↳ `standing_rule_id` | number | Standing rule related to the standing |
| ↳ `position` | number | Position of the team in the standing |
| ↳ `result` | string | Movement of the team in the standing |
| ↳ `points` | number | Points the team has gathered |
### Get Livescores [#get-livescores]
Retrieve fixtures starting within 15 minutes and currently in progress from Sportmonks
#### Input [#input-41]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participants;scores;events) |
| `filters` | string | No | Filters to apply (e.g. fixtureLeagues:501) |
#### Output [#output-41]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------ |
| `fixtures` | array | Array of live fixture objects |
| ↳ `id` | number | Unique id of the fixture |
| ↳ `sport_id` | number | Sport the fixture is played at |
| ↳ `league_id` | number | League the fixture is played in |
| ↳ `season_id` | number | Season the fixture is played in |
| ↳ `stage_id` | number | Stage the fixture is played in |
| ↳ `group_id` | number | Group the fixture is played in |
| ↳ `aggregate_id` | number | Aggregate the fixture belongs to |
| ↳ `round_id` | number | Round the fixture is played in |
| ↳ `state_id` | number | State (status) of the fixture |
| ↳ `venue_id` | number | Venue the fixture is played at |
| ↳ `name` | string | Name of the fixture (participants) |
| ↳ `starting_at` | string | Datetime the fixture starts |
| ↳ `result_info` | string | Final result summary |
| ↳ `leg` | string | Leg of the fixture (e.g. 1/1) |
| ↳ `details` | string | Details about the fixture |
| ↳ `length` | number | Length of the fixture in minutes |
| ↳ `placeholder` | boolean | Whether the fixture is a placeholder |
| ↳ `has_odds` | boolean | Whether odds are available |
| ↳ `has_premium_odds` | boolean | Whether premium odds are available |
| ↳ `starting_at_timestamp` | number | UNIX timestamp of the start time |
### Get All Match Facts [#get-all-match-facts]
Retrieve all available match facts within your Sportmonks subscription (beta)
#### Input [#input-42]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. type;sport;fixture) |
| `filters` | string | No | Filters to apply (e.g. matchFactTypes:76088) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-42]
| Parameter | Type | Description |
| -------------------- | ------ | ------------------------------------------------ |
| `matchFacts` | array | Array of match fact objects |
| ↳ `id` | number | Unique id of the match fact |
| ↳ `sport_id` | number | Sport of the match fact |
| ↳ `fixture_id` | number | Fixture related to the match fact |
| ↳ `type_id` | number | Type of the match fact |
| ↳ `participant` | string | Team the fact relates to (home or away) |
| ↳ `basis` | string | Basis of the match fact (e.g. h2h, overall) |
| ↳ `data` | json | Match fact data payload (counts and percentages) |
| ↳ `natural_language` | string | Human-readable description of the match fact |
| ↳ `category` | string | Category of the match fact |
| ↳ `scope` | string | Scope of the match fact |
### Get Match Facts by Date Range [#get-match-facts-by-date-range]
Retrieve match facts within a date range (YYYY-MM-DD) from Sportmonks (beta)
#### Input [#input-43]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `startDate` | string | Yes | Start date in YYYY-MM-DD format |
| `endDate` | string | Yes | End date in YYYY-MM-DD format |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. type;sport;fixture) |
| `filters` | string | No | Filters to apply (e.g. matchFactTypes:76088) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-43]
| Parameter | Type | Description |
| -------------------- | ------ | ------------------------------------------------- |
| `matchFacts` | array | Array of match fact objects within the date range |
| ↳ `id` | number | Unique id of the match fact |
| ↳ `sport_id` | number | Sport of the match fact |
| ↳ `fixture_id` | number | Fixture related to the match fact |
| ↳ `type_id` | number | Type of the match fact |
| ↳ `participant` | string | Team the fact relates to (home or away) |
| ↳ `basis` | string | Basis of the match fact (e.g. h2h, overall) |
| ↳ `data` | json | Match fact data payload (counts and percentages) |
| ↳ `natural_language` | string | Human-readable description of the match fact |
| ↳ `category` | string | Category of the match fact |
| ↳ `scope` | string | Scope of the match fact |
### Get Match Facts by Fixture [#get-match-facts-by-fixture]
Retrieve match facts for a fixture ID from Sportmonks (beta)
#### Input [#input-44]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. type;sport;fixture) |
| `filters` | string | No | Filters to apply (e.g. matchFactTypes:76088) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-44]
| Parameter | Type | Description |
| -------------------- | ------ | ------------------------------------------------ |
| `matchFacts` | array | Array of match fact objects for the fixture |
| ↳ `id` | number | Unique id of the match fact |
| ↳ `sport_id` | number | Sport of the match fact |
| ↳ `fixture_id` | number | Fixture related to the match fact |
| ↳ `type_id` | number | Type of the match fact |
| ↳ `participant` | string | Team the fact relates to (home or away) |
| ↳ `basis` | string | Basis of the match fact (e.g. h2h, overall) |
| ↳ `data` | json | Match fact data payload (counts and percentages) |
| ↳ `natural_language` | string | Human-readable description of the match fact |
| ↳ `category` | string | Category of the match fact |
| ↳ `scope` | string | Scope of the match fact |
### Get Match Facts by League [#get-match-facts-by-league]
Retrieve match facts for a league ID from Sportmonks (beta)
#### Input [#input-45]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `leagueId` | string | Yes | The unique id of the league |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. type;sport;fixture) |
| `filters` | string | No | Filters to apply (e.g. matchFactTypes:76088) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-45]
| Parameter | Type | Description |
| -------------------- | ------ | ------------------------------------------------ |
| `matchFacts` | array | Array of match fact objects for the league |
| ↳ `id` | number | Unique id of the match fact |
| ↳ `sport_id` | number | Sport of the match fact |
| ↳ `fixture_id` | number | Fixture related to the match fact |
| ↳ `type_id` | number | Type of the match fact |
| ↳ `participant` | string | Team the fact relates to (home or away) |
| ↳ `basis` | string | Basis of the match fact (e.g. h2h, overall) |
| ↳ `data` | json | Match fact data payload (counts and percentages) |
| ↳ `natural_language` | string | Human-readable description of the match fact |
| ↳ `category` | string | Category of the match fact |
| ↳ `scope` | string | Scope of the match fact |
### Get Past Fixtures by TV Station [#get-past-fixtures-by-tv-station]
Retrieve all past fixtures that were available for a TV station ID from Sportmonks
#### Input [#input-46]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `tvStationId` | string | Yes | The unique id of the TV station |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participants) |
| `filters` | string | No | Filters to apply (e.g. fixtureLeagues:501) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-46]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------------------ |
| `fixtures` | array | Array of past fixture objects for the TV station |
| ↳ `id` | number | Unique id of the fixture |
| ↳ `sport_id` | number | Sport the fixture is played at |
| ↳ `league_id` | number | League the fixture is played in |
| ↳ `season_id` | number | Season the fixture is played in |
| ↳ `stage_id` | number | Stage the fixture is played in |
| ↳ `group_id` | number | Group the fixture is played in |
| ↳ `aggregate_id` | number | Aggregate the fixture belongs to |
| ↳ `round_id` | number | Round the fixture is played in |
| ↳ `state_id` | number | State (status) of the fixture |
| ↳ `venue_id` | number | Venue the fixture is played at |
| ↳ `name` | string | Name of the fixture (participants) |
| ↳ `starting_at` | string | Datetime the fixture starts |
| ↳ `result_info` | string | Final result summary |
| ↳ `leg` | string | Leg of the fixture (e.g. 1/1) |
| ↳ `details` | string | Details about the fixture |
| ↳ `length` | number | Length of the fixture in minutes |
| ↳ `placeholder` | boolean | Whether the fixture is a placeholder |
| ↳ `has_odds` | boolean | Whether odds are available |
| ↳ `has_premium_odds` | boolean | Whether premium odds are available |
| ↳ `starting_at_timestamp` | number | UNIX timestamp of the start time |
### Get Player by ID [#get-player-by-id]
Retrieve a single football player by their ID from Sportmonks
#### Input [#input-47]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `playerId` | string | Yes | The unique id of the player |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;position;teams.team;statistics) |
| `filters` | string | No | Filters to apply |
#### Output [#output-47]
| Parameter | Type | Description |
| ------------------------ | ------ | ------------------------------- |
| `player` | object | The requested player object |
| ↳ `id` | number | Unique id of the player |
| ↳ `sport_id` | number | Sport of the player |
| ↳ `country_id` | number | Country of birth of the player |
| ↳ `nationality_id` | number | Nationality of the player |
| ↳ `city_id` | number | City of birth of the player |
| ↳ `position_id` | number | Position of the player |
| ↳ `detailed_position_id` | number | Detailed position of the player |
| ↳ `type_id` | number | Type of the player |
| ↳ `common_name` | string | Name the player is known for |
| ↳ `firstname` | string | First name of the player |
| ↳ `lastname` | string | Last name of the player |
| ↳ `name` | string | Name of the player |
| ↳ `display_name` | string | Display name of the player |
| ↳ `image_path` | string | URL to the player headshot |
| ↳ `height` | number | Height of the player in cm |
| ↳ `weight` | number | Weight of the player in kg |
| ↳ `date_of_birth` | string | Date of birth of the player |
| ↳ `gender` | string | Gender of the player |
### Get Players by Country [#get-players-by-country]
Retrieve all players for a country ID from Sportmonks
#### Input [#input-48]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | -------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `countryId` | string | Yes | The unique id of the country |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. nationality;position) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order players by id (asc or desc) |
#### Output [#output-48]
| Parameter | Type | Description |
| ------------------------ | ------ | --------------------------------------- |
| `players` | array | Array of player objects for the country |
| ↳ `id` | number | Unique id of the player |
| ↳ `sport_id` | number | Sport of the player |
| ↳ `country_id` | number | Country of birth of the player |
| ↳ `nationality_id` | number | Nationality of the player |
| ↳ `city_id` | number | City of birth of the player |
| ↳ `position_id` | number | Position of the player |
| ↳ `detailed_position_id` | number | Detailed position of the player |
| ↳ `type_id` | number | Type of the player |
| ↳ `common_name` | string | Name the player is known for |
| ↳ `firstname` | string | First name of the player |
| ↳ `lastname` | string | Last name of the player |
| ↳ `name` | string | Name of the player |
| ↳ `display_name` | string | Display name of the player |
| ↳ `image_path` | string | URL to the player headshot |
| ↳ `height` | number | Height of the player in cm |
| ↳ `weight` | number | Weight of the player in kg |
| ↳ `date_of_birth` | string | Date of birth of the player |
| ↳ `gender` | string | Gender of the player |
### Get Post-Match News [#get-post-match-news]
Retrieve all post-match news articles available within your Sportmonks subscription
#### Input [#input-49]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. fixture;league) |
| `filters` | string | No | Filters to apply (e.g. newsitemLeagues:8) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order news by id (asc or desc) |
#### Output [#output-49]
| Parameter | Type | Description |
| -------------- | ------ | ---------------------------------------- |
| `news` | array | Array of post-match news articles |
| ↳ `id` | number | Unique id of the news article |
| ↳ `fixture_id` | number | Fixture related to the news article |
| ↳ `league_id` | number | League related to the news article |
| ↳ `title` | string | Title of the news article |
| ↳ `type` | string | Type of the news (prematch or postmatch) |
### Get Post-Match News by Season [#get-post-match-news-by-season]
Retrieve all post-match news articles for a season ID from Sportmonks
#### Input [#input-50]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. fixture;league) |
| `filters` | string | No | Filters to apply (e.g. newsitemLeagues:8) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order news (asc or desc) |
#### Output [#output-50]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------------------ |
| `news` | array | Array of post-match news articles for the season |
| ↳ `id` | number | Unique id of the news article |
| ↳ `fixture_id` | number | Fixture related to the news article |
| ↳ `league_id` | number | League related to the news article |
| ↳ `title` | string | Title of the news article |
| ↳ `type` | string | Type of the news (prematch or postmatch) |
### Get Predictability by League [#get-predictability-by-league]
Retrieve the predictions model performance for a league ID from Sportmonks
#### Input [#input-51]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `leagueId` | string | Yes | The unique id of the league |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. type;league) |
| `filters` | string | No | Filters to apply (e.g. predictabilityTypes:245) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-51]
| Parameter | Type | Description |
| ---------------- | ------ | ---------------------------------------------- |
| `predictability` | array | Array of predictability records for the league |
| ↳ `id` | number | Unique id of the predictability record |
| ↳ `league_id` | number | League related to the predictability |
| ↳ `type_id` | number | Type of the predictability |
| ↳ `data` | json | Predictability values per market |
### Get Pre-Match News [#get-pre-match-news]
Retrieve all pre-match news articles available within your Sportmonks subscription
#### Input [#input-52]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. fixture;league) |
| `filters` | string | No | Filters to apply (e.g. newsitemLeagues:8) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order news by id (asc or desc) |
#### Output [#output-52]
| Parameter | Type | Description |
| -------------- | ------ | ---------------------------------------- |
| `news` | array | Array of pre-match news articles |
| ↳ `id` | number | Unique id of the news article |
| ↳ `fixture_id` | number | Fixture related to the news article |
| ↳ `league_id` | number | League related to the news article |
| ↳ `title` | string | Title of the news article |
| ↳ `type` | string | Type of the news (prematch or postmatch) |
### Get Pre-Match News by Season [#get-pre-match-news-by-season]
Retrieve all pre-match news articles for a season ID from Sportmonks
#### Input [#input-53]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. fixture;league) |
| `filters` | string | No | Filters to apply (e.g. newsitemLeagues:8) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order news (asc or desc) |
#### Output [#output-53]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------- |
| `news` | array | Array of pre-match news articles for the season |
| ↳ `id` | number | Unique id of the news article |
| ↳ `fixture_id` | number | Fixture related to the news article |
| ↳ `league_id` | number | League related to the news article |
| ↳ `title` | string | Title of the news article |
| ↳ `type` | string | Type of the news (prematch or postmatch) |
### Get Pre-Match News for Upcoming Fixtures [#get-pre-match-news-for-upcoming-fixtures]
Retrieve all pre-match news articles for upcoming fixtures from Sportmonks
#### Input [#input-54]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. fixture;league) |
| `filters` | string | No | Filters to apply (e.g. newsitemLeagues:8) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order news (asc or desc) |
#### Output [#output-54]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------------------------ |
| `news` | array | Array of pre-match news articles for upcoming fixtures |
| ↳ `id` | number | Unique id of the news article |
| ↳ `fixture_id` | number | Fixture related to the news article |
| ↳ `league_id` | number | League related to the news article |
| ↳ `title` | string | Title of the news article |
| ↳ `type` | string | Type of the news (prematch or postmatch) |
### Get Probabilities [#get-probabilities]
Retrieve all prediction probabilities available within your Sportmonks subscription
#### Input [#input-55]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. type;fixture) |
| `filters` | string | No | Filters to apply (e.g. predictionTypes:236) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-55]
| Parameter | Type | Description |
| --------------- | ------ | ---------------------------------------------------------------------- |
| `predictions` | array | Array of prediction probability objects |
| ↳ `id` | number | Unique id of the prediction |
| ↳ `fixture_id` | number | Fixture related to the prediction |
| ↳ `predictions` | json | Prediction payload (varies by type: score map, value bet object, etc.) |
| ↳ `type_id` | number | Type of the prediction |
### Get Predictions by Fixture [#get-predictions-by-fixture]
Retrieve prediction probabilities for a fixture by fixture ID from Sportmonks
#### Input [#input-56]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. type;fixture) |
| `filters` | string | No | Filters to apply (e.g. predictionTypes:236) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-56]
| Parameter | Type | Description |
| --------------- | ------ | ---------------------------------------------------------------------- |
| `predictions` | array | Array of prediction probability entries for the fixture |
| ↳ `id` | number | Unique id of the prediction |
| ↳ `fixture_id` | number | Fixture related to the prediction |
| ↳ `predictions` | json | Prediction payload (varies by type: score map, value bet object, etc.) |
| ↳ `type_id` | number | Type of the prediction |
### Get Referee by ID [#get-referee-by-id]
Retrieve a single football referee by their ID from Sportmonks
#### Input [#input-57]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `refereeId` | string | Yes | The unique id of the referee |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;statistics) |
| `filters` | string | No | Filters to apply |
#### Output [#output-57]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------- |
| `referee` | object | The requested referee object |
| ↳ `id` | number | Unique id of the referee |
| ↳ `sport_id` | number | Sport of the referee |
| ↳ `country_id` | number | Country of the referee |
| ↳ `nationality_id` | number | Nationality of the referee |
| ↳ `city_id` | number | Birth city of the referee |
| ↳ `common_name` | string | Common name of the referee |
| ↳ `firstname` | string | First name of the referee |
| ↳ `lastname` | string | Last name of the referee |
| ↳ `name` | string | Name of the referee |
| ↳ `display_name` | string | Display name of the referee |
| ↳ `image_path` | string | URL to the referee headshot |
| ↳ `height` | number | Height of the referee in cm |
| ↳ `weight` | number | Weight of the referee in kg |
| ↳ `date_of_birth` | string | Date of birth of the referee |
| ↳ `gender` | string | Gender of the referee |
### Get Referees [#get-referees]
Retrieve all football referees available within your Sportmonks subscription
#### Input [#input-58]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;statistics) |
| `filters` | string | No | Filters to apply (e.g. refereeCountries:44) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-58]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------- |
| `referees` | array | Array of referee objects |
| ↳ `id` | number | Unique id of the referee |
| ↳ `sport_id` | number | Sport of the referee |
| ↳ `country_id` | number | Country of the referee |
| ↳ `nationality_id` | number | Nationality of the referee |
| ↳ `city_id` | number | Birth city of the referee |
| ↳ `common_name` | string | Common name of the referee |
| ↳ `firstname` | string | First name of the referee |
| ↳ `lastname` | string | Last name of the referee |
| ↳ `name` | string | Name of the referee |
| ↳ `display_name` | string | Display name of the referee |
| ↳ `image_path` | string | URL to the referee headshot |
| ↳ `height` | number | Height of the referee in cm |
| ↳ `weight` | number | Weight of the referee in kg |
| ↳ `date_of_birth` | string | Date of birth of the referee |
| ↳ `gender` | string | Gender of the referee |
### Get Referees by Country [#get-referees-by-country]
Retrieve all referees for a country ID from Sportmonks
#### Input [#input-59]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `countryId` | string | Yes | The unique id of the country |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;nationality) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-59]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------------------- |
| `referees` | array | Array of referee objects for the country |
| ↳ `id` | number | Unique id of the referee |
| ↳ `sport_id` | number | Sport of the referee |
| ↳ `country_id` | number | Country of the referee |
| ↳ `nationality_id` | number | Nationality of the referee |
| ↳ `city_id` | number | Birth city of the referee |
| ↳ `common_name` | string | Common name of the referee |
| ↳ `firstname` | string | First name of the referee |
| ↳ `lastname` | string | Last name of the referee |
| ↳ `name` | string | Name of the referee |
| ↳ `display_name` | string | Display name of the referee |
| ↳ `image_path` | string | URL to the referee headshot |
| ↳ `height` | number | Height of the referee in cm |
| ↳ `weight` | number | Weight of the referee in kg |
| ↳ `date_of_birth` | string | Date of birth of the referee |
| ↳ `gender` | string | Gender of the referee |
### Get Referees by Season [#get-referees-by-season]
Retrieve all referees for a season ID from Sportmonks
#### Input [#input-60]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;nationality) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-60]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------------------- |
| `referees` | array | Array of referee objects for the season |
| ↳ `id` | number | Unique id of the referee |
| ↳ `sport_id` | number | Sport of the referee |
| ↳ `country_id` | number | Country of the referee |
| ↳ `nationality_id` | number | Nationality of the referee |
| ↳ `city_id` | number | Birth city of the referee |
| ↳ `common_name` | string | Common name of the referee |
| ↳ `firstname` | string | First name of the referee |
| ↳ `lastname` | string | Last name of the referee |
| ↳ `name` | string | Name of the referee |
| ↳ `display_name` | string | Display name of the referee |
| ↳ `image_path` | string | URL to the referee headshot |
| ↳ `height` | number | Height of the referee in cm |
| ↳ `weight` | number | Weight of the referee in kg |
| ↳ `date_of_birth` | string | Date of birth of the referee |
| ↳ `gender` | string | Gender of the referee |
### Get Rivals by Team [#get-rivals-by-team]
Retrieve rival teams for a team by team ID from Sportmonks
#### Input [#input-61]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `teamId` | string | Yes | The unique id of the team |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. team;rival) |
#### Output [#output-61]
| Parameter | Type | Description |
| ------------ | ------ | ----------------------------------------- |
| `rivals` | array | Array of rival relationships for the team |
| ↳ `sport_id` | number | Sport of the rival |
| ↳ `team_id` | number | Team the rivalry belongs to |
| ↳ `rival_id` | number | Rival team id |
### Get Round by ID [#get-round-by-id]
Retrieve a single football round by its ID from Sportmonks
#### Input [#input-62]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `roundId` | string | Yes | The unique id of the round |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. league;season;stage;fixtures) |
| `filters` | string | No | Filters to apply |
#### Output [#output-62]
| Parameter | Type | Description |
| ------------------------- | ------- | ---------------------------------------- |
| `round` | object | The requested round object |
| ↳ `id` | number | Unique id of the round |
| ↳ `sport_id` | number | Sport of the round |
| ↳ `league_id` | number | League of the round |
| ↳ `season_id` | number | Season of the round |
| ↳ `stage_id` | number | Stage of the round |
| ↳ `name` | string | Name of the round |
| ↳ `finished` | boolean | Whether the round is finished |
| ↳ `is_current` | boolean | Whether the round is the current round |
| ↳ `starting_at` | string | Start date of the round |
| ↳ `ending_at` | string | End date of the round |
| ↳ `games_in_current_week` | boolean | Whether the round has fixtures this week |
### Get Round Statistics [#get-round-statistics]
Retrieve all available statistics for a round ID from Sportmonks
#### Input [#input-63]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `roundId` | string | Yes | The unique id of the round |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participant) |
| `filters` | string | No | Filters to apply (e.g. seasonstatisticTypes:52,88) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-63]
| Parameter | Type | Description |
| --------------- | ------ | ---------------------------------------------------- |
| `statistics` | array | Array of statistic entries for the round |
| ↳ `id` | number | Unique id of the statistic record |
| ↳ `model_id` | number | Id of the entity the statistic belongs to |
| ↳ `type_id` | number | Type of the statistic |
| ↳ `relation_id` | number | Related entity id (e.g. participant) when applicable |
| ↳ `value` | json | Statistic value payload (varies by type) |
### Get Rounds [#get-rounds]
Retrieve all football rounds available within your Sportmonks subscription
#### Input [#input-64]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. league;season;stage) |
| `filters` | string | No | Filters to apply (e.g. roundSeasons:19735) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-64]
| Parameter | Type | Description |
| ------------------------- | ------- | ---------------------------------------- |
| `rounds` | array | Array of round objects |
| ↳ `id` | number | Unique id of the round |
| ↳ `sport_id` | number | Sport of the round |
| ↳ `league_id` | number | League of the round |
| ↳ `season_id` | number | Season of the round |
| ↳ `stage_id` | number | Stage of the round |
| ↳ `name` | string | Name of the round |
| ↳ `finished` | boolean | Whether the round is finished |
| ↳ `is_current` | boolean | Whether the round is the current round |
| ↳ `starting_at` | string | Start date of the round |
| ↳ `ending_at` | string | End date of the round |
| ↳ `games_in_current_week` | boolean | Whether the round has fixtures this week |
### Get Rounds by Season [#get-rounds-by-season]
Retrieve all rounds for a season ID from Sportmonks
#### Input [#input-65]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. league;stage) |
| `filters` | string | No | Filters to apply |
#### Output [#output-65]
| Parameter | Type | Description |
| ------------------------- | ------- | ---------------------------------------- |
| `rounds` | array | Array of round objects for the season |
| ↳ `id` | number | Unique id of the round |
| ↳ `sport_id` | number | Sport of the round |
| ↳ `league_id` | number | League of the round |
| ↳ `season_id` | number | Season of the round |
| ↳ `stage_id` | number | Stage of the round |
| ↳ `name` | string | Name of the round |
| ↳ `finished` | boolean | Whether the round is finished |
| ↳ `is_current` | boolean | Whether the round is the current round |
| ↳ `starting_at` | string | Start date of the round |
| ↳ `ending_at` | string | End date of the round |
| ↳ `games_in_current_week` | boolean | Whether the round has fixtures this week |
### Get Schedules by Season [#get-schedules-by-season]
Retrieve the full schedule (stages, rounds and fixtures) for a season by season ID
#### Input [#input-66]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
#### Output [#output-66]
| Parameter | Type | Description |
| ----------- | ---- | ---------------------------------------------------------------------------------- |
| `schedules` | json | Array of stages, each with nested rounds and their fixtures (participants, scores) |
### Get Schedules by Season and Team [#get-schedules-by-season-and-team]
Retrieve the full season schedule for a specific team by season ID and team ID
#### Input [#input-67]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
| `teamId` | string | Yes | The unique id of the team |
#### Output [#output-67]
| Parameter | Type | Description |
| ----------- | ---- | -------------------------------------------------------------------------------------- |
| `schedules` | json | Array of stages, each with nested rounds and their fixtures for the team in the season |
### Get Schedules by Team [#get-schedules-by-team]
Retrieve the full schedule (stages, rounds and fixtures) for a team by team ID
#### Input [#input-68]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `teamId` | string | Yes | The unique id of the team |
#### Output [#output-68]
| Parameter | Type | Description |
| ----------- | ---- | ---------------------------------------------------------------------------------- |
| `schedules` | json | Array of stages, each with nested rounds and their fixtures (participants, scores) |
### Get Season by ID [#get-season-by-id]
Retrieve a single football season by its ID from Sportmonks
#### Input [#input-69]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. league;stages;fixtures) |
| `filters` | string | No | Filters to apply |
#### Output [#output-69]
| Parameter | Type | Description |
| ----------------------------- | ------- | ----------------------------------------- |
| `season` | object | The requested season object |
| ↳ `id` | number | Unique id of the season |
| ↳ `sport_id` | number | Sport of the season |
| ↳ `league_id` | number | League of the season |
| ↳ `tie_breaker_rule_id` | number | Tie-breaker rule of the season |
| ↳ `name` | string | Name of the season (e.g. 2023/2024) |
| ↳ `finished` | boolean | Whether the season is finished |
| ↳ `pending` | boolean | Whether the season is pending |
| ↳ `is_current` | boolean | Whether the season is the current season |
| ↳ `standing_method` | string | Standing calculation method |
| ↳ `starting_at` | string | Start date of the season |
| ↳ `ending_at` | string | End date of the season |
| ↳ `standings_recalculated_at` | string | Last standings recalculation time |
| ↳ `games_in_current_week` | boolean | Whether the season has fixtures this week |
### Get Seasons [#get-seasons]
Retrieve all football seasons available within your Sportmonks subscription
#### Input [#input-70]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. league;stages) |
| `filters` | string | No | Filters to apply (e.g. seasonLeagues:501) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-70]
| Parameter | Type | Description |
| ----------------------------- | ------- | ----------------------------------------- |
| `seasons` | array | Array of season objects |
| ↳ `id` | number | Unique id of the season |
| ↳ `sport_id` | number | Sport of the season |
| ↳ `league_id` | number | League of the season |
| ↳ `tie_breaker_rule_id` | number | Tie-breaker rule of the season |
| ↳ `name` | string | Name of the season (e.g. 2023/2024) |
| ↳ `finished` | boolean | Whether the season is finished |
| ↳ `pending` | boolean | Whether the season is pending |
| ↳ `is_current` | boolean | Whether the season is the current season |
| ↳ `standing_method` | string | Standing calculation method |
| ↳ `starting_at` | string | Start date of the season |
| ↳ `ending_at` | string | End date of the season |
| ↳ `standings_recalculated_at` | string | Last standings recalculation time |
| ↳ `games_in_current_week` | boolean | Whether the season has fixtures this week |
### Get Seasons by Team [#get-seasons-by-team]
Retrieve all seasons for a team ID from Sportmonks
#### Input [#input-71]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `teamId` | string | Yes | The unique id of the team |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. league;stages) |
| `filters` | string | No | Filters to apply |
#### Output [#output-71]
| Parameter | Type | Description |
| ----------------------------- | ------- | ----------------------------------------- |
| `seasons` | array | Array of season objects for the team |
| ↳ `id` | number | Unique id of the season |
| ↳ `sport_id` | number | Sport of the season |
| ↳ `league_id` | number | League of the season |
| ↳ `tie_breaker_rule_id` | number | Tie-breaker rule of the season |
| ↳ `name` | string | Name of the season (e.g. 2023/2024) |
| ↳ `finished` | boolean | Whether the season is finished |
| ↳ `pending` | boolean | Whether the season is pending |
| ↳ `is_current` | boolean | Whether the season is the current season |
| ↳ `standing_method` | string | Standing calculation method |
| ↳ `starting_at` | string | Start date of the season |
| ↳ `ending_at` | string | End date of the season |
| ↳ `standings_recalculated_at` | string | Last standings recalculation time |
| ↳ `games_in_current_week` | boolean | Whether the season has fixtures this week |
### Get Stage by ID [#get-stage-by-id]
Retrieve a single football stage by its ID from Sportmonks
#### Input [#input-72]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `stageId` | string | Yes | The unique id of the stage |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. league;season;rounds) |
| `filters` | string | No | Filters to apply |
#### Output [#output-72]
| Parameter | Type | Description |
| ------------------------- | ------- | ---------------------------------------- |
| `stage` | object | The requested stage object |
| ↳ `id` | number | Unique id of the stage |
| ↳ `sport_id` | number | Sport of the stage |
| ↳ `league_id` | number | League of the stage |
| ↳ `season_id` | number | Season of the stage |
| ↳ `type_id` | number | Type of the stage |
| ↳ `name` | string | Name of the stage |
| ↳ `sort_order` | number | Sort order of the stage |
| ↳ `finished` | boolean | Whether the stage is finished |
| ↳ `is_current` | boolean | Whether the stage is the current stage |
| ↳ `starting_at` | string | Start date of the stage |
| ↳ `ending_at` | string | End date of the stage |
| ↳ `games_in_current_week` | boolean | Whether the stage has fixtures this week |
### Get Stage Statistics [#get-stage-statistics]
Retrieve all available statistics for a stage ID from Sportmonks
#### Input [#input-73]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `stageId` | string | Yes | The unique id of the stage |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participant) |
| `filters` | string | No | Filters to apply (e.g. seasonstatisticTypes:52,88) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-73]
| Parameter | Type | Description |
| --------------- | ------ | ---------------------------------------------------- |
| `statistics` | array | Array of statistic entries for the stage |
| ↳ `id` | number | Unique id of the statistic record |
| ↳ `model_id` | number | Id of the entity the statistic belongs to |
| ↳ `type_id` | number | Type of the statistic |
| ↳ `relation_id` | number | Related entity id (e.g. participant) when applicable |
| ↳ `value` | json | Statistic value payload (varies by type) |
### Get Stages [#get-stages]
Retrieve all football stages available within your Sportmonks subscription
#### Input [#input-74]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. league;season;rounds) |
| `filters` | string | No | Filters to apply (e.g. stageSeasons:19735) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-74]
| Parameter | Type | Description |
| ------------------------- | ------- | ---------------------------------------- |
| `stages` | array | Array of stage objects |
| ↳ `id` | number | Unique id of the stage |
| ↳ `sport_id` | number | Sport of the stage |
| ↳ `league_id` | number | League of the stage |
| ↳ `season_id` | number | Season of the stage |
| ↳ `type_id` | number | Type of the stage |
| ↳ `name` | string | Name of the stage |
| ↳ `sort_order` | number | Sort order of the stage |
| ↳ `finished` | boolean | Whether the stage is finished |
| ↳ `is_current` | boolean | Whether the stage is the current stage |
| ↳ `starting_at` | string | Start date of the stage |
| ↳ `ending_at` | string | End date of the stage |
| ↳ `games_in_current_week` | boolean | Whether the stage has fixtures this week |
### Get Stages by Season [#get-stages-by-season]
Retrieve all stages for a season ID from Sportmonks
#### Input [#input-75]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. league;rounds) |
| `filters` | string | No | Filters to apply |
#### Output [#output-75]
| Parameter | Type | Description |
| ------------------------- | ------- | ---------------------------------------- |
| `stages` | array | Array of stage objects for the season |
| ↳ `id` | number | Unique id of the stage |
| ↳ `sport_id` | number | Sport of the stage |
| ↳ `league_id` | number | League of the stage |
| ↳ `season_id` | number | Season of the stage |
| ↳ `type_id` | number | Type of the stage |
| ↳ `name` | string | Name of the stage |
| ↳ `sort_order` | number | Sort order of the stage |
| ↳ `finished` | boolean | Whether the stage is finished |
| ↳ `is_current` | boolean | Whether the stage is the current stage |
| ↳ `starting_at` | string | Start date of the stage |
| ↳ `ending_at` | string | End date of the stage |
| ↳ `games_in_current_week` | boolean | Whether the stage has fixtures this week |
### Get Standing Corrections by Season [#get-standing-corrections-by-season]
Retrieve point corrections (awarded or deducted) for a season ID from Sportmonks
#### Input [#input-76]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participant;stage) |
| `filters` | string | No | Filters to apply |
#### Output [#output-76]
| Parameter | Type | Description |
| -------------------- | ------- | --------------------------------------------------- |
| `corrections` | array | Array of standing correction entries for the season |
| ↳ `id` | number | Unique id of the standing correction |
| ↳ `season_id` | number | Season related to the correction |
| ↳ `stage_id` | number | Stage related to the correction |
| ↳ `group_id` | number | Group related to the correction |
| ↳ `type_id` | number | Type of the correction |
| ↳ `value` | number | Amount of points awarded or deducted |
| ↳ `calc_type` | string | Calculation type applied (e.g. + or -) |
| ↳ `participant_type` | string | Type of the participant (e.g. team) |
| ↳ `participant_id` | number | Participant the correction applies to |
| ↳ `active` | boolean | Whether the correction is active |
### Get All Standings [#get-all-standings]
Retrieve all standings available within your Sportmonks subscription
#### Input [#input-77]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participant;league;season) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-77]
| Parameter | Type | Description |
| -------------------- | ------ | ------------------------------------- |
| `standings` | array | Array of standing entries |
| ↳ `id` | number | Unique id of the standing |
| ↳ `participant_id` | number | Team related to the standing |
| ↳ `sport_id` | number | Sport related to the standing |
| ↳ `league_id` | number | League related to the standing |
| ↳ `season_id` | number | Season related to the standing |
| ↳ `stage_id` | number | Stage related to the standing |
| ↳ `group_id` | number | Group related to the standing |
| ↳ `round_id` | number | Round related to the standing |
| ↳ `standing_rule_id` | number | Standing rule related to the standing |
| ↳ `position` | number | Position of the team in the standing |
| ↳ `result` | string | Movement of the team in the standing |
| ↳ `points` | number | Points the team has gathered |
### Get Standings by Round [#get-standings-by-round]
Retrieve the full standing table for a round ID from Sportmonks
#### Input [#input-78]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `roundId` | string | Yes | The unique id of the round |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participant;details) |
| `filters` | string | No | Filters to apply (e.g. standingGroups:246697) |
#### Output [#output-78]
| Parameter | Type | Description |
| -------------------- | ------ | --------------------------------------- |
| `standings` | array | Array of standing entries for the round |
| ↳ `id` | number | Unique id of the standing |
| ↳ `participant_id` | number | Team related to the standing |
| ↳ `sport_id` | number | Sport related to the standing |
| ↳ `league_id` | number | League related to the standing |
| ↳ `season_id` | number | Season related to the standing |
| ↳ `stage_id` | number | Stage related to the standing |
| ↳ `group_id` | number | Group related to the standing |
| ↳ `round_id` | number | Round related to the standing |
| ↳ `standing_rule_id` | number | Standing rule related to the standing |
| ↳ `position` | number | Position of the team in the standing |
| ↳ `result` | string | Movement of the team in the standing |
| ↳ `points` | number | Points the team has gathered |
### Get Standings by Season [#get-standings-by-season]
Retrieve the full league standings table for a season by season ID from Sportmonks
#### Input [#input-79]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participant;details;form) |
| `filters` | string | No | Filters to apply (e.g. standingStages:77453568) |
#### Output [#output-79]
| Parameter | Type | Description |
| -------------------- | ------ | ---------------------------------------- |
| `standings` | array | Array of standing entries for the season |
| ↳ `id` | number | Unique id of the standing |
| ↳ `participant_id` | number | Team related to the standing |
| ↳ `sport_id` | number | Sport related to the standing |
| ↳ `league_id` | number | League related to the standing |
| ↳ `season_id` | number | Season related to the standing |
| ↳ `stage_id` | number | Stage related to the standing |
| ↳ `group_id` | number | Group related to the standing |
| ↳ `round_id` | number | Round related to the standing |
| ↳ `standing_rule_id` | number | Standing rule related to the standing |
| ↳ `position` | number | Position of the team in the standing |
| ↳ `result` | string | Movement of the team in the standing |
| ↳ `points` | number | Points the team has gathered |
### Get State by ID [#get-state-by-id]
Retrieve a single fixture state by its ID from Sportmonks
#### Input [#input-80]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `stateId` | string | Yes | The unique id of the state |
#### Output [#output-80]
| Parameter | Type | Description |
| ------------------ | ------ | ----------------------------------------- |
| `state` | object | The requested fixture state object |
| ↳ `id` | number | Unique id of the state |
| ↳ `state` | string | State code (e.g. NS, INPLAY\_1ST\_HALF) |
| ↳ `name` | string | Full name of the state (e.g. Not Started) |
| ↳ `short_name` | string | Short name of the state (e.g. NS) |
| ↳ `developer_name` | string | Developer name of the state |
### Get States [#get-states]
Retrieve all fixture states (e.g. Not Started, 1st Half, Full Time) from Sportmonks
#### Input [#input-81]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-81]
| Parameter | Type | Description |
| ------------------ | ------ | ----------------------------------------- |
| `states` | array | Array of fixture state objects |
| ↳ `id` | number | Unique id of the state |
| ↳ `state` | string | State code (e.g. NS, INPLAY\_1ST\_HALF) |
| ↳ `name` | string | Full name of the state (e.g. Not Started) |
| ↳ `short_name` | string | Short name of the state (e.g. NS) |
| ↳ `developer_name` | string | Developer name of the state |
### Get Team by ID [#get-team-by-id]
Retrieve a single football team by its ID from Sportmonks
#### Input [#input-82]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `teamId` | string | Yes | The unique id of the team |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;venue;coaches;players.player) |
| `filters` | string | No | Filters to apply |
#### Output [#output-82]
| Parameter | Type | Description |
| ------------------ | ------- | -------------------------------------- |
| `team` | object | The requested team object |
| ↳ `id` | number | Unique id of the team |
| ↳ `sport_id` | number | Sport of the team |
| ↳ `country_id` | number | Country of the team |
| ↳ `venue_id` | number | Home venue of the team |
| ↳ `gender` | string | Gender of the team |
| ↳ `name` | string | Name of the team |
| ↳ `short_code` | string | Short code of the team |
| ↳ `image_path` | string | URL to the team logo |
| ↳ `founded` | number | Founding year of the team |
| ↳ `type` | string | Type of the team |
| ↳ `placeholder` | boolean | Whether the team is a placeholder |
| ↳ `last_played_at` | string | Date and time of the last played match |
### Get All Team Rankings [#get-all-team-rankings]
Retrieve all team rankings available within your Sportmonks subscription (beta)
#### Input [#input-83]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. team) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-83]
| Parameter | Type | Description |
| ---------------- | ------ | ---------------------------------- |
| `teamRankings` | array | Array of team ranking objects |
| ↳ `id` | number | Unique id of the team ranking |
| ↳ `team_id` | number | Team related to the ranking |
| ↳ `date` | string | Date of the ranking |
| ↳ `current_rank` | number | Placement of the team on that date |
| ↳ `scaled_score` | number | Scaled score of the team (0-100) |
### Get Team Rankings by Date [#get-team-rankings-by-date]
Retrieve team rankings for a given date (YYYY-MM-DD) from Sportmonks (beta)
#### Input [#input-84]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `date` | string | Yes | The ranking date in YYYY-MM-DD format |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. team) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-84]
| Parameter | Type | Description |
| ---------------- | ------ | ------------------------------------------ |
| `teamRankings` | array | Array of team ranking objects for the date |
| ↳ `id` | number | Unique id of the team ranking |
| ↳ `team_id` | number | Team related to the ranking |
| ↳ `date` | string | Date of the ranking |
| ↳ `current_rank` | number | Placement of the team on that date |
| ↳ `scaled_score` | number | Scaled score of the team (0-100) |
### Get Team Rankings by Team [#get-team-rankings-by-team]
Retrieve team rankings for a team ID from Sportmonks (beta)
#### Input [#input-85]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `teamId` | string | Yes | The unique id of the team |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. team) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-85]
| Parameter | Type | Description |
| ---------------- | ------ | ------------------------------------------ |
| `teamRankings` | array | Array of team ranking objects for the team |
| ↳ `id` | number | Unique id of the team ranking |
| ↳ `team_id` | number | Team related to the ranking |
| ↳ `date` | string | Date of the ranking |
| ↳ `current_rank` | number | Placement of the team on that date |
| ↳ `scaled_score` | number | Scaled score of the team (0-100) |
### Get Team Squad [#get-team-squad]
Retrieve the current domestic squad for a team by team ID from Sportmonks
#### Input [#input-86]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `teamId` | string | Yes | The unique id of the team |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. player;position) |
| `filters` | string | No | Filters to apply |
#### Output [#output-86]
| Parameter | Type | Description |
| ------------------------ | ------ | -------------------------------------------- |
| `squad` | array | Array of squad entries for the team |
| ↳ `id` | number | Unique id of the squad record |
| ↳ `transfer_id` | number | Transfer id of the squad record |
| ↳ `player_id` | number | Player in the squad |
| ↳ `team_id` | number | Team of the squad |
| ↳ `position_id` | number | Position of the player in the squad |
| ↳ `detailed_position_id` | number | Detailed position of the player in the squad |
| ↳ `jersey_number` | number | Jersey number of the player |
| ↳ `start` | string | Start contract date of the player |
| ↳ `end` | string | End contract date of the player |
### Get Team Squad by Season [#get-team-squad-by-season]
Retrieve the (historical) squad for a team in a specific season from Sportmonks
#### Input [#input-87]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
| `teamId` | string | Yes | The unique id of the team |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. player;position) |
| `filters` | string | No | Filters to apply |
#### Output [#output-87]
| Parameter | Type | Description |
| ------------------------ | ------ | ------------------------------------------------- |
| `squad` | array | Array of squad entries for the team in the season |
| ↳ `id` | number | Unique id of the squad record |
| ↳ `transfer_id` | number | Transfer id of the squad record |
| ↳ `player_id` | number | Player in the squad |
| ↳ `team_id` | number | Team of the squad |
| ↳ `position_id` | number | Position of the player in the squad |
| ↳ `detailed_position_id` | number | Detailed position of the player in the squad |
| ↳ `jersey_number` | number | Jersey number of the player |
| ↳ `start` | string | Start contract date of the player |
| ↳ `end` | string | End contract date of the player |
### Get Teams by Country [#get-teams-by-country]
Retrieve all teams for a country ID from Sportmonks
#### Input [#input-88]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `countryId` | string | Yes | The unique id of the country |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;venue) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order teams by id (asc or desc) |
#### Output [#output-88]
| Parameter | Type | Description |
| ------------------ | ------- | -------------------------------------- |
| `teams` | array | Array of team objects for the country |
| ↳ `id` | number | Unique id of the team |
| ↳ `sport_id` | number | Sport of the team |
| ↳ `country_id` | number | Country of the team |
| ↳ `venue_id` | number | Home venue of the team |
| ↳ `gender` | string | Gender of the team |
| ↳ `name` | string | Name of the team |
| ↳ `short_code` | string | Short code of the team |
| ↳ `image_path` | string | URL to the team logo |
| ↳ `founded` | number | Founding year of the team |
| ↳ `type` | string | Type of the team |
| ↳ `placeholder` | boolean | Whether the team is a placeholder |
| ↳ `last_played_at` | string | Date and time of the last played match |
### Get Teams by Season [#get-teams-by-season]
Retrieve all teams for a season ID from Sportmonks
#### Input [#input-89]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;venue) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order teams by id (asc or desc) |
#### Output [#output-89]
| Parameter | Type | Description |
| ------------------ | ------- | -------------------------------------- |
| `teams` | array | Array of team objects for the season |
| ↳ `id` | number | Unique id of the team |
| ↳ `sport_id` | number | Sport of the team |
| ↳ `country_id` | number | Country of the team |
| ↳ `venue_id` | number | Home venue of the team |
| ↳ `gender` | string | Gender of the team |
| ↳ `name` | string | Name of the team |
| ↳ `short_code` | string | Short code of the team |
| ↳ `image_path` | string | URL to the team logo |
| ↳ `founded` | number | Founding year of the team |
| ↳ `type` | string | Type of the team |
| ↳ `placeholder` | boolean | Whether the team is a placeholder |
| ↳ `last_played_at` | string | Date and time of the last played match |
### Get Topscorers by Season [#get-topscorers-by-season]
Retrieve the topscorers (goals, assists, cards) for a season by season ID from Sportmonks
#### Input [#input-90]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. player;participant;type) |
| `filters` | string | No | Filters to apply (e.g. seasontopscorerTypes:208) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order topscorers by position (asc or desc) |
#### Output [#output-90]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------------------ |
| `topscorers` | array | Array of topscorer entries for the season |
| ↳ `id` | number | Unique id of the topscorer record |
| ↳ `season_id` | number | Season related to the topscorer (absent on stage topscorers) |
| ↳ `league_id` | number | League related to the topscorer |
| ↳ `stage_id` | number | Stage related to the topscorer |
| ↳ `player_id` | number | Player related to the topscorer |
| ↳ `participant_id` | number | Team related to the topscorer |
| ↳ `type_id` | number | Type of the topscorer (goals, assists, cards) |
| ↳ `position` | number | Position of the topscorer |
| ↳ `total` | number | Number of goals, assists or cards |
### Get Topscorers by Stage [#get-topscorers-by-stage]
Retrieve topscorers for a stage by stage ID from Sportmonks
#### Input [#input-91]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `stageId` | string | Yes | The unique id of the stage |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. player;participant;type) |
| `filters` | string | No | Filters to apply (e.g. stageTopscorerTypes:208) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-91]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------------------ |
| `topscorers` | array | Array of topscorer entries for the stage |
| ↳ `id` | number | Unique id of the topscorer record |
| ↳ `season_id` | number | Season related to the topscorer (absent on stage topscorers) |
| ↳ `league_id` | number | League related to the topscorer |
| ↳ `stage_id` | number | Stage related to the topscorer |
| ↳ `player_id` | number | Player related to the topscorer |
| ↳ `participant_id` | number | Team related to the topscorer |
| ↳ `type_id` | number | Type of the topscorer (goals, assists, cards) |
| ↳ `position` | number | Position of the topscorer |
| ↳ `total` | number | Number of goals, assists or cards |
### Get All Team of the Week [#get-all-team-of-the-week]
Retrieve all available Team of the Week (TOTW) entries from Sportmonks
#### Input [#input-92]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. fixture;team;player;round) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-92]
| Parameter | Type | Description |
| ---------------------- | ------ | ------------------------------------- |
| `totw` | array | Array of Team of the Week entries |
| ↳ `id` | number | Unique id of the TOTW entry |
| ↳ `player_id` | number | Player of the team of the week |
| ↳ `fixture_id` | number | Fixture the TOTW player played in |
| ↳ `round_id` | number | Round the fixture is played at |
| ↳ `team_id` | number | Team the TOTW player played for |
| ↳ `rating` | string | Rating of the TOTW player |
| ↳ `formation_position` | number | Player position in the TOTW formation |
| ↳ `formation` | string | The TOTW's formation |
### Get Team of the Week by Round [#get-team-of-the-week-by-round]
Retrieve the Team of the Week (TOTW) for a round ID from Sportmonks
#### Input [#input-93]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `roundId` | string | Yes | The unique id of the round |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. fixture;team;player;round) |
#### Output [#output-93]
| Parameter | Type | Description |
| ---------------------- | ------ | ----------------------------------------------- |
| `totw` | array | Array of Team of the Week entries for the round |
| ↳ `id` | number | Unique id of the TOTW entry |
| ↳ `player_id` | number | Player of the team of the week |
| ↳ `fixture_id` | number | Fixture the TOTW player played in |
| ↳ `round_id` | number | Round the fixture is played at |
| ↳ `team_id` | number | Team the TOTW player played for |
| ↳ `rating` | string | Rating of the TOTW player |
| ↳ `formation_position` | number | Player position in the TOTW formation |
| ↳ `formation` | string | The TOTW's formation |
### Get Transfer by ID [#get-transfer-by-id]
Retrieve a single transfer by its ID from Sportmonks
#### Input [#input-94]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ---------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `transferId` | string | Yes | The unique id of the transfer |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. player;fromTeam;toTeam) |
| `filters` | string | No | Filters to apply |
#### Output [#output-94]
| Parameter | Type | Description |
| ------------------------ | ------- | ------------------------------------- |
| `transfer` | object | The requested transfer object |
| ↳ `id` | number | Unique id of the transfer |
| ↳ `sport_id` | number | Sport of the transfer |
| ↳ `player_id` | number | Player who transferred |
| ↳ `type_id` | number | Type of the transfer |
| ↳ `from_team_id` | number | Team the player transferred from |
| ↳ `to_team_id` | number | Team the player transferred to |
| ↳ `position_id` | number | Position id of the transfer |
| ↳ `detailed_position_id` | number | Detailed position id of the transfer |
| ↳ `date` | string | Date of the transfer |
| ↳ `career_ended` | boolean | Whether the transfer ended the career |
| ↳ `completed` | boolean | Whether the transfer is completed |
| ↳ `amount` | number | Transfer fee amount |
### Get Transfer Rumour by ID [#get-transfer-rumour-by-id]
Retrieve a single transfer rumour by its ID from Sportmonks
#### Input [#input-95]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `rumourId` | string | Yes | The unique id of the transfer rumour |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. player;fromTeam;toTeam) |
| `filters` | string | No | Filters to apply |
#### Output [#output-95]
| Parameter | Type | Description |
| ------------------- | ------ | ------------------------------------ |
| `transferRumour` | object | The requested transfer rumour object |
| ↳ `id` | number | Unique id of the transfer rumour |
| ↳ `sport_id` | number | Sport of the transfer rumour |
| ↳ `player_id` | number | Player the rumour relates to |
| ↳ `position_id` | number | Position id of the player |
| ↳ `from_team_id` | number | Team the player would transfer from |
| ↳ `to_team_id` | number | Team the player would transfer to |
| ↳ `transfer_fee_id` | number | Transfer fee id of the rumour |
| ↳ `probability` | string | Probability of the rumour (e.g. LOW) |
| ↳ `source_name` | string | Name of the source of the rumour |
| ↳ `source_url` | string | URL of the source of the rumour |
| ↳ `amount` | number | Estimated transfer fee amount |
| ↳ `currency` | string | Currency of the amount |
| ↳ `date` | string | Date of the rumour |
| ↳ `type_id` | number | Type of the transfer rumour |
### Get Transfer Rumours Between Dates [#get-transfer-rumours-between-dates]
Retrieve transfer rumours within a date range (YYYY-MM-DD) from Sportmonks
#### Input [#input-96]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `startDate` | string | Yes | Start date in YYYY-MM-DD format |
| `endDate` | string | Yes | End date in YYYY-MM-DD format |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. player;fromTeam;toTeam) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-96]
| Parameter | Type | Description |
| ------------------- | ------ | ------------------------------------------------------ |
| `transferRumours` | array | Array of transfer rumour objects within the date range |
| ↳ `id` | number | Unique id of the transfer rumour |
| ↳ `sport_id` | number | Sport of the transfer rumour |
| ↳ `player_id` | number | Player the rumour relates to |
| ↳ `position_id` | number | Position id of the player |
| ↳ `from_team_id` | number | Team the player would transfer from |
| ↳ `to_team_id` | number | Team the player would transfer to |
| ↳ `transfer_fee_id` | number | Transfer fee id of the rumour |
| ↳ `probability` | string | Probability of the rumour (e.g. LOW) |
| ↳ `source_name` | string | Name of the source of the rumour |
| ↳ `source_url` | string | URL of the source of the rumour |
| ↳ `amount` | number | Estimated transfer fee amount |
| ↳ `currency` | string | Currency of the amount |
| ↳ `date` | string | Date of the rumour |
| ↳ `type_id` | number | Type of the transfer rumour |
### Get Transfer Rumours by Player [#get-transfer-rumours-by-player]
Retrieve transfer rumours for a player ID from Sportmonks
#### Input [#input-97]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `playerId` | string | Yes | The unique id of the player |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. player;fromTeam;toTeam) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-97]
| Parameter | Type | Description |
| ------------------- | ------ | ----------------------------------------------- |
| `transferRumours` | array | Array of transfer rumour objects for the player |
| ↳ `id` | number | Unique id of the transfer rumour |
| ↳ `sport_id` | number | Sport of the transfer rumour |
| ↳ `player_id` | number | Player the rumour relates to |
| ↳ `position_id` | number | Position id of the player |
| ↳ `from_team_id` | number | Team the player would transfer from |
| ↳ `to_team_id` | number | Team the player would transfer to |
| ↳ `transfer_fee_id` | number | Transfer fee id of the rumour |
| ↳ `probability` | string | Probability of the rumour (e.g. LOW) |
| ↳ `source_name` | string | Name of the source of the rumour |
| ↳ `source_url` | string | URL of the source of the rumour |
| ↳ `amount` | number | Estimated transfer fee amount |
| ↳ `currency` | string | Currency of the amount |
| ↳ `date` | string | Date of the rumour |
| ↳ `type_id` | number | Type of the transfer rumour |
### Get Transfer Rumours by Team [#get-transfer-rumours-by-team]
Retrieve transfer rumours for a team ID from Sportmonks
#### Input [#input-98]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `teamId` | string | Yes | The unique id of the team |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. player;fromTeam;toTeam) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-98]
| Parameter | Type | Description |
| ------------------- | ------ | --------------------------------------------- |
| `transferRumours` | array | Array of transfer rumour objects for the team |
| ↳ `id` | number | Unique id of the transfer rumour |
| ↳ `sport_id` | number | Sport of the transfer rumour |
| ↳ `player_id` | number | Player the rumour relates to |
| ↳ `position_id` | number | Position id of the player |
| ↳ `from_team_id` | number | Team the player would transfer from |
| ↳ `to_team_id` | number | Team the player would transfer to |
| ↳ `transfer_fee_id` | number | Transfer fee id of the rumour |
| ↳ `probability` | string | Probability of the rumour (e.g. LOW) |
| ↳ `source_name` | string | Name of the source of the rumour |
| ↳ `source_url` | string | URL of the source of the rumour |
| ↳ `amount` | number | Estimated transfer fee amount |
| ↳ `currency` | string | Currency of the amount |
| ↳ `date` | string | Date of the rumour |
| ↳ `type_id` | number | Type of the transfer rumour |
### Get Transfers Between Dates [#get-transfers-between-dates]
Retrieve transfers within a date range (YYYY-MM-DD) from Sportmonks
#### Input [#input-99]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `startDate` | string | Yes | Start date in YYYY-MM-DD format |
| `endDate` | string | Yes | End date in YYYY-MM-DD format |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. player;fromTeam;toTeam) |
| `filters` | string | No | Filters to apply (e.g. transferTypes:219,220) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-99]
| Parameter | Type | Description |
| ------------------------ | ------- | ----------------------------------------------- |
| `transfers` | array | Array of transfer objects within the date range |
| ↳ `id` | number | Unique id of the transfer |
| ↳ `sport_id` | number | Sport of the transfer |
| ↳ `player_id` | number | Player who transferred |
| ↳ `type_id` | number | Type of the transfer |
| ↳ `from_team_id` | number | Team the player transferred from |
| ↳ `to_team_id` | number | Team the player transferred to |
| ↳ `position_id` | number | Position id of the transfer |
| ↳ `detailed_position_id` | number | Detailed position id of the transfer |
| ↳ `date` | string | Date of the transfer |
| ↳ `career_ended` | boolean | Whether the transfer ended the career |
| ↳ `completed` | boolean | Whether the transfer is completed |
| ↳ `amount` | number | Transfer fee amount |
### Get Transfers by Player [#get-transfers-by-player]
Retrieve transfers for a player by player ID from Sportmonks
#### Input [#input-100]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `playerId` | string | Yes | The unique id of the player |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. fromTeam;toTeam;type) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-100]
| Parameter | Type | Description |
| ------------------------ | ------- | ---------------------------------------- |
| `transfers` | array | Array of transfer objects for the player |
| ↳ `id` | number | Unique id of the transfer |
| ↳ `sport_id` | number | Sport of the transfer |
| ↳ `player_id` | number | Player who transferred |
| ↳ `type_id` | number | Type of the transfer |
| ↳ `from_team_id` | number | Team the player transferred from |
| ↳ `to_team_id` | number | Team the player transferred to |
| ↳ `position_id` | number | Position id of the transfer |
| ↳ `detailed_position_id` | number | Detailed position id of the transfer |
| ↳ `date` | string | Date of the transfer |
| ↳ `career_ended` | boolean | Whether the transfer ended the career |
| ↳ `completed` | boolean | Whether the transfer is completed |
| ↳ `amount` | number | Transfer fee amount |
### Get Transfers by Team [#get-transfers-by-team]
Retrieve transfers for a team by team ID from Sportmonks
#### Input [#input-101]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `teamId` | string | Yes | The unique id of the team |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. player;fromTeam;toTeam) |
| `filters` | string | No | Filters to apply (e.g. transferTypes:219,220) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-101]
| Parameter | Type | Description |
| ------------------------ | ------- | -------------------------------------- |
| `transfers` | array | Array of transfer objects for the team |
| ↳ `id` | number | Unique id of the transfer |
| ↳ `sport_id` | number | Sport of the transfer |
| ↳ `player_id` | number | Player who transferred |
| ↳ `type_id` | number | Type of the transfer |
| ↳ `from_team_id` | number | Team the player transferred from |
| ↳ `to_team_id` | number | Team the player transferred to |
| ↳ `position_id` | number | Position id of the transfer |
| ↳ `detailed_position_id` | number | Detailed position id of the transfer |
| ↳ `date` | string | Date of the transfer |
| ↳ `career_ended` | boolean | Whether the transfer ended the career |
| ↳ `completed` | boolean | Whether the transfer is completed |
| ↳ `amount` | number | Transfer fee amount |
### Get TV Station by ID [#get-tv-station-by-id]
Retrieve a single TV station by its ID from Sportmonks
#### Input [#input-102]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `tvStationId` | string | Yes | The unique id of the TV station |
| `include` | string | No | Semicolon-separated relations to enrich the response |
| `filters` | string | No | Filters to apply |
#### Output [#output-102]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------ |
| `tvStation` | object | The requested TV station object |
| ↳ `id` | number | Unique id of the TV station |
| ↳ `name` | string | Name of the TV station |
| ↳ `url` | string | URL of the TV station |
| ↳ `image_path` | string | Image path of the TV station |
| ↳ `type` | string | Type of the TV station (tv, channel) |
| ↳ `related_id` | number | Related id of the TV station |
### Get TV Stations [#get-tv-stations]
Retrieve all TV stations available within your Sportmonks subscription
#### Input [#input-103]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-103]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------ |
| `tvStations` | array | Array of TV station objects |
| ↳ `id` | number | Unique id of the TV station |
| ↳ `name` | string | Name of the TV station |
| ↳ `url` | string | URL of the TV station |
| ↳ `image_path` | string | Image path of the TV station |
| ↳ `type` | string | Type of the TV station (tv, channel) |
| ↳ `related_id` | number | Related id of the TV station |
### Get TV Stations by Fixture [#get-tv-stations-by-fixture]
Retrieve broadcasting TV stations for a fixture by fixture ID from Sportmonks
#### Input [#input-104]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. fixtures;countries) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-104]
| Parameter | Type | Description |
| -------------- | ------ | ---------------------------------------------------- |
| `tvStations` | array | Array of TV station objects broadcasting the fixture |
| ↳ `id` | number | Unique id of the TV station |
| ↳ `name` | string | Name of the TV station |
| ↳ `url` | string | URL of the TV station |
| ↳ `image_path` | string | Image path of the TV station |
| ↳ `type` | string | Type of the TV station (tv, channel) |
| ↳ `related_id` | number | Related id of the TV station |
### Get Upcoming Fixtures by Market [#get-upcoming-fixtures-by-market]
Retrieve all upcoming fixtures for a market ID from Sportmonks
#### Input [#input-105]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `marketId` | string | Yes | The unique id of the market |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participants;odds) |
| `filters` | string | No | Filters to apply (e.g. fixtureLeagues:501) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-105]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------------------ |
| `fixtures` | array | Array of upcoming fixture objects for the market |
| ↳ `id` | number | Unique id of the fixture |
| ↳ `sport_id` | number | Sport the fixture is played at |
| ↳ `league_id` | number | League the fixture is played in |
| ↳ `season_id` | number | Season the fixture is played in |
| ↳ `stage_id` | number | Stage the fixture is played in |
| ↳ `group_id` | number | Group the fixture is played in |
| ↳ `aggregate_id` | number | Aggregate the fixture belongs to |
| ↳ `round_id` | number | Round the fixture is played in |
| ↳ `state_id` | number | State (status) of the fixture |
| ↳ `venue_id` | number | Venue the fixture is played at |
| ↳ `name` | string | Name of the fixture (participants) |
| ↳ `starting_at` | string | Datetime the fixture starts |
| ↳ `result_info` | string | Final result summary |
| ↳ `leg` | string | Leg of the fixture (e.g. 1/1) |
| ↳ `details` | string | Details about the fixture |
| ↳ `length` | number | Length of the fixture in minutes |
| ↳ `placeholder` | boolean | Whether the fixture is a placeholder |
| ↳ `has_odds` | boolean | Whether odds are available |
| ↳ `has_premium_odds` | boolean | Whether premium odds are available |
| ↳ `starting_at_timestamp` | number | UNIX timestamp of the start time |
### Get Upcoming Fixtures by TV Station [#get-upcoming-fixtures-by-tv-station]
Retrieve all upcoming fixtures available for a TV station ID from Sportmonks
#### Input [#input-106]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `tvStationId` | string | Yes | The unique id of the TV station |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participants) |
| `filters` | string | No | Filters to apply (e.g. fixtureLeagues:501) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-106]
| Parameter | Type | Description |
| ------------------------- | ------- | ---------------------------------------------------- |
| `fixtures` | array | Array of upcoming fixture objects for the TV station |
| ↳ `id` | number | Unique id of the fixture |
| ↳ `sport_id` | number | Sport the fixture is played at |
| ↳ `league_id` | number | League the fixture is played in |
| ↳ `season_id` | number | Season the fixture is played in |
| ↳ `stage_id` | number | Stage the fixture is played in |
| ↳ `group_id` | number | Group the fixture is played in |
| ↳ `aggregate_id` | number | Aggregate the fixture belongs to |
| ↳ `round_id` | number | Round the fixture is played in |
| ↳ `state_id` | number | State (status) of the fixture |
| ↳ `venue_id` | number | Venue the fixture is played at |
| ↳ `name` | string | Name of the fixture (participants) |
| ↳ `starting_at` | string | Datetime the fixture starts |
| ↳ `result_info` | string | Final result summary |
| ↳ `leg` | string | Leg of the fixture (e.g. 1/1) |
| ↳ `details` | string | Details about the fixture |
| ↳ `length` | number | Length of the fixture in minutes |
| ↳ `placeholder` | boolean | Whether the fixture is a placeholder |
| ↳ `has_odds` | boolean | Whether odds are available |
| ↳ `has_premium_odds` | boolean | Whether premium odds are available |
| ↳ `starting_at_timestamp` | number | UNIX timestamp of the start time |
### Get Value Bets [#get-value-bets]
Retrieve all value bets available within your Sportmonks subscription
#### Input [#input-107]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. type;fixture) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-107]
| Parameter | Type | Description |
| --------------- | ------ | ---------------------------------------------------------------------- |
| `valueBets` | array | Array of value bet prediction objects |
| ↳ `id` | number | Unique id of the prediction |
| ↳ `fixture_id` | number | Fixture related to the prediction |
| ↳ `predictions` | json | Prediction payload (varies by type: score map, value bet object, etc.) |
| ↳ `type_id` | number | Type of the prediction |
### Get Value Bets by Fixture [#get-value-bets-by-fixture]
Retrieve value bet predictions for a fixture by fixture ID from Sportmonks
#### Input [#input-108]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. type;fixture) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-108]
| Parameter | Type | Description |
| --------------- | ------ | ---------------------------------------------------------------------- |
| `valueBets` | array | Array of value bet prediction entries for the fixture |
| ↳ `id` | number | Unique id of the prediction |
| ↳ `fixture_id` | number | Fixture related to the prediction |
| ↳ `predictions` | json | Prediction payload (varies by type: score map, value bet object, etc.) |
| ↳ `type_id` | number | Type of the prediction |
### Get Venue by ID [#get-venue-by-id]
Retrieve a single football venue by its ID from Sportmonks
#### Input [#input-109]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `venueId` | string | Yes | The unique id of the venue |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;city;fixtures) |
| `filters` | string | No | Filters to apply |
#### Output [#output-109]
| Parameter | Type | Description |
| ----------------- | ------- | ---------------------------------------------- |
| `venue` | object | The requested venue object |
| ↳ `id` | number | Unique id of the venue |
| ↳ `country_id` | number | Country of the venue |
| ↳ `city_id` | number | City of the venue |
| ↳ `name` | string | Name of the venue |
| ↳ `address` | string | Address of the venue |
| ↳ `zipcode` | string | Zipcode of the venue |
| ↳ `latitude` | string | Latitude of the venue |
| ↳ `longitude` | string | Longitude of the venue |
| ↳ `capacity` | number | Seating capacity of the venue |
| ↳ `image_path` | string | Image path of the venue |
| ↳ `city_name` | string | Name of the city the venue is in |
| ↳ `surface` | string | Surface type of the venue |
| ↳ `national_team` | boolean | Whether the venue is used by the national team |
### Get Venues [#get-venues]
Retrieve all football venues available within your Sportmonks subscription
#### Input [#input-110]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;city) |
| `filters` | string | No | Filters to apply (e.g. venueCountries:98) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-110]
| Parameter | Type | Description |
| ----------------- | ------- | ---------------------------------------------- |
| `venues` | array | Array of venue objects |
| ↳ `id` | number | Unique id of the venue |
| ↳ `country_id` | number | Country of the venue |
| ↳ `city_id` | number | City of the venue |
| ↳ `name` | string | Name of the venue |
| ↳ `address` | string | Address of the venue |
| ↳ `zipcode` | string | Zipcode of the venue |
| ↳ `latitude` | string | Latitude of the venue |
| ↳ `longitude` | string | Longitude of the venue |
| ↳ `capacity` | number | Seating capacity of the venue |
| ↳ `image_path` | string | Image path of the venue |
| ↳ `city_name` | string | Name of the city the venue is in |
| ↳ `surface` | string | Surface type of the venue |
| ↳ `national_team` | boolean | Whether the venue is used by the national team |
### Get Venues by Season [#get-venues-by-season]
Retrieve all venues for a season ID from Sportmonks
#### Input [#input-111]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;city) |
| `filters` | string | No | Filters to apply |
#### Output [#output-111]
| Parameter | Type | Description |
| ----------------- | ------- | ---------------------------------------------- |
| `venues` | array | Array of venue objects for the season |
| ↳ `id` | number | Unique id of the venue |
| ↳ `country_id` | number | Country of the venue |
| ↳ `city_id` | number | City of the venue |
| ↳ `name` | string | Name of the venue |
| ↳ `address` | string | Address of the venue |
| ↳ `zipcode` | string | Zipcode of the venue |
| ↳ `latitude` | string | Latitude of the venue |
| ↳ `longitude` | string | Longitude of the venue |
| ↳ `capacity` | number | Seating capacity of the venue |
| ↳ `image_path` | string | Image path of the venue |
| ↳ `city_name` | string | Name of the city the venue is in |
| ↳ `surface` | string | Surface type of the venue |
| ↳ `national_team` | boolean | Whether the venue is used by the national team |
### Search Coaches [#search-coaches]
Search for football coaches by name from Sportmonks
#### Input [#input-112]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `query` | string | Yes | The coach name to search for (e.g. Gerrard) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;teams) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-112]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------ |
| `coaches` | array | Array of coach objects matching the search query |
| ↳ `id` | number | Unique id of the coach |
| ↳ `player_id` | number | Player related to the coach |
| ↳ `sport_id` | number | Sport of the coach |
| ↳ `country_id` | number | Country of the coach |
| ↳ `nationality_id` | number | Nationality of the coach |
| ↳ `city_id` | number | Birth city of the coach |
| ↳ `common_name` | string | Common name of the coach |
| ↳ `firstname` | string | First name of the coach |
| ↳ `lastname` | string | Last name of the coach |
| ↳ `name` | string | Name of the coach |
| ↳ `display_name` | string | Display name of the coach |
| ↳ `image_path` | string | URL to the coach headshot |
| ↳ `height` | number | Height of the coach in cm |
| ↳ `weight` | number | Weight of the coach in kg |
| ↳ `date_of_birth` | string | Date of birth of the coach |
| ↳ `gender` | string | Gender of the coach |
### Search Fixtures [#search-fixtures]
Search for football fixtures by name (participants) from Sportmonks
#### Input [#input-113]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `query` | string | Yes | The fixture name to search for (e.g. Celtic) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participants;scores) |
| `filters` | string | No | Filters to apply (e.g. fixtureLeagues:501) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order fixtures by starting\_at (asc or desc) |
#### Output [#output-113]
| Parameter | Type | Description |
| ------------------------- | ------- | -------------------------------------------------- |
| `fixtures` | array | Array of fixture objects matching the search query |
| ↳ `id` | number | Unique id of the fixture |
| ↳ `sport_id` | number | Sport the fixture is played at |
| ↳ `league_id` | number | League the fixture is played in |
| ↳ `season_id` | number | Season the fixture is played in |
| ↳ `stage_id` | number | Stage the fixture is played in |
| ↳ `group_id` | number | Group the fixture is played in |
| ↳ `aggregate_id` | number | Aggregate the fixture belongs to |
| ↳ `round_id` | number | Round the fixture is played in |
| ↳ `state_id` | number | State (status) of the fixture |
| ↳ `venue_id` | number | Venue the fixture is played at |
| ↳ `name` | string | Name of the fixture (participants) |
| ↳ `starting_at` | string | Datetime the fixture starts |
| ↳ `result_info` | string | Final result summary |
| ↳ `leg` | string | Leg of the fixture (e.g. 1/1) |
| ↳ `details` | string | Details about the fixture |
| ↳ `length` | number | Length of the fixture in minutes |
| ↳ `placeholder` | boolean | Whether the fixture is a placeholder |
| ↳ `has_odds` | boolean | Whether odds are available |
| ↳ `has_premium_odds` | boolean | Whether premium odds are available |
| ↳ `starting_at_timestamp` | number | UNIX timestamp of the start time |
### Search Leagues [#search-leagues]
Search for football leagues by name from Sportmonks
#### Input [#input-114]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `query` | string | Yes | The league name to search for (e.g. Premier) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;currentSeason) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order leagues (asc or desc) |
#### Output [#output-114]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------- |
| `leagues` | array | Array of league objects matching the search query |
| ↳ `id` | number | Unique id of the league |
| ↳ `sport_id` | number | Sport of the league |
| ↳ `country_id` | number | Country of the league |
| ↳ `name` | string | Name of the league |
| ↳ `active` | number | Whether the league is active (1) or inactive (0) |
| ↳ `short_code` | string | Short code of the league |
| ↳ `image_path` | string | URL to the league logo |
| ↳ `type` | string | Type of the league |
| ↳ `sub_type` | string | Subtype of the league |
| ↳ `last_played_at` | string | Date the last fixture was played |
| ↳ `category` | number | Importance category of the league (1-4) |
### Search Players [#search-players]
Search for football players by name from Sportmonks
#### Input [#input-115]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `query` | string | Yes | The player name to search for (e.g. Tavernier) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;position;teams.team) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order players by id (asc or desc) |
#### Output [#output-115]
| Parameter | Type | Description |
| ------------------------ | ------ | ------------------------------------------------- |
| `players` | array | Array of player objects matching the search query |
| ↳ `id` | number | Unique id of the player |
| ↳ `sport_id` | number | Sport of the player |
| ↳ `country_id` | number | Country of birth of the player |
| ↳ `nationality_id` | number | Nationality of the player |
| ↳ `city_id` | number | City of birth of the player |
| ↳ `position_id` | number | Position of the player |
| ↳ `detailed_position_id` | number | Detailed position of the player |
| ↳ `type_id` | number | Type of the player |
| ↳ `common_name` | string | Name the player is known for |
| ↳ `firstname` | string | First name of the player |
| ↳ `lastname` | string | Last name of the player |
| ↳ `name` | string | Name of the player |
| ↳ `display_name` | string | Display name of the player |
| ↳ `image_path` | string | URL to the player headshot |
| ↳ `height` | number | Height of the player in cm |
| ↳ `weight` | number | Weight of the player in kg |
| ↳ `date_of_birth` | string | Date of birth of the player |
| ↳ `gender` | string | Gender of the player |
### Search Referees [#search-referees]
Search for football referees by name from Sportmonks
#### Input [#input-116]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `query` | string | Yes | The referee name to search for |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-116]
| Parameter | Type | Description |
| ------------------ | ------ | -------------------------------------------------- |
| `referees` | array | Array of referee objects matching the search query |
| ↳ `id` | number | Unique id of the referee |
| ↳ `sport_id` | number | Sport of the referee |
| ↳ `country_id` | number | Country of the referee |
| ↳ `nationality_id` | number | Nationality of the referee |
| ↳ `city_id` | number | Birth city of the referee |
| ↳ `common_name` | string | Common name of the referee |
| ↳ `firstname` | string | First name of the referee |
| ↳ `lastname` | string | Last name of the referee |
| ↳ `name` | string | Name of the referee |
| ↳ `display_name` | string | Display name of the referee |
| ↳ `image_path` | string | URL to the referee headshot |
| ↳ `height` | number | Height of the referee in cm |
| ↳ `weight` | number | Weight of the referee in kg |
| ↳ `date_of_birth` | string | Date of birth of the referee |
| ↳ `gender` | string | Gender of the referee |
### Search Rounds [#search-rounds]
Search for football rounds by name from Sportmonks
#### Input [#input-117]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `query` | string | Yes | The round name to search for (e.g. 5) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. league;season) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-117]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------------------ |
| `rounds` | array | Array of round objects matching the search query |
| ↳ `id` | number | Unique id of the round |
| ↳ `sport_id` | number | Sport of the round |
| ↳ `league_id` | number | League of the round |
| ↳ `season_id` | number | Season of the round |
| ↳ `stage_id` | number | Stage of the round |
| ↳ `name` | string | Name of the round |
| ↳ `finished` | boolean | Whether the round is finished |
| ↳ `is_current` | boolean | Whether the round is the current round |
| ↳ `starting_at` | string | Start date of the round |
| ↳ `ending_at` | string | End date of the round |
| ↳ `games_in_current_week` | boolean | Whether the round has fixtures this week |
### Search Seasons [#search-seasons]
Search for football seasons by name from Sportmonks
#### Input [#input-118]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `query` | string | Yes | The season name to search for (e.g. 2023/2024) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. league) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-118]
| Parameter | Type | Description |
| ----------------------------- | ------- | ------------------------------------------------- |
| `seasons` | array | Array of season objects matching the search query |
| ↳ `id` | number | Unique id of the season |
| ↳ `sport_id` | number | Sport of the season |
| ↳ `league_id` | number | League of the season |
| ↳ `tie_breaker_rule_id` | number | Tie-breaker rule of the season |
| ↳ `name` | string | Name of the season (e.g. 2023/2024) |
| ↳ `finished` | boolean | Whether the season is finished |
| ↳ `pending` | boolean | Whether the season is pending |
| ↳ `is_current` | boolean | Whether the season is the current season |
| ↳ `standing_method` | string | Standing calculation method |
| ↳ `starting_at` | string | Start date of the season |
| ↳ `ending_at` | string | End date of the season |
| ↳ `standings_recalculated_at` | string | Last standings recalculation time |
| ↳ `games_in_current_week` | boolean | Whether the season has fixtures this week |
### Search Stages [#search-stages]
Search for football stages by name from Sportmonks
#### Input [#input-119]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `query` | string | Yes | The stage name to search for (e.g. Group) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. league;season) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-119]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------------------ |
| `stages` | array | Array of stage objects matching the search query |
| ↳ `id` | number | Unique id of the stage |
| ↳ `sport_id` | number | Sport of the stage |
| ↳ `league_id` | number | League of the stage |
| ↳ `season_id` | number | Season of the stage |
| ↳ `type_id` | number | Type of the stage |
| ↳ `name` | string | Name of the stage |
| ↳ `sort_order` | number | Sort order of the stage |
| ↳ `finished` | boolean | Whether the stage is finished |
| ↳ `is_current` | boolean | Whether the stage is the current stage |
| ↳ `starting_at` | string | Start date of the stage |
| ↳ `ending_at` | string | End date of the stage |
| ↳ `games_in_current_week` | boolean | Whether the stage has fixtures this week |
### Search Teams [#search-teams]
Search for football teams by name from Sportmonks
#### Input [#input-120]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `query` | string | Yes | The team name to search for (e.g. Celtic) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;venue) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order teams by id (asc or desc) |
#### Output [#output-120]
| Parameter | Type | Description |
| ------------------ | ------- | ----------------------------------------------- |
| `teams` | array | Array of team objects matching the search query |
| ↳ `id` | number | Unique id of the team |
| ↳ `sport_id` | number | Sport of the team |
| ↳ `country_id` | number | Country of the team |
| ↳ `venue_id` | number | Home venue of the team |
| ↳ `gender` | string | Gender of the team |
| ↳ `name` | string | Name of the team |
| ↳ `short_code` | string | Short code of the team |
| ↳ `image_path` | string | URL to the team logo |
| ↳ `founded` | number | Founding year of the team |
| ↳ `type` | string | Type of the team |
| ↳ `placeholder` | boolean | Whether the team is a placeholder |
| ↳ `last_played_at` | string | Date and time of the last played match |
### Search Venues [#search-venues]
Search for football venues by name from Sportmonks
#### Input [#input-121]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `query` | string | Yes | The venue name to search for (e.g. Celtic Park) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;city) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-121]
| Parameter | Type | Description |
| ----------------- | ------- | ------------------------------------------------ |
| `venues` | array | Array of venue objects matching the search query |
| ↳ `id` | number | Unique id of the venue |
| ↳ `country_id` | number | Country of the venue |
| ↳ `city_id` | number | City of the venue |
| ↳ `name` | string | Name of the venue |
| ↳ `address` | string | Address of the venue |
| ↳ `zipcode` | string | Zipcode of the venue |
| ↳ `latitude` | string | Latitude of the venue |
| ↳ `longitude` | string | Longitude of the venue |
| ↳ `capacity` | number | Seating capacity of the venue |
| ↳ `image_path` | string | Image path of the venue |
| ↳ `city_name` | string | Name of the city the venue is in |
| ↳ `surface` | string | Surface type of the venue |
| ↳ `national_team` | boolean | Whether the venue is used by the national team |
### Get All Motorsport Fixtures [#get-all-motorsport-fixtures]
Retrieve all motorsport fixtures (sessions) from Sportmonks
#### Input [#input-122]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participants;results) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-122]
| Parameter | Type | Description |
| ------------------------- | ------- | ---------------------------------------------- |
| `fixtures` | array | Array of motorsport fixture (session) objects |
| ↳ `id` | number | Unique id of the fixture (session) |
| ↳ `sport_id` | number | Sport of the fixture |
| ↳ `league_id` | number | League the fixture is held in |
| ↳ `season_id` | number | Season the fixture is held in |
| ↳ `stage_id` | number | Stage (race weekend) the fixture is held in |
| ↳ `group_id` | number | Not used in the Motorsport API |
| ↳ `aggregate_id` | number | Not used in the Motorsport API |
| ↳ `round_id` | number | Not used in the Motorsport API |
| ↳ `state_id` | number | State the fixture is currently in |
| ↳ `venue_id` | number | Venue (track) the fixture is held at |
| ↳ `name` | string | Name of the fixture (e.g. Practice 1, Race) |
| ↳ `starting_at` | string | Start date and time |
| ↳ `result_info` | string | Final result info |
| ↳ `leg` | string | Stage of the fixture (e.g. 2/3 for Practice 2) |
| ↳ `details` | string | Details about the fixture |
| ↳ `length` | number | Session length in minutes or total laps |
| ↳ `placeholder` | boolean | Whether the fixture is a placeholder |
| ↳ `has_odds` | boolean | Not used in the Motorsport API |
| ↳ `has_premium_odds` | boolean | Not used in the Motorsport API |
| ↳ `starting_at_timestamp` | number | UNIX timestamp of the start time |
### Get Current Leagues by Team [#get-current-leagues-by-team-1]
Retrieve the current motorsport leagues for a team by team ID from Sportmonks
#### Input [#input-123]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `teamId` | string | Yes | The unique id of the team (constructor) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;seasons) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-123]
| Parameter | Type | Description |
| ------------------ | ------- | -------------------------------------------- |
| `leagues` | array | Array of current league objects for the team |
| ↳ `id` | number | Unique id of the league |
| ↳ `sport_id` | number | Sport of the league |
| ↳ `country_id` | number | Country of the league |
| ↳ `name` | string | Name of the league |
| ↳ `active` | boolean | Whether the league is active |
| ↳ `short_code` | string | Short code of the league |
| ↳ `image_path` | string | URL to the league logo |
| ↳ `type` | string | Type of the league |
| ↳ `sub_type` | string | Subtype of the league |
| ↳ `last_played_at` | string | Date of the last fixture held in the league |
| ↳ `category` | number | Category of the league |
| ↳ `has_jerseys` | boolean | Not used in the Motorsport API |
### Get Driver by ID [#get-driver-by-id]
Retrieve a single motorsport driver by their ID from Sportmonks
#### Input [#input-124]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `driverId` | string | Yes | The unique id of the driver |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;teams) |
| `filters` | string | No | Filters to apply |
#### Output [#output-124]
| Parameter | Type | Description |
| ------------------------ | ------ | ------------------------------------------------- |
| `driver` | object | The requested driver object |
| ↳ `id` | number | Unique id of the driver (player\_id in responses) |
| ↳ `sport_id` | number | Sport of the driver |
| ↳ `country_id` | number | Country of birth of the driver |
| ↳ `nationality_id` | number | Nationality of the driver |
| ↳ `city_id` | number | City of birth of the driver |
| ↳ `position_id` | number | Position of the driver within the team |
| ↳ `detailed_position_id` | number | Not used in the Motorsport API |
| ↳ `type_id` | number | Not used in the Motorsport API |
| ↳ `common_name` | string | Name the driver is known for |
| ↳ `firstname` | string | First name of the driver |
| ↳ `lastname` | string | Last name of the driver |
| ↳ `name` | string | Name of the driver |
| ↳ `display_name` | string | Display name of the driver |
| ↳ `image_path` | string | URL to the driver headshot |
| ↳ `height` | number | Height of the driver in cm |
| ↳ `weight` | number | Weight of the driver in kg |
| ↳ `date_of_birth` | string | Date of birth of the driver |
| ↳ `gender` | string | Gender of the driver |
### Get All Driver Standings [#get-all-driver-standings]
Retrieve all driver championship standings from Sportmonks
#### Input [#input-125]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participant;season) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-125]
| Parameter | Type | Description |
| -------------------- | ------ | ------------------------------------------- |
| `standings` | array | Array of driver standing entries |
| ↳ `id` | number | Unique id of the standing |
| ↳ `participant_id` | number | Driver or team related to the standing |
| ↳ `sport_id` | number | Sport related to the standing |
| ↳ `league_id` | number | League related to the standing |
| ↳ `season_id` | number | Season related to the standing |
| ↳ `stage_id` | number | Stage related to the standing |
| ↳ `group_id` | number | Not used in the Motorsport API |
| ↳ `round_id` | number | Not used in the Motorsport API |
| ↳ `standing_rule_id` | number | Not used in the Motorsport API |
| ↳ `position` | number | Position of the participant in the standing |
| ↳ `result` | string | Not used in the Motorsport API |
| ↳ `points` | number | Points the participant has gathered |
### Get Driver Standings by Season [#get-driver-standings-by-season]
Retrieve the drivers championship standings for a season by season ID from Sportmonks
#### Input [#input-126]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participant;season) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-126]
| Parameter | Type | Description |
| -------------------- | ------ | ----------------------------------------------- |
| `standings` | array | Array of driver standing entries for the season |
| ↳ `id` | number | Unique id of the standing |
| ↳ `participant_id` | number | Driver or team related to the standing |
| ↳ `sport_id` | number | Sport related to the standing |
| ↳ `league_id` | number | League related to the standing |
| ↳ `season_id` | number | Season related to the standing |
| ↳ `stage_id` | number | Stage related to the standing |
| ↳ `group_id` | number | Not used in the Motorsport API |
| ↳ `round_id` | number | Not used in the Motorsport API |
| ↳ `standing_rule_id` | number | Not used in the Motorsport API |
| ↳ `position` | number | Position of the participant in the standing |
| ↳ `result` | string | Not used in the Motorsport API |
| ↳ `points` | number | Points the participant has gathered |
### Get Drivers [#get-drivers]
Retrieve all motorsport drivers from Sportmonks
#### Input [#input-127]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;teams) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-127]
| Parameter | Type | Description |
| ------------------------ | ------ | ------------------------------------------------- |
| `drivers` | array | Array of driver objects |
| ↳ `id` | number | Unique id of the driver (player\_id in responses) |
| ↳ `sport_id` | number | Sport of the driver |
| ↳ `country_id` | number | Country of birth of the driver |
| ↳ `nationality_id` | number | Nationality of the driver |
| ↳ `city_id` | number | City of birth of the driver |
| ↳ `position_id` | number | Position of the driver within the team |
| ↳ `detailed_position_id` | number | Not used in the Motorsport API |
| ↳ `type_id` | number | Not used in the Motorsport API |
| ↳ `common_name` | string | Name the driver is known for |
| ↳ `firstname` | string | First name of the driver |
| ↳ `lastname` | string | Last name of the driver |
| ↳ `name` | string | Name of the driver |
| ↳ `display_name` | string | Display name of the driver |
| ↳ `image_path` | string | URL to the driver headshot |
| ↳ `height` | number | Height of the driver in cm |
| ↳ `weight` | number | Weight of the driver in kg |
| ↳ `date_of_birth` | string | Date of birth of the driver |
| ↳ `gender` | string | Gender of the driver |
### Get Drivers by Country [#get-drivers-by-country]
Retrieve all motorsport drivers for a country by country ID from Sportmonks
#### Input [#input-128]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `countryId` | string | Yes | The unique id of the country |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;teams) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-128]
| Parameter | Type | Description |
| ------------------------ | ------ | ------------------------------------------------- |
| `drivers` | array | Array of driver objects for the country |
| ↳ `id` | number | Unique id of the driver (player\_id in responses) |
| ↳ `sport_id` | number | Sport of the driver |
| ↳ `country_id` | number | Country of birth of the driver |
| ↳ `nationality_id` | number | Nationality of the driver |
| ↳ `city_id` | number | City of birth of the driver |
| ↳ `position_id` | number | Position of the driver within the team |
| ↳ `detailed_position_id` | number | Not used in the Motorsport API |
| ↳ `type_id` | number | Not used in the Motorsport API |
| ↳ `common_name` | string | Name the driver is known for |
| ↳ `firstname` | string | First name of the driver |
| ↳ `lastname` | string | Last name of the driver |
| ↳ `name` | string | Name of the driver |
| ↳ `display_name` | string | Display name of the driver |
| ↳ `image_path` | string | URL to the driver headshot |
| ↳ `height` | number | Height of the driver in cm |
| ↳ `weight` | number | Weight of the driver in kg |
| ↳ `date_of_birth` | string | Date of birth of the driver |
| ↳ `gender` | string | Gender of the driver |
### Get Drivers by Season [#get-drivers-by-season]
Retrieve all motorsport drivers for a season by season ID from Sportmonks
#### Input [#input-129]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;teams) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-129]
| Parameter | Type | Description |
| ------------------------ | ------ | ------------------------------------------------- |
| `drivers` | array | Array of driver objects for the season |
| ↳ `id` | number | Unique id of the driver (player\_id in responses) |
| ↳ `sport_id` | number | Sport of the driver |
| ↳ `country_id` | number | Country of birth of the driver |
| ↳ `nationality_id` | number | Nationality of the driver |
| ↳ `city_id` | number | City of birth of the driver |
| ↳ `position_id` | number | Position of the driver within the team |
| ↳ `detailed_position_id` | number | Not used in the Motorsport API |
| ↳ `type_id` | number | Not used in the Motorsport API |
| ↳ `common_name` | string | Name the driver is known for |
| ↳ `firstname` | string | First name of the driver |
| ↳ `lastname` | string | Last name of the driver |
| ↳ `name` | string | Name of the driver |
| ↳ `display_name` | string | Display name of the driver |
| ↳ `image_path` | string | URL to the driver headshot |
| ↳ `height` | number | Height of the driver in cm |
| ↳ `weight` | number | Weight of the driver in kg |
| ↳ `date_of_birth` | string | Date of birth of the driver |
| ↳ `gender` | string | Gender of the driver |
### Get Motorsport Fixture by ID [#get-motorsport-fixture-by-id]
Retrieve a single motorsport fixture (session) by its ID from Sportmonks
#### Input [#input-130]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture (session) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participants;results;latestLaps;pitstops) |
| `filters` | string | No | Filters to apply |
#### Output [#output-130]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------------------- |
| `fixture` | object | The requested motorsport fixture (session) object |
| ↳ `id` | number | Unique id of the fixture (session) |
| ↳ `sport_id` | number | Sport of the fixture |
| ↳ `league_id` | number | League the fixture is held in |
| ↳ `season_id` | number | Season the fixture is held in |
| ↳ `stage_id` | number | Stage (race weekend) the fixture is held in |
| ↳ `group_id` | number | Not used in the Motorsport API |
| ↳ `aggregate_id` | number | Not used in the Motorsport API |
| ↳ `round_id` | number | Not used in the Motorsport API |
| ↳ `state_id` | number | State the fixture is currently in |
| ↳ `venue_id` | number | Venue (track) the fixture is held at |
| ↳ `name` | string | Name of the fixture (e.g. Practice 1, Race) |
| ↳ `starting_at` | string | Start date and time |
| ↳ `result_info` | string | Final result info |
| ↳ `leg` | string | Stage of the fixture (e.g. 2/3 for Practice 2) |
| ↳ `details` | string | Details about the fixture |
| ↳ `length` | number | Session length in minutes or total laps |
| ↳ `placeholder` | boolean | Whether the fixture is a placeholder |
| ↳ `has_odds` | boolean | Not used in the Motorsport API |
| ↳ `has_premium_odds` | boolean | Not used in the Motorsport API |
| ↳ `starting_at_timestamp` | number | UNIX timestamp of the start time |
### Get Motorsport Fixtures by Date [#get-motorsport-fixtures-by-date]
Retrieve motorsport fixtures (sessions) on a specific date (YYYY-MM-DD) from Sportmonks
#### Input [#input-131]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `date` | string | Yes | The date to fetch fixtures for, in YYYY-MM-DD format |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participants;venue) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order fixtures by starting\_at (asc or desc) |
#### Output [#output-131]
| Parameter | Type | Description |
| ------------------------- | ------- | -------------------------------------------------------------------- |
| `fixtures` | array | Array of motorsport fixture (session) objects for the requested date |
| ↳ `id` | number | Unique id of the fixture (session) |
| ↳ `sport_id` | number | Sport of the fixture |
| ↳ `league_id` | number | League the fixture is held in |
| ↳ `season_id` | number | Season the fixture is held in |
| ↳ `stage_id` | number | Stage (race weekend) the fixture is held in |
| ↳ `group_id` | number | Not used in the Motorsport API |
| ↳ `aggregate_id` | number | Not used in the Motorsport API |
| ↳ `round_id` | number | Not used in the Motorsport API |
| ↳ `state_id` | number | State the fixture is currently in |
| ↳ `venue_id` | number | Venue (track) the fixture is held at |
| ↳ `name` | string | Name of the fixture (e.g. Practice 1, Race) |
| ↳ `starting_at` | string | Start date and time |
| ↳ `result_info` | string | Final result info |
| ↳ `leg` | string | Stage of the fixture (e.g. 2/3 for Practice 2) |
| ↳ `details` | string | Details about the fixture |
| ↳ `length` | number | Session length in minutes or total laps |
| ↳ `placeholder` | boolean | Whether the fixture is a placeholder |
| ↳ `has_odds` | boolean | Not used in the Motorsport API |
| ↳ `has_premium_odds` | boolean | Not used in the Motorsport API |
| ↳ `starting_at_timestamp` | number | UNIX timestamp of the start time |
### Get Motorsport Fixtures by Date Range [#get-motorsport-fixtures-by-date-range]
Retrieve motorsport fixtures (sessions) between two dates (YYYY-MM-DD, max 100 days) from Sportmonks
#### Input [#input-132]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `startDate` | string | Yes | The start date of the range, in YYYY-MM-DD format |
| `endDate` | string | Yes | The end date of the range, in YYYY-MM-DD format |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participants;venue) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order fixtures by starting\_at (asc or desc) |
#### Output [#output-132]
| Parameter | Type | Description |
| ------------------------- | ------- | ----------------------------------------------------------------------------- |
| `fixtures` | array | Array of motorsport fixture (session) objects within the requested date range |
| ↳ `id` | number | Unique id of the fixture (session) |
| ↳ `sport_id` | number | Sport of the fixture |
| ↳ `league_id` | number | League the fixture is held in |
| ↳ `season_id` | number | Season the fixture is held in |
| ↳ `stage_id` | number | Stage (race weekend) the fixture is held in |
| ↳ `group_id` | number | Not used in the Motorsport API |
| ↳ `aggregate_id` | number | Not used in the Motorsport API |
| ↳ `round_id` | number | Not used in the Motorsport API |
| ↳ `state_id` | number | State the fixture is currently in |
| ↳ `venue_id` | number | Venue (track) the fixture is held at |
| ↳ `name` | string | Name of the fixture (e.g. Practice 1, Race) |
| ↳ `starting_at` | string | Start date and time |
| ↳ `result_info` | string | Final result info |
| ↳ `leg` | string | Stage of the fixture (e.g. 2/3 for Practice 2) |
| ↳ `details` | string | Details about the fixture |
| ↳ `length` | number | Session length in minutes or total laps |
| ↳ `placeholder` | boolean | Whether the fixture is a placeholder |
| ↳ `has_odds` | boolean | Not used in the Motorsport API |
| ↳ `has_premium_odds` | boolean | Not used in the Motorsport API |
| ↳ `starting_at_timestamp` | number | UNIX timestamp of the start time |
### Get Motorsport Fixtures by IDs [#get-motorsport-fixtures-by-ids]
Retrieve multiple motorsport fixtures (sessions) by their IDs (max 50) from Sportmonks
#### Input [#input-133]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | -------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureIds` | string | Yes | Comma-separated list of fixture ids (max 50, e.g. 19408487,19408480) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participants;results) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-133]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------------------------------------- |
| `fixtures` | array | Array of motorsport fixture (session) objects for the requested ids |
| ↳ `id` | number | Unique id of the fixture (session) |
| ↳ `sport_id` | number | Sport of the fixture |
| ↳ `league_id` | number | League the fixture is held in |
| ↳ `season_id` | number | Season the fixture is held in |
| ↳ `stage_id` | number | Stage (race weekend) the fixture is held in |
| ↳ `group_id` | number | Not used in the Motorsport API |
| ↳ `aggregate_id` | number | Not used in the Motorsport API |
| ↳ `round_id` | number | Not used in the Motorsport API |
| ↳ `state_id` | number | State the fixture is currently in |
| ↳ `venue_id` | number | Venue (track) the fixture is held at |
| ↳ `name` | string | Name of the fixture (e.g. Practice 1, Race) |
| ↳ `starting_at` | string | Start date and time |
| ↳ `result_info` | string | Final result info |
| ↳ `leg` | string | Stage of the fixture (e.g. 2/3 for Practice 2) |
| ↳ `details` | string | Details about the fixture |
| ↳ `length` | number | Session length in minutes or total laps |
| ↳ `placeholder` | boolean | Whether the fixture is a placeholder |
| ↳ `has_odds` | boolean | Not used in the Motorsport API |
| ↳ `has_premium_odds` | boolean | Not used in the Motorsport API |
| ↳ `starting_at_timestamp` | number | UNIX timestamp of the start time |
### Get Laps by Fixture [#get-laps-by-fixture]
Retrieve all laps for a motorsport fixture (session) by fixture ID from Sportmonks
#### Input [#input-134]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture (session) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participant;details) |
| `filters` | string | No | Filters to apply |
#### Output [#output-134]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------ |
| `laps` | array | Array of lap objects for the fixture |
| ↳ `id` | number | Unique id of the lap/pitstop |
| ↳ `fixture_id` | number | Fixture related to the lap/pitstop |
| ↳ `lap_number` | number | Lap number in the fixture |
| ↳ `driver_number` | number | Number of the driver |
| ↳ `participant_id` | number | Driver related to the lap/pitstop |
| ↳ `is_latest` | boolean | Whether it is the latest lap/pitstop |
### Get Laps by Fixture and Driver [#get-laps-by-fixture-and-driver]
Retrieve all laps for a motorsport fixture and driver from Sportmonks
#### Input [#input-135]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture (session) |
| `driverId` | string | Yes | The unique id of the driver |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participant;details) |
| `filters` | string | No | Filters to apply |
#### Output [#output-135]
| Parameter | Type | Description |
| ------------------ | ------- | ----------------------------------------------- |
| `laps` | array | Array of lap objects for the fixture and driver |
| ↳ `id` | number | Unique id of the lap/pitstop |
| ↳ `fixture_id` | number | Fixture related to the lap/pitstop |
| ↳ `lap_number` | number | Lap number in the fixture |
| ↳ `driver_number` | number | Number of the driver |
| ↳ `participant_id` | number | Driver related to the lap/pitstop |
| ↳ `is_latest` | boolean | Whether it is the latest lap/pitstop |
### Get Laps by Fixture and Lap Number [#get-laps-by-fixture-and-lap-number]
Retrieve all laps for a motorsport fixture and lap number from Sportmonks
#### Input [#input-136]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture (session) |
| `lapNumber` | string | Yes | The lap number to retrieve |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participant;details) |
| `filters` | string | No | Filters to apply |
#### Output [#output-136]
| Parameter | Type | Description |
| ------------------ | ------- | --------------------------------------------------- |
| `laps` | array | Array of lap objects for the fixture and lap number |
| ↳ `id` | number | Unique id of the lap/pitstop |
| ↳ `fixture_id` | number | Fixture related to the lap/pitstop |
| ↳ `lap_number` | number | Lap number in the fixture |
| ↳ `driver_number` | number | Number of the driver |
| ↳ `participant_id` | number | Driver related to the lap/pitstop |
| ↳ `is_latest` | boolean | Whether it is the latest lap/pitstop |
### Get Latest Laps by Fixture [#get-latest-laps-by-fixture]
Retrieve the latest laps for a motorsport fixture (session) by fixture ID from Sportmonks
#### Input [#input-137]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture (session) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participant;details) |
| `filters` | string | No | Filters to apply |
#### Output [#output-137]
| Parameter | Type | Description |
| ------------------ | ------- | ----------------------------------------------- |
| `laps` | array | Array of the latest lap objects for the fixture |
| ↳ `id` | number | Unique id of the lap/pitstop |
| ↳ `fixture_id` | number | Fixture related to the lap/pitstop |
| ↳ `lap_number` | number | Lap number in the fixture |
| ↳ `driver_number` | number | Number of the driver |
| ↳ `participant_id` | number | Driver related to the lap/pitstop |
| ↳ `is_latest` | boolean | Whether it is the latest lap/pitstop |
### Get Latest Pitstops by Fixture [#get-latest-pitstops-by-fixture]
Retrieve the latest pitstops for a motorsport fixture (session) by fixture ID from Sportmonks
#### Input [#input-138]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture (session) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participant;details) |
| `filters` | string | No | Filters to apply |
#### Output [#output-138]
| Parameter | Type | Description |
| ------------------ | ------- | --------------------------------------------------- |
| `pitstops` | array | Array of the latest pitstop objects for the fixture |
| ↳ `id` | number | Unique id of the lap/pitstop |
| ↳ `fixture_id` | number | Fixture related to the lap/pitstop |
| ↳ `lap_number` | number | Lap number in the fixture |
| ↳ `driver_number` | number | Number of the driver |
| ↳ `participant_id` | number | Driver related to the lap/pitstop |
| ↳ `is_latest` | boolean | Whether it is the latest lap/pitstop |
### Get Latest Stints by Fixture [#get-latest-stints-by-fixture]
Retrieve the latest tyre stints for a motorsport fixture (session) by fixture ID from Sportmonks
#### Input [#input-139]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture (session) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participant;details) |
| `filters` | string | No | Filters to apply |
#### Output [#output-139]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------------- |
| `stints` | array | Array of the latest stint objects for the fixture |
| ↳ `id` | number | Unique id of the stint |
| ↳ `fixture_id` | number | Fixture related to the stint |
| ↳ `stint_number` | number | Stint number in the fixture |
| ↳ `driver_number` | number | Number of the driver |
| ↳ `participant_id` | number | Driver related to the stint |
| ↳ `is_latest` | boolean | Whether it is the latest stint |
### Get Latest Updated Drivers [#get-latest-updated-drivers]
Retrieve the most recently updated motorsport drivers from Sportmonks
#### Input [#input-140]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;teams) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-140]
| Parameter | Type | Description |
| ------------------------ | ------ | ------------------------------------------------- |
| `drivers` | array | Array of recently updated driver objects |
| ↳ `id` | number | Unique id of the driver (player\_id in responses) |
| ↳ `sport_id` | number | Sport of the driver |
| ↳ `country_id` | number | Country of birth of the driver |
| ↳ `nationality_id` | number | Nationality of the driver |
| ↳ `city_id` | number | City of birth of the driver |
| ↳ `position_id` | number | Position of the driver within the team |
| ↳ `detailed_position_id` | number | Not used in the Motorsport API |
| ↳ `type_id` | number | Not used in the Motorsport API |
| ↳ `common_name` | string | Name the driver is known for |
| ↳ `firstname` | string | First name of the driver |
| ↳ `lastname` | string | Last name of the driver |
| ↳ `name` | string | Name of the driver |
| ↳ `display_name` | string | Display name of the driver |
| ↳ `image_path` | string | URL to the driver headshot |
| ↳ `height` | number | Height of the driver in cm |
| ↳ `weight` | number | Weight of the driver in kg |
| ↳ `date_of_birth` | string | Date of birth of the driver |
| ↳ `gender` | string | Gender of the driver |
### Get Latest Updated Motorsport Fixtures [#get-latest-updated-motorsport-fixtures]
Retrieve the most recently updated motorsport fixtures (sessions) from Sportmonks
#### Input [#input-141]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participants;results) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-141]
| Parameter | Type | Description |
| ------------------------- | ------- | -------------------------------------------------------------- |
| `fixtures` | array | Array of recently updated motorsport fixture (session) objects |
| ↳ `id` | number | Unique id of the fixture (session) |
| ↳ `sport_id` | number | Sport of the fixture |
| ↳ `league_id` | number | League the fixture is held in |
| ↳ `season_id` | number | Season the fixture is held in |
| ↳ `stage_id` | number | Stage (race weekend) the fixture is held in |
| ↳ `group_id` | number | Not used in the Motorsport API |
| ↳ `aggregate_id` | number | Not used in the Motorsport API |
| ↳ `round_id` | number | Not used in the Motorsport API |
| ↳ `state_id` | number | State the fixture is currently in |
| ↳ `venue_id` | number | Venue (track) the fixture is held at |
| ↳ `name` | string | Name of the fixture (e.g. Practice 1, Race) |
| ↳ `starting_at` | string | Start date and time |
| ↳ `result_info` | string | Final result info |
| ↳ `leg` | string | Stage of the fixture (e.g. 2/3 for Practice 2) |
| ↳ `details` | string | Details about the fixture |
| ↳ `length` | number | Session length in minutes or total laps |
| ↳ `placeholder` | boolean | Whether the fixture is a placeholder |
| ↳ `has_odds` | boolean | Not used in the Motorsport API |
| ↳ `has_premium_odds` | boolean | Not used in the Motorsport API |
| ↳ `starting_at_timestamp` | number | UNIX timestamp of the start time |
### Get League by ID [#get-league-by-id-1]
Retrieve a single motorsport league by its ID from Sportmonks
#### Input [#input-142]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `leagueId` | string | Yes | The unique id of the league |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;seasons) |
| `filters` | string | No | Filters to apply |
#### Output [#output-142]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------- |
| `league` | object | The requested league object |
| ↳ `id` | number | Unique id of the league |
| ↳ `sport_id` | number | Sport of the league |
| ↳ `country_id` | number | Country of the league |
| ↳ `name` | string | Name of the league |
| ↳ `active` | boolean | Whether the league is active |
| ↳ `short_code` | string | Short code of the league |
| ↳ `image_path` | string | URL to the league logo |
| ↳ `type` | string | Type of the league |
| ↳ `sub_type` | string | Subtype of the league |
| ↳ `last_played_at` | string | Date of the last fixture held in the league |
| ↳ `category` | number | Category of the league |
| ↳ `has_jerseys` | boolean | Not used in the Motorsport API |
### Get All Leagues [#get-all-leagues]
Retrieve all motorsport leagues from Sportmonks
#### Input [#input-143]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;seasons) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-143]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------- |
| `leagues` | array | Array of league objects |
| ↳ `id` | number | Unique id of the league |
| ↳ `sport_id` | number | Sport of the league |
| ↳ `country_id` | number | Country of the league |
| ↳ `name` | string | Name of the league |
| ↳ `active` | boolean | Whether the league is active |
| ↳ `short_code` | string | Short code of the league |
| ↳ `image_path` | string | URL to the league logo |
| ↳ `type` | string | Type of the league |
| ↳ `sub_type` | string | Subtype of the league |
| ↳ `last_played_at` | string | Date of the last fixture held in the league |
| ↳ `category` | number | Category of the league |
| ↳ `has_jerseys` | boolean | Not used in the Motorsport API |
### Get Leagues by Country [#get-leagues-by-country-1]
Retrieve all motorsport leagues for a country by country ID from Sportmonks
#### Input [#input-144]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `countryId` | string | Yes | The unique id of the country |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;seasons) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-144]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------- |
| `leagues` | array | Array of league objects for the country |
| ↳ `id` | number | Unique id of the league |
| ↳ `sport_id` | number | Sport of the league |
| ↳ `country_id` | number | Country of the league |
| ↳ `name` | string | Name of the league |
| ↳ `active` | boolean | Whether the league is active |
| ↳ `short_code` | string | Short code of the league |
| ↳ `image_path` | string | URL to the league logo |
| ↳ `type` | string | Type of the league |
| ↳ `sub_type` | string | Subtype of the league |
| ↳ `last_played_at` | string | Date of the last fixture held in the league |
| ↳ `category` | number | Category of the league |
| ↳ `has_jerseys` | boolean | Not used in the Motorsport API |
### Get Leagues by Fixture Date [#get-leagues-by-fixture-date]
Retrieve all motorsport leagues with fixtures on a specific date (YYYY-MM-DD) from Sportmonks
#### Input [#input-145]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `date` | string | Yes | The date to fetch leagues for, in YYYY-MM-DD format |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;seasons) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-145]
| Parameter | Type | Description |
| ------------------ | ------- | ----------------------------------------------------------- |
| `leagues` | array | Array of league objects with fixtures on the requested date |
| ↳ `id` | number | Unique id of the league |
| ↳ `sport_id` | number | Sport of the league |
| ↳ `country_id` | number | Country of the league |
| ↳ `name` | string | Name of the league |
| ↳ `active` | boolean | Whether the league is active |
| ↳ `short_code` | string | Short code of the league |
| ↳ `image_path` | string | URL to the league logo |
| ↳ `type` | string | Type of the league |
| ↳ `sub_type` | string | Subtype of the league |
| ↳ `last_played_at` | string | Date of the last fixture held in the league |
| ↳ `category` | number | Category of the league |
| ↳ `has_jerseys` | boolean | Not used in the Motorsport API |
### Get Leagues by Live [#get-leagues-by-live]
Retrieve all motorsport leagues that currently have live fixtures from Sportmonks
#### Input [#input-146]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;seasons) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-146]
| Parameter | Type | Description |
| ------------------ | ------- | --------------------------------------------------------- |
| `leagues` | array | Array of league objects that currently have live fixtures |
| ↳ `id` | number | Unique id of the league |
| ↳ `sport_id` | number | Sport of the league |
| ↳ `country_id` | number | Country of the league |
| ↳ `name` | string | Name of the league |
| ↳ `active` | boolean | Whether the league is active |
| ↳ `short_code` | string | Short code of the league |
| ↳ `image_path` | string | URL to the league logo |
| ↳ `type` | string | Type of the league |
| ↳ `sub_type` | string | Subtype of the league |
| ↳ `last_played_at` | string | Date of the last fixture held in the league |
| ↳ `category` | number | Category of the league |
| ↳ `has_jerseys` | boolean | Not used in the Motorsport API |
### Get Leagues by Team [#get-leagues-by-team-1]
Retrieve all current and historical motorsport leagues for a team by team ID from Sportmonks
#### Input [#input-147]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `teamId` | string | Yes | The unique id of the team (constructor) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;seasons) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-147]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------- |
| `leagues` | array | Array of league objects for the team |
| ↳ `id` | number | Unique id of the league |
| ↳ `sport_id` | number | Sport of the league |
| ↳ `country_id` | number | Country of the league |
| ↳ `name` | string | Name of the league |
| ↳ `active` | boolean | Whether the league is active |
| ↳ `short_code` | string | Short code of the league |
| ↳ `image_path` | string | URL to the league logo |
| ↳ `type` | string | Type of the league |
| ↳ `sub_type` | string | Subtype of the league |
| ↳ `last_played_at` | string | Date of the last fixture held in the league |
| ↳ `category` | number | Category of the league |
| ↳ `has_jerseys` | boolean | Not used in the Motorsport API |
### Get Motorsport Livescores [#get-motorsport-livescores]
Retrieve all live motorsport fixtures (sessions) from Sportmonks
#### Input [#input-148]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participants;results) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-148]
| Parameter | Type | Description |
| ------------------------- | ------- | -------------------------------------------------- |
| `fixtures` | array | Array of live motorsport fixture (session) objects |
| ↳ `id` | number | Unique id of the fixture (session) |
| ↳ `sport_id` | number | Sport of the fixture |
| ↳ `league_id` | number | League the fixture is held in |
| ↳ `season_id` | number | Season the fixture is held in |
| ↳ `stage_id` | number | Stage (race weekend) the fixture is held in |
| ↳ `group_id` | number | Not used in the Motorsport API |
| ↳ `aggregate_id` | number | Not used in the Motorsport API |
| ↳ `round_id` | number | Not used in the Motorsport API |
| ↳ `state_id` | number | State the fixture is currently in |
| ↳ `venue_id` | number | Venue (track) the fixture is held at |
| ↳ `name` | string | Name of the fixture (e.g. Practice 1, Race) |
| ↳ `starting_at` | string | Start date and time |
| ↳ `result_info` | string | Final result info |
| ↳ `leg` | string | Stage of the fixture (e.g. 2/3 for Practice 2) |
| ↳ `details` | string | Details about the fixture |
| ↳ `length` | number | Session length in minutes or total laps |
| ↳ `placeholder` | boolean | Whether the fixture is a placeholder |
| ↳ `has_odds` | boolean | Not used in the Motorsport API |
| ↳ `has_premium_odds` | boolean | Not used in the Motorsport API |
| ↳ `starting_at_timestamp` | number | UNIX timestamp of the start time |
### Get Pitstops by Fixture [#get-pitstops-by-fixture]
Retrieve all pitstops for a motorsport fixture (session) by fixture ID from Sportmonks
#### Input [#input-149]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture (session) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participant;details) |
| `filters` | string | No | Filters to apply |
#### Output [#output-149]
| Parameter | Type | Description |
| ------------------ | ------- | ---------------------------------------- |
| `pitstops` | array | Array of pitstop objects for the fixture |
| ↳ `id` | number | Unique id of the lap/pitstop |
| ↳ `fixture_id` | number | Fixture related to the lap/pitstop |
| ↳ `lap_number` | number | Lap number in the fixture |
| ↳ `driver_number` | number | Number of the driver |
| ↳ `participant_id` | number | Driver related to the lap/pitstop |
| ↳ `is_latest` | boolean | Whether it is the latest lap/pitstop |
### Get Pitstops by Fixture and Driver [#get-pitstops-by-fixture-and-driver]
Retrieve all pitstops for a motorsport fixture and driver from Sportmonks
#### Input [#input-150]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture (session) |
| `driverId` | string | Yes | The unique id of the driver |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participant;details) |
| `filters` | string | No | Filters to apply |
#### Output [#output-150]
| Parameter | Type | Description |
| ------------------ | ------- | --------------------------------------------------- |
| `pitstops` | array | Array of pitstop objects for the fixture and driver |
| ↳ `id` | number | Unique id of the lap/pitstop |
| ↳ `fixture_id` | number | Fixture related to the lap/pitstop |
| ↳ `lap_number` | number | Lap number in the fixture |
| ↳ `driver_number` | number | Number of the driver |
| ↳ `participant_id` | number | Driver related to the lap/pitstop |
| ↳ `is_latest` | boolean | Whether it is the latest lap/pitstop |
### Get Pitstops by Fixture and Lap Number [#get-pitstops-by-fixture-and-lap-number]
Retrieve all pitstops for a motorsport fixture and lap number from Sportmonks
#### Input [#input-151]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture (session) |
| `lapNumber` | string | Yes | The lap number to retrieve |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participant;details) |
| `filters` | string | No | Filters to apply |
#### Output [#output-151]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------------------- |
| `pitstops` | array | Array of pitstop objects for the fixture and lap number |
| ↳ `id` | number | Unique id of the lap/pitstop |
| ↳ `fixture_id` | number | Fixture related to the lap/pitstop |
| ↳ `lap_number` | number | Lap number in the fixture |
| ↳ `driver_number` | number | Number of the driver |
| ↳ `participant_id` | number | Driver related to the lap/pitstop |
| ↳ `is_latest` | boolean | Whether it is the latest lap/pitstop |
### Get Race Results by Season and Driver [#get-race-results-by-season-and-driver]
Retrieve race results (stages with fixtures, lineups and lineup details) for a season and driver from Sportmonks
#### Input [#input-152]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
| `driverId` | string | Yes | The unique id of the driver |
| `include` | string | No | Semicolon-separated relations to enrich the response |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-152]
| Parameter | Type | Description |
| ------------------------- | ------- | ------------------------------------------------------------------------------------------------------------ |
| `results` | array | Array of stage objects for the season and driver, each including nested fixtures, lineups and lineup details |
| ↳ `id` | number | Unique id of the stage (race weekend) |
| ↳ `sport_id` | number | Sport of the stage |
| ↳ `league_id` | number | League related to the stage |
| ↳ `season_id` | number | Season related to the stage |
| ↳ `type_id` | number | Type of the stage |
| ↳ `name` | string | Name of the stage |
| ↳ `sort_order` | number | Order of the stage |
| ↳ `finished` | boolean | Whether the stage is finished |
| ↳ `is_current` | boolean | Whether the stage is the current stage |
| ↳ `starting_at` | string | Starting date of the stage |
| ↳ `ending_at` | string | Ending date of the stage |
| ↳ `games_in_current_week` | boolean | Not used in the Motorsport API |
| ↳ `tie_breaker_rule_id` | number | Not used in the Motorsport API |
### Get Race Results by Season and Team [#get-race-results-by-season-and-team]
Retrieve race results (stages with fixtures, lineups and lineup details) for a season and team from Sportmonks
#### Input [#input-153]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
| `teamId` | string | Yes | The unique id of the team (constructor) |
| `include` | string | No | Semicolon-separated relations to enrich the response |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-153]
| Parameter | Type | Description |
| ------------------------- | ------- | ---------------------------------------------------------------------------------------------------------- |
| `results` | array | Array of stage objects for the season and team, each including nested fixtures, lineups and lineup details |
| ↳ `id` | number | Unique id of the stage (race weekend) |
| ↳ `sport_id` | number | Sport of the stage |
| ↳ `league_id` | number | League related to the stage |
| ↳ `season_id` | number | Season related to the stage |
| ↳ `type_id` | number | Type of the stage |
| ↳ `name` | string | Name of the stage |
| ↳ `sort_order` | number | Order of the stage |
| ↳ `finished` | boolean | Whether the stage is finished |
| ↳ `is_current` | boolean | Whether the stage is the current stage |
| ↳ `starting_at` | string | Starting date of the stage |
| ↳ `ending_at` | string | Ending date of the stage |
| ↳ `games_in_current_week` | boolean | Not used in the Motorsport API |
| ↳ `tie_breaker_rule_id` | number | Not used in the Motorsport API |
### Get Schedules by Season [#get-schedules-by-season-1]
Retrieve the full schedule (stages with nested fixtures and venues) for a season by season ID from Sportmonks
#### Input [#input-154]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
| `include` | string | No | Semicolon-separated relations to enrich the response |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-154]
| Parameter | Type | Description |
| ------------------------- | ------- | ----------------------------------------------------------------------------------------- |
| `schedules` | array | Array of stage objects for the season schedule, each including nested fixtures and venues |
| ↳ `id` | number | Unique id of the stage (race weekend) |
| ↳ `sport_id` | number | Sport of the stage |
| ↳ `league_id` | number | League related to the stage |
| ↳ `season_id` | number | Season related to the stage |
| ↳ `type_id` | number | Type of the stage |
| ↳ `name` | string | Name of the stage |
| ↳ `sort_order` | number | Order of the stage |
| ↳ `finished` | boolean | Whether the stage is finished |
| ↳ `is_current` | boolean | Whether the stage is the current stage |
| ↳ `starting_at` | string | Starting date of the stage |
| ↳ `ending_at` | string | Ending date of the stage |
| ↳ `games_in_current_week` | boolean | Not used in the Motorsport API |
| ↳ `tie_breaker_rule_id` | number | Not used in the Motorsport API |
### Get Season by ID [#get-season-by-id-1]
Retrieve a single motorsport season by its ID from Sportmonks
#### Input [#input-155]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. league;stages) |
| `filters` | string | No | Filters to apply |
#### Output [#output-155]
| Parameter | Type | Description |
| ----------------------------- | ------- | ------------------------------------------ |
| `season` | object | The requested season object |
| ↳ `id` | number | Unique id of the season |
| ↳ `sport_id` | number | Sport of the season |
| ↳ `league_id` | number | League of the season |
| ↳ `tie_breaker_rule_id` | number | Not used in the Motorsport API |
| ↳ `name` | string | Name of the season |
| ↳ `finished` | boolean | Whether the season is finished |
| ↳ `pending` | boolean | Whether the season is pending |
| ↳ `is_current` | boolean | Whether the season is the current season |
| ↳ `starting_at` | string | Starting date of the season |
| ↳ `ending_at` | string | Ending date of the season |
| ↳ `standings_recalculated_at` | string | Timestamp when standings were last updated |
| ↳ `games_in_current_week` | boolean | Not used in the Motorsport API |
### Get All Seasons [#get-all-seasons]
Retrieve all motorsport seasons from Sportmonks
#### Input [#input-156]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. league;stages) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-156]
| Parameter | Type | Description |
| ----------------------------- | ------- | ------------------------------------------ |
| `seasons` | array | Array of season objects |
| ↳ `id` | number | Unique id of the season |
| ↳ `sport_id` | number | Sport of the season |
| ↳ `league_id` | number | League of the season |
| ↳ `tie_breaker_rule_id` | number | Not used in the Motorsport API |
| ↳ `name` | string | Name of the season |
| ↳ `finished` | boolean | Whether the season is finished |
| ↳ `pending` | boolean | Whether the season is pending |
| ↳ `is_current` | boolean | Whether the season is the current season |
| ↳ `starting_at` | string | Starting date of the season |
| ↳ `ending_at` | string | Ending date of the season |
| ↳ `standings_recalculated_at` | string | Timestamp when standings were last updated |
| ↳ `games_in_current_week` | boolean | Not used in the Motorsport API |
### Get Stage by ID [#get-stage-by-id-1]
Retrieve a single motorsport stage (race weekend) by its ID from Sportmonks
#### Input [#input-157]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `stageId` | string | Yes | The unique id of the stage (race weekend) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. league;season;fixtures) |
| `filters` | string | No | Filters to apply |
#### Output [#output-157]
| Parameter | Type | Description |
| ------------------------- | ------- | ----------------------------------------- |
| `stage` | object | The requested stage (race weekend) object |
| ↳ `id` | number | Unique id of the stage (race weekend) |
| ↳ `sport_id` | number | Sport of the stage |
| ↳ `league_id` | number | League related to the stage |
| ↳ `season_id` | number | Season related to the stage |
| ↳ `type_id` | number | Type of the stage |
| ↳ `name` | string | Name of the stage |
| ↳ `sort_order` | number | Order of the stage |
| ↳ `finished` | boolean | Whether the stage is finished |
| ↳ `is_current` | boolean | Whether the stage is the current stage |
| ↳ `starting_at` | string | Starting date of the stage |
| ↳ `ending_at` | string | Ending date of the stage |
| ↳ `games_in_current_week` | boolean | Not used in the Motorsport API |
| ↳ `tie_breaker_rule_id` | number | Not used in the Motorsport API |
### Get All Stages [#get-all-stages]
Retrieve all motorsport stages (race weekends) from Sportmonks
#### Input [#input-158]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. league;season;fixtures) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-158]
| Parameter | Type | Description |
| ------------------------- | ------- | -------------------------------------- |
| `stages` | array | Array of stage (race weekend) objects |
| ↳ `id` | number | Unique id of the stage (race weekend) |
| ↳ `sport_id` | number | Sport of the stage |
| ↳ `league_id` | number | League related to the stage |
| ↳ `season_id` | number | Season related to the stage |
| ↳ `type_id` | number | Type of the stage |
| ↳ `name` | string | Name of the stage |
| ↳ `sort_order` | number | Order of the stage |
| ↳ `finished` | boolean | Whether the stage is finished |
| ↳ `is_current` | boolean | Whether the stage is the current stage |
| ↳ `starting_at` | string | Starting date of the stage |
| ↳ `ending_at` | string | Ending date of the stage |
| ↳ `games_in_current_week` | boolean | Not used in the Motorsport API |
| ↳ `tie_breaker_rule_id` | number | Not used in the Motorsport API |
### Get Stages by Season [#get-stages-by-season-1]
Retrieve all motorsport stages (race weekends) for a season by season ID from Sportmonks
#### Input [#input-159]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. league;season;fixtures) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-159]
| Parameter | Type | Description |
| ------------------------- | ------- | ---------------------------------------------------- |
| `stages` | array | Array of stage (race weekend) objects for the season |
| ↳ `id` | number | Unique id of the stage (race weekend) |
| ↳ `sport_id` | number | Sport of the stage |
| ↳ `league_id` | number | League related to the stage |
| ↳ `season_id` | number | Season related to the stage |
| ↳ `type_id` | number | Type of the stage |
| ↳ `name` | string | Name of the stage |
| ↳ `sort_order` | number | Order of the stage |
| ↳ `finished` | boolean | Whether the stage is finished |
| ↳ `is_current` | boolean | Whether the stage is the current stage |
| ↳ `starting_at` | string | Starting date of the stage |
| ↳ `ending_at` | string | Ending date of the stage |
| ↳ `games_in_current_week` | boolean | Not used in the Motorsport API |
| ↳ `tie_breaker_rule_id` | number | Not used in the Motorsport API |
### Get State by ID [#get-state-by-id-1]
Retrieve a single motorsport fixture state by its ID from Sportmonks
#### Input [#input-160]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `stateId` | string | Yes | The unique id of the state |
| `include` | string | No | Semicolon-separated relations to enrich the response |
| `filters` | string | No | Filters to apply |
#### Output [#output-160]
| Parameter | Type | Description |
| ------------------ | ------ | -------------------------------------- |
| `state` | object | The requested fixture state object |
| ↳ `id` | number | Unique id of the state |
| ↳ `state` | string | Abbreviation of the state |
| ↳ `name` | string | Full name of the state |
| ↳ `short_name` | string | Short name of the state |
| ↳ `developer_name` | string | Name recommended for developers to use |
### Get All States [#get-all-states]
Retrieve all possible motorsport fixture states from Sportmonks
#### Input [#input-161]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-161]
| Parameter | Type | Description |
| ------------------ | ------ | -------------------------------------- |
| `states` | array | Array of fixture state objects |
| ↳ `id` | number | Unique id of the state |
| ↳ `state` | string | Abbreviation of the state |
| ↳ `name` | string | Full name of the state |
| ↳ `short_name` | string | Short name of the state |
| ↳ `developer_name` | string | Name recommended for developers to use |
### Get Stints by Fixture [#get-stints-by-fixture]
Retrieve all tyre stints for a motorsport fixture (session) by fixture ID from Sportmonks
#### Input [#input-162]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture (session) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participant;details) |
| `filters` | string | No | Filters to apply |
#### Output [#output-162]
| Parameter | Type | Description |
| ------------------ | ------- | -------------------------------------- |
| `stints` | array | Array of stint objects for the fixture |
| ↳ `id` | number | Unique id of the stint |
| ↳ `fixture_id` | number | Fixture related to the stint |
| ↳ `stint_number` | number | Stint number in the fixture |
| ↳ `driver_number` | number | Number of the driver |
| ↳ `participant_id` | number | Driver related to the stint |
| ↳ `is_latest` | boolean | Whether it is the latest stint |
### Get Stints by Fixture and Driver [#get-stints-by-fixture-and-driver]
Retrieve all tyre stints for a motorsport fixture and driver from Sportmonks
#### Input [#input-163]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture (session) |
| `driverId` | string | Yes | The unique id of the driver |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participant;details) |
| `filters` | string | No | Filters to apply |
#### Output [#output-163]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------------- |
| `stints` | array | Array of stint objects for the fixture and driver |
| ↳ `id` | number | Unique id of the stint |
| ↳ `fixture_id` | number | Fixture related to the stint |
| ↳ `stint_number` | number | Stint number in the fixture |
| ↳ `driver_number` | number | Number of the driver |
| ↳ `participant_id` | number | Driver related to the stint |
| ↳ `is_latest` | boolean | Whether it is the latest stint |
### Get Stints by Fixture and Stint Number [#get-stints-by-fixture-and-stint-number]
Retrieve all tyre stints for a motorsport fixture and stint number from Sportmonks
#### Input [#input-164]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture (session) |
| `stintNumber` | string | Yes | The stint number to retrieve |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participant;details) |
| `filters` | string | No | Filters to apply |
#### Output [#output-164]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------------------- |
| `stints` | array | Array of stint objects for the fixture and stint number |
| ↳ `id` | number | Unique id of the stint |
| ↳ `fixture_id` | number | Fixture related to the stint |
| ↳ `stint_number` | number | Stint number in the fixture |
| ↳ `driver_number` | number | Number of the driver |
| ↳ `participant_id` | number | Driver related to the stint |
| ↳ `is_latest` | boolean | Whether it is the latest stint |
### Get Team by ID [#get-team-by-id-1]
Retrieve a single motorsport team (constructor) by its ID from Sportmonks
#### Input [#input-165]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | --------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `teamId` | string | Yes | The unique id of the team (constructor) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;drivers) |
| `filters` | string | No | Filters to apply |
#### Output [#output-165]
| Parameter | Type | Description |
| ------------------ | ------- | ---------------------------------------- |
| `team` | object | The requested team (constructor) object |
| ↳ `id` | number | Unique id of the team |
| ↳ `sport_id` | number | Sport of the team |
| ↳ `country_id` | number | Country of the team |
| ↳ `venue_id` | number | Not used in the Motorsport API |
| ↳ `gender` | string | Gender of the team |
| ↳ `name` | string | Name of the team (constructor) |
| ↳ `short_code` | string | Short code of the team |
| ↳ `image_path` | string | URL to the team logo |
| ↳ `founded` | number | Founding year of the team |
| ↳ `type` | string | Type of the team |
| ↳ `placeholder` | boolean | Whether the team is a placeholder |
| ↳ `last_played_at` | string | Date and time of the team's last session |
### Get All Team Standings [#get-all-team-standings]
Retrieve all team (constructor) championship standings from Sportmonks
#### Input [#input-166]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participant;season) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-166]
| Parameter | Type | Description |
| -------------------- | ------ | -------------------------------------------- |
| `standings` | array | Array of team (constructor) standing entries |
| ↳ `id` | number | Unique id of the standing |
| ↳ `participant_id` | number | Driver or team related to the standing |
| ↳ `sport_id` | number | Sport related to the standing |
| ↳ `league_id` | number | League related to the standing |
| ↳ `season_id` | number | Season related to the standing |
| ↳ `stage_id` | number | Stage related to the standing |
| ↳ `group_id` | number | Not used in the Motorsport API |
| ↳ `round_id` | number | Not used in the Motorsport API |
| ↳ `standing_rule_id` | number | Not used in the Motorsport API |
| ↳ `position` | number | Position of the participant in the standing |
| ↳ `result` | string | Not used in the Motorsport API |
| ↳ `points` | number | Points the participant has gathered |
### Get Team Standings by Season [#get-team-standings-by-season]
Retrieve the constructors championship standings for a season by season ID from Sportmonks
#### Input [#input-167]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. participant;season) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-167]
| Parameter | Type | Description |
| -------------------- | ------ | ----------------------------------------------------------- |
| `standings` | array | Array of team (constructor) standing entries for the season |
| ↳ `id` | number | Unique id of the standing |
| ↳ `participant_id` | number | Driver or team related to the standing |
| ↳ `sport_id` | number | Sport related to the standing |
| ↳ `league_id` | number | League related to the standing |
| ↳ `season_id` | number | Season related to the standing |
| ↳ `stage_id` | number | Stage related to the standing |
| ↳ `group_id` | number | Not used in the Motorsport API |
| ↳ `round_id` | number | Not used in the Motorsport API |
| ↳ `standing_rule_id` | number | Not used in the Motorsport API |
| ↳ `position` | number | Position of the participant in the standing |
| ↳ `result` | string | Not used in the Motorsport API |
| ↳ `points` | number | Points the participant has gathered |
### Get Teams [#get-teams]
Retrieve all motorsport teams (constructors) from Sportmonks
#### Input [#input-168]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;drivers) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-168]
| Parameter | Type | Description |
| ------------------ | ------- | ---------------------------------------- |
| `teams` | array | Array of team (constructor) objects |
| ↳ `id` | number | Unique id of the team |
| ↳ `sport_id` | number | Sport of the team |
| ↳ `country_id` | number | Country of the team |
| ↳ `venue_id` | number | Not used in the Motorsport API |
| ↳ `gender` | string | Gender of the team |
| ↳ `name` | string | Name of the team (constructor) |
| ↳ `short_code` | string | Short code of the team |
| ↳ `image_path` | string | URL to the team logo |
| ↳ `founded` | number | Founding year of the team |
| ↳ `type` | string | Type of the team |
| ↳ `placeholder` | boolean | Whether the team is a placeholder |
| ↳ `last_played_at` | string | Date and time of the team's last session |
### Get Teams by Country [#get-teams-by-country-1]
Retrieve all motorsport teams (constructors) for a country by country ID from Sportmonks
#### Input [#input-169]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `countryId` | string | Yes | The unique id of the country |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;drivers) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-169]
| Parameter | Type | Description |
| ------------------ | ------- | --------------------------------------------------- |
| `teams` | array | Array of team (constructor) objects for the country |
| ↳ `id` | number | Unique id of the team |
| ↳ `sport_id` | number | Sport of the team |
| ↳ `country_id` | number | Country of the team |
| ↳ `venue_id` | number | Not used in the Motorsport API |
| ↳ `gender` | string | Gender of the team |
| ↳ `name` | string | Name of the team (constructor) |
| ↳ `short_code` | string | Short code of the team |
| ↳ `image_path` | string | URL to the team logo |
| ↳ `founded` | number | Founding year of the team |
| ↳ `type` | string | Type of the team |
| ↳ `placeholder` | boolean | Whether the team is a placeholder |
| ↳ `last_played_at` | string | Date and time of the team's last session |
### Get Teams by Season [#get-teams-by-season-1]
Retrieve all motorsport teams (constructors) for a season by season ID from Sportmonks
#### Input [#input-170]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;drivers) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-170]
| Parameter | Type | Description |
| ------------------ | ------- | -------------------------------------------------- |
| `teams` | array | Array of team (constructor) objects for the season |
| ↳ `id` | number | Unique id of the team |
| ↳ `sport_id` | number | Sport of the team |
| ↳ `country_id` | number | Country of the team |
| ↳ `venue_id` | number | Not used in the Motorsport API |
| ↳ `gender` | string | Gender of the team |
| ↳ `name` | string | Name of the team (constructor) |
| ↳ `short_code` | string | Short code of the team |
| ↳ `image_path` | string | URL to the team logo |
| ↳ `founded` | number | Founding year of the team |
| ↳ `type` | string | Type of the team |
| ↳ `placeholder` | boolean | Whether the team is a placeholder |
| ↳ `last_played_at` | string | Date and time of the team's last session |
### Get Venue by ID [#get-venue-by-id-1]
Retrieve a single motorsport venue (racing track) by its ID from Sportmonks
#### Input [#input-171]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `venueId` | string | Yes | The unique id of the venue (track) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;city) |
| `filters` | string | No | Filters to apply |
#### Output [#output-171]
| Parameter | Type | Description |
| ----------------- | ------- | ----------------------------------------- |
| `venue` | object | The requested venue (racing track) object |
| ↳ `id` | number | Unique id of the venue (track) |
| ↳ `country_id` | number | Country the venue is in |
| ↳ `city_id` | number | City the venue is in |
| ↳ `name` | string | Name of the venue/track |
| ↳ `address` | string | Address of the venue |
| ↳ `zipcode` | string | Zipcode of the venue |
| ↳ `latitude` | string | Latitude of the venue |
| ↳ `longitude` | string | Longitude of the venue |
| ↳ `capacity` | number | Capacity of the venue |
| ↳ `image_path` | string | URL to the track layout image |
| ↳ `city_name` | string | Name of the city the venue is in |
| ↳ `surface` | string | Surface of the venue |
| ↳ `national_team` | boolean | Not used in the Motorsport API |
### Get Venues [#get-venues-1]
Retrieve all motorsport venues (racing tracks) from Sportmonks
#### Input [#input-172]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;city) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-172]
| Parameter | Type | Description |
| ----------------- | ------- | ------------------------------------- |
| `venues` | array | Array of venue (racing track) objects |
| ↳ `id` | number | Unique id of the venue (track) |
| ↳ `country_id` | number | Country the venue is in |
| ↳ `city_id` | number | City the venue is in |
| ↳ `name` | string | Name of the venue/track |
| ↳ `address` | string | Address of the venue |
| ↳ `zipcode` | string | Zipcode of the venue |
| ↳ `latitude` | string | Latitude of the venue |
| ↳ `longitude` | string | Longitude of the venue |
| ↳ `capacity` | number | Capacity of the venue |
| ↳ `image_path` | string | URL to the track layout image |
| ↳ `city_name` | string | Name of the city the venue is in |
| ↳ `surface` | string | Surface of the venue |
| ↳ `national_team` | boolean | Not used in the Motorsport API |
### Get Venues by Season [#get-venues-by-season-1]
Retrieve all motorsport venues (racing tracks) for a season by season ID from Sportmonks
#### Input [#input-173]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `seasonId` | string | Yes | The unique id of the season |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;city) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-173]
| Parameter | Type | Description |
| ----------------- | ------- | ---------------------------------------------------- |
| `venues` | array | Array of venue (racing track) objects for the season |
| ↳ `id` | number | Unique id of the venue (track) |
| ↳ `country_id` | number | Country the venue is in |
| ↳ `city_id` | number | City the venue is in |
| ↳ `name` | string | Name of the venue/track |
| ↳ `address` | string | Address of the venue |
| ↳ `zipcode` | string | Zipcode of the venue |
| ↳ `latitude` | string | Latitude of the venue |
| ↳ `longitude` | string | Longitude of the venue |
| ↳ `capacity` | number | Capacity of the venue |
| ↳ `image_path` | string | URL to the track layout image |
| ↳ `city_name` | string | Name of the city the venue is in |
| ↳ `surface` | string | Surface of the venue |
| ↳ `national_team` | boolean | Not used in the Motorsport API |
### Search Drivers [#search-drivers]
Search for motorsport drivers by name from Sportmonks
#### Input [#input-174]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `query` | string | Yes | The driver name to search for (e.g. Verstappen) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;teams) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-174]
| Parameter | Type | Description |
| ------------------------ | ------ | ------------------------------------------------- |
| `drivers` | array | Array of driver objects matching the search query |
| ↳ `id` | number | Unique id of the driver (player\_id in responses) |
| ↳ `sport_id` | number | Sport of the driver |
| ↳ `country_id` | number | Country of birth of the driver |
| ↳ `nationality_id` | number | Nationality of the driver |
| ↳ `city_id` | number | City of birth of the driver |
| ↳ `position_id` | number | Position of the driver within the team |
| ↳ `detailed_position_id` | number | Not used in the Motorsport API |
| ↳ `type_id` | number | Not used in the Motorsport API |
| ↳ `common_name` | string | Name the driver is known for |
| ↳ `firstname` | string | First name of the driver |
| ↳ `lastname` | string | Last name of the driver |
| ↳ `name` | string | Name of the driver |
| ↳ `display_name` | string | Display name of the driver |
| ↳ `image_path` | string | URL to the driver headshot |
| ↳ `height` | number | Height of the driver in cm |
| ↳ `weight` | number | Weight of the driver in kg |
| ↳ `date_of_birth` | string | Date of birth of the driver |
| ↳ `gender` | string | Gender of the driver |
### Search Leagues [#search-leagues-1]
Search for motorsport leagues by name from Sportmonks
#### Input [#input-175]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `query` | string | Yes | The league name to search for (e.g. Formula) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;seasons) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-175]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------------- |
| `leagues` | array | Array of league objects matching the search query |
| ↳ `id` | number | Unique id of the league |
| ↳ `sport_id` | number | Sport of the league |
| ↳ `country_id` | number | Country of the league |
| ↳ `name` | string | Name of the league |
| ↳ `active` | boolean | Whether the league is active |
| ↳ `short_code` | string | Short code of the league |
| ↳ `image_path` | string | URL to the league logo |
| ↳ `type` | string | Type of the league |
| ↳ `sub_type` | string | Subtype of the league |
| ↳ `last_played_at` | string | Date of the last fixture held in the league |
| ↳ `category` | number | Category of the league |
| ↳ `has_jerseys` | boolean | Not used in the Motorsport API |
### Search Stages [#search-stages-1]
Search for motorsport stages (race weekends) by name from Sportmonks
#### Input [#input-176]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `query` | string | Yes | The stage name to search for (e.g. Monaco) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. league;season;fixtures) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-176]
| Parameter | Type | Description |
| ------------------------- | ------- | --------------------------------------------------------------- |
| `stages` | array | Array of stage (race weekend) objects matching the search query |
| ↳ `id` | number | Unique id of the stage (race weekend) |
| ↳ `sport_id` | number | Sport of the stage |
| ↳ `league_id` | number | League related to the stage |
| ↳ `season_id` | number | Season related to the stage |
| ↳ `type_id` | number | Type of the stage |
| ↳ `name` | string | Name of the stage |
| ↳ `sort_order` | number | Order of the stage |
| ↳ `finished` | boolean | Whether the stage is finished |
| ↳ `is_current` | boolean | Whether the stage is the current stage |
| ↳ `starting_at` | string | Starting date of the stage |
| ↳ `ending_at` | string | Ending date of the stage |
| ↳ `games_in_current_week` | boolean | Not used in the Motorsport API |
| ↳ `tie_breaker_rule_id` | number | Not used in the Motorsport API |
### Search Teams [#search-teams-1]
Search for motorsport teams (constructors) by name from Sportmonks
#### Input [#input-177]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `query` | string | Yes | The team name to search for (e.g. Bull) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;drivers) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-177]
| Parameter | Type | Description |
| ------------------ | ------- | ------------------------------------------------------------- |
| `teams` | array | Array of team (constructor) objects matching the search query |
| ↳ `id` | number | Unique id of the team |
| ↳ `sport_id` | number | Sport of the team |
| ↳ `country_id` | number | Country of the team |
| ↳ `venue_id` | number | Not used in the Motorsport API |
| ↳ `gender` | string | Gender of the team |
| ↳ `name` | string | Name of the team (constructor) |
| ↳ `short_code` | string | Short code of the team |
| ↳ `image_path` | string | URL to the team logo |
| ↳ `founded` | number | Founding year of the team |
| ↳ `type` | string | Type of the team |
| ↳ `placeholder` | boolean | Whether the team is a placeholder |
| ↳ `last_played_at` | string | Date and time of the team's last session |
### Search Venues [#search-venues-1]
Search for motorsport venues (racing tracks) by name from Sportmonks
#### Input [#input-178]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `query` | string | Yes | The venue name to search for (e.g. Hungaroring) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;city) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-178]
| Parameter | Type | Description |
| ----------------- | ------- | --------------------------------------------------------------- |
| `venues` | array | Array of venue (racing track) objects matching the search query |
| ↳ `id` | number | Unique id of the venue (track) |
| ↳ `country_id` | number | Country the venue is in |
| ↳ `city_id` | number | City the venue is in |
| ↳ `name` | string | Name of the venue/track |
| ↳ `address` | string | Address of the venue |
| ↳ `zipcode` | string | Zipcode of the venue |
| ↳ `latitude` | string | Latitude of the venue |
| ↳ `longitude` | string | Longitude of the venue |
| ↳ `capacity` | number | Capacity of the venue |
| ↳ `image_path` | string | URL to the track layout image |
| ↳ `city_name` | string | Name of the city the venue is in |
| ↳ `surface` | string | Surface of the venue |
| ↳ `national_team` | boolean | Not used in the Motorsport API |
### Get All Historical Odds [#get-all-historical-odds]
Retrieve all available historical (premium) pre-match odd values from the Sportmonks Odds API
#### Input [#input-179]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. odd) |
| `filters` | string | No | Filters to apply (e.g. winningOdds) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-179]
| Parameter | Type | Description |
| -------------------- | ------ | -------------------------------------------------- |
| `historicalOdds` | array | Array of historical premium odd value records |
| ↳ `id` | number | Unique id of the history record |
| ↳ `odd_id` | number | Premium odd this history record belongs to |
| ↳ `value` | string | Historical decimal odds value |
| ↳ `probability` | string | Implied probability at this point in time |
| ↳ `dp3` | string | Decimal odds to 3 decimal places |
| ↳ `fractional` | string | Fractional odds |
| ↳ `american` | string | American/moneyline odds |
| ↳ `bookmaker_update` | string | Bookmaker's update timestamp for this record (UTC) |
### Get All In-play Odds [#get-all-in-play-odds]
Retrieve all available live (in-play) odds from the Sportmonks Odds API
#### Input [#input-180]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. market;bookmaker) |
| `filters` | string | No | Filters to apply (e.g. markets:1,12, bookmakers:2,14, IdAfter:oddID) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-180]
| Parameter | Type | Description |
| ---------------------- | ------- | -------------------------------------- |
| `odds` | array | Array of in-play odd objects |
| ↳ `id` | number | Unique id of the odd |
| ↳ `fixture_id` | number | Fixture the odd belongs to |
| ↳ `external_id` | number | External id of the odd |
| ↳ `market_id` | number | Market the odd belongs to |
| ↳ `bookmaker_id` | number | Bookmaker offering the odd |
| ↳ `label` | string | Outcome label (e.g. 1, X, 2) |
| ↳ `value` | string | Decimal odds value |
| ↳ `name` | string | Outcome name |
| ↳ `sort_order` | number | Sort order of the odd |
| ↳ `market_description` | string | Description of the market |
| ↳ `probability` | string | Implied probability |
| ↳ `dp3` | string | Decimal odds to 3 decimal places |
| ↳ `fractional` | string | Fractional odds |
| ↳ `american` | string | American/moneyline odds |
| ↳ `winning` | boolean | Whether this is the winning outcome |
| ↳ `suspended` | boolean | Whether the odd is suspended |
| ↳ `stopped` | boolean | Whether the odd is stopped |
| ↳ `total` | string | Total line for over/under markets |
| ↳ `handicap` | string | Handicap line for handicap markets |
| ↳ `participants` | string | Participant ids related to the outcome |
### Get All Pre-match Odds [#get-all-pre-match-odds]
Retrieve all available pre-match odds from the Sportmonks Odds API
#### Input [#input-181]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. market;bookmaker) |
| `filters` | string | No | Filters to apply (e.g. markets:1,12, bookmakers:2,14, winningOdds, IdAfter:oddID) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-181]
| Parameter | Type | Description |
| ---------------------- | ------- | ----------------------------------------------------- |
| `odds` | array | Array of pre-match odd objects |
| ↳ `id` | number | Unique id of the odd |
| ↳ `fixture_id` | number | Fixture the odd belongs to |
| ↳ `market_id` | number | Market the odd belongs to |
| ↳ `bookmaker_id` | number | Bookmaker offering the odd |
| ↳ `label` | string | Outcome label (e.g. 1, X, 2) |
| ↳ `value` | string | Decimal odds value |
| ↳ `name` | string | Outcome name (e.g. Home, Draw, Away) |
| ↳ `sort_order` | number | Sort order of the odd |
| ↳ `market_description` | string | Description of the market |
| ↳ `probability` | string | Implied probability (e.g. 48.78%) |
| ↳ `dp3` | string | Decimal odds to 3 decimal places |
| ↳ `fractional` | string | Fractional odds (e.g. 31/15) |
| ↳ `american` | string | American/moneyline odds (e.g. +104) |
| ↳ `winning` | boolean | Whether this is the winning outcome |
| ↳ `stopped` | boolean | Whether the odd is stopped |
| ↳ `total` | string | Total line for over/under markets |
| ↳ `handicap` | string | Handicap line for handicap markets |
| ↳ `participants` | string | Participant ids related to the outcome |
| ↳ `original_label` | string | Original handicap value of the odd (handicap markets) |
### Get All Premium Odds [#get-all-premium-odds]
Retrieve all available premium (historical) pre-match odds from the Sportmonks Odds API
#### Input [#input-182]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. market;bookmaker) |
| `filters` | string | No | Filters to apply (e.g. markets:1,12, bookmakers:2,14, IdAfter:oddID) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-182]
| Parameter | Type | Description |
| --------------------------- | ------- | ------------------------------------------- |
| `premiumOdds` | array | Array of premium odd objects |
| ↳ `id` | number | Unique id of the odd |
| ↳ `fixture_id` | number | Fixture the odd belongs to |
| ↳ `market_id` | number | Market the odd belongs to |
| ↳ `bookmaker_id` | number | Bookmaker offering the odd |
| ↳ `label` | string | Outcome label |
| ↳ `value` | string | Decimal odds value |
| ↳ `name` | string | Outcome name |
| ↳ `sort_order` | number | Sort order of the odd |
| ↳ `market_description` | string | Description of the market |
| ↳ `probability` | string | Implied probability (e.g. 29.85%) |
| ↳ `dp3` | string | Decimal odds to 3 decimal places |
| ↳ `fractional` | string | Fractional odds |
| ↳ `american` | string | American/moneyline odds |
| ↳ `stopped` | boolean | Whether the odd is stopped |
| ↳ `total` | string | Total line for over/under markets |
| ↳ `handicap` | string | Handicap line for handicap markets |
| ↳ `created_at` | string | Timestamp the odd was created (UTC) |
| ↳ `updated_at` | string | Timestamp the odd was last updated (UTC) |
| ↳ `latest_bookmaker_update` | string | Bookmaker's own last-update timestamp (UTC) |
### Get Bookmaker by ID [#get-bookmaker-by-id]
Retrieve a single bookmaker by its ID from the Sportmonks Odds API
#### Input [#input-183]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `bookmakerId` | string | Yes | The unique id of the bookmaker |
#### Output [#output-183]
| Parameter | Type | Description |
| ----------- | ------ | ------------------------------ |
| `bookmaker` | object | The requested bookmaker object |
| ↳ `id` | number | Unique id of the bookmaker |
| ↳ `name` | string | Name of the bookmaker |
| ↳ `logo` | string | Logo of the bookmaker |
### Get Bookmaker Event IDs by Fixture [#get-bookmaker-event-ids-by-fixture]
Retrieve bookmakers' own event ids mapped to a Sportmonks fixture via the Sportmonks Odds API
#### Input [#input-184]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-184]
| Parameter | Type | Description |
| ---------------------- | ------ | -------------------------------------------------------- |
| `bookmakerEvents` | array | Array of bookmaker event mapping records for the fixture |
| ↳ `fixture_id` | number | Sportmonks fixture id |
| ↳ `bookmaker_id` | number | Id of the bookmaker |
| ↳ `bookmaker_name` | string | Name of the bookmaker |
| ↳ `bookmaker_event_id` | string | The fixture's event id at the bookmaker |
### Get Bookmakers [#get-bookmakers]
Retrieve all bookmakers from the Sportmonks Odds API
#### Input [#input-185]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `filters` | string | No | Filters to apply (e.g. IdAfter:bookmakerID) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-185]
| Parameter | Type | Description |
| ------------ | ------ | -------------------------- |
| `bookmakers` | array | Array of bookmaker objects |
| ↳ `id` | number | Unique id of the bookmaker |
| ↳ `name` | string | Name of the bookmaker |
| ↳ `logo` | string | Logo of the bookmaker |
### Get Bookmakers by Fixture [#get-bookmakers-by-fixture]
Retrieve all bookmakers available for a fixture from the Sportmonks Odds API
#### Input [#input-186]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-186]
| Parameter | Type | Description |
| ------------ | ------ | ---------------------------------------------------- |
| `bookmakers` | array | Array of bookmaker objects available for the fixture |
| ↳ `id` | number | Unique id of the bookmaker |
| ↳ `name` | string | Name of the bookmaker |
| ↳ `logo` | string | Logo of the bookmaker |
### Get In-play Odds by Fixture [#get-in-play-odds-by-fixture]
Retrieve live (in-play) odds for a fixture by fixture ID from the Sportmonks Odds API
#### Input [#input-187]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. market;bookmaker) |
| `filters` | string | No | Filters to apply (e.g. markets:1,12 or bookmakers:2,14 or winningOdds) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-187]
| Parameter | Type | Description |
| ---------------------- | ------- | -------------------------------------------- |
| `odds` | array | Array of in-play odd objects for the fixture |
| ↳ `id` | number | Unique id of the odd |
| ↳ `fixture_id` | number | Fixture the odd belongs to |
| ↳ `external_id` | number | External id of the odd |
| ↳ `market_id` | number | Market the odd belongs to |
| ↳ `bookmaker_id` | number | Bookmaker offering the odd |
| ↳ `label` | string | Outcome label (e.g. 1, X, 2) |
| ↳ `value` | string | Decimal odds value |
| ↳ `name` | string | Outcome name |
| ↳ `sort_order` | number | Sort order of the odd |
| ↳ `market_description` | string | Description of the market |
| ↳ `probability` | string | Implied probability |
| ↳ `dp3` | string | Decimal odds to 3 decimal places |
| ↳ `fractional` | string | Fractional odds |
| ↳ `american` | string | American/moneyline odds |
| ↳ `winning` | boolean | Whether this is the winning outcome |
| ↳ `suspended` | boolean | Whether the odd is suspended |
| ↳ `stopped` | boolean | Whether the odd is stopped |
| ↳ `total` | string | Total line for over/under markets |
| ↳ `handicap` | string | Handicap line for handicap markets |
| ↳ `participants` | string | Participant ids related to the outcome |
### Get In-play Odds by Fixture and Bookmaker [#get-in-play-odds-by-fixture-and-bookmaker]
Retrieve live (in-play) odds for a fixture from a specific bookmaker via the Sportmonks Odds API
#### Input [#input-188]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture |
| `bookmakerId` | string | Yes | The unique id of the bookmaker |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. market;bookmaker) |
| `filters` | string | No | Filters to apply (e.g. markets:1,12) |
#### Output [#output-188]
| Parameter | Type | Description |
| ---------------------- | ------- | ---------------------------------------------------------- |
| `odds` | array | Array of in-play odd objects for the fixture and bookmaker |
| ↳ `id` | number | Unique id of the odd |
| ↳ `fixture_id` | number | Fixture the odd belongs to |
| ↳ `external_id` | number | External id of the odd |
| ↳ `market_id` | number | Market the odd belongs to |
| ↳ `bookmaker_id` | number | Bookmaker offering the odd |
| ↳ `label` | string | Outcome label (e.g. 1, X, 2) |
| ↳ `value` | string | Decimal odds value |
| ↳ `name` | string | Outcome name |
| ↳ `sort_order` | number | Sort order of the odd |
| ↳ `market_description` | string | Description of the market |
| ↳ `probability` | string | Implied probability |
| ↳ `dp3` | string | Decimal odds to 3 decimal places |
| ↳ `fractional` | string | Fractional odds |
| ↳ `american` | string | American/moneyline odds |
| ↳ `winning` | boolean | Whether this is the winning outcome |
| ↳ `suspended` | boolean | Whether the odd is suspended |
| ↳ `stopped` | boolean | Whether the odd is stopped |
| ↳ `total` | string | Total line for over/under markets |
| ↳ `handicap` | string | Handicap line for handicap markets |
| ↳ `participants` | string | Participant ids related to the outcome |
### Get In-play Odds by Fixture and Market [#get-in-play-odds-by-fixture-and-market]
Retrieve live (in-play) odds for a fixture on a specific market via the Sportmonks Odds API
#### Input [#input-189]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture |
| `marketId` | string | Yes | The unique id of the market |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. market;bookmaker) |
| `filters` | string | No | Filters to apply (e.g. bookmakers:2,14) |
#### Output [#output-189]
| Parameter | Type | Description |
| ---------------------- | ------- | ------------------------------------------------------- |
| `odds` | array | Array of in-play odd objects for the fixture and market |
| ↳ `id` | number | Unique id of the odd |
| ↳ `fixture_id` | number | Fixture the odd belongs to |
| ↳ `external_id` | number | External id of the odd |
| ↳ `market_id` | number | Market the odd belongs to |
| ↳ `bookmaker_id` | number | Bookmaker offering the odd |
| ↳ `label` | string | Outcome label (e.g. 1, X, 2) |
| ↳ `value` | string | Decimal odds value |
| ↳ `name` | string | Outcome name |
| ↳ `sort_order` | number | Sort order of the odd |
| ↳ `market_description` | string | Description of the market |
| ↳ `probability` | string | Implied probability |
| ↳ `dp3` | string | Decimal odds to 3 decimal places |
| ↳ `fractional` | string | Fractional odds |
| ↳ `american` | string | American/moneyline odds |
| ↳ `winning` | boolean | Whether this is the winning outcome |
| ↳ `suspended` | boolean | Whether the odd is suspended |
| ↳ `stopped` | boolean | Whether the odd is stopped |
| ↳ `total` | string | Total line for over/under markets |
| ↳ `handicap` | string | Handicap line for handicap markets |
| ↳ `participants` | string | Participant ids related to the outcome |
### Get Last Updated In-play Odds [#get-last-updated-in-play-odds]
Retrieve in-play odds updated in the last 10 seconds from the Sportmonks Odds API
#### Input [#input-190]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. market;bookmaker) |
| `filters` | string | No | Filters to apply (e.g. markets:1,12 or bookmakers:2,14) |
#### Output [#output-190]
| Parameter | Type | Description |
| ---------------------- | ------- | ----------------------------------------------------------- |
| `odds` | array | Array of in-play odd objects updated in the last 10 seconds |
| ↳ `id` | number | Unique id of the odd |
| ↳ `fixture_id` | number | Fixture the odd belongs to |
| ↳ `external_id` | number | External id of the odd |
| ↳ `market_id` | number | Market the odd belongs to |
| ↳ `bookmaker_id` | number | Bookmaker offering the odd |
| ↳ `label` | string | Outcome label (e.g. 1, X, 2) |
| ↳ `value` | string | Decimal odds value |
| ↳ `name` | string | Outcome name |
| ↳ `sort_order` | number | Sort order of the odd |
| ↳ `market_description` | string | Description of the market |
| ↳ `probability` | string | Implied probability |
| ↳ `dp3` | string | Decimal odds to 3 decimal places |
| ↳ `fractional` | string | Fractional odds |
| ↳ `american` | string | American/moneyline odds |
| ↳ `winning` | boolean | Whether this is the winning outcome |
| ↳ `suspended` | boolean | Whether the odd is suspended |
| ↳ `stopped` | boolean | Whether the odd is stopped |
| ↳ `total` | string | Total line for over/under markets |
| ↳ `handicap` | string | Handicap line for handicap markets |
| ↳ `participants` | string | Participant ids related to the outcome |
### Get Last Updated Pre-match Odds [#get-last-updated-pre-match-odds]
Retrieve pre-match odds updated in the last 10 seconds from the Sportmonks Odds API
#### Input [#input-191]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. market;bookmaker) |
| `filters` | string | No | Filters to apply (e.g. markets:1,12 or bookmakers:2,14 or winningOdds) |
#### Output [#output-191]
| Parameter | Type | Description |
| ---------------------- | ------- | ------------------------------------------------------------- |
| `odds` | array | Array of pre-match odd objects updated in the last 10 seconds |
| ↳ `id` | number | Unique id of the odd |
| ↳ `fixture_id` | number | Fixture the odd belongs to |
| ↳ `market_id` | number | Market the odd belongs to |
| ↳ `bookmaker_id` | number | Bookmaker offering the odd |
| ↳ `label` | string | Outcome label (e.g. 1, X, 2) |
| ↳ `value` | string | Decimal odds value |
| ↳ `name` | string | Outcome name (e.g. Home, Draw, Away) |
| ↳ `sort_order` | number | Sort order of the odd |
| ↳ `market_description` | string | Description of the market |
| ↳ `probability` | string | Implied probability (e.g. 48.78%) |
| ↳ `dp3` | string | Decimal odds to 3 decimal places |
| ↳ `fractional` | string | Fractional odds (e.g. 31/15) |
| ↳ `american` | string | American/moneyline odds (e.g. +104) |
| ↳ `winning` | boolean | Whether this is the winning outcome |
| ↳ `stopped` | boolean | Whether the odd is stopped |
| ↳ `total` | string | Total line for over/under markets |
| ↳ `handicap` | string | Handicap line for handicap markets |
| ↳ `participants` | string | Participant ids related to the outcome |
| ↳ `original_label` | string | Original handicap value of the odd (handicap markets) |
### Get Market by ID [#get-market-by-id]
Retrieve a single betting market by its ID from the Sportmonks Odds API
#### Input [#input-192]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `marketId` | string | Yes | The unique id of the market |
#### Output [#output-192]
| Parameter | Type | Description |
| ------------------ | ------ | ----------------------------------------------- |
| `market` | object | The requested market object |
| ↳ `id` | number | Unique id of the market |
| ↳ `name` | string | Name of the market |
| ↳ `developer_name` | string | Developer (machine-readable) name of the market |
### Get Markets [#get-markets]
Retrieve all betting markets from the Sportmonks Odds API
#### Input [#input-193]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `filters` | string | No | Filters to apply (e.g. IdAfter:marketID) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-193]
| Parameter | Type | Description |
| ------------------ | ------ | ----------------------------------------------- |
| `markets` | array | Array of market objects |
| ↳ `id` | number | Unique id of the market |
| ↳ `name` | string | Name of the market |
| ↳ `developer_name` | string | Developer (machine-readable) name of the market |
### Get Pre-match Odds by Fixture [#get-pre-match-odds-by-fixture]
Retrieve pre-match odds for a fixture by fixture ID from the Sportmonks Odds API
#### Input [#input-194]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. market;bookmaker) |
| `filters` | string | No | Filters to apply (e.g. markets:1,12 or bookmakers:2,14 or winningOdds) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-194]
| Parameter | Type | Description |
| ---------------------- | ------- | ----------------------------------------------------- |
| `odds` | array | Array of pre-match odd objects for the fixture |
| ↳ `id` | number | Unique id of the odd |
| ↳ `fixture_id` | number | Fixture the odd belongs to |
| ↳ `market_id` | number | Market the odd belongs to |
| ↳ `bookmaker_id` | number | Bookmaker offering the odd |
| ↳ `label` | string | Outcome label (e.g. 1, X, 2) |
| ↳ `value` | string | Decimal odds value |
| ↳ `name` | string | Outcome name (e.g. Home, Draw, Away) |
| ↳ `sort_order` | number | Sort order of the odd |
| ↳ `market_description` | string | Description of the market |
| ↳ `probability` | string | Implied probability (e.g. 48.78%) |
| ↳ `dp3` | string | Decimal odds to 3 decimal places |
| ↳ `fractional` | string | Fractional odds (e.g. 31/15) |
| ↳ `american` | string | American/moneyline odds (e.g. +104) |
| ↳ `winning` | boolean | Whether this is the winning outcome |
| ↳ `stopped` | boolean | Whether the odd is stopped |
| ↳ `total` | string | Total line for over/under markets |
| ↳ `handicap` | string | Handicap line for handicap markets |
| ↳ `participants` | string | Participant ids related to the outcome |
| ↳ `original_label` | string | Original handicap value of the odd (handicap markets) |
### Get Pre-match Odds by Fixture and Bookmaker [#get-pre-match-odds-by-fixture-and-bookmaker]
Retrieve pre-match odds for a fixture from a specific bookmaker via the Sportmonks Odds API
#### Input [#input-195]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture |
| `bookmakerId` | string | Yes | The unique id of the bookmaker |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. market;bookmaker) |
| `filters` | string | No | Filters to apply (e.g. markets:1,12 or winningOdds) |
#### Output [#output-195]
| Parameter | Type | Description |
| ---------------------- | ------- | ------------------------------------------------------------ |
| `odds` | array | Array of pre-match odd objects for the fixture and bookmaker |
| ↳ `id` | number | Unique id of the odd |
| ↳ `fixture_id` | number | Fixture the odd belongs to |
| ↳ `market_id` | number | Market the odd belongs to |
| ↳ `bookmaker_id` | number | Bookmaker offering the odd |
| ↳ `label` | string | Outcome label (e.g. 1, X, 2) |
| ↳ `value` | string | Decimal odds value |
| ↳ `name` | string | Outcome name (e.g. Home, Draw, Away) |
| ↳ `sort_order` | number | Sort order of the odd |
| ↳ `market_description` | string | Description of the market |
| ↳ `probability` | string | Implied probability (e.g. 48.78%) |
| ↳ `dp3` | string | Decimal odds to 3 decimal places |
| ↳ `fractional` | string | Fractional odds (e.g. 31/15) |
| ↳ `american` | string | American/moneyline odds (e.g. +104) |
| ↳ `winning` | boolean | Whether this is the winning outcome |
| ↳ `stopped` | boolean | Whether the odd is stopped |
| ↳ `total` | string | Total line for over/under markets |
| ↳ `handicap` | string | Handicap line for handicap markets |
| ↳ `participants` | string | Participant ids related to the outcome |
| ↳ `original_label` | string | Original handicap value of the odd (handicap markets) |
### Get Pre-match Odds by Fixture and Market [#get-pre-match-odds-by-fixture-and-market]
Retrieve pre-match odds for a fixture on a specific market via the Sportmonks Odds API
#### Input [#input-196]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture |
| `marketId` | string | Yes | The unique id of the market |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. market;bookmaker) |
| `filters` | string | No | Filters to apply (e.g. bookmakers:2,14 or winningOdds) |
#### Output [#output-196]
| Parameter | Type | Description |
| ---------------------- | ------- | --------------------------------------------------------- |
| `odds` | array | Array of pre-match odd objects for the fixture and market |
| ↳ `id` | number | Unique id of the odd |
| ↳ `fixture_id` | number | Fixture the odd belongs to |
| ↳ `market_id` | number | Market the odd belongs to |
| ↳ `bookmaker_id` | number | Bookmaker offering the odd |
| ↳ `label` | string | Outcome label (e.g. 1, X, 2) |
| ↳ `value` | string | Decimal odds value |
| ↳ `name` | string | Outcome name (e.g. Home, Draw, Away) |
| ↳ `sort_order` | number | Sort order of the odd |
| ↳ `market_description` | string | Description of the market |
| ↳ `probability` | string | Implied probability (e.g. 48.78%) |
| ↳ `dp3` | string | Decimal odds to 3 decimal places |
| ↳ `fractional` | string | Fractional odds (e.g. 31/15) |
| ↳ `american` | string | American/moneyline odds (e.g. +104) |
| ↳ `winning` | boolean | Whether this is the winning outcome |
| ↳ `stopped` | boolean | Whether the odd is stopped |
| ↳ `total` | string | Total line for over/under markets |
| ↳ `handicap` | string | Handicap line for handicap markets |
| ↳ `participants` | string | Participant ids related to the outcome |
| ↳ `original_label` | string | Original handicap value of the odd (handicap markets) |
### Get Premium Odds by Fixture [#get-premium-odds-by-fixture]
Retrieve premium (historical) pre-match odds for a fixture from the Sportmonks Odds API
#### Input [#input-197]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. market;bookmaker) |
| `filters` | string | No | Filters to apply (e.g. markets:1,12 or bookmakers:2,14) |
#### Output [#output-197]
| Parameter | Type | Description |
| --------------------------- | ------- | -------------------------------------------- |
| `premiumOdds` | array | Array of premium odd objects for the fixture |
| ↳ `id` | number | Unique id of the odd |
| ↳ `fixture_id` | number | Fixture the odd belongs to |
| ↳ `market_id` | number | Market the odd belongs to |
| ↳ `bookmaker_id` | number | Bookmaker offering the odd |
| ↳ `label` | string | Outcome label |
| ↳ `value` | string | Decimal odds value |
| ↳ `name` | string | Outcome name |
| ↳ `sort_order` | number | Sort order of the odd |
| ↳ `market_description` | string | Description of the market |
| ↳ `probability` | string | Implied probability (e.g. 29.85%) |
| ↳ `dp3` | string | Decimal odds to 3 decimal places |
| ↳ `fractional` | string | Fractional odds |
| ↳ `american` | string | American/moneyline odds |
| ↳ `stopped` | boolean | Whether the odd is stopped |
| ↳ `total` | string | Total line for over/under markets |
| ↳ `handicap` | string | Handicap line for handicap markets |
| ↳ `created_at` | string | Timestamp the odd was created (UTC) |
| ↳ `updated_at` | string | Timestamp the odd was last updated (UTC) |
| ↳ `latest_bookmaker_update` | string | Bookmaker's own last-update timestamp (UTC) |
### Get Premium Odds by Fixture and Bookmaker [#get-premium-odds-by-fixture-and-bookmaker]
Retrieve premium pre-match odds for a fixture from a specific bookmaker via the Sportmonks Odds API
#### Input [#input-198]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture |
| `bookmakerId` | string | Yes | The unique id of the bookmaker |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. market;bookmaker) |
| `filters` | string | No | Filters to apply (e.g. markets:1,12) |
#### Output [#output-198]
| Parameter | Type | Description |
| --------------------------- | ------- | ---------------------------------------------------------- |
| `premiumOdds` | array | Array of premium odd objects for the fixture and bookmaker |
| ↳ `id` | number | Unique id of the odd |
| ↳ `fixture_id` | number | Fixture the odd belongs to |
| ↳ `market_id` | number | Market the odd belongs to |
| ↳ `bookmaker_id` | number | Bookmaker offering the odd |
| ↳ `label` | string | Outcome label |
| ↳ `value` | string | Decimal odds value |
| ↳ `name` | string | Outcome name |
| ↳ `sort_order` | number | Sort order of the odd |
| ↳ `market_description` | string | Description of the market |
| ↳ `probability` | string | Implied probability (e.g. 29.85%) |
| ↳ `dp3` | string | Decimal odds to 3 decimal places |
| ↳ `fractional` | string | Fractional odds |
| ↳ `american` | string | American/moneyline odds |
| ↳ `stopped` | boolean | Whether the odd is stopped |
| ↳ `total` | string | Total line for over/under markets |
| ↳ `handicap` | string | Handicap line for handicap markets |
| ↳ `created_at` | string | Timestamp the odd was created (UTC) |
| ↳ `updated_at` | string | Timestamp the odd was last updated (UTC) |
| ↳ `latest_bookmaker_update` | string | Bookmaker's own last-update timestamp (UTC) |
### Get Premium Odds by Fixture and Market [#get-premium-odds-by-fixture-and-market]
Retrieve premium pre-match odds for a fixture on a specific market via the Sportmonks Odds API
#### Input [#input-199]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fixtureId` | string | Yes | The unique id of the fixture |
| `marketId` | string | Yes | The unique id of the market |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. market;bookmaker) |
| `filters` | string | No | Filters to apply (e.g. bookmakers:2,14) |
#### Output [#output-199]
| Parameter | Type | Description |
| --------------------------- | ------- | ------------------------------------------------------- |
| `premiumOdds` | array | Array of premium odd objects for the fixture and market |
| ↳ `id` | number | Unique id of the odd |
| ↳ `fixture_id` | number | Fixture the odd belongs to |
| ↳ `market_id` | number | Market the odd belongs to |
| ↳ `bookmaker_id` | number | Bookmaker offering the odd |
| ↳ `label` | string | Outcome label |
| ↳ `value` | string | Decimal odds value |
| ↳ `name` | string | Outcome name |
| ↳ `sort_order` | number | Sort order of the odd |
| ↳ `market_description` | string | Description of the market |
| ↳ `probability` | string | Implied probability (e.g. 29.85%) |
| ↳ `dp3` | string | Decimal odds to 3 decimal places |
| ↳ `fractional` | string | Fractional odds |
| ↳ `american` | string | American/moneyline odds |
| ↳ `stopped` | boolean | Whether the odd is stopped |
| ↳ `total` | string | Total line for over/under markets |
| ↳ `handicap` | string | Handicap line for handicap markets |
| ↳ `created_at` | string | Timestamp the odd was created (UTC) |
| ↳ `updated_at` | string | Timestamp the odd was last updated (UTC) |
| ↳ `latest_bookmaker_update` | string | Bookmaker's own last-update timestamp (UTC) |
### Get Updated Historical Odds Between Time Range [#get-updated-historical-odds-between-time-range]
Retrieve historical (premium) odds updated between two UNIX timestamps (max 5 minutes) from the Sportmonks Odds API
#### Input [#input-200]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | -------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fromTimestamp` | string | Yes | Start of the range as a UNIX timestamp (e.g. 1767225600) |
| `toTimestamp` | string | Yes | End of the range as a UNIX timestamp (max 5 minutes after the start) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. odd) |
| `filters` | string | No | Filters to apply (e.g. winningOdds) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-200]
| Parameter | Type | Description |
| -------------------- | ------ | --------------------------------------------------------------------------- |
| `historicalOdds` | array | Array of historical premium odd value records updated within the time range |
| ↳ `id` | number | Unique id of the history record |
| ↳ `odd_id` | number | Premium odd this history record belongs to |
| ↳ `value` | string | Historical decimal odds value |
| ↳ `probability` | string | Implied probability at this point in time |
| ↳ `dp3` | string | Decimal odds to 3 decimal places |
| ↳ `fractional` | string | Fractional odds |
| ↳ `american` | string | American/moneyline odds |
| ↳ `bookmaker_update` | string | Bookmaker's update timestamp for this record (UTC) |
### Get Updated Premium Odds Between Time Range [#get-updated-premium-odds-between-time-range]
Retrieve premium odds updated between two UNIX timestamps (max 5 minutes) from the Sportmonks Odds API
#### Input [#input-201]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `fromTimestamp` | string | Yes | Start of the range as a UNIX timestamp (e.g. 1767225600) |
| `toTimestamp` | string | Yes | End of the range as a UNIX timestamp (max 5 minutes after the start) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. market;bookmaker) |
| `filters` | string | No | Filters to apply (e.g. markets:1,12 or bookmakers:2,14) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-201]
| Parameter | Type | Description |
| --------------------------- | ------- | ---------------------------------------------------------- |
| `premiumOdds` | array | Array of premium odd objects updated within the time range |
| ↳ `id` | number | Unique id of the odd |
| ↳ `fixture_id` | number | Fixture the odd belongs to |
| ↳ `market_id` | number | Market the odd belongs to |
| ↳ `bookmaker_id` | number | Bookmaker offering the odd |
| ↳ `label` | string | Outcome label |
| ↳ `value` | string | Decimal odds value |
| ↳ `name` | string | Outcome name |
| ↳ `sort_order` | number | Sort order of the odd |
| ↳ `market_description` | string | Description of the market |
| ↳ `probability` | string | Implied probability (e.g. 29.85%) |
| ↳ `dp3` | string | Decimal odds to 3 decimal places |
| ↳ `fractional` | string | Fractional odds |
| ↳ `american` | string | American/moneyline odds |
| ↳ `stopped` | boolean | Whether the odd is stopped |
| ↳ `total` | string | Total line for over/under markets |
| ↳ `handicap` | string | Handicap line for handicap markets |
| ↳ `created_at` | string | Timestamp the odd was created (UTC) |
| ↳ `updated_at` | string | Timestamp the odd was last updated (UTC) |
| ↳ `latest_bookmaker_update` | string | Bookmaker's own last-update timestamp (UTC) |
### Search Bookmakers [#search-bookmakers]
Search for bookmakers by name from the Sportmonks Odds API
#### Input [#input-202]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `query` | string | Yes | The bookmaker name to search for (e.g. bet365) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-202]
| Parameter | Type | Description |
| ------------ | ------ | ---------------------------------------------------- |
| `bookmakers` | array | Array of bookmaker objects matching the search query |
| ↳ `id` | number | Unique id of the bookmaker |
| ↳ `name` | string | Name of the bookmaker |
| ↳ `logo` | string | Logo of the bookmaker |
### Search Markets [#search-markets]
Search for betting markets by name from the Sportmonks Odds API
#### Input [#input-203]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `query` | string | Yes | The market name to search for (e.g. Over/Under) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-203]
| Parameter | Type | Description |
| ------------------ | ------ | ------------------------------------------------- |
| `markets` | array | Array of market objects matching the search query |
| ↳ `id` | number | Unique id of the market |
| ↳ `name` | string | Name of the market |
| ↳ `developer_name` | string | Developer (machine-readable) name of the market |
### Get Cities [#get-cities]
Retrieve all cities from the Sportmonks Core API
#### Input [#input-204]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. region) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-204]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------ |
| `cities` | array | Array of city objects |
| ↳ `id` | number | Unique id of the city |
| ↳ `country_id` | number | Country of the city |
| ↳ `region_id` | number | Region id of the city |
| ↳ `name` | string | Name of the city |
| ↳ `latitude` | string | Latitude of the city |
| ↳ `longitude` | string | Longitude of the city |
| ↳ `geonameid` | number | Official geonameid of the city |
### Get City by ID [#get-city-by-id]
Retrieve a single city by its ID from the Sportmonks Core API
#### Input [#input-205]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `cityId` | string | Yes | The unique id of the city |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. region) |
#### Output [#output-205]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------ |
| `city` | object | The requested city object |
| ↳ `id` | number | Unique id of the city |
| ↳ `country_id` | number | Country of the city |
| ↳ `region_id` | number | Region id of the city |
| ↳ `name` | string | Name of the city |
| ↳ `latitude` | string | Latitude of the city |
| ↳ `longitude` | string | Longitude of the city |
| ↳ `geonameid` | number | Official geonameid of the city |
### Get Continent by ID [#get-continent-by-id]
Retrieve a single continent by its ID from the Sportmonks Core API
#### Input [#input-206]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | --------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `continentId` | string | Yes | The unique id of the continent |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. countries) |
#### Output [#output-206]
| Parameter | Type | Description |
| ----------- | ------ | ------------------------------ |
| `continent` | object | The requested continent object |
| ↳ `id` | number | Unique id of the continent |
| ↳ `name` | string | Name of the continent |
| ↳ `code` | string | Short code of the continent |
### Get Continents [#get-continents]
Retrieve all continents from the Sportmonks Core API
#### Input [#input-207]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. countries) |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-207]
| Parameter | Type | Description |
| ------------ | ------ | --------------------------- |
| `continents` | array | Array of continent objects |
| ↳ `id` | number | Unique id of the continent |
| ↳ `name` | string | Name of the continent |
| ↳ `code` | string | Short code of the continent |
### Get Countries [#get-countries]
Retrieve all countries from the Sportmonks Core API
#### Input [#input-208]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. continent;regions) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-208]
| Parameter | Type | Description |
| ----------------- | ------ | ----------------------------------- |
| `countries` | array | Array of country objects |
| ↳ `id` | number | Unique id of the country |
| ↳ `continent_id` | number | Continent of the country |
| ↳ `name` | string | Name of the country |
| ↳ `official_name` | string | Official name of the country |
| ↳ `fifa_name` | string | Official FIFA short code name |
| ↳ `iso2` | string | Two letter country code |
| ↳ `iso3` | string | Three letter country code |
| ↳ `latitude` | string | Latitude position of the country |
| ↳ `longitude` | string | Longitude position of the country |
| ↳ `geonameid` | number | Official geonameid |
| ↳ `borders` | array | Neighbouring countries (ISO3 codes) |
| ↳ `image_path` | string | Image path to the country flag |
### Get Country by ID [#get-country-by-id]
Retrieve a single country by its ID from the Sportmonks Core API
#### Input [#input-209]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `countryId` | string | Yes | The unique id of the country |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. continent;regions) |
#### Output [#output-209]
| Parameter | Type | Description |
| ----------------- | ------ | ----------------------------------- |
| `country` | object | The requested country object |
| ↳ `id` | number | Unique id of the country |
| ↳ `continent_id` | number | Continent of the country |
| ↳ `name` | string | Name of the country |
| ↳ `official_name` | string | Official name of the country |
| ↳ `fifa_name` | string | Official FIFA short code name |
| ↳ `iso2` | string | Two letter country code |
| ↳ `iso3` | string | Three letter country code |
| ↳ `latitude` | string | Latitude position of the country |
| ↳ `longitude` | string | Longitude position of the country |
| ↳ `geonameid` | number | Official geonameid |
| ↳ `borders` | array | Neighbouring countries (ISO3 codes) |
| ↳ `image_path` | string | Image path to the country flag |
### Get All Entity Filters [#get-all-entity-filters]
Retrieve all available filters grouped per entity from the Sportmonks Core API
#### Input [#input-210]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
#### Output [#output-210]
| Parameter | Type | Description |
| --------------- | ---- | -------------------------------------------------------------------------------------------------------------------------------- |
| `entityFilters` | json | Map of entity name to its available filter names, e.g. \{fixture: \["fixtureLeagues", "fixtureSeasons"], event: \["eventTypes"]} |
### Get My Usage [#get-my-usage]
Retrieve your Sportmonks API usage aggregated per 5 minutes
#### Input [#input-211]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-211]
| Parameter | Type | Description |
| ---------------------- | ------ | -------------------------------------------------------------------- |
| `usage` | array | Array of API usage records aggregated per 5-minute period |
| ↳ `id` | number | Identifier of the usage record |
| ↳ `endpoint` | string | Identifier of the requested endpoint |
| ↳ `count` | number | Total calls for the given timeframe |
| ↳ `entity` | string | The entity the rate limit applies on |
| ↳ `remaining_requests` | number | Amount of requests remaining for the entity in the hourly rate limit |
| ↳ `period_start` | number | Timestamp representing the aggregation start time |
| ↳ `period_end` | number | Timestamp representing the aggregation end time |
### Get Region by ID [#get-region-by-id]
Retrieve a single region by its ID from the Sportmonks Core API
#### Input [#input-212]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `regionId` | string | Yes | The unique id of the region |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;cities) |
#### Output [#output-212]
| Parameter | Type | Description |
| -------------- | ------ | --------------------------- |
| `region` | object | The requested region object |
| ↳ `id` | number | Unique id of the region |
| ↳ `country_id` | number | Country of the region |
| ↳ `name` | string | Name of the region |
### Get Regions [#get-regions]
Retrieve all regions from the Sportmonks Core API
#### Input [#input-213]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;cities) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-213]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------- |
| `regions` | array | Array of region objects |
| ↳ `id` | number | Unique id of the region |
| ↳ `country_id` | number | Country of the region |
| ↳ `name` | string | Name of the region |
### Get Timezones [#get-timezones]
Retrieve all supported time zones (IANA names) from the Sportmonks Core API
#### Input [#input-214]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
#### Output [#output-214]
| Parameter | Type | Description |
| ----------- | ----- | ------------------------------------------------------------ |
| `timezones` | array | Array of supported IANA time zone names (e.g. Europe/London) |
### Get Type by ID [#get-type-by-id]
Retrieve a single type by its ID from the Sportmonks Core API
#### Input [#input-215]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `typeId` | string | Yes | The unique id of the type |
#### Output [#output-215]
| Parameter | Type | Description |
| ------------------ | ------ | -------------------------- |
| `type` | object | The requested type object |
| ↳ `id` | number | Unique id of the type |
| ↳ `parent_id` | number | Parent type of the type |
| ↳ `name` | string | Name of the type |
| ↳ `code` | string | Code of the type |
| ↳ `developer_name` | string | Developer name of the type |
| ↳ `group` | string | Group the type falls under |
| ↳ `description` | string | Description of the type |
### Get Type by Entity [#get-type-by-entity]
Retrieve the available types grouped per entity from the Sportmonks Core API
#### Input [#input-216]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | -------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
#### Output [#output-216]
| Parameter | Type | Description |
| --------------- | ---- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `typesByEntity` | json | Map of entity name to its available types, e.g. \{CoachStatisticDetail: \{updated\_at, types: \[\{id, name, code, developer\_name, model\_type, stat\_group}]}} |
### Get Types [#get-types]
Retrieve all types (reference data describing events, statistics, positions, etc.) from the Sportmonks Core API
#### Input [#input-217]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-217]
| Parameter | Type | Description |
| ------------------ | ------ | -------------------------- |
| `types` | array | Array of type objects |
| ↳ `id` | number | Unique id of the type |
| ↳ `parent_id` | number | Parent type of the type |
| ↳ `name` | string | Name of the type |
| ↳ `code` | string | Code of the type |
| ↳ `developer_name` | string | Developer name of the type |
| ↳ `group` | string | Group the type falls under |
| ↳ `description` | string | Description of the type |
### Search Cities [#search-cities]
Search for cities by name from the Sportmonks Core API
#### Input [#input-218]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------------------------------------------------ |
| `apiKey` | string | Yes | Sportmonks API token |
| `query` | string | Yes | The city name to search for (e.g. London) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. region) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-218]
| Parameter | Type | Description |
| -------------- | ------ | ----------------------------------------------- |
| `cities` | array | Array of city objects matching the search query |
| ↳ `id` | number | Unique id of the city |
| ↳ `country_id` | number | Country of the city |
| ↳ `region_id` | number | Region id of the city |
| ↳ `name` | string | Name of the city |
| ↳ `latitude` | string | Latitude of the city |
| ↳ `longitude` | string | Longitude of the city |
| ↳ `geonameid` | number | Official geonameid of the city |
### Search Countries [#search-countries]
Search for countries by name from the Sportmonks Core API
#### Input [#input-219]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | ----------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `query` | string | Yes | The country name to search for (e.g. Brazil) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. continent;regions) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-219]
| Parameter | Type | Description |
| ----------------- | ------ | -------------------------------------------------- |
| `countries` | array | Array of country objects matching the search query |
| ↳ `id` | number | Unique id of the country |
| ↳ `continent_id` | number | Continent of the country |
| ↳ `name` | string | Name of the country |
| ↳ `official_name` | string | Official name of the country |
| ↳ `fifa_name` | string | Official FIFA short code name |
| ↳ `iso2` | string | Two letter country code |
| ↳ `iso3` | string | Three letter country code |
| ↳ `latitude` | string | Latitude position of the country |
| ↳ `longitude` | string | Longitude position of the country |
| ↳ `geonameid` | number | Official geonameid |
| ↳ `borders` | array | Neighbouring countries (ISO3 codes) |
| ↳ `image_path` | string | Image path to the country flag |
### Search Regions [#search-regions]
Search for regions by name from the Sportmonks Core API
#### Input [#input-220]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Sportmonks API token |
| `query` | string | Yes | The region name to search for (e.g. Utrecht) |
| `include` | string | No | Semicolon-separated relations to enrich the response (e.g. country;cities) |
| `filters` | string | No | Filters to apply |
| `per_page` | string | No | Number of results per page (max 50, default 25) |
| `page` | string | No | Page number to retrieve |
| `order` | string | No | Order direction (asc or desc) |
#### Output [#output-220]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------------------------- |
| `regions` | array | Array of region objects matching the search query |
| ↳ `id` | number | Unique id of the region |
| ↳ `country_id` | number | Country of the region |
| ↳ `name` | string | Name of the region |
---
# PostgreSQL (/en/integrations/postgresql)
{/* MANUAL-CONTENT-START:intro */}
Use [PostgreSQL](https://www.postgresql.org/) to query and modify rows, execute SQL, and inspect tables, columns, keys, and indexes. Schema inspection lets a workflow discover the database structure before generating a query.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate PostgreSQL into the workflow. Can query, insert, update, delete, and execute raw SQL.
## Actions [#actions]
### PostgreSQL Query [#postgresql-query]
Execute a SELECT query on PostgreSQL database
#### Input [#input]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------- |
| `host` | string | Yes | PostgreSQL server hostname or IP address |
| `port` | number | Yes | PostgreSQL server port (default: 5432) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | Database username |
| `password` | string | Yes | Database password |
| `ssl` | string | No | SSL connection mode (disabled, required, preferred) |
| `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 |
### PostgreSQL Insert [#postgresql-insert]
Insert data into PostgreSQL database
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------- |
| `host` | string | Yes | PostgreSQL server hostname or IP address |
| `port` | number | Yes | PostgreSQL server port (default: 5432) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | Database username |
| `password` | string | Yes | Database password |
| `ssl` | string | No | SSL connection mode (disabled, required, preferred) |
| `table` | string | Yes | Table name to insert data into |
| `data` | object | Yes | Data object to insert (key-value pairs) |
#### Output [#output-1]
| Parameter | Type | Description |
| ---------- | ------ | ---------------------------------------- |
| `message` | string | Operation status message |
| `rows` | array | Inserted data (if RETURNING clause used) |
| `rowCount` | number | Number of rows inserted |
### PostgreSQL Update [#postgresql-update]
Update data in PostgreSQL database
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------- |
| `host` | string | Yes | PostgreSQL server hostname or IP address |
| `port` | number | Yes | PostgreSQL server port (default: 5432) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | Database username |
| `password` | string | Yes | Database password |
| `ssl` | string | No | SSL connection mode (disabled, required, preferred) |
| `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 WHERE keyword) |
#### Output [#output-2]
| Parameter | Type | Description |
| ---------- | ------ | --------------------------------------- |
| `message` | string | Operation status message |
| `rows` | array | Updated data (if RETURNING clause used) |
| `rowCount` | number | Number of rows updated |
### PostgreSQL Delete [#postgresql-delete]
Delete data from PostgreSQL database
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------- |
| `host` | string | Yes | PostgreSQL server hostname or IP address |
| `port` | number | Yes | PostgreSQL server port (default: 5432) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | Database username |
| `password` | string | Yes | Database password |
| `ssl` | string | No | SSL connection mode (disabled, required, preferred) |
| `table` | string | Yes | Table name to delete data from |
| `where` | string | Yes | WHERE clause condition (without WHERE keyword) |
#### Output [#output-3]
| Parameter | Type | Description |
| ---------- | ------ | --------------------------------------- |
| `message` | string | Operation status message |
| `rows` | array | Deleted data (if RETURNING clause used) |
| `rowCount` | number | Number of rows deleted |
### PostgreSQL Execute [#postgresql-execute]
Execute raw SQL query on PostgreSQL database
#### Input [#input-4]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------- |
| `host` | string | Yes | PostgreSQL server hostname or IP address |
| `port` | number | Yes | PostgreSQL server port (default: 5432) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | Database username |
| `password` | string | Yes | Database password |
| `ssl` | string | No | SSL connection mode (disabled, required, preferred) |
| `query` | string | Yes | Raw SQL query to execute |
#### Output [#output-4]
| Parameter | Type | Description |
| ---------- | ------ | ------------------------------------- |
| `message` | string | Operation status message |
| `rows` | array | Array of rows returned from the query |
| `rowCount` | number | Number of rows affected |
### PostgreSQL Introspect [#postgresql-introspect]
Introspect PostgreSQL database schema to retrieve table structures, columns, and relationships
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | --------------------------------------------------- |
| `host` | string | Yes | PostgreSQL server hostname or IP address |
| `port` | number | Yes | PostgreSQL server port (default: 5432) |
| `database` | string | Yes | Database name to connect to |
| `username` | string | Yes | Database username |
| `password` | string | Yes | Database password |
| `ssl` | string | No | SSL connection mode (disabled, required, preferred) |
| `schema` | string | No | Schema to introspect (default: public) |
#### Output [#output-5]
| Parameter | Type | Description |
| -------------------- | ------- | ------------------------------------------------------ |
| `message` | string | Operation status message |
| `tables` | array | Array of table schemas with columns, keys, and indexes |
| ↳ `name` | string | Table name |
| ↳ `schema` | string | Schema name (e.g., public) |
| ↳ `columns` | array | Table columns |
| ↳ `name` | string | Column name |
| ↳ `type` | string | Data type (e.g., integer, varchar, timestamp) |
| ↳ `nullable` | boolean | Whether the column allows NULL values |
| ↳ `default` | string | Default value expression |
| ↳ `isPrimaryKey` | boolean | Whether the column is part of the primary key |
| ↳ `isForeignKey` | boolean | Whether the column is a foreign key |
| ↳ `references` | object | Foreign key reference information |
| ↳ `table` | string | Referenced table name |
| ↳ `column` | string | Referenced column name |
| ↳ `primaryKey` | array | Primary key column names |
| ↳ `foreignKeys` | array | Foreign key constraints |
| ↳ `column` | string | Local column name |
| ↳ `referencesTable` | string | Referenced table name |
| ↳ `referencesColumn` | string | Referenced column name |
| ↳ `indexes` | array | Table indexes |
| ↳ `name` | string | Index name |
| ↳ `columns` | array | Columns included in the index |
| ↳ `unique` | boolean | Whether the index enforces uniqueness |
| `schemas` | array | List of available schemas in the database |
---
# Logs (/en/integrations/logs)
{/* MANUAL-CONTENT-START:intro */}
The Logs block queries workflow run history in the current workspace. **Query Logs** filters runs and returns matching run IDs; **Get Run Details** retrieves one run’s status, trigger, timing, cost, final output, and trace spans. See [Using Logs in Workflows](/workflows/blocks/logs) for a query-and-inspect example.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Query workflow run logs in the current workspace with the same filters as the Logs page, returning matching run IDs. Fetch full details for a single run, including its trace spans.
## Actions [#actions]
### Query Logs [#query-logs]
Query workflow run logs in the current workspace with the full Logs-page filter set. Returns matching run IDs.
#### Input [#input]
| Parameter | Type | Required | Description |
| ------------------ | ------ | -------- | ---------------------------------------------------------------------------------------------- |
| `workflowIds` | string | No | Comma-separated workflow IDs to filter by |
| `folderIds` | string | No | Comma-separated folder IDs to filter by (descendants included) |
| `level` | string | No | Comma-separated statuses: 'info', 'error', 'running', 'pending', 'cancelled'. Omit for all. |
| `triggers` | string | No | Comma-separated trigger types (api, webhook, schedule, manual, chat, mcp, workflow, studio, …) |
| `startDate` | string | No | ISO 8601 timestamp; only runs at or after this time |
| `endDate` | string | No | ISO 8601 timestamp; only runs at or before this time |
| `search` | string | No | Free-text search across log fields |
| `costOperator` | string | No | Cost comparison operator: '=', '>', '\<', '>=', '\<=', '!=' |
| `costValue` | number | No | Cost threshold in credits, compared using costOperator |
| `durationOperator` | string | No | Duration comparison operator: '=', '>', '\<', '>=', '\<=', '!=' |
| `durationValue` | number | No | Duration threshold in milliseconds, compared using durationOperator |
| `limit` | number | No | Max run IDs to return (default 100, max 200) |
| `sortBy` | string | No | Sort field: 'date' (default), 'duration', 'cost', 'status' |
| `sortOrder` | string | No | Sort order: 'desc' (default) or 'asc' |
#### Output [#output]
| Parameter | Type | Description |
| --------- | ----- | ------------------------------------ |
| `runIds` | array | IDs of the runs matching the filters |
### Get Run Details [#get-run-details]
Fetch details for a single workflow run by its run ID, including the full trace spans.
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------- |
| `runId` | string | Yes | The run ID to fetch details for |
#### Output [#output-1]
| Parameter | Type | Description |
| -------------- | ------ | ------------------------------- |
| `runId` | string | The run ID |
| `workflowId` | string | Workflow ID this run belongs to |
| `workflowName` | string | Workflow name |
| `status` | string | Run status |
| `trigger` | string | How the run was triggered |
| `startedAt` | string | Run start time (ISO 8601) |
| `durationMs` | number | Run duration in milliseconds |
| `cost` | number | Run cost in credits |
| `traceSpans` | array | Full trace spans for the run |
| `finalOutput` | json | Final output of the run |
---
# Linear API Keys (/en/integrations/linear-service-account)
Connect Linear with a personal API key. The key's permissions and team restrictions determine which operations and records the workflow can access.
Keys are bound to the user who creates them: every action a workflow takes is attributed to that user, and the key stops working if the user is deactivated or leaves the workspace. For production workflows, create the key from a dedicated service user (e.g. `studio-bot@yourcompany.com`) rather than a personal account.
## Prerequisites [#prerequisites]
A Linear account that is allowed to create API keys. Workspace admins can disable API-key creation for members (**Settings** → **Administration** → **API** → **Member API keys**) — if the option is missing for you, ask an admin, or have an admin create the key (the restriction doesn't apply to admins).
## Creating the API Key [#creating-the-api-key]
Log in as the service user, open Linear **Settings**, and go to **Security & access** → **Personal API keys**
{/* TODO(screenshot): Linear settings with Security & access → API keys highlighted */}
Click **New API key** and give it a label (e.g. `Studio Integration`)
Choose the key's permissions. For full parity with Studio's Linear blocks, create it with **full access** — or, if you restrict it, grant at least **Read** and **Write** with no team restriction. A key limited to specific teams will fail on issues and projects outside those teams
{/* TODO(screenshot): Linear API key creation dialog with permission options visible */}
Copy the key — it starts with `lin_api_` — and store it somewhere safe.
The API key is limited by the creating user's access and any permissions or team restrictions selected for the key. Treat it like a password — do not commit it to source control or share it publicly. Studio encrypts the key at rest.
## Adding the API Key to Studio [#adding-the-api-key-to-studio]
Open **Integrations** from your workspace sidebar
Search for "Linear" and open it, then click **Add to Studio** and choose **Add API key**
{/* TODO(screenshot): Linear integration page with the service-account connect option */}
Paste the API key (`lin_api_...`) and optionally set a display name and description
{/* TODO(screenshot): Add Linear API key dialog with the API key filled in */}
Click **Add API key**. Studio verifies the key by querying Linear's `viewer` — if it fails, you'll see a specific error explaining what went wrong.
The key must be able to read its own user to pass connection validation. Grant write permissions only for workflows that write, and include the teams those workflows need. Successful validation does not prove access to every operation.
## Using the Credential in Workflows [#using-the-credential-in-workflows]
Add a Linear block to your workflow. In the credential dropdown, select the saved Linear API key. Select it and configure the block as you normally would.
{/* TODO(screenshot): Linear block in a workflow with the service account selected as the credential */}
The block calls Linear's GraphQL API (`api.linear.app/graphql`) with the key. Everything the workflow does — creating issues, adding comments, updating projects — is attributed to the user who created the key.
---
# Brandfetch (/en/integrations/brandfetch)
{/* MANUAL-CONTENT-START:intro */}
[Brandfetch](https://brandfetch.com/) retrieves brand logos, colors, fonts, and company details. Look up a brand using its domain or supported identifier, or search by company name before retrieving its assets.
{/* 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 |
---
# Findymail (/en/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 Studio, 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 |
---
# Google Sheets (/en/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 Seeyu Agent Studio, 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 Seeyu Agent Studio, 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 |
#### 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 |
#### 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) |
#### 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 |
---
# Typeform (/en/integrations/typeform)
{/* MANUAL-CONTENT-START:intro */}
Use [Typeform](https://www.typeform.com/) in Studio to retrieve form responses, download submitted files, and get form insights. Switch to trigger mode to start a workflow when a form is submitted. The integration requires an API key.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Typeform into the workflow. Can retrieve responses, download files, and get form insights. Can be used in trigger mode to trigger a workflow when a form is submitted. Requires API Key.
## Actions [#actions]
### Typeform Responses [#typeform-responses]
Retrieve form responses from Typeform
#### Input [#input]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------------------- |
| `formId` | string | Yes | Typeform form ID (e.g., "abc123XYZ") |
| `apiKey` | string | Yes | Typeform Personal Access Token |
| `pageSize` | number | No | Number of responses to retrieve (e.g., 10, 25, 50) |
| `before` | string | No | Cursor token for fetching the next page of older responses |
| `after` | string | No | Cursor token for fetching the next page of newer responses |
| `since` | string | No | Retrieve responses submitted after this date (e.g., "2024-01-01T00:00:00Z") |
| `until` | string | No | Retrieve responses submitted before this date (e.g., "2024-12-31T23:59:59Z") |
| `completed` | string | No | Filter by completion status (e.g., "true", "false", "all") |
#### Output [#output]
| Parameter | Type | Description |
| ------------- | ------ | --------------------------------------------------------------------------------- |
| `total_items` | number | Total number of responses |
| `page_count` | number | Total number of pages available |
| `items` | array | Array of response objects with response\_id, submitted\_at, answers, and metadata |
### Typeform Files [#typeform-files]
Download files uploaded in Typeform responses
#### Input [#input-1]
| Parameter | Type | Required | Description |
| ------------ | ------- | -------- | ----------------------------------------------------------- |
| `formId` | string | Yes | Typeform form ID (e.g., "abc123XYZ") |
| `responseId` | string | Yes | Response ID containing the files (e.g., "resp\_xyz789") |
| `fieldId` | string | Yes | Unique ID of the file upload field |
| `filename` | string | Yes | Filename of the uploaded file |
| `inline` | boolean | No | Whether to request the file with inline Content-Disposition |
| `apiKey` | string | Yes | Typeform Personal Access Token |
#### Output [#output-1]
| Parameter | Type | Description |
| ------------- | ------ | ----------------------------------------- |
| `fileUrl` | string | Direct download URL for the uploaded file |
| `file` | file | Downloaded file stored in execution files |
| `contentType` | string | MIME type of the uploaded file |
| `filename` | string | Original filename of the uploaded file |
### Typeform Insights [#typeform-insights]
Retrieve insights and analytics for Typeform forms
#### Input [#input-2]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------ |
| `formId` | string | Yes | Typeform form ID (e.g., "abc123XYZ") |
| `apiKey` | string | Yes | Typeform Personal Access Token |
#### Output [#output-2]
| Parameter | Type | Description |
| ------------------- | ------ | ------------------------------------------------ |
| `fields` | array | Analytics data for individual form fields |
| ↳ `dropoffs` | number | Number of users who dropped off at this field |
| ↳ `id` | string | Unique field ID |
| ↳ `label` | string | Field label |
| ↳ `ref` | string | Field reference name |
| ↳ `title` | string | Field title/question |
| ↳ `type` | string | Field type (e.g., short\_text, multiple\_choice) |
| ↳ `views` | number | Number of times this field was viewed |
| `form` | object | Form-level analytics and performance data |
| ↳ `platforms` | array | Platform-specific analytics data |
| ↳ `average_time` | number | Average completion time for this platform |
| ↳ `completion_rate` | number | Completion rate for this platform |
| ↳ `platform` | string | Platform name (e.g., desktop, mobile) |
| ↳ `responses_count` | number | Number of responses from this platform |
| ↳ `total_visits` | number | Total visits from this platform |
| ↳ `unique_visits` | number | Unique visits from this platform |
| ↳ `summary` | object | Overall form performance summary |
| ↳ `average_time` | number | Overall average completion time |
| ↳ `completion_rate` | number | Overall completion rate |
| ↳ `responses_count` | number | Total number of responses |
| ↳ `total_visits` | number | Total number of visits |
| ↳ `unique_visits` | number | Total number of unique visits |
### Typeform List Forms [#typeform-list-forms]
Retrieve a list of all forms in your Typeform account
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ----------------------------------------------------------------- |
| `apiKey` | string | Yes | Typeform Personal Access Token |
| `search` | string | No | Search query to filter forms by title (e.g., "Customer Feedback") |
| `page` | number | No | Page number for pagination (e.g., 1, 2, 3) |
| `pageSize` | number | No | Number of forms per page (e.g., 10, 25, 50, max: 200) |
| `workspaceId` | string | No | Filter forms by workspace ID (e.g., "ws\_abc123") |
#### Output [#output-3]
| Parameter | Type | Description |
| ------------- | ------ | -------------------------------------------------------------------------------------------------- |
| `total_items` | number | Total number of forms in the account |
| `page_count` | number | Total number of pages available |
| `items` | array | Array of form objects with id, title, created\_at, last\_updated\_at, settings, theme, and \_links |
### Typeform Get Form [#typeform-get-form]
Retrieve complete details and structure of a specific form
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------ |
| `apiKey` | string | Yes | Typeform Personal Access Token |
| `formId` | string | Yes | Form unique identifier (e.g., "abc123XYZ") |
#### Output [#output-4]
| Parameter | Type | Description |
| ------------------ | ------ | ---------------------------------------------------- |
| `id` | string | Form unique identifier |
| `title` | string | Form title |
| `type` | string | Form type (form, quiz, etc.) |
| `settings` | object | Form settings including language, progress bar, etc. |
| `theme` | object | Theme reference |
| `workspace` | object | Workspace reference |
| `fields` | array | Array of form fields/questions |
| `welcome_screens` | array | Array of welcome screens (empty if none configured) |
| `thankyou_screens` | array | Array of thank you screens |
| `created_at` | string | Form creation timestamp (ISO 8601 format) |
| `last_updated_at` | string | Form last update timestamp (ISO 8601 format) |
| `published_at` | string | Form publication timestamp (ISO 8601 format) |
| `_links` | object | Related resource links including public form URL |
### Typeform Create Form [#typeform-create-form]
Create a new form with fields and settings
#### Input [#input-5]
| Parameter | Type | Required | Description |
| ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Typeform Personal Access Token |
| `title` | string | Yes | Form title |
| `type` | string | No | Form type (default: "form"). Options: "form", "quiz" |
| `workspaceId` | string | No | Workspace ID to create the form in (e.g., "ws\_abc123") |
| `fields` | json | No | Array of field objects defining the form structure. Each field needs: type, title, and optional properties/validations |
| `settings` | json | No | Form settings object (language, progress\_bar, etc.) |
| `themeId` | string | No | Theme ID to apply to the form |
#### Output [#output-5]
| Parameter | Type | Description |
| ------------------ | ------ | --------------------------------------------------- |
| `id` | string | Created form unique identifier |
| `title` | string | Form title |
| `type` | string | Form type |
| `settings` | object | Form settings object |
| `theme` | object | Theme reference |
| `workspace` | object | Workspace reference |
| `fields` | array | Array of created form fields (empty if none added) |
| `welcome_screens` | array | Array of welcome screens (empty if none configured) |
| `thankyou_screens` | array | Array of thank you screens |
| `_links` | object | Related resource links including public form URL |
### Typeform Update Form [#typeform-update-form]
Update an existing form using JSON Patch operations
#### Input [#input-6]
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | Typeform Personal Access Token |
| `formId` | string | Yes | Form unique identifier to update (e.g., "abc123XYZ") |
| `operations` | json | Yes | Array of JSON Patch operations (RFC 6902). Each operation needs: op (add/remove/replace), path, and value (for add/replace) |
#### Output [#output-6]
| Parameter | Type | Description |
| --------- | ------ | ---------------------------- |
| `message` | string | Success confirmation message |
### Typeform Delete Form [#typeform-delete-form]
Permanently delete a form and all its responses
#### Input [#input-7]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------- |
| `apiKey` | string | Yes | Typeform Personal Access Token |
| `formId` | string | Yes | Form unique identifier to delete (e.g., "abc123XYZ") |
#### Output [#output-7]
| Parameter | Type | Description |
| --------- | ------- | ----------------------------------------- |
| `deleted` | boolean | Whether the form was successfully deleted |
| `message` | string | Deletion confirmation message |
## Triggers [#triggers]
A **Trigger** is a block that starts a workflow when an event happens in this service.
### Typeform Webhook [#typeform-webhook]
Trigger workflow when a Typeform submission is received
#### Configuration [#configuration]
| Parameter | Type | Required | Description |
| ------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `formId` | string | Yes | The unique identifier for your Typeform. Find it in the form URL or form settings. |
| `apiKey` | string | Yes | Required to automatically register the webhook with Typeform. Get yours at [https://admin.typeform.com/account#/section/tokens](https://admin.typeform.com/account#/section/tokens) |
| `secret` | string | No | A secret string used to verify webhook authenticity. Highly recommended for security. Generate a secure random string (min 20 characters recommended). |
| `includeDefinition` | boolean | No | Include the complete form structure (questions, fields, endings) in your workflow variables. Note: Typeform always sends this data, but enabling this makes it accessible in your workflow. |
#### Output [#output-8]
| Parameter | Type | Description |
| -------------- | ------- | ------------------------------------------------------------------------- |
| `event_id` | string | Unique identifier for this webhook event |
| `event_type` | string | Type of event (always "form\_response" for form submissions) |
| `form_id` | string | Typeform form identifier |
| `token` | string | Unique response/submission identifier |
| `submitted_at` | string | ISO timestamp when the form was submitted |
| `landed_at` | string | ISO timestamp when the user first landed on the form |
| `calculated` | object | Calculated values from the form |
| ↳ `score` | number | Calculated score value |
| `variables` | array | Array of dynamic variables |
| ↳ `key` | string | Variable key |
| ↳ `number` | number | Numeric value (if type is number) |
| ↳ `text` | string | Text value (if type is text) |
| `hidden` | object | Hidden fields passed to the form (e.g., UTM parameters) |
| `answers` | array | Array of respondent answers (only includes answered questions) |
| ↳ `text` | string | Text answer value |
| ↳ `email` | string | Email answer value |
| ↳ `number` | number | Number answer value |
| ↳ `boolean` | boolean | Boolean answer value |
| ↳ `date` | string | Date answer value (ISO format) |
| ↳ `url` | string | URL answer value |
| ↳ `file_url` | string | File URL answer value |
| ↳ `choice` | object | Single choice answer |
| ↳ `id` | string | Choice ID |
| ↳ `ref` | string | Choice reference |
| ↳ `label` | string | Choice label |
| ↳ `choices` | object | Multiple choices answer |
| ↳ `ids` | array | Array of choice IDs |
| ↳ `refs` | array | Array of choice refs |
| ↳ `labels` | array | Array of choice labels |
| ↳ `field` | object | Field reference |
| ↳ `id` | string | Field ID |
| ↳ `ref` | string | Field reference |
| `definition` | object | Form definition (only included when "Include Form Definition" is enabled) |
| ↳ `id` | string | Form ID |
| ↳ `title` | string | Form title |
| ↳ `fields` | array | Array of form fields |
| ↳ `id` | string | Field ID |
| ↳ `ref` | string | Field reference |
| ↳ `title` | string | Field title |
| ↳ `endings` | array | Array of form endings |
| `ending` | object | Ending screen information |
| ↳ `id` | string | Ending screen ID |
| ↳ `ref` | string | Ending screen reference |
| `raw` | object | Complete original webhook payload from Typeform |
---
# Greenhouse (/en/integrations/greenhouse)
{/* MANUAL-CONTENT-START:intro */}
Use [Greenhouse](https://www.greenhouse.com/) to read candidates, jobs, applications, users, and hiring-pipeline reference data. Webhook triggers can start workflows from recruiting events.
{/* 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. Studio 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 |
---
# Apify (/en/integrations/apify)
{/* MANUAL-CONTENT-START:intro */}
[Apify](https://apify.com/) runs Actors for web scraping and browser automation. Run an Actor synchronously when you need its result in the same call, or start an asynchronous run and check its status before retrieving the dataset. You can also run saved Actor tasks and retrieve dataset items.
{/* MANUAL-CONTENT-END */}
## Usage Instructions [#usage-instructions]
Integrate Apify into your workflow. Run any Apify actor with custom input and retrieve results. Supports both synchronous and asynchronous execution with automatic dataset fetching.
## Actions [#actions]
### APIFY Run Actor (Sync) [#apify-run-actor-sync]
Run an APIFY actor synchronously and get results (max 5 minutes)
#### Input [#input]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | APIFY API token from console.apify.com/account#/integrations |
| `actorId` | string | Yes | Actor ID or username/actor-name. Examples: "apify/web-scraper", "janedoe/my-actor", "moJRLRc85AitArpNN" |
| `input` | string | No | Actor input as JSON string. Example: \{ "startUrls": \[ \{ "url": "[https://example.com](https://example.com)" } ], "maxPages": 10 } |
| `memory` | number | No | Memory in megabytes allocated for the actor run (128-32768). Example: 1024 for 1GB, 2048 for 2GB |
| `timeout` | number | No | Timeout in seconds for the actor run. Example: 300 for 5 minutes, 3600 for 1 hour |
| `build` | string | No | Actor build to run. Examples: "latest", "beta", "1.2.3", "build-tag-name" |
#### Output [#output]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------ |
| `success` | boolean | Whether the actor run succeeded |
| `runId` | string | APIFY run ID |
| `status` | string | Run status (SUCCEEDED, FAILED, etc.) |
| `items` | array | Dataset items (if completed) |
### APIFY Run Actor (Async) [#apify-run-actor-async]
Run an APIFY actor asynchronously with polling for long-running tasks
#### Input [#input-1]
| Parameter | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `apiKey` | string | Yes | APIFY API token from console.apify.com/account#/integrations |
| `actorId` | string | Yes | Actor ID or username/actor-name. Examples: "apify/web-scraper", "janedoe/my-actor", "moJRLRc85AitArpNN" |
| `input` | string | No | Actor input as JSON string. Example: \{ "startUrls": \[ \{ "url": "[https://example.com](https://example.com)" } ], "maxPages": 10 } |
| `waitForFinish` | number | No | Initial wait time in seconds (0-60) before polling starts. Example: 30 |
| `itemLimit` | number | No | Max dataset items to fetch (1-250000). Default: 100. Example: 500 |
| `memory` | number | No | Memory in megabytes allocated for the actor run (128-32768). Example: 1024 for 1GB, 2048 for 2GB |
| `timeout` | number | No | Timeout in seconds for the actor run. Example: 300 for 5 minutes, 3600 for 1 hour |
| `build` | string | No | Actor build to run. Examples: "latest", "beta", "1.2.3", "build-tag-name" |
#### Output [#output-1]
| Parameter | Type | Description |
| ----------- | ------- | ------------------------------------ |
| `success` | boolean | Whether the actor run succeeded |
| `runId` | string | APIFY run ID |
| `status` | string | Run status (SUCCEEDED, FAILED, etc.) |
| `datasetId` | string | Dataset ID containing results |
| `items` | array | Dataset items (if completed) |
### APIFY Run Task [#apify-run-task]
Run a saved APIFY actor task synchronously and get dataset items (max 5 minutes)
#### Input [#input-2]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey` | string | Yes | APIFY API token from console.apify.com/account#/integrations |
| `taskId` | string | Yes | Task ID or username/task-name. Examples: "janedoe/my-task", "moJRLRc85AitArpNN" |
| `input` | string | No | JSON string that overrides the task's saved input. Example: \{ "startUrls": \[ \{ "url": "[https://example.com](https://example.com)" } ] } |
| `itemLimit` | number | No | Max dataset items to return (1-250000). Example: 500 |
| `memory` | number | No | Memory in megabytes allocated for the run (128-32768). Example: 1024 for 1GB |
| `timeout` | number | No | Timeout in seconds for the run. Example: 300 for 5 minutes |
| `build` | string | No | Actor build to run. Examples: "latest", "beta", "1.2.3" |
#### Output [#output-2]
| Parameter | Type | Description |
| --------- | ------- | ------------------------------------ |
| `success` | boolean | Whether the task run succeeded |
| `status` | string | Run status (SUCCEEDED, FAILED, etc.) |
| `items` | array | Dataset items produced by the run |
### APIFY Get Dataset Items [#apify-get-dataset-items]
Retrieve items stored in an APIFY dataset
#### Input [#input-3]
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------- |
| `apiKey` | string | Yes | APIFY API token from console.apify.com/account#/integrations |
| `datasetId` | string | Yes | Dataset ID to read items from. Example: "9RnD3Pql2vGZkc5H5" |
| `itemLimit` | number | No | Max items to return (1-250000). Default: all items. Example: 500 |
| `offset` | number | No | Number of items to skip at the start. Default: 0 |
| `fields` | string | No | Comma-separated list of fields to include. Example: "title,url,price" |
#### Output [#output-3]
| Parameter | Type | Description |
| ----------- | ------- | ----------------------------------- |
| `success` | boolean | Whether the items were retrieved |
| `datasetId` | string | Dataset ID the items were read from |
| `items` | array | Items stored in the dataset |
| `count` | number | Number of items returned |
### APIFY Get Run [#apify-get-run]
Get the status and details of an APIFY actor run
#### Input [#input-4]
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------ |
| `apiKey` | string | Yes | APIFY API token from console.apify.com/account#/integrations |
| `runId` | string | Yes | Actor run ID to fetch. Example: "HG7ML7M8z78YcAPEB" |
#### Output [#output-4]
| Parameter | Type | Description |
| ----------------- | ------- | ---------------------------------------------------- |
| `success` | boolean | Whether the run was found |
| `runId` | string | APIFY run ID |
| `status` | string | Run status (READY, RUNNING, SUCCEEDED, FAILED, etc.) |
| `startedAt` | string | When the run started (ISO timestamp) |
| `finishedAt` | string | When the run finished (ISO timestamp) |
| `datasetId` | string | Default dataset ID for the run |
| `keyValueStoreId` | string | Default key-value store ID for the run |
| `stats` | json | Run statistics (memory, CPU, duration) |
---
# Using tables in workflows (/en/tables/using-in-workflows)
A [table](/tables) is a resource: structured rows your workflows read and write. A [Table block](/integrations/table) is the step that does the reading and writing inside a workflow. You pick an operation on the block (query rows, insert a row, update rows), point it at a table, and its result is remembered under the block's name for later blocks to use.
A workflow uses whichever Table operations its task needs. It might read rows to work on, write rows produced elsewhere, update rows in place, or just look something up mid-run. This page covers the operations and shows a few ways to combine them.
Throughout this page the running example is a `leads` table with columns `company`, `email`, `description`, `status`, `category`, and `score`. The goal is to find unprocessed leads, have an Agent classify each one, and write the category back.
## The Table block [#the-table-block]
A **Table block** performs one operation against one table. The **Operation** dropdown picks the action; the **Table** selector picks the target. The fields below those two change based on the operation you choose.
{/* VISUAL: Table block UI showing the Operation dropdown open, plus the conditional fields that appear for Query Rows (Filter, Order, Columns to Return, Limit, Cursor). */}
The operations fall into three groups:
* **Read:** Query Rows, Get Row by ID, Get Schema.
* **Write:** Insert Row, Batch Insert Rows, Upsert Row.
* **Update and delete:** Update Row by ID, Update Rows by Filter, Delete Row by ID, Delete Rows by Filter.
Every row carries three built-in columns alongside your own: `id` (the row's unique identifier), `createdAt`, and `updatedAt`. Studio manages these for you, so you never include them when inserting. You can still filter and sort on them.
## Reading rows [#reading-rows]
**Query Rows** retrieves rows from a table, with optional filtering, sorting, and pagination. It's how a workflow gets its input from a table.
For our example, the block queries `leads` where `status` equals `unprocessed`. Its output holds the matching rows plus counts:
```
{ success: true, rows: [ { id: "row_...", company: "Acme", ... } ], rowCount: 5, totalCount: 42 }
```
Later blocks read these by name: `` is the array, `` is how many came back, `` is how many matched the filter before the limit. (For more on reading outputs by reference, see [how blocks pass data](/workflows/data-flow).)
**Filter** narrows the result. You can build rules visually - pick a column, an operator, and a value - or write the filter directly as a predicate. One condition names a field, an operator, and a value:
```
{"field": "status", "op": "eq", "value": "unprocessed"}
```
Combine conditions with `all` (AND) or `any` (OR), and nest the groups for mixed logic:
```
{"all": [
{"field": "status", "op": "eq", "value": "unprocessed"},
{"field": "createdAt", "op": "gte", "value": "2026-06-01"}
]}
```
**Order** sorts the result as a list of column/direction pairs, for example `[{"field": "createdAt", "direction": "desc"}]`. **Columns to Return** narrows each row to the fields a downstream step actually needs. **Limit** caps how many rows come back per page, and **Cursor** continues a previous page - see [Paginate large reads](#variations) below.
{/* VISUAL: Filter and Order builders, showing a status = unprocessed rule and a createdAt descending sort, with the equivalent predicate JSON beside them. */}
For a one-off point lookup, use **Get Row by ID** with a single `Row ID`. **Get Schema** returns the table's column definitions, useful when a workflow needs to inspect structure before writing. The full operator list lives in the [Table block reference](/integrations/table).
## Writing rows [#writing-rows]
**Insert Row** adds one row. Its **Row Data** is an object whose keys match your column names:
```
{ company: "Acme", email: "deals@acme.com", description: "...", status: "unprocessed" }
```
The output is the inserted row, including the `id` and timestamps Studio generated for it.
**Batch Insert Rows** adds many rows in one operation (up to 1000) from a **Rows Data** array. Use it instead of looping Insert Row when you have a set of results to load at once. Its output reports `insertedCount`.
**Upsert Row** inserts a row, or updates the existing one if it matches a unique column. Its output includes an `operation` field set to `insert` or `update`, so a later block can tell which happened.
Row data must match the table's columns and types. A `number` column rejects `"twenty"`; a `boolean` column wants `true`, not `"true"`. If an Agent produces the value, give it a [structured output](/workflows/blocks/agent) so the shape is predictable before it reaches the table.
## Updating rows [#updating-rows]
To change an existing row you either name it or filter for it.
**Update Row by ID** modifies one row. It takes a `Row ID`, often `` from an earlier query, and **Row Data** with only the fields you want to change. Unlisted fields stay as they were.
**Update Rows by Filter** applies the same update to every matching row. Use it for a bulk change, such as marking a selected batch for review. For a different classification per lead, iterate over the queried rows and use **Update Row by ID** for each result. The filter operation reports `updatedCount` and `updatedRowIds`.
{/* VISUAL: before/after of the leads table. Left shows rows with status "unprocessed" and an empty category column; right shows the same rows with category filled in and status "qualified". */}
**Delete Row by ID** and **Delete Rows by Filter** remove rows the same two ways, by ID or by filter, and report a `deletedCount`. Deletes are mostly for cleanup, not part of the everyday read-process-write loop.
## Example: enriching rows [#example-enriching-rows]
One way to combine the operations is to query rows, process them, and write the results back. Here, the workflow classifies unprocessed leads:
1. **Table (Query Rows)** reads `leads` where `status` is `unprocessed`.
2. Add a **For Each** [Loop](/workflows/blocks/loop) over the returned `rows` array.
3. Inside the loop, an **Agent** reads the current row and returns a [structured output](/workflows/blocks/agent), such as `{ category: "enterprise", score: 0.9 }`.
4. **Table (Update Row by ID)** uses the current row's ID to write that result and update its status.
After the run, the table holds the enriched rows. The next run queries them again, and the `status` column keeps the workflow from reprocessing what it already handled. So the table serves as both the queue the workflow pulls from and the record of what it has already done.
## Variations [#variations]
**Lookup mid-run.** A Table block doesn't have to be the first or last step. Place a Query Rows in the middle to fetch reference data while processing: query a `pricing` table by the order's currency, then let the Agent use the result to compute a total.
**Iterate row by row.** Wrap a Query → process → update cycle in a [Loop block](/workflows/blocks/loop) to handle one row at a time. This runs sequentially, slower than a batch update but useful when each row needs its own multi-step logic. Inside the loop the Agent reads the current row and an Update Row by ID writes its result.
**Paginate large reads.** Omit **Limit** to get every matching row in one response; the query fails if the result exceeds 5MB, so narrow with a filter rather than guessing a limit. With a **Limit**, a page can end at the limit *or* early once its rows reach the 5MB budget — so a short page does not mean the end. Pass the returned `nextCursor` back as **Cursor** and keep going while it is non-null. Stop only when `nextCursor` is null; never infer completion from the row count.
## Inspecting reads and writes [#inspecting-reads-and-writes]
Every Table block's input and output is recorded in [logs](/logs-debugging). For a Query block, the log shows the filter and order it sent and the rows it received. For an Update or Insert, it shows the row data written and the count affected. When a write does nothing or a query comes back empty, the log is where you check the filter and the data shape before looking anywhere else.
---
# Workflow columns (/en/tables/workflow-columns)
A [table](/tables) is a grid of typed columns. Usually you type a column's values in. A **workflow column** is different: its values come from a [workflow](/workflows) that runs once per row. For each row, the workflow reads the columns you choose as input, runs its blocks, and writes its results back into columns on that same row.
This is what makes a table active. Instead of running a workflow by hand and pasting the results in, you attach the workflow to the table and it fills each row on its own — a bit like a spreadsheet macro that runs on every row, except each step is a full workflow.
The running example is a table of AI startups, `ai_startup_customers`. The company is typed in; three workflow groups fill everything else:
* **Company Domain** finds each company's `domain`.
* **Company Info** reads the domain and fills `employee_count` and `description`.
* **Lead Score Enrichment** runs the lead-scoring workflow and writes `lead_score`, `priority`, and `score_reasoning`.
Each group's header spans the columns it owns, every row has a run button (▷), and the toolbar shows the work in flight: here, **21 running**, with **Stop all** beside it.
```
domain │ employee_count │ lead_score │ priority
──────────────────┼────────────────┼────────────┼─────────
openai.com │ 5K-10K │ 75 │ Warm
gominimal.ai │ Not found │ 92 │ Hot
genspark.net │ 51-250 │ 20 │ Cold
```
## Two kinds of groups [#two-kinds-of-groups]
The unit you configure is a **group**: something that runs once per row, fed by input columns, writing output columns. There are two kinds, and the **+ New column** menu offers both — **Enrichments** above the plain column types, **Workflow** below them. They share all the run machinery that follows.
### Enrichments [#enrichments]
An **enrichment** is a built-in lookup that Studio provides and maintains — browse the **Enrichments** panel for what's available. Pick one, bind its inputs to columns, and name the columns its outputs should fill; there's no workflow to build. Under the hood an enrichment tries a cascade of data providers in order, which is why a cell can come back **Not found**: none of the available providers returned a match.
### Workflow groups [#workflow-groups]
A **workflow group** runs one of your own [workflows](/workflows) per row — use it when the per-row work is something you've built, like the lead scorer. Its **Configure workflow** panel holds everything that defines it, with a preview of the workflow it will run:
* **Workflow** picks which workflow runs per row; here, *Lead Score Enrichment*.
* **Add column inputs** maps columns to the workflow's inputs, which arrive at its [Start](/workflows/triggers/start) trigger.
* **Output columns** picks which workflow outputs to write back; here, 3 are selected.
* **Auto-run workflow** and **Run after** control when rows run (both below).
One group can produce several result columns from a single run per row: Lead Score Enrichment fills `lead_score`, `priority`, and `score_reasoning` together.
## How groups run [#how-groups-run]
Everything from here applies to both kinds. A group's configuration is a set of bindings: each input is bound to a column, and each output is bound to the column name it writes. Here, Company Info's required `Company domain` input reads the `domain` column, and its outputs write `employee_count_0` and `description`:
When a group runs a row, the bound column values become its inputs; it only sees the columns you mapped, the rest of the row is untouched, and inputs are read-only during the run. Every output you selected is written to its column, and outputs you didn't select are discarded.
### Run after [#run-after]
**Run after** is the set of columns that must be filled before the group runs on a row. Company Info runs after `domain`: a row with an empty `domain` waits, and the moment Company Domain fills it, that row becomes eligible. Lead Score Enrichment runs after the info columns, the six dependencies in the panel above.
A dependency can be a typed column or another group's output column. That second case is what makes cascades work (below). At least one dependency is required when auto-run is on.
### Auto-run [#auto-run]
**Auto-run** decides whether a group fires on its own. With auto-run on, a group runs a row as soon as that row's Run-after columns are filled, no click needed; that's how 21 rows end up running at once in the example. With it off, you trigger it yourself.
You trigger a group by hand from its column header menu:
* **Run this row** runs the one row.
* **Run all rows** runs every row, and re-runs rows that already finished.
* **Run empty rows** runs only rows whose output columns are still empty.
* **Run selected rows** runs the rows you've checked.
Auto-run only ever runs rows it hasn't attempted yet. To re-run a single row, use **Re-run cell** from the cell's menu; to re-run everything, use **Run all rows**.
### Execution status [#execution-status]
While a group works a row, its output cells show their state instead of a value:
| State | Meaning |
| ------------- | -------------------------------------------------------- |
| **Pending** | Waiting on a Run-after column that isn't filled yet. |
| **Queued** | Eligible and waiting to start. |
| **Running** | The workflow is executing for this row. |
| **Error** | A block failed. The cell links to which block and why. |
| **Cancelled** | The run was stopped before it finished. |
| **Not found** | An enrichment finished but matched nothing for this row. |
When a value arrives, it replaces the badge, and cells that finish stay filled even while other columns on the row are still running. You can see this in the example table: most rows are fully scored, while a few show **Not found** where an enrichment came up empty. The lead scorer still ran on those rows, working with what it had.
On error, the row stays in the **Error** state. Auto-run skips errored rows, so a failure doesn't loop. To retry, fix the input and re-run the cell. A row is only ever worked by one run at a time, so re-running doesn't race.
### Inspecting a row's run [#inspecting-a-rows-run]
Every value in a workflow column comes from a real workflow run, and each one is inspectable. Open a cell's menu to act on that row:
**View execution** opens the run's trace: each block with its status, timing, and credit cost, the same view as the [Logs](/logs-debugging) page. Here, the row's score came from a 1.86s run of the LeadScorer workflow:
**Re-run cell** runs the group again for just that row, replacing its values when the run finishes.
## Cascades [#cascades]
Because a group can run after another group's output column, you can chain groups across the table — enrichments and workflow groups freely mixed. The example is a three-stage **cascade**: Company Domain fills `domain` from the company name, Company Info runs after `domain` and fills the info columns, and the Lead Score workflow group runs after those and writes the score. Each row advances through the stages independently: the moment its own Run-after columns are filled, it becomes eligible for the next group. That's why some rows in the screenshot are fully scored while others are still mid-pipeline.
## When to use a workflow column [#when-to-use-a-workflow-column]
Reach for a workflow column when you have a row-by-row job: enrich each record, classify each entry, score each lead. The work is the same shape on every row, and you want the results to live next to the source data.
Use a [workflow on its own](/workflows) instead when the job isn't per-row: a one-off transform, an aggregation across many rows, or a real-time decision tied to a single request. To pull table data into a workflow rather than push workflow results into a table, see [using tables in workflows](/tables/using-in-workflows).
---
# Tables (/en/tables)
Tables let you store and manage structured data directly in your workspace. Use them to maintain reference data, collect workflow outputs, or build lightweight databases — all without leaving Studio.
Each table has a schema of typed columns, supports filtering and sorting, and is fully accessible through the [Tables API](/docs/en/api-reference/\(generated\)/tables).
## Creating a Table [#creating-a-table]
| Type | Holds | Example |
| ------------ | ------------------------------------------- | ------------------- |
| **Text** | A free-form string | `"Acme Corp"` |
| **Number** | A numeric value | `42` |
| **Currency** | An amount in a currency you pick per column | `$1,234.56` |
| **Boolean** | `true` or `false` | `true` |
| **Date** | A date | `2026-03-16` |
| **JSON** | An object or array | `{ "tier": "pro" }` |
| **Select** | One of a fixed set of options, or several | `Pro` |
Tables start with a single text column. Add more columns by clicking **New column** in the column header area.
A Currency column stores a plain number and renders it in the currency you choose for that column, so filters, sorts, and exports all see the amount itself. Changing a column's currency relabels it — it does not convert the amounts.
## Editing a table [#editing-a-table]
Each column has a type that determines how values are stored and validated.
| Type | Description | Example Values |
| ----------- | -------------------------- | ------------------------------------ |
| **Text** | Free-form string | `"Acme Corp"`, `"hello@example.com"` |
| **Number** | Numeric value | `42`, `3.14`, `-100` |
| **Boolean** | True or false | `true`, `false` |
| **Date** | Date value | `2026-03-16` |
| **JSON** | Structured object or array | `{"key": "value"}`, `[1, 2, 3]` |
Column types are enforced on input. For example, typing into a Number column
is restricted to digits, dots, and minus signs. Non-numeric values entered via
paste are coerced to `0`.
## Working with Rows [#working-with-rows]
### Adding Rows [#adding-rows]
* Click **New row** below the last row to append a new row
* Press **Shift + Enter** while a cell is selected to insert a row below
* Paste tabular data (from a spreadsheet or TSV) to bulk-create rows
### Editing Cells [#editing-cells]
Click a cell to select it, then press **Enter**, **F2**, or start typing to edit. Press **Escape** to cancel, or **Tab** to save and move to the next cell.
### Selecting Rows [#selecting-rows]
Click a row's checkbox to select it. Selecting additional checkboxes adds to the selection without clearing previous selections.
| Action | Behavior |
| ---------------------- | ----------------------------------------- |
| Click checkbox | Toggle that row's selection |
| Shift + click checkbox | Select range from last clicked to current |
| Click header checkbox | Select all / deselect all |
| Shift + Space | Toggle row selection from keyboard |
### Deleting Rows [#deleting-rows]
Right-click a selected row (or group of selected rows) and choose **Delete row** from the context menu.
## Filtering and Sorting [#filtering-and-sorting]
Use the toolbar above the table to filter and sort your data.
* **Filter**: Set conditions on any column (e.g., "Name contains Acme"). Multiple filters are combined with AND logic.
* **Sort**: Order rows by any column, ascending or descending.
Filters and sorts are applied in real time and do not modify the underlying data.
## Keyboard Shortcuts [#keyboard-shortcuts]
All shortcuts work when the table is focused and no cell is being edited.
**Mod** refers to `Cmd` on macOS and `Ctrl` on Windows/Linux.
### Navigation [#navigation]
| Shortcut | Action |
| ----------------------- | ---------------------------- |
| Arrow keys | Move one cell |
| `Mod` + Arrow keys | Jump to edge of table |
| `Tab` / `Shift` + `Tab` | Move to next / previous cell |
| `Escape` | Clear selection |
### Selection [#selection]
| Shortcut | Action |
| ---------------------------- | ---------------------------- |
| `Shift` + Arrow keys | Extend selection by one cell |
| `Mod` + `Shift` + Arrow keys | Extend selection to edge |
| `Mod` + `A` | Select all rows |
| `Shift` + `Space` | Toggle current row selection |
### Editing [#editing]
| Shortcut | Action |
| ------------------ | --------------------------------- |
| `Enter` or `F2` | Start editing selected cell |
| `Escape` | Cancel editing |
| Type any character | Start editing with that character |
| `Shift` + `Enter` | Insert new row below |
| `Space` | Expand row details |
### Clipboard [#clipboard]
| Shortcut | Action |
| ---------------------- | ---------------------------------------------------------------- |
| `Mod` + `C` | Copy selected cells |
| `Mod` + `X` | Cut selected cells |
| `Mod` + `V` | Paste |
| `Delete` / `Backspace` | Clear selected cells (all columns when using checkbox selection) |
### History [#history]
| Shortcut | Action |
| --------------------- | ------------------ |
| `Mod` + `Z` | Undo |
| `Mod` + `Shift` + `Z` | Redo |
| `Mod` + `Y` | Redo (alternative) |
## Using Tables in Workflows [#using-tables-in-workflows]
Tables can be read from and written to within your workflows using the **Table** block. Common patterns include:
* **Lookup**: Query a table for reference data (e.g., pricing rules, customer metadata)
* **Write-back**: Store workflow outputs in a table for later review or reporting
* **Iteration**: Process each row in a table as part of a batch workflow
## API Access [#api-access]
Tables are fully accessible through the REST API. You can create, read, update, and delete both tables and rows programmatically.
See the [Tables API Reference](/docs/en/api-reference/\(generated\)/tables) for endpoints, parameters, and examples.
## Best Practices [#best-practices]
* **Use typed columns** to enforce data integrity — prefer Number and Boolean over storing everything as Text
* **Name columns descriptively** so they are self-documenting when referenced in workflows
* **Use JSON columns sparingly** — they are flexible but harder to filter and sort against
* **Leverage the API** for bulk imports rather than manually entering large datasets
---
# Complete reference (/en/cli/reference)
Every command on one page, generated from the CLI itself. Start at the
[overview](/cli/commands) to browse; this page is for searching and for tools.
Append `.mdx` to any page for its raw Markdown —
[`/cli/reference.mdx`](/cli/reference.mdx) is this page as plain text. The docs
are also published as [`/llms.txt`](/llms.txt) and
[`/llms-full.txt`](/llms-full.txt).
## Global options [#global-options]
These apply to every command, and may be written before or after it.
| Option | Description |
| ---------------------- | --------------------------------------------------------------------------------- |
| `-P, --profile ` | Profile to use (env: STUDIO\_PROFILE). |
| `--endpoint ` | Studio deployment to talk to (env: STUDIO\_ENDPOINT). |
| `-w, --workspace ` | Workspace to target (env: STUDIO\_WORKSPACE). |
| `--output ` | Output format for this command. Accepted values: `table`, `json`, `yaml`, `text`. |
## studio login [#studio-login]
Sign in through the browser and store the login for the profile
```bash
studio login [options]
```
**Options**
| Option | Required | Description |
| ------------------------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--method ` | No | Credential to obtain: oauth requires OAuth support; api-key creates a permanent key through pairing (auto-selects when omitted). Accepted values: `oauth`, `api-key`. |
| `--no-browser` | No | Print the approval URL without opening it (either login method). |
| `--read-only` | No | Ask only for permission to read, never to change anything. |
| `--callback-port ` | No | Pin the local port the browser returns to. |
| `-y, --yes` | No | Overwrite an existing API-key profile without prompting. |
## studio logout [#studio-logout]
Sign out and remove the profile's stored login
```bash
studio logout [options]
```
**Options**
| Option | Required | Description |
| ------- | -------- | ---------------------------------------------------- |
| `--all` | No | Remove the profile entirely, including its settings. |
## studio whoami [#studio-whoami]
Show the resolved profile, where each setting came from, and whether it works
```bash
studio whoami [options]
```
**Options**
| Option | Required | Description |
| ------------- | -------- | -------------------------------------------------------- |
| `--no-verify` | No | Skip the API check and only print the resolved settings. |
## studio configure [#studio-configure]
Set a profile's endpoint, default workspace, or output format
```bash
studio configure [options]
```
**Options**
| Option | Required | Description |
| ----------------------- | -------- | ------------------------------------------------------ |
| `--set-endpoint ` | No | Studio deployment to talk to. |
| `--set-workspace ` | No | Default workspace for workspace-scoped commands. |
| `--set-output ` | No | Default output format (table \| json \| yaml \| text). |
| `--unset ` | No | Remove settings (endpoint, workspace, output). |
## studio update [#studio-update]
Update this global CLI installation to the newest release on its channel
```bash
studio update [options]
```
**Options**
| Option | Required | Description |
| ----------------------------- | -------- | ---------------------------------------------------------------------------------------- |
| `--package-manager ` | No | Package manager that installed this copy. Accepted values: `npm`, `pnpm`, `bun`, `yarn`. |
## studio chat [#studio-chat]
Ask Studio and print the reply
```bash
studio chat [options]
```
**Arguments**
| Argument | Required | Description |
| --------- | -------- | ------------------ |
| `message` | Yes | What to ask Studio |
**Options**
| Option | Required | Description |
| ------------------------- | -------- | --------------------------------------- |
| `-c, --conversation ` | No | Continue the conversation with this ID. |
## studio profiles [#studio-profiles]
Also spelled `studio profile`.
### studio profiles list [#studio-profiles-list]
List configured profiles
```bash
studio profiles list
```
### studio profiles add [#studio-profiles-add]
Add a workspace profile that shares the active stored login
```bash
studio profiles add [options]
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | ------------------------ |
| `name` | Yes | Name for the new profile |
**Options**
| Option | Required | Description |
| ---------------------- | -------- | ---------------------------------------------------------- |
| `-w, --workspace ` | No | Existing workspace to use; omit for an interactive picker. |
## studio telemetry [#studio-telemetry]
### studio telemetry status [#studio-telemetry-status]
Show whether usage reporting is on, and why not if it is off
```bash
studio telemetry status
```
### studio telemetry enable [#studio-telemetry-enable]
Turn usage reporting on for this machine
```bash
studio telemetry enable
```
### studio telemetry disable [#studio-telemetry-disable]
Turn usage reporting off for this machine
```bash
studio telemetry disable
```
## studio audit-logs [#studio-audit-logs]
Also spelled `studio audit-log`.
### studio audit-logs get [#studio-audit-logs-get]
Get Audit Log (OAuth login or personal API key required)
```bash
studio audit-logs get [options]
```
**Arguments**
| Argument | Required | Description |
| ------------ | -------- | --------------------------- |
| `auditLogId` | Yes | Audit-log entry identifier. |
**Options**
| Option | Required | Description |
| ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--organization ` | No | Organization ID; defaults to your only organization, and is required when your account belongs to more than one (OAuth login or personal API key required). |
### studio audit-logs list [#studio-audit-logs-list]
List Audit Logs (OAuth login or personal API key required)
```bash
studio audit-logs list [options]
```
**Options**
| Option | Required | Description |
| ------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--action ` | No | Filter by exact action name. |
| `--resource-type ` | No | Filter by resource type. Accepts a comma-separated set; members are trimmed and deduplicated, and member order affects neither the result nor the cursor. |
| `--resource-id ` | No | Filter by exact resource identifier. |
| `--start-date ` | No | Only include runs started at or after this UTC ISO 8601 timestamp, e.g. `2026-08-06T00:00:00Z`. A date without a time, or a timestamp carrying a UTC offset instead of `Z`, is rejected, as is year `0000`, which names no storable instant. |
| `--end-date ` | No | Only include runs started at or before this UTC ISO 8601 timestamp, e.g. `2026-08-06T00:00:00Z`. A date without a time, or a timestamp carrying a UTC offset instead of `Z`, is rejected, as is year `0000`, which names no storable instant. |
| `--include-departed` | No | Include actions by users who have left the organization. |
| `--no-include-departed` | No | Send --include-departed as false. |
| `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. |
| `--cursor ` | No | Continue from nextCursor returned by a previous result. |
| `--organization ` | No | Organization ID; defaults to your only organization, and is required when your account belongs to more than one (OAuth login or personal API key required). |
| `--actor-email ` | No | Filter by actor email address. |
| `--all-workspaces` | No | Do not filter to the configured workspace (OAuth login or personal API key required for account-wide access). |
## studio billing [#studio-billing]
### studio billing status [#studio-billing-status]
Show billing status and current-period credit usage (credits and storage require an OAuth login or personal API key)
```bash
studio billing status [options]
```
**Options**
| Option | Required | Description |
| ------------------ | -------- | ------------------------------------------------------------------------------------------------------------- |
| `--all-workspaces` | No | Do not filter to the configured workspace (OAuth login or personal API key required for account-wide access). |
### studio billing logs [#studio-billing-logs]
List credit usage events (an OAuth login or personal API key reports only your events; a workspace API key reports every member's in aggregate, unattributed)
```bash
studio billing logs [options]
```
**Options**
| Option | Required | Description |
| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `--source ` | No | Filter by usage source; studio-chat combines Copilot and workspace chat. Accepted values: `workflow`, `wand`, `studio-chat`, `mcp_copilot`, `mothership_block`, `knowledge-base`, `voice-input`, `enrichment`, `voice-output`, `api-tool`. |
| `--period ` | No | Billing period. Accepted values: `1d`, `7d`, `30d`, `all`, `custom`. |
| `--start-date ` | No | Custom period start (ISO 8601). |
| `--end-date ` | No | Custom period end (ISO 8601). |
| `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. |
| `--cursor ` | No | Continue from nextCursor returned by a previous result. |
| `--all-workspaces` | No | Do not filter to the configured workspace (OAuth login or personal API key required for account-wide access). |
## studio blocks [#studio-blocks]
### studio blocks get [#studio-blocks-get]
Get Block
```bash
studio blocks get
```
**Arguments**
| Argument | Required | Description |
| --------- | -------- | ------------------------------------------------------------------------------------------------------------------------ |
| `blockId` | Yes | Block type identifier. An unversioned base type resolves to the newest version, and the response echoes the resolved id. |
### studio blocks list [#studio-blocks-list]
List Blocks
```bash
studio blocks list [options]
```
**Options**
| Option | Required | Description |
| ---------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--search ` | No | Case-insensitive substring match against the block id, name, and description. |
| `--category ` | No | Restrict to one toolbar category. Accepted values: `blocks`, `tools`, `triggers`. |
| `--capability ` | No | Restrict to blocks that can start a workflow — the `triggers` category, blocks declaring `triggerAllowed`, and blocks with trigger-mode fields. Accepted values: `trigger`. |
| `--source ` | No | Restrict to built-in blocks or this workspace's deployed custom blocks. Accepted values: `builtin`, `custom`. |
| `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `id`, `name`, `category`. |
| `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. |
| `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. |
## studio chat-deployments [#studio-chat-deployments]
### studio chat-deployments list [#studio-chat-deployments-list]
List Chat Deployments
```bash
studio chat-deployments list [options]
```
**Options**
| Option | Required | Description |
| ----------------------- | -------- | --------------------------------------------------------------------------------------- |
| `--workflow-id ` | No | Restrict to deployments of one workflow. |
| `--is-active` | No | Restrict to active or inactive deployments. |
| `--no-is-active` | No | Send --is-active as false. |
| `--sort-by ` | No | Field used to sort the result. Accepted values: `identifier`, `createdAt`, `updatedAt`. |
| `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. |
| `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. |
## studio connector-types [#studio-connector-types]
### studio connector-types list [#studio-connector-types-list]
List Connector Types
```bash
studio connector-types list [options]
```
**Options**
| Option | Required | Description |
| ------------------ | -------- | ------------------------------------------------------------ |
| `--search ` | No | Case-insensitive substring match against the connector name. |
## studio credentials [#studio-credentials]
Also spelled `studio credential`.
### studio credentials delete [#studio-credentials-delete]
Disconnect Credential (OAuth login or personal API key required)
```bash
studio credentials delete [options]
```
**Arguments**
| Argument | Required | Description |
| -------------- | -------- | ------------------------- |
| `credentialId` | Yes | Credential to disconnect. |
**Options**
| Option | Required | Description |
| ----------- | -------- | ----------------------- |
| `-y, --yes` | Yes | Confirm this operation. |
### studio credentials providers list [#studio-credentials-providers-list]
List Credential Providers
```bash
studio credentials providers list [options]
```
**Options**
| Option | Required | Description |
| ------------------ | -------- | ---------------------------------------------------------------------- |
| `--search ` | No | Case-insensitive substring match against the credential provider name. |
### studio credentials list [#studio-credentials-list]
List Credentials
```bash
studio credentials list [options]
```
**Options**
| Option | Required | Description |
| ----------------------- | -------- | ---------------------------------------------------------------------------------------- |
| `--type ` | No | Restrict results to this credential type. Accepted values: `oauth`, `service_account`. |
| `--provider-id ` | No | Restrict results to credentials for this integration provider. |
| `--search ` | No | Case-insensitive substring match against the credential display name. |
| `--sort-by ` | No | Field used to sort the result. Accepted values: `displayName`, `createdAt`, `updatedAt`. |
| `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. |
| `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. |
### studio credentials update [#studio-credentials-update]
Update Credential (OAuth login or personal API key required)
```bash
studio credentials update [options]
```
**Arguments**
| Argument | Required | Description |
| -------------- | -------- | --------------------- |
| `credentialId` | Yes | Credential to update. |
**Options**
| Option | Required | Description |
| -------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `--display-name ` | No | New name shown for the credential in Studio. |
| `--description ` | No | New credential description. Send null to clear the stored one. (--description null sends the word, not JSON null). |
| `--service-account-json ` | No | Write-only Google service-account JSON key. |
| `--api-token ` | No | Write-only provider API token. |
| `--domain ` | No | Provider account domain. |
| `--atlassian-product ` | No | Atlassian product to verify; defaults to Jira on create and preserves the saved product on reconnect. Accepted values: `jira`, `confluence`. |
| `--signing-secret ` | No | Write-only webhook signing secret. |
| `--bot-token ` | No | Write-only bot token. |
| `--client-id ` | No | OAuth client identifier. |
| `--client-secret ` | No | Write-only OAuth client secret. |
| `--certificate-id ` | No | Provider certificate mapping identifier. |
| `--org-id ` | No | Provider organization ID. |
| `--data-center ` | No | Provider data center. |
| `--auth-method ` | No | Provider authentication method. |
| `--private-key ` | No | Write-only PEM private key. |
| `--username ` | No | Provider run-as username. |
| `--name ` | No | Alias for --display-name. |
### studio credentials create [#studio-credentials-create]
Create a service-account credential using its discovered provider schema (OAuth login or personal API key required)
```bash
studio credentials create [options]
```
**Arguments**
| Argument | Required | Description |
| ------------ | -------- | --------------------------------------------------- |
| `providerId` | Yes | Service-account provider to create a credential for |
**Options**
| Option | Required | Description |
| ----------------------------- | -------- | --------------------------------------------------------------------- |
| `--name ` | Yes | Name shown for the credential in Studio. |
| `--credentials ` | Yes | Provider credentials as JSON (or @path / @- to read a file or stdin). |
| `--description ` | No | Optional credential description. |
| `--id ` | No | Client-generated credential ID when provider discovery requires it. |
### studio credentials connect [#studio-credentials-connect]
Create a short-lived link for connecting an OAuth provider (OAuth login or personal API key required)
```bash
studio credentials connect [options]
```
**Arguments**
| Argument | Required | Description |
| ------------ | -------- | ------------------------- |
| `providerId` | Yes | OAuth provider to connect |
**Options**
| Option | Required | Description |
| ---------------------- | -------- | -------------------------------------------- |
| `--name ` | Yes | Name shown for the new credential in Studio. |
### studio credentials reconnect [#studio-credentials-reconnect]
Create a short-lived link for reconnecting an OAuth credential (OAuth login or personal API key required)
```bash
studio credentials reconnect
```
**Arguments**
| Argument | Required | Description |
| -------------- | -------- | ----------------------------------------- |
| `credentialId` | Yes | Existing OAuth credential to re-authorize |
## studio custom-tools [#studio-custom-tools]
Also spelled `studio custom-tool`.
### studio custom-tools create [#studio-custom-tools-create]
Create Custom Tool
```bash
studio custom-tools create [options]
```
**Options**
| Option | Required | Description |
| ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--title ` | Yes | Display title, unique within the workspace. |
| `--schema ` | Yes | OpenAI function schema: \{"type":"function","function":\{"name":"...","parameters":\{"type":"object","properties":\{}}}} (JSON, or @path / @- to read a file or stdin). |
| `--code ` | Yes | Tool implementation executed in the sandboxed function runtime. |
### studio custom-tools delete [#studio-custom-tools-delete]
Delete Custom Tool
```bash
studio custom-tools delete [options]
```
**Arguments**
| Argument | Required | Description |
| -------------- | -------- | ------------------------------ |
| `customToolId` | Yes | Unique custom tool identifier. |
**Options**
| Option | Required | Description |
| ----------- | -------- | ----------------------- |
| `-y, --yes` | Yes | Confirm this operation. |
### studio custom-tools get [#studio-custom-tools-get]
Get Custom Tool
```bash
studio custom-tools get
```
**Arguments**
| Argument | Required | Description |
| -------------- | -------- | ------------------------------ |
| `customToolId` | Yes | Unique custom tool identifier. |
### studio custom-tools list [#studio-custom-tools-list]
List Custom Tools
```bash
studio custom-tools list [options]
```
**Options**
| Option | Required | Description |
| ---------------------- | -------- | ---------------------------------------------------------------------------------- |
| `--search ` | No | Case-insensitive substring match against the tool title. |
| `--sort-by ` | No | Field used to sort the result. Accepted values: `title`, `createdAt`, `updatedAt`. |
| `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. |
| `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. |
### studio custom-tools update [#studio-custom-tools-update]
Update Custom Tool
```bash
studio custom-tools update [options]
```
**Arguments**
| Argument | Required | Description |
| -------------- | -------- | ------------------------------ |
| `customToolId` | Yes | Unique custom tool identifier. |
**Options**
| Option | Required | Description |
| ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--title ` | No | New display title for the tool. |
| `--schema ` | No | OpenAI function schema: \{"type":"function","function":\{"name":"...","parameters":\{"type":"object","properties":\{}}}} (JSON, or @path / @- to read a file or stdin). |
| `--code ` | No | Replacement tool implementation. |
## studio files [#studio-files]
Also spelled `studio file`.
### studio files batch-delete [#studio-files-batch-delete]
Delete several files at once
```bash
studio files batch-delete [options]
```
**Options**
| Option | Required | Description |
| ----------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------- |
| `--file-ids ` | Yes | File identifiers to update. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). |
| `-y, --yes` | Yes | Confirm this operation. |
### studio files create [#studio-files-create]
Create File
```bash
studio files create [options]
```
**Options**
| Option | Required | Description |
| ------------------------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--name ` | Yes | File name, including its extension. Path separators and dot segments are rejected. |
| `--content-type ` | No | MIME type. When omitted, it is inferred from the file extension. |
| `--folder ` | No | Folder path as shown in the app; the leading / is optional. |
| `--content ` | No | Initial file content. Omit or send an empty string for a zero-byte file. The 70,000,000-character bound guards the JSON envelope; the decoded bytes must be at most 50 MiB, and a longer base64 payload is rejected with `413`. Use an upload session for anything larger. |
| `--encoding ` | No | Encoding of the content field. Accepted values: `utf-8`, `base64`. |
### studio files folders create [#studio-files-folders-create]
Create a file folder at a path
```bash
studio files folders create
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | ---------------------------------------------------------- |
| `path` | Yes | Folder path as shown in the app; the leading / is optional |
### studio files folders delete [#studio-files-folders-delete]
Delete Folder
```bash
studio files folders delete [options]
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | ---------------------------------------------------------- |
| `path` | Yes | Folder path as shown in the app; the leading / is optional |
**Options**
| Option | Required | Description |
| ------------- | -------- | -------------------------------------- |
| `--recursive` | No | Delete the folder and its descendants. |
| `-y, --yes` | Yes | Confirm this operation. |
### studio files folders list [#studio-files-folders-list]
List folders
```bash
studio files folders list [options]
```
Also available as `studio files folders ls`.
**Options**
| Option | Required | Description |
| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `--parent ` | No | Direct parent folder path. |
| `--search ` | No | Case-insensitive substring match against the folder name. |
| `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. |
| `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. |
| `--scope ` | No | Which lifecycle set to list: `active` (default) returns live folders only; `archived` returns folders a recursive delete soft-deleted, which is how a caller finds a path to hand to the folder restore. Authorization is identical for both. Accepted values: `active`, `archived`. |
| `--recursive ` | No | Whether parentPath includes every descendant instead of direct children only. Accepted values: `true`, `1`, `yes`, `on`, `y`, `enabled`, `false`, `0`, `no`, `off`, `n`, `disabled`. |
| `--depth ` | No | Deepest level below parentPath to include when recursive is true. |
### studio files folders move [#studio-files-folders-move]
Rename or move a file folder
```bash
studio files folders move
```
Also available as `studio files folders mv`.
**Arguments**
| Argument | Required | Description |
| ------------- | -------- | ---------------------------------------------------------- |
| `path` | Yes | Folder path as shown in the app; the leading / is optional |
| `destination` | Yes | Folder path as shown in the app; the leading / is optional |
### studio files folders restore [#studio-files-folders-restore]
Restore an archived file folder
```bash
studio files folders restore
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | ---------------------------------------------------------- |
| `path` | Yes | Folder path as shown in the app; the leading / is optional |
### studio files delete [#studio-files-delete]
Delete File
```bash
studio files delete [options]
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | ---------------- |
| `fileId` | Yes | File identifier. |
**Options**
| Option | Required | Description |
| ----------- | -------- | ----------------------- |
| `-y, --yes` | Yes | Confirm this operation. |
### studio files edit [#studio-files-edit]
Apply one exact or anchor-based edit to a text file
```bash
studio files edit [options]
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | ---------------- |
| `fileId` | Yes | File identifier. |
**Options**
| Option | Required | Description |
| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `--edit ` | Yes | One edit object: \{"mode":"search\_replace","search":"old","content":"new","replaceAll":false}, \{"mode":"replace\_between","beforeAnchor":"start line","afterAnchor":"end line","content":"new"}, \{"mode":"insert\_after","anchor":"line","content":"new"}, or \{"mode":"delete\_between","startAnchor":"first line deleted","endAnchor":"ending line kept"}. Anchored modes also accept occurrence starting at 1 (JSON, or @path / @- to read a file or stdin). |
### studio files describe [#studio-files-describe]
Show file metadata and sharing status
```bash
studio files describe [options]
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | ---------------- |
| `fileId` | Yes | File identifier. |
**Options**
| Option | Required | Description |
| ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `--scope ` | No | Which lifecycle set to read from: `active` (default) resolves live files only and returns `404` for a file a delete soft-deleted; `archived` also resolves soft-deleted files, so metadata stays readable before the file is restored. Authorization is identical for both. Accepted values: `active`, `archived`. |
### studio files share get [#studio-files-share-get]
Show a file’s share settings
```bash
studio files share get
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | ---------------- |
| `fileId` | Yes | File identifier. |
### studio files share set [#studio-files-share-set]
Enable or disable sharing for a file (OAuth login or personal API key required)
```bash
studio files share set [options]
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | ---------------- |
| `fileId` | Yes | File identifier. |
**Options**
| Option | Required | Description |
| ----------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--is-active ` | Yes | Whether the share should resolve. Disabling preserves the token and the whole access configuration, so re-enabling restores the share as it was; enabling rewrites the credentials the resulting mode does not use. Accepted values: `true`, `false`. |
| `--auth-type ` | No | How access to the share is gated. The stored mode is kept when omitted. Enabling `public` clears the stored password and empties `allowedEmails`; `password` empties `allowedEmails`; `email` and `sso` clear the stored password. Accepted values: `public`, `password`, `email`, `sso`. |
| `--password ` | No | Password for a password-gated share. Kept when omitted; enabling `password` with neither a supplied nor a stored password is a 400. |
| `--allowed-emails ` | No | Allowed addresses or `@domain` patterns for email and SSO shares. Kept when omitted; enabling `email` or `sso` with an empty resulting list is a 400. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). |
### studio files list [#studio-files-list]
List Files
```bash
studio files list [options]
```
**Options**
| Option | Required | Description |
| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `--folder ` | No | Folder path as shown in the app; the leading / is optional. |
| `--recursive` | No | Include subfolders in the folder filter. Defaults to true when searching and false otherwise. Ignored without a folder filter. |
| `--no-recursive` | No | Send --recursive as false. |
| `--scope ` | No | Which lifecycle set to list: `active` (default) for live files, `archived` for files a delete soft-deleted. `folderPath` resolves against active folders only, so pairing it with `scope=archived` returns an empty page when the containing folder was archived too. Accepted values: `active`, `archived`. |
| `--search ` | No | Case-insensitive substring match against the file name. |
| `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `size`, `uploadedAt`, `updatedAt`. |
| `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. |
| `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. |
### studio files move [#studio-files-move]
Move files into another folder
```bash
studio files move [options]
```
Also available as `studio files mv`.
**Options**
| Option | Required | Description |
| ----------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------- |
| `--file-ids ` | Yes | File identifiers to update. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). |
| `--to ` | No | Destination folder path; omit for root. |
### studio files read [#studio-files-read]
Read a file’s text content
```bash
studio files read [options]
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | ---------------- |
| `fileId` | Yes | File identifier. |
**Options**
| Option | Required | Description |
| --------------------- | -------- | ---------------------------------------------------------------------------------------------------- |
| `--max-bytes ` | No | Optional ceiling on the source bytes fed to the parser, lowering but never raising the server limit. |
| `--offset ` | No | First line to return, 1-based. Absent starts at the first line. |
| `--limit ` | No | How many lines to return from `offset`. Absent reads to the end. |
### studio files rename [#studio-files-rename]
Rename a file
```bash
studio files rename [options]
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | ---------------- |
| `fileId` | Yes | File identifier. |
**Options**
| Option | Required | Description |
| ---------------- | -------- | --------------------------------------- |
| `--name ` | Yes | New file name, including its extension. |
### studio files restore [#studio-files-restore]
Restore an archived file
```bash
studio files restore
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | ---------------- |
| `fileId` | Yes | File identifier. |
### studio files search [#studio-files-search]
Search File Content
```bash
studio files search [options]
```
**Options**
| Option | Required | Description |
| ------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--query ` | Yes | Regular expression, or exact text when `mode` is `exact`. |
| `--mode ` | No | How `query` is read. Accepted values: `exact`, `regex`. |
| `--max-results ` | No | Maximum matching lines to return. |
| `--folder ` | No | Folders to search, by path as shown in the app; omit to search the whole workspace (space-separated, or @path / @- with one value per line; @@value for a literal leading @). |
| `--include-subfolders` | No | Whether each folder scope includes nested folders; on by default. |
| `--no-include-subfolders` | No | Send --include-subfolders as false. |
### studio files unzip [#studio-files-unzip]
Unzip an archive into a new folder beside it
```bash
studio files unzip [options]
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | ---------------- |
| `fileId` | Yes | File identifier. |
**Options**
| Option | Required | Description |
| ----------- | -------- | ----------------------- |
| `-y, --yes` | Yes | Confirm this operation. |
### studio files set-content [#studio-files-set-content]
Replace a file’s contents
```bash
studio files set-content [options]
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | ---------------- |
| `fileId` | Yes | File identifier. |
**Options**
| Option | Required | Description |
| -------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--content ` | Yes | Complete replacement content for the file. The 70,000,000-character bound guards the JSON envelope; the decoded bytes must be at most 50 MiB, and a longer base64 payload is rejected with `413`. |
| `--encoding ` | No | Content encoding. Accepted values: `utf-8`, `base64`. |
### studio files upload [#studio-files-upload]
Upload a file to the workspace
```bash
studio files upload [options]
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | -------------------- |
| `path` | Yes | Local file to upload |
**Options**
| Option | Required | Description |
| ----------------- | -------- | ------------------------------------------------------------- |
| `--folder ` | No | Folder path as shown in the app; defaults to the root folder. |
| `--name ` | No | Store it under a different name. |
### studio files get [#studio-files-get]
Get a file’s content
```bash
studio files get [options]
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | -------------------------- |
| `fileId` | Yes | File whose content to read |
**Options**
| Option | Required | Description |
| -------------------------- | -------- | --------------------------------------------- |
| `-o, --output-file ` | No | Write content to a file instead of stdout. |
| `--force` | No | Overwrite --output-file if it already exists. |
### studio files ls [#studio-files-ls]
List file resources and child folders together
```bash
studio files ls [path] [options]
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | ------------------------------------------------ |
| `path` | No | Folder path to list; defaults to the root folder |
**Options**
| Option | Required | Description |
| ----------------- | -------- | --------------------------------------------------------------------- |
| `--search ` | No | Filter folders and resources by name. |
| `--limit ` | No | Maximum combined items to return (0 for everything). Defaults to `0`. |
### studio files mkdir [#studio-files-mkdir]
Create a file directory at a path
```bash
studio files mkdir
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | ------------------------------------------------ |
| `path` | Yes | Folder path to create; the leading / is optional |
## studio knowledge [#studio-knowledge]
Also spelled `studio kb`.
### studio knowledge from-workspace-files create [#studio-knowledge-from-workspace-files-create]
Index files the workspace already stores (OAuth login or personal API key required)
```bash
studio knowledge from-workspace-files create [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | --------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
**Options**
| Option | Required | Description |
| ------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `--file ` | Yes | Workspace file ID or key (repeatable) (space-separated, or @path / @- with one value per line; @@value for a literal leading @). |
### studio knowledge tags save [#studio-knowledge-tags-save]
Declare the tag definitions a knowledge base needs (OAuth login or personal API key required)
```bash
studio knowledge tags save [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | --------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
**Options**
| Option | Required | Description |
| ----------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `--definitions ` | Yes | Tag definitions: \[\{"tagSlot":"tag1","displayName":"category","fieldType":"text"}] (JSON, or @path / @- to read a file or stdin). |
### studio knowledge tags create [#studio-knowledge-tags-create]
Create Tag (OAuth login or personal API key required)
```bash
studio knowledge tags create [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | --------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
**Options**
| Option | Required | Description |
| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `--display-name ` | Yes | Name tag filters and document reads use for this tag. |
| `--field-type ` | No | Value type stored in the slot; it decides which slots are usable and which filter operators apply. Defaults to text, so a number, date, or boolean slot must name its type here. Slot capacity per type: text 7, number 5, date 2, boolean 3. Accepted values: `text`, `number`, `date`, `boolean`. |
| `--tag-slot ` | No | Slot to store the tag in. Omit to take the next free slot for the field type; a slot that does not belong to the field type, or one already in use, is rejected. Accepted values: `tag1`, `tag2`, `tag3`, `tag4`, `tag5`, `tag6`, `tag7`, `number1`, `number2`, `number3`, `number4`, `number5`, `date1`, `date2`, `boolean1`, `boolean2`, `boolean3`. |
### studio knowledge tags delete [#studio-knowledge-tags-delete]
Delete Tag (OAuth login or personal API key required)
```bash
studio knowledge tags delete [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | --------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
| `tagId` | Yes | Unique tag definition identifier. |
**Options**
| Option | Required | Description |
| ----------- | -------- | ----------------------- |
| `-y, --yes` | Yes | Confirm this operation. |
### studio knowledge tags cleanup [#studio-knowledge-tags-cleanup]
Remove tag definitions no document still uses (OAuth login or personal API key required)
```bash
studio knowledge tags cleanup [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | --------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
**Options**
| Option | Required | Description |
| ------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--unused` | No | Whether to remove only the tag definitions no document in the knowledge base still carries a value for. Defaults to true. Pass --no-unused to delete every definition on the knowledge base, which also clears its slot on every document and chunk and is not recoverable. |
| `--no-unused` | No | Send --unused as false. |
| `-y, --yes` | Yes | Confirm this operation. |
### studio knowledge tags next-slot [#studio-knowledge-tags-next-slot]
Show which tag slot a create would take for a field type (OAuth login or personal API key required)
```bash
studio knowledge tags next-slot [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | --------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
**Options**
| Option | Required | Description |
| ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--field-type ` | Yes | Value type stored in the slot; it decides which slots are usable and which filter operators apply. Slot capacity per type: text 7, number 5, date 2, boolean 3. Accepted values: `text`, `number`, `date`, `boolean`. |
### studio knowledge tags list [#studio-knowledge-tags-list]
List Tags
```bash
studio knowledge tags list
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | --------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
### studio knowledge tags usage [#studio-knowledge-tags-usage]
Show how many documents and chunks carry each tag (OAuth login or personal API key required)
```bash
studio knowledge tags usage
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | --------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
### studio knowledge tags update [#studio-knowledge-tags-update]
Update Tag (OAuth login or personal API key required)
```bash
studio knowledge tags update [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | --------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
| `tagId` | Yes | Unique tag definition identifier. |
**Options**
| Option | Required | Description |
| ------------------------ | -------- | --------------------------------------------------------------------------------- |
| `--display-name ` | No | New tag display name. |
| `--field-type ` | No | New value type for the tag. Accepted values: `text`, `number`, `date`, `boolean`. |
### studio knowledge chunks batch-update [#studio-knowledge-chunks-batch-update]
Enable, disable, or delete many chunks at once (OAuth login or personal API key required)
```bash
studio knowledge chunks batch-update [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | ------------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
| `documentId` | Yes | Unique knowledge document identifier. |
**Options**
| Option | Required | Description |
| --------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--operation ` | Yes | What to do with the selected chunks. Accepted values: `enable`, `disable`, `delete`. |
| `--chunk ` | Yes | Chunks to operate on, by identifier. An id naming no chunk in the document is reported in errors and does not fail the request. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). |
| `-y, --yes` | Yes | Confirm this operation. |
### studio knowledge chunks create [#studio-knowledge-chunks-create]
Create Chunk (OAuth login or personal API key required)
```bash
studio knowledge chunks create [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | ------------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
| `documentId` | Yes | Unique knowledge document identifier. |
**Options**
| Option | Required | Description |
| ------------------- | -------- | ------------------------------------------------------------------------------- |
| `--content ` | Yes | Text to embed. It is embedded on write, so the chunk is searchable immediately. |
| `--enabled` | No | Whether the new chunk participates in search. |
| `--no-enabled` | No | Send --enabled as false. |
### studio knowledge chunks delete [#studio-knowledge-chunks-delete]
Delete Chunk (OAuth login or personal API key required)
```bash
studio knowledge chunks delete [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | ------------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
| `documentId` | Yes | Unique knowledge document identifier. |
| `chunkId` | Yes | Unique chunk identifier. |
**Options**
| Option | Required | Description |
| ----------- | -------- | ----------------------- |
| `-y, --yes` | Yes | Confirm this operation. |
### studio knowledge chunks get [#studio-knowledge-chunks-get]
Get Chunk (OAuth login or personal API key required)
```bash
studio knowledge chunks get
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | ------------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
| `documentId` | Yes | Unique knowledge document identifier. |
| `chunkId` | Yes | Unique chunk identifier. |
### studio knowledge chunks list [#studio-knowledge-chunks-list]
List Chunks (OAuth login or personal API key required)
```bash
studio knowledge chunks list [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | ------------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
| `documentId` | Yes | Unique knowledge document identifier. |
**Options**
| Option | Required | Description |
| ---------------------- | -------- | ---------------------------------------------------------------------------------------------------- |
| `--search ` | No | Case-insensitive substring match against chunk content. |
| `--enabled ` | No | Restrict to enabled or disabled chunks. `all` returns both. Accepted values: `true`, `false`, `all`. |
| `--sort-by ` | No | Field used to sort the result. Accepted values: `chunkIndex`, `tokenCount`, `enabled`. |
| `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. |
| `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. |
| `--cursor ` | No | Continue from nextCursor returned by a previous result. |
### studio knowledge chunks update [#studio-knowledge-chunks-update]
Update Chunk (OAuth login or personal API key required)
```bash
studio knowledge chunks update [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | ------------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
| `documentId` | Yes | Unique knowledge document identifier. |
| `chunkId` | Yes | Unique chunk identifier. |
**Options**
| Option | Required | Description |
| ------------------- | -------- | ------------------------------------------------------------------------------------------------ |
| `--content ` | No | Replacement text. Changing it re-embeds the chunk and re-derives its token and character counts. |
| `--enabled` | No | Whether the chunk participates in search. Disabling keeps it indexed. |
| `--no-enabled` | No | Send --enabled as false. |
### studio knowledge documents batch-update [#studio-knowledge-documents-batch-update]
Enable or disable every matching document (OAuth login or personal API key required)
```bash
studio knowledge documents batch-update [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | --------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
**Options**
| Option | Required | Description |
| -------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `--operation ` | Yes | Whether the selected documents become enabled or disabled for search. Accepted values: `enable`, `disable`. |
| `--document ` | No | Documents to update, by identifier. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). |
| `--select-all` | No | Apply to every document in the knowledge base. |
| `--enabled-filter ` | No | With `selectAll`, restrict the update to documents in this state. Accepted values: `all`, `enabled`, `disabled`. |
### studio knowledge documents delete [#studio-knowledge-documents-delete]
Delete Document
```bash
studio knowledge documents delete [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | ------------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
| `documentId` | Yes | Unique knowledge document identifier. |
**Options**
| Option | Required | Description |
| ----------- | -------- | ----------------------- |
| `-y, --yes` | Yes | Confirm this operation. |
### studio knowledge documents get [#studio-knowledge-documents-get]
Get Document
```bash
studio knowledge documents get
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | ------------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
| `documentId` | Yes | Unique knowledge document identifier. |
### studio knowledge documents list [#studio-knowledge-documents-list]
List Documents
```bash
studio knowledge documents list [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | --------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
**Options**
| Option | Required | Description |
| -------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. |
| `--search ` | No | Case-insensitive substring match against the document filename. |
| `--enabled-filter ` | No | Filter by whether documents are enabled for search. Accepted values: `all`, `enabled`, `disabled`. |
| `--sort-by ` | No | Field used to sort the result. Sorting by `filename` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `filename`, `fileSize`, `tokenCount`, `chunkCount`, `uploadedAt`, `processingStatus`, `enabled`. |
| `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. |
| `--cursor ` | No | Continue from nextCursor returned by a previous result. |
| `--tag-filters ` | No | A JSON-encoded array of at most 10 tag filters, using the same display-name shape as knowledge search: `[{"tagName":"category","operator":"eq","value":"billing"}]`. Every filter must hold, including two that name the same tag. A name that is not defined in this knowledge base is rejected, never ignored. |
### studio knowledge documents update [#studio-knowledge-documents-update]
Update Document (OAuth login or personal API key required)
```bash
studio knowledge documents update [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | ------------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
| `documentId` | Yes | Unique knowledge document identifier. |
**Options**
| Option | Required | Description |
| -------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--filename ` | No | New filename for the document. |
| `--enabled` | No | Whether the document participates in search. Disabling keeps it indexed. |
| `--no-enabled` | No | Send --enabled as false. |
| `--tag1 ` | No | New value for tag slot 1. |
| `--tag2 ` | No | New value for tag slot 2. |
| `--tag3 ` | No | New value for tag slot 3. |
| `--tag4 ` | No | New value for tag slot 4. |
| `--tag5 ` | No | New value for tag slot 5. |
| `--tag6 ` | No | New value for tag slot 6. |
| `--tag7 ` | No | New value for tag slot 7. |
| `--number1 ` | No | New value for number tag slot 1. |
| `--number2 ` | No | New value for number tag slot 2. |
| `--number3 ` | No | New value for number tag slot 3. |
| `--number4 ` | No | New value for number tag slot 4. |
| `--number5 ` | No | New value for number tag slot 5. |
| `--date1 ` | No | New value for date tag slot 1, formatted YYYY-MM-DD. |
| `--date2 ` | No | New value for date tag slot 2, formatted YYYY-MM-DD. |
| `--boolean1` | No | New value for boolean tag slot 1. |
| `--no-boolean1` | No | Send --boolean1 as false. |
| `--boolean2` | No | New value for boolean tag slot 2. |
| `--no-boolean2` | No | Send --boolean2 as false. |
| `--boolean3` | No | New value for boolean tag slot 3. |
| `--no-boolean3` | No | Send --boolean3 as false. |
| `--retry-processing` | No | Requeue a failed or stuck document for processing. Send it alone — no other field may accompany it — and it answers with a queue acknowledgement rather than the document. |
### studio knowledge documents upload [#studio-knowledge-documents-upload]
Upload a document to a knowledge base
```bash
studio knowledge documents upload [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | ----------------------------- |
| `knowledgeBaseId` | Yes | Knowledge base to upload into |
| `path` | Yes | Local file to upload |
**Options**
| Option | Required | Description |
| ------------------ | -------- | ------------------------------------------------------------------------------------------ |
| `--name ` | No | Store it under a different name. |
| `--tag ` | No | Document tags, in tag1 through tag7 order. |
| `--recipe ` | No | Document processing recipe. Accepted values: `default`, `plain`, `markdown`, `code`. |
| `--lang ` | No | Document language tag: hyphen-separated letter and digit subtags, for example en or en-US. |
### studio knowledge create [#studio-knowledge-create]
Create Knowledge Base
```bash
studio knowledge create [options]
```
**Options**
| Option | Required | Description |
| --------------------------------- | -------- | --------------------------------------------------------------------------------------------------------- |
| `--name ` | Yes | Human-readable knowledge base name. |
| `--description ` | No | Optional knowledge base description. |
| `--chunking-config ` | No | Chunking configuration; defaults are applied when omitted. (JSON, or @path / @- to read a file or stdin). |
| `--folder ` | No | Folder path as shown in the app; the leading / is optional. |
### studio knowledge connectors create [#studio-knowledge-connectors-create]
Create Knowledge Connector (OAuth login or personal API key required)
```bash
studio knowledge connectors create [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | --------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
**Options**
| Option | Required | Description |
| --------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------- |
| `--connector-type ` | Yes | Registered connector type. |
| `--credential-id ` | No | OAuth credential identifier for connectors that require OAuth. |
| `--api-key ` | No | Write-only API key for connectors that use API-key authentication. |
| `--source-config ` | Yes | Connector-specific source selection and filtering configuration. (JSON, or @path / @- to read a file or stdin). |
| `--sync-interval-minutes ` | No | Scheduled synchronization interval in minutes; zero disables scheduling. |
### studio knowledge connectors delete [#studio-knowledge-connectors-delete]
Delete Knowledge Connector (OAuth login or personal API key required)
```bash
studio knowledge connectors delete [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | --------------------------------------- |
| `knowledgeBaseId` | Yes | Knowledge base that owns the connector. |
| `connectorId` | Yes | Connector selected for the operation. |
**Options**
| Option | Required | Description |
| ----------------------- | -------- | ------------------------------------------------------------- |
| `--delete-documents` | No | Also permanently delete documents produced by this connector. |
| `--no-delete-documents` | No | Send --delete-documents as false. |
| `-y, --yes` | Yes | Confirm this operation. |
### studio knowledge connectors get [#studio-knowledge-connectors-get]
Get Knowledge Connector (OAuth login or personal API key required)
```bash
studio knowledge connectors get
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | --------------------------------------- |
| `knowledgeBaseId` | Yes | Knowledge base that owns the connector. |
| `connectorId` | Yes | Connector selected for the operation. |
### studio knowledge connectors documents list [#studio-knowledge-connectors-documents-list]
List Knowledge Connector Documents (OAuth login or personal API key required)
```bash
studio knowledge connectors documents list [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | --------------------------------------- |
| `knowledgeBaseId` | Yes | Knowledge base that owns the connector. |
| `connectorId` | Yes | Connector selected for the operation. |
**Options**
| Option | Required | Description |
| ----------------------- | -------- | -------------------------------------------------------------- |
| `--include-excluded` | No | Include documents explicitly excluded by a user. |
| `--no-include-excluded` | No | Send --include-excluded as false. |
| `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. |
| `--cursor ` | No | Continue from nextCursor returned by a previous result. |
### studio knowledge connectors documents update [#studio-knowledge-connectors-documents-update]
Update Knowledge Connector Documents (OAuth login or personal API key required)
```bash
studio knowledge connectors documents update [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | --------------------------------------- |
| `knowledgeBaseId` | Yes | Knowledge base that owns the connector. |
| `connectorId` | Yes | Connector selected for the operation. |
**Options**
| Option | Required | Description |
| ----------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `--operation ` | Yes | Whether to restore or exclude the selected documents. Accepted values: `restore`, `exclude`. |
| `--document ` | Yes | Connector document identifiers to update. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). |
### studio knowledge connectors list [#studio-knowledge-connectors-list]
List Knowledge Connectors (OAuth login or personal API key required)
```bash
studio knowledge connectors list [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | --------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
**Options**
| Option | Required | Description |
| ---------------------- | -------- | ------------------------------------------------------------------------------------------ |
| `--sort-by ` | No | Field used to sort the result. Accepted values: `connectorType`, `createdAt`, `updatedAt`. |
| `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. |
| `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. |
### studio knowledge connectors sync [#studio-knowledge-connectors-sync]
Queue a knowledge connector synchronization (OAuth login or personal API key required)
```bash
studio knowledge connectors sync [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | --------------------------------------- |
| `knowledgeBaseId` | Yes | Knowledge base that owns the connector. |
| `connectorId` | Yes | Connector selected for the operation. |
**Options**
| Option | Required | Description |
| ---------------- | -------- | -------------------------------------------------------- |
| `--rehydrate` | No | Re-fetch and re-index every existing connector document. |
| `--no-rehydrate` | No | Send --rehydrate as false. |
### studio knowledge connectors update [#studio-knowledge-connectors-update]
Update Knowledge Connector (OAuth login or personal API key required)
```bash
studio knowledge connectors update [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | --------------------------------------- |
| `knowledgeBaseId` | Yes | Knowledge base that owns the connector. |
| `connectorId` | Yes | Connector selected for the operation. |
**Options**
| Option | Required | Description |
| --------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--source-config ` | No | Replacement source selection and filtering configuration. Updating a runnable connector queues synchronization; paused connectors remain paused. (JSON, or @path / @- to read a file or stdin). |
| `--sync-interval-minutes ` | No | New scheduled synchronization interval in minutes. |
| `--status ` | No | New connector state. Accepted values: `active`, `paused`. |
### studio knowledge folders create [#studio-knowledge-folders-create]
Create a knowledge folder at a path
```bash
studio knowledge folders create
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | ---------------------------------------------------------- |
| `path` | Yes | Folder path as shown in the app; the leading / is optional |
### studio knowledge folders delete [#studio-knowledge-folders-delete]
Delete Folder
```bash
studio knowledge folders delete [options]
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | ---------------------------------------------------------- |
| `path` | Yes | Folder path as shown in the app; the leading / is optional |
**Options**
| Option | Required | Description |
| ------------- | -------- | -------------------------------------- |
| `--recursive` | No | Delete the folder and its descendants. |
| `-y, --yes` | Yes | Confirm this operation. |
### studio knowledge folders list [#studio-knowledge-folders-list]
List knowledge folders
```bash
studio knowledge folders list [options]
```
Also available as `studio knowledge folders ls`.
**Options**
| Option | Required | Description |
| ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--parent ` | No | Direct parent folder path. |
| `--search ` | No | Case-insensitive substring match against the folder name. |
| `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. |
| `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. |
### studio knowledge folders move [#studio-knowledge-folders-move]
Rename or move a knowledge folder
```bash
studio knowledge folders move
```
Also available as `studio knowledge folders mv`.
**Arguments**
| Argument | Required | Description |
| ------------- | -------- | ---------------------------------------------------------- |
| `path` | Yes | Folder path as shown in the app; the leading / is optional |
| `destination` | Yes | Folder path as shown in the app; the leading / is optional |
### studio knowledge delete [#studio-knowledge-delete]
Delete Knowledge Base
```bash
studio knowledge delete [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | --------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
**Options**
| Option | Required | Description |
| ----------- | -------- | ----------------------- |
| `-y, --yes` | Yes | Confirm this operation. |
### studio knowledge get [#studio-knowledge-get]
Get Knowledge Base
```bash
studio knowledge get
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | --------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
### studio knowledge list [#studio-knowledge-list]
List Knowledge Bases
```bash
studio knowledge list [options]
```
**Options**
| Option | Required | Description |
| ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--scope ` | No | Lifecycle scope: active or archived knowledge bases. Use Restore Knowledge Base to recover archived entries. Folder paths resolve only active folders, so filtering by an archived folder returns no matches. Accepted values: `active`, `archived`. |
| `--folder ` | No | Folder path as shown in the app; the leading / is optional. |
| `--search ` | No | Case-insensitive substring match against the resource name. |
| `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. |
| `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. |
| `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. |
### studio knowledge restore [#studio-knowledge-restore]
Restore an archived knowledge base
```bash
studio knowledge restore
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | --------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
### studio knowledge search [#studio-knowledge-search]
Search Knowledge
```bash
studio knowledge search [options]
```
**Options**
| Option | Required | Description |
| -------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--kb ` | Yes | Knowledge base ID (repeatable) (space-separated, or @path / @- with one value per line; @@value for a literal leading @). |
| `--query ` | No | Text to search for. |
| `--top-k ` | No | Maximum number of search results to return. Must be a whole number between 1 and 100. |
| `--tag-filters ` | No | Tag filters as \[\{"tagName":"...","operator":"...","value":"..."}] (JSON, or @path / @- to read a file or stdin). |
| `--search-mode ` | No | Search algorithm. Accepted values: `vector`, `hybrid`. |
| `--reranker-enabled` | No | Re-order retrieved chunks with a reranking model before truncating to `topK`. Ignored for a tag-only search, and billed as an additional search unit. Reranking is best-effort — a provider failure falls back to vector ordering, so check `rerankerStatus` on the response. |
| `--no-reranker-enabled` | No | Send --reranker-enabled as false. |
| `--reranker-model ` | No | Reranking model to use when `rerankerEnabled` is true. Defaults to `rerank-v4.0-fast`. Accepted values: `rerank-v4.0-pro`, `rerank-v4.0-fast`, `rerank-v3.5`. |
| `--reranker-input-count ` | No | How many candidate chunks to retrieve before reranking. Defaults to four times `topK`, capped at 100. A larger pool costs more retrieval work but gives the reranker more to choose from. |
### studio knowledge update [#studio-knowledge-update]
Update Knowledge Base
```bash
studio knowledge update [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | --------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
**Options**
| Option | Required | Description |
| --------------------------------- | -------- | ----------------------------------------------------------------------------------- |
| `--name ` | No | New knowledge base name. |
| `--description ` | No | New knowledge base description. |
| `--chunking-config ` | No | New document chunking configuration. (JSON, or @path / @- to read a file or stdin). |
| `--folder ` | No | Folder path as shown in the app; the leading / is optional. |
### studio knowledge mv [#studio-knowledge-mv]
Move a knowledge base to a folder
```bash
studio knowledge mv
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | ---------------------------------------------------------- |
| `knowledgeBaseId` | Yes | Unique knowledge base identifier. |
| `folder` | Yes | Folder path as shown in the app; the leading / is optional |
### studio knowledge export [#studio-knowledge-export]
Export a knowledge base as a .simkb.zip bundle
```bash
studio knowledge export [options]
```
**Arguments**
| Argument | Required | Description |
| ----------------- | -------- | ------------------------ |
| `knowledgeBaseId` | Yes | Knowledge base to export |
**Options**
| Option | Required | Description |
| -------------------------- | -------- | ----------------------------------------------------------------------------------------------------- |
| `-o, --output-file ` | No | Write the bundle to this path instead of the name the server suggests; pass - to stream it to stdout. |
| `--force` | No | Overwrite --output-file if it already exists. |
| `--no-vectors` | No | Leave chunk vectors out of the bundle, so an import re-embeds every chunk. |
### studio knowledge ls [#studio-knowledge-ls]
List knowledge resources and child folders together
```bash
studio knowledge ls [path] [options]
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | ------------------------------------------------ |
| `path` | No | Folder path to list; defaults to the root folder |
**Options**
| Option | Required | Description |
| ----------------- | -------- | --------------------------------------------------------------------- |
| `--search ` | No | Filter folders and resources by name. |
| `--limit ` | No | Maximum combined items to return (0 for everything). Defaults to `0`. |
### studio knowledge mkdir [#studio-knowledge-mkdir]
Create a knowledge directory at a path
```bash
studio knowledge mkdir
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | ------------------------------------------------ |
| `path` | Yes | Folder path to create; the leading / is optional |
## studio logs [#studio-logs]
Also spelled `studio log`.
### studio logs get [#studio-logs-get]
Show run diagnostics
```bash
studio logs get [options]
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | ------------------------------- |
| `runId` | Yes | Unique workflow run identifier. |
**Options**
| Option | Required | Description |
| --------- | -------- | ------------------------------------------------------------------------- |
| `--trace` | No | Show expanded trace spans with inputs, outputs, errors, timing, and cost. |
### studio logs stats [#studio-logs-stats]
Summarize run counts, failures and latency over a window
```bash
studio logs stats [options]
```
**Options**
| Option | Required | Description |
| ------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--workflow ` | No | Comma-separated workflow identifiers to include. At most 200 entries. An empty entry is rejected. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). |
| `--folder ` | No | Folder path as shown in the app; the leading / is optional (space-separated, or @path / @- with one value per line; @@value for a literal leading @). |
| `--trigger ` | No | Comma-separated trigger types to include. An empty entry is rejected. The vocabulary is open, so an unrecognized member selects no runs; the literal `all` disables this filter. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). |
| `--level ` | No | Severity level to include. Accepted values: `info`, `error`. |
| `--start-date ` | No | Only include runs started at or after this UTC ISO 8601 timestamp, e.g. `2026-08-06T00:00:00Z`. A date without a time, or a timestamp carrying a UTC offset instead of `Z`, is rejected, as is year `0000`, which names no storable instant. |
| `--end-date ` | No | Only include runs started at or before this UTC ISO 8601 timestamp, e.g. `2026-08-06T00:00:00Z`. A date without a time, or a timestamp carrying a UTC offset instead of `Z`, is rejected, as is year `0000`, which names no storable instant. |
| `--segment-count ` | No | Number of time buckets, up to 500. Exactly this many are returned, each at least one minute wide. Short windows extend past the requested end and include empty trailing buckets. |
### studio logs list [#studio-logs-list]
List Logs
```bash
studio logs list [options]
```
**Options**
| Option | Required | Description |
| --------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--workflow ` | No | Comma-separated workflow identifiers to include. An empty entry is rejected. At most 200 entries. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). |
| `--trigger ` | No | Comma-separated, lowercase trigger types or webhook provider IDs. Matching is exact and case-sensitive; unknown values select no runs. An empty entry is rejected. The sentinel `all` disables this filter, even when listed with other values. At most 100 entries. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). |
| `--level ` | No | Severity level to include. Accepted values: `info`, `error`. |
| `--start-date ` | No | Only include runs started at or after this UTC ISO 8601 timestamp, e.g. `2026-08-06T00:00:00Z`. A date without a time, or a timestamp carrying a UTC offset instead of `Z`, is rejected, as is year `0000`, which names no storable instant. |
| `--end-date ` | No | Only include runs started at or before this UTC ISO 8601 timestamp, e.g. `2026-08-06T00:00:00Z`. A date without a time, or a timestamp carrying a UTC offset instead of `Z`, is rejected, as is year `0000`, which names no storable instant. |
| `--min-duration-ms ` | No | Minimum total execution duration in milliseconds. Whole milliseconds from 0 to 2147483647; the stored duration is a 32-bit integer, so a fractional or out-of-range bound is rejected. |
| `--max-duration-ms ` | No | Maximum total execution duration in milliseconds. Whole milliseconds from 0 to 2147483647; the stored duration is a 32-bit integer, so a fractional or out-of-range bound is rejected. |
| `--min-cost ` | No | Minimum execution cost in USD, from 0 to 1000000. A run is never charged a negative amount, so a negative bound is rejected rather than treated as a filter that matches every run. |
| `--max-cost ` | No | Maximum execution cost in USD, from 0 to 1000000. A run is never charged a negative amount, so a negative bound is rejected rather than treated as a filter that matches every run. |
| `--model ` | No | AI model used during execution. |
| `--details ` | No | Response detail level; full is requested by default to name each run’s workflow. Accepted values: `basic`, `full`. |
| `--include-trace-spans` | No | Include trace spans in JSON or YAML output (implies full detail). |
| `--include-final-output` | No | Include final output in JSON or YAML output (implies full detail). |
| `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. |
| `--cursor ` | No | Continue from nextCursor returned by a previous result. |
| `--status ` | No | Comma-separated execution statuses to include, from `pending` \| `running` \| `paused` \| `redacting` \| `completed` \| `failed` \| `cancelled`. An empty entry is rejected. ANDed with `level`, which reports severity rather than lifecycle. |
| `--workflow-name ` | No | Case-insensitive substring match against the run's workflow name. Runs whose workflow has been deleted match nothing, because the name is no longer joinable. |
| `--include-job-runs` | No | Include Chat and Studio-agent jobs alongside workflow runs. Jobs use `kind: "job"` and have no workflow or cost ledger. Workflow, folder, model, or status filters exclude jobs. This option is valid only when sorting by `startedAt`. |
| `--no-include-job-runs` | No | Send --include-job-runs as false. |
| `--run-id ` | No | Exact run identifier to match. |
| `--sort-by ` | No | Field used to sort the result. `durationMs` and `cost` are null until a run settles; those runs sort before recorded values in ascending order and after them in descending order. Only `startedAt` can order Chat and Studio-agent job runs, so any other value is rejected when job runs are included. Accepted values: `startedAt`, `durationMs`, `cost`, `status`. |
| `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. |
| `--folder ` | No | Folder path as shown in the app; the leading / is optional (space-separated, or @path / @- with one value per line; @@value for a literal leading @). |
### studio logs follow [#studio-logs-follow]
Watch runs as they arrive, printing each new run once
```bash
studio logs follow [options]
```
**Options**
| Option | Required | Description |
| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------ |
| `--workflow ` | No | Only follow runs of this workflow (repeatable). |
| `--folder ` | No | Only follow runs of workflows in this folder (repeatable). |
| `--trigger ` | No | Only follow runs with this trigger type (repeatable). |
| `--level ` | No | Only follow runs at this severity. Accepted values: `info`, `error`. |
| `--details ` | No | Response detail level; full names each run’s workflow. Accepted values: `basic`, `full`. Defaults to `full`. |
| `-n, --lines ` | No | Recent runs to print before watching. Defaults to `10`. |
| `--interval ` | No | Seconds between polls. Defaults to `3`. |
## studio mcp-servers [#studio-mcp-servers]
Also spelled `studio mcp-server`.
### studio mcp-servers create [#studio-mcp-servers-create]
Create MCP Server
```bash
studio mcp-servers create [options]
```
**Options**
| Option | Required | Description |
| ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--name ` | Yes | Server display name. |
| `--description ` | No | Optional server description. |
| `--transport ` | No | Transport protocol. Defaults to `streamable-http` on creation. Accepted values: `streamable-http`. |
| `--url ` | Yes | Absolute HTTP or HTTPS endpoint URL without `{{ENV_VAR}}` references. It determines server identity and is immutable: delete and recreate the server to change endpoints. |
| `--auth-type ` | No | Authentication method. When omitted, and no `headers` are sent, registration probes the endpoint once to classify it, falling back to `headers` when the probe fails or the server does not advertise OAuth. A server publishing RFC 9728 metadata is therefore stored as `oauth`, and headers configured afterwards will not authenticate — send this field explicitly to pin the method. Accepted values: `none`, `headers`, `oauth`. |
| `--headers ` | No | Write-only request headers sent to the server. Replaced wholesale rather than merged on update: sending this field drops every stored header it does not repeat. (JSON, or @path / @- to read a file or stdin). |
| `--timeout ` | No | Per-request timeout in milliseconds. Defaults to 30000 on creation. |
| `--retries ` | No | Number of retries per request. Defaults to 3 on creation. |
| `--enabled` | No | Whether workflows can use the server's tools. Defaults to true on creation. |
| `--no-enabled` | No | Send --enabled as false. |
| `--oauth-client-id ` | No | Pre-registered OAuth client identifier. Changing it on update revokes the stored OAuth grant and forces reauthorization. |
| `--oauth-client-secret ` | No | Write-only pre-registered OAuth client secret. Sending it on update as null or a new value revokes the stored OAuth grant and forces reauthorization, as does switching away from OAuth authentication. (--oauth-client-secret null sends the word, not JSON null). |
### studio mcp-servers delete [#studio-mcp-servers-delete]
Delete MCP Server
```bash
studio mcp-servers delete [options]
```
**Arguments**
| Argument | Required | Description |
| ------------- | -------- | ----------------------------- |
| `mcpServerId` | Yes | Unique MCP server identifier. |
**Options**
| Option | Required | Description |
| ----------- | -------- | ----------------------- |
| `-y, --yes` | Yes | Confirm this operation. |
### studio mcp-servers get [#studio-mcp-servers-get]
Get MCP Server
```bash
studio mcp-servers get
```
**Arguments**
| Argument | Required | Description |
| ------------- | -------- | ----------------------------- |
| `mcpServerId` | Yes | Unique MCP server identifier. |
### studio mcp-servers list [#studio-mcp-servers-list]
List MCP Servers
```bash
studio mcp-servers list [options]
```
**Options**
| Option | Required | Description |
| ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--search ` | No | Case-insensitive substring match against the server name. |
| `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. |
| `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. |
| `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. |
### studio mcp-servers tools list [#studio-mcp-servers-tools-list]
List MCP Server Tools (OAuth login or personal API key required)
```bash
studio mcp-servers tools list [options]
```
**Arguments**
| Argument | Required | Description |
| ------------- | -------- | ----------------------------- |
| `mcpServerId` | Yes | Unique MCP server identifier. |
**Options**
| Option | Required | Description |
| -------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `--refresh` | No | Refresh tools using your credentials. Otherwise results may reuse another workspace member's recent discovery and omit newly added tools. |
| `--no-refresh` | No | Send --refresh as false. |
### studio mcp-servers update [#studio-mcp-servers-update]
Update MCP Server
```bash
studio mcp-servers update [options]
```
**Arguments**
| Argument | Required | Description |
| ------------- | -------- | ----------------------------- |
| `mcpServerId` | Yes | Unique MCP server identifier. |
**Options**
| Option | Required | Description |
| ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--name ` | No | Server display name. |
| `--description ` | No | Optional server description. |
| `--transport ` | No | Transport protocol. Defaults to `streamable-http` on creation. Accepted values: `streamable-http`. |
| `--url ` | No | Immutable server URL. When provided, it must equal the current URL; use delete and create to change endpoints. |
| `--auth-type ` | No | Authentication method. When omitted, and no `headers` are sent, registration probes the endpoint once to classify it, falling back to `headers` when the probe fails or the server does not advertise OAuth. A server publishing RFC 9728 metadata is therefore stored as `oauth`, and headers configured afterwards will not authenticate — send this field explicitly to pin the method. Accepted values: `none`, `headers`, `oauth`. |
| `--headers ` | No | Write-only request headers sent to the server. Replaced wholesale rather than merged on update: sending this field drops every stored header it does not repeat. (JSON, or @path / @- to read a file or stdin). |
| `--timeout ` | No | Per-request timeout in milliseconds. Defaults to 30000 on creation. |
| `--retries ` | No | Number of retries per request. Defaults to 3 on creation. |
| `--enabled` | No | Whether workflows can use the server's tools. Defaults to true on creation. |
| `--no-enabled` | No | Send --enabled as false. |
| `--oauth-client-id ` | No | Pre-registered OAuth client identifier. Changing it on update revokes the stored OAuth grant and forces reauthorization. |
| `--oauth-client-secret ` | No | Write-only pre-registered OAuth client secret. Sending it on update as null or a new value revokes the stored OAuth grant and forces reauthorization, as does switching away from OAuth authentication. (--oauth-client-secret null sends the word, not JSON null). |
## studio meta [#studio-meta]
### studio meta status [#studio-meta-status]
Show what this API supports and which limits apply
```bash
studio meta status
```
## studio sandboxes [#studio-sandboxes]
Also spelled `studio sandbox`.
### studio sandboxes create [#studio-sandboxes-create]
Create Sandbox (OAuth login or personal API key required)
```bash
studio sandboxes create [options]
```
**Options**
| Option | Required | Description |
| ------------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--name ` | Yes | Display name, unique within the workspace; 1 to 64 characters. |
| `--language ` | Yes | Dependency ecosystem: `javascript` installs from npm, `python` from PyPI. Accepted values: `javascript`, `python`. |
| `--dependencies ` | No | Package specifiers installed into the sandbox, one per entry. (space-separated, or @path / @- with one value per line; in a file, blank lines and # comments are ignored, while inline values are sent as typed and may not be empty; @@value for a literal leading @). |
| `--cli-tools ` | No | Pinned managed CLI ids installed into the sandbox, at most 10, no duplicates. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). |
| `--system-packages ` | No | Debian packages installed into the sandbox, one per entry. (space-separated, or @path / @- with one value per line; in a file, blank lines and # comments are ignored, while inline values are sent as typed and may not be empty; @@value for a literal leading @). |
### studio sandboxes delete [#studio-sandboxes-delete]
Delete Sandbox (OAuth login or personal API key required)
```bash
studio sandboxes delete [options]
```
**Arguments**
| Argument | Required | Description |
| ----------- | -------- | -------------------------- |
| `sandboxId` | Yes | Unique sandbox identifier. |
**Options**
| Option | Required | Description |
| ----------- | -------- | ----------------------- |
| `-y, --yes` | Yes | Confirm this operation. |
### studio sandboxes get [#studio-sandboxes-get]
Get Sandbox
```bash
studio sandboxes get
```
**Arguments**
| Argument | Required | Description |
| ----------- | -------- | -------------------------- |
| `sandboxId` | Yes | Unique sandbox identifier. |
### studio sandboxes list [#studio-sandboxes-list]
List Sandboxes
```bash
studio sandboxes list [options]
```
**Options**
| Option | Required | Description |
| ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--search ` | No | Case-insensitive substring match against the sandbox name. |
| `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. |
| `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. |
| `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. |
### studio sandboxes update [#studio-sandboxes-update]
Update Sandbox (OAuth login or personal API key required)
```bash
studio sandboxes update [options]
```
**Arguments**
| Argument | Required | Description |
| ----------- | -------- | -------------------------- |
| `sandboxId` | Yes | Unique sandbox identifier. |
**Options**
| Option | Required | Description |
| ------------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--name ` | No | New display name, unique within the workspace; 1 to 64 characters. |
| `--language ` | No | Replacement dependency ecosystem. The whole spec is revalidated against it, so a Python dependency list does not survive a switch to JavaScript. Accepted values: `javascript`, `python`. |
| `--dependencies ` | No | Replacement package list; replaces the whole list. (space-separated, or @path / @- with one value per line; in a file, blank lines and # comments are ignored, while inline values are sent as typed and may not be empty; @@value for a literal leading @). |
| `--cli-tools ` | No | Replacement managed CLI list; replaces the whole list. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). |
| `--system-packages ` | No | Replacement Debian package list; replaces the whole list. (space-separated, or @path / @- with one value per line; in a file, blank lines and # comments are ignored, while inline values are sent as typed and may not be empty; @@value for a literal leading @). |
## studio secrets [#studio-secrets]
Also spelled `studio secret`.
### studio secrets delete [#studio-secrets-delete]
Delete Secret (OAuth login or personal API key required)
```bash
studio secrets delete [options]
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | ----------------- |
| `name` | Yes | Secret to delete. |
**Options**
| Option | Required | Description |
| ----------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--scope ` | Yes | Whether the secret belongs to the workspace or to the caller. A personal secret belongs to the caller across every workspace, not to one workspace. Accepted values: `workspace`, `personal`. |
| `-y, --yes` | Yes | Confirm this operation. |
### studio secrets list [#studio-secrets-list]
List Secrets (OAuth login or personal API key required)
```bash
studio secrets list [options]
```
**Options**
| Option | Required | Description |
| ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--scope ` | No | Restrict results to one ownership scope. Accepted values: `workspace`, `personal`. |
| `--search ` | No | Case-insensitive substring match against the secret name. |
| `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. |
| `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. |
| `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. |
### studio secrets set [#studio-secrets-set]
Create or replace a named secret (OAuth login or personal API key required)
```bash
studio secrets set [options]
```
**Arguments**
| Argument | Required | Description |
| -------- | -------- | --------------------------------------- |
| `name` | Yes | Secret name, as referenced in workflows |
**Options**
| Option | Required | Description |
| ----------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--scope ` | Yes | Secret ownership scope. Accepted values: `workspace`, `personal`. |
| `--value ` | No | Secret value. Passing it inline exposes it to shell history and process listings; @path reads it from a file and @- from stdin, verbatim — a trailing newline is part of the value, so write the file with printf rather than echo. Prefix a literal leading @ with a second one. |
| `--description ` | No | What the secret is for, shown to teammates; workspace scope only. Omit to leave an existing description unchanged. |
| `--unredacted` | No | Opt the workspace secret out of redaction: its value then appears in plaintext in run logs, model-visible content, and files, including publicly shared log links. Workspace scope only — sending it for a personal secret is rejected. Omit it to leave the current setting untouched. Pass --no-unredacted to restore redaction. |
| `--no-unredacted` | No | Send --unredacted as false. |
## studio selectors [#studio-selectors]
### studio selectors get [#studio-selectors-get]
Get Selector Option (OAuth login or personal API key required)
```bash
studio selectors get [options]
```
**Options**
| Option | Required | Description |
| ------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--selector-key ` | Yes | Registered selector key for discovering this field’s destination options. Accepted values: `airtable.bases`, `airtable.tables`, `asana.workspaces`, `attio.lists`, `attio.objects`, `bigquery.datasets`, `bigquery.tables`, `bitbucket.workspaces`, `bitbucket.repositories`, `calcom.eventTypes`, `calcom.schedules`, `clickup.workspaces`, `clickup.spaces`, `clickup.folders`, `clickup.lists`, `confluence.spaces`, `confluence.spacesById`, `confluence.pages`, `google.tasks.lists`, `gmail.labels`, `google.calendar`, `google.drive`, `google.sheets`, `harmonic.savedSearches`, `hubspot.lists`, `hubspot.owners`, `hubspot.pipelines`, `hubspot.pipelineStages`, `hubspot.properties`, `jsm.requestTypes`, `jsm.serviceDesks`, `microsoft.planner.plans`, `notion.databases`, `notion.pages`, `netsuite.recordTypes`, `netsuite.asyncTasks`, `pipedrive.pipelines`, `sharepoint.lists`, `trello.boards`, `zoho_desk.organizations`, `zoho_desk.departments`, `zoho_desk.agents`, `zoom.meetings`, `slack.channels`, `snowflake.databases`, `snowflake.schemas`, `snowflake.tables`, `snowflake.warehouses`, `snowflake.roles`, `snowflake.fileFormats`, `snowflake.procedures`, `slack.users`, `outlook.folders`, `outlook.calendars`, `microsoft.teams`, `microsoft.chats`, `microsoft.channels`, `microsoft.planner`, `onedrive.files`, `onedrive.folders`, `sharepoint.sites`, `microsoft.excel`, `microsoft.excel.drives`, `microsoft.excel.sheets`, `microsoft.word`, `wealthbox.contacts`, `jira.issues`, `jira.projects`, `jira.projectKeys`, `linear.projects`, `linear.teams`, `monday.boards`, `monday.groups`, `webflow.sites`, `webflow.collections`, `webflow.items`, `cloudwatch.logGroups`, `cloudwatch.logStreams`, `imap.mailboxes`, `mcp.tools`, `managedAgent.agents`, `managedAgent.environments`, `managedAgent.vaults`, `managedAgent.memoryStores`, `knowledge.documents`, `studio.workflows`, `table.columns`, `table.outputColumns`, `meta.pages`, `workspace.secretNames`, `workspace.sandboxes`, `providers.ollamaEmbeddingModels`, `providers.openrouterEmbeddingModels`. |
| `--context ` | No | Only the dependencies declared by the selector, such as oauthCredential and channelId. Missing OAuth connections require human authorization. (JSON, or @path / @- to read a file or stdin). |
| `--id ` | Yes | Resource identifier. |
### studio selectors list [#studio-selectors-list]
List Selector Options (OAuth login or personal API key required)
```bash
studio selectors list [options]
```
**Options**
| Option | Required | Description |
| ------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--selector-key ` | Yes | Registered selector key for discovering this field’s destination options. Accepted values: `airtable.bases`, `airtable.tables`, `asana.workspaces`, `attio.lists`, `attio.objects`, `bigquery.datasets`, `bigquery.tables`, `bitbucket.workspaces`, `bitbucket.repositories`, `calcom.eventTypes`, `calcom.schedules`, `clickup.workspaces`, `clickup.spaces`, `clickup.folders`, `clickup.lists`, `confluence.spaces`, `confluence.spacesById`, `confluence.pages`, `google.tasks.lists`, `gmail.labels`, `google.calendar`, `google.drive`, `google.sheets`, `harmonic.savedSearches`, `hubspot.lists`, `hubspot.owners`, `hubspot.pipelines`, `hubspot.pipelineStages`, `hubspot.properties`, `jsm.requestTypes`, `jsm.serviceDesks`, `microsoft.planner.plans`, `notion.databases`, `notion.pages`, `netsuite.recordTypes`, `netsuite.asyncTasks`, `pipedrive.pipelines`, `sharepoint.lists`, `trello.boards`, `zoho_desk.organizations`, `zoho_desk.departments`, `zoho_desk.agents`, `zoom.meetings`, `slack.channels`, `snowflake.databases`, `snowflake.schemas`, `snowflake.tables`, `snowflake.warehouses`, `snowflake.roles`, `snowflake.fileFormats`, `snowflake.procedures`, `slack.users`, `outlook.folders`, `outlook.calendars`, `microsoft.teams`, `microsoft.chats`, `microsoft.channels`, `microsoft.planner`, `onedrive.files`, `onedrive.folders`, `sharepoint.sites`, `microsoft.excel`, `microsoft.excel.drives`, `microsoft.excel.sheets`, `microsoft.word`, `wealthbox.contacts`, `jira.issues`, `jira.projects`, `jira.projectKeys`, `linear.projects`, `linear.teams`, `monday.boards`, `monday.groups`, `webflow.sites`, `webflow.collections`, `webflow.items`, `cloudwatch.logGroups`, `cloudwatch.logStreams`, `imap.mailboxes`, `mcp.tools`, `managedAgent.agents`, `managedAgent.environments`, `managedAgent.vaults`, `managedAgent.memoryStores`, `knowledge.documents`, `studio.workflows`, `table.columns`, `table.outputColumns`, `meta.pages`, `workspace.secretNames`, `workspace.sandboxes`, `providers.ollamaEmbeddingModels`, `providers.openrouterEmbeddingModels`. |
| `--context ` | No | Only the dependencies declared by the selector, such as oauthCredential and channelId. Missing OAuth connections require human authorization. (JSON, or @path / @- to read a file or stdin). |
| `--search ` | No | Provider option search text. |
| `--cursor ` | No | Continue from nextCursor returned by a previous result. |
| `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. |
## studio skills [#studio-skills]
Also spelled `studio skill`.
### studio skills create [#studio-skills-create]
Create Skill (OAuth login or personal API key required)
```bash
studio skills create [options]
```
**Options**
| Option | Required | Description |
| ----------------------- | -------- | ---------------------------------------------------------------------------------- |
| `--name ` | Yes | Kebab-case name, unique within the workspace and not reserved by a built-in skill. |
| `--description ` | Yes | One-line summary of when the skill applies. |
| `--content ` | Yes | Skill body containing the instructions given to the agent. |
### studio skills delete [#studio-skills-delete]
Delete Skill (OAuth login or personal API key required)
```bash
studio skills delete [options]
```
**Arguments**
| Argument | Required | Description |
| --------- | -------- | ------------------------------------------------------------------------------------------------------------- |
| `skillId` | Yes | Unique skill identifier. A built-in skill is `builtin-` followed by its name, for example `builtin-research`. |
**Options**
| Option | Required | Description |
| ----------- | -------- | ----------------------- |
| `-y, --yes` | Yes | Confirm this operation. |
### studio skills get [#studio-skills-get]
Get Skill
```bash
studio skills get
```
**Arguments**
| Argument | Required | Description |
| --------- | -------- | ------------------------------------------------------------------------------------------------------------- |
| `skillId` | Yes | Unique skill identifier. A built-in skill is `builtin-` followed by its name, for example `builtin-research`. |
### studio skills editors create [#studio-skills-editors-create]
Grant Skill Editor (OAuth login or personal API key required)
```bash
studio skills editors create [options]
```
**Arguments**
| Argument | Required | Description |
| --------- | -------- | ------------------------------------------------------------------------------------------------------------- |
| `skillId` | Yes | Unique skill identifier. A built-in skill is `builtin-` followed by its name, for example `builtin-research`. |
**Options**
| Option | Required | Description |
| ----------------- | -------- | -------------------------------------------- |
| `--email ` | Yes | Email address of a current workspace member. |
### studio skills editors list [#studio-skills-editors-list]
List Skill Editors
```bash
studio skills editors list [options]
```
**Arguments**
| Argument | Required | Description |
| --------- | -------- | ------------------------------------------------------------------------------------------------------------- |
| `skillId` | Yes | Unique skill identifier. A built-in skill is `builtin-` followed by its name, for example `builtin-research`. |
**Options**
| Option | Required | Description |
| ---------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `email`, `name`. |
| `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. |
| `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. |
### studio skills editors delete [#studio-skills-editors-delete]
Revoke Skill Editor (OAuth login or personal API key required)
```bash
studio skills editors delete [options]
```
**Arguments**
| Argument | Required | Description |
| --------- | -------- | ------------------------------------------------------------------------------------------------------------- |
| `skillId` | Yes | Unique skill identifier. A built-in skill is `builtin-` followed by its name, for example `builtin-research`. |
**Options**
| Option | Required | Description |
| ----------------- | -------- | -------------------------------------------- |
| `--email ` | Yes | Email address of a current workspace member. |
| `-y, --yes` | Yes | Confirm this operation. |
### studio skills list [#studio-skills-list]
List Skills
```bash
studio skills list [options]
```
**Options**
| Option | Required | Description |
| ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--search ` | No | Case-insensitive substring match against the skill name. |
| `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. |
| `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. |
| `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. |
### studio skills update [#studio-skills-update]
Update Skill (OAuth login or personal API key required)
```bash
studio skills update [options]
```
**Arguments**
| Argument | Required | Description |
| --------- | -------- | ------------------------------------------------------------------------------------------------------------- |
| `skillId` | Yes | Unique skill identifier. A built-in skill is `builtin-` followed by its name, for example `builtin-research`. |
**Options**
| Option | Required | Description |
| ----------------------- | -------- | ----------------------------------------------- |
| `--name ` | No | New kebab-case skill name. |
| `--description ` | No | New one-line summary of when the skill applies. |
| `--content ` | No | Replacement skill body. |
## studio tables [#studio-tables]
Also spelled `studio table`.
### studio tables columns create [#studio-tables-columns-create]
Add Column
```bash
studio tables columns create [options]
```
**Arguments**
| Argument | Required | Description |
| --------- | -------- | ------------------------ |
| `tableId` | Yes | Unique table identifier. |
**Options**
| Option | Required | Description |
| ------------------------ | -------- | ------------------------------------------------------------------------ |
| `--column ` | Yes | Column definition to add. (JSON, or @path / @- to read a file or stdin). |
### studio tables columns delete [#studio-tables-columns-delete]
Delete Column
```bash
studio tables columns delete [options]
```
**Arguments**
| Argument | Required | Description |
| --------- | -------- | ------------------------ |
| `tableId` | Yes | Unique table identifier. |
**Options**
| Option | Required | Description |
| ----------------------- | -------- | ----------------------------- |
| `--column-name ` | Yes | Name of the column to delete. |
| `-y, --yes` | Yes | Confirm this operation. |
### studio tables columns update [#studio-tables-columns-update]
Update Column
```bash
studio tables columns update [options]
```
**Arguments**
| Argument | Required | Description |
| --------- | -------- | ------------------------ |
| `tableId` | Yes | Unique table identifier. |
**Options**
| Option | Required | Description |
| ------------------------- | -------- | --------------------------------------------------------------------- |
| `--column-name ` | Yes | Current name of the column to update. |
| `--updates ` | Yes | Mutable column fields. (JSON, or @path / @- to read a file or stdin). |
### studio tables groups create [#studio-tables-groups-create]
Add Workflow Group
```bash
studio tables groups create [options]
```
**Arguments**
| Argument | Required | Description |
| --------- | -------- | ------------------------ |
| `tableId` | Yes | Unique table identifier. |
**Options**
| Option | Required | Description |
| -------------------------------- | -------- | ------------------------------------------------------------------------------------------ |
| `--group ` | Yes | Workflow or enrichment producer definition. (JSON, or @path / @- to read a file or stdin). |
| `--output-columns ` | Yes | Columns created for producer outputs. (JSON, or @path / @- to read a file or stdin). |
| `--auto-run` | No | Whether to schedule existing rows after group creation. |
| `--no-auto-run` | No | Send --auto-run as false. |
### studio tables groups delete [#studio-tables-groups-delete]
Delete Workflow Group
```bash
studio tables groups delete [options]
```
**Arguments**
| Argument | Required | Description |
| --------- | -------- | ------------------------ |
| `tableId` | Yes | Unique table identifier. |
**Options**
| Option | Required | Description |
| -------------------- | -------- | ------------------------- |
| `--group-id ` | Yes | Workflow group to delete. |
| `-y, --yes` | Yes | Confirm this operation. |
### studio tables groups list [#studio-tables-groups-list]
List Workflow Groups
```bash
studio tables groups list
```
**Arguments**
| Argument | Required | Description |
| --------- | -------- | ------------------------ |
| `tableId` | Yes | Unique table identifier. |
### studio tables groups update [#studio-tables-groups-update]
Update Workflow Group
```bash
studio tables groups update [options]
```
**Arguments**
| Argument | Required | Description |
| --------- | -------- | ------------------------ |
| `tableId` | Yes | Unique table identifier. |
**Options**
| Option | Required | Description |
| ------------------------------------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--group-id ` | Yes | Workflow group to update. |
| `--workflow-id ` | No | Replacement backing workflow identifier. |
| `--name ` | No | Replacement workflow-group display name. |
| `--dependencies ` | No | Replacement input dependencies. (JSON, or @path / @- to read a file or stdin). |
| `--outputs ` | No | Replacement producer outputs. (JSON, or @path / @- to read a file or stdin). |
| `--new-output-columns ` | No | Columns to add for new outputs. (JSON, or @path / @- to read a file or stdin). |
| `--mapping-updates ` | No | Existing output-column mapping changes. (JSON, or @path / @- to read a file or stdin). |
| `--input-mappings ` | No | Replacement workflow input mappings. (JSON, or @path / @- to read a file or stdin). |
| `--deployment-mode