Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.corsair.dev/llms.txt

Use this file to discover all available pages before exploring further.

Every tally.api.* operation is listed below with parameter shapes and return types from the plugin Zod schemas.
New to Corsair? See API access, authentication, and error handling.

Forms

create

forms.create Create a new form Risk: write
await corsair.tally.api.forms.create({});
Input
NameTypeRequiredDescription
workspaceIdstringNo
templateIdstringNo
statusstringYes
blocksobject[]Yes
settingsobjectNo
{
}[]
{
}
Output
NameTypeRequiredDescription
idstringYes
namestringNo
statusstringNo
workspaceIdstringNo
createdAtstringNo
updatedAtstringNo
blocksobject[]No
settingsobjectNo
{
}[]
{
}

delete

forms.delete Delete a form [DESTRUCTIVE] Risk: destructive
await corsair.tally.api.forms.delete({});
Input
NameTypeRequiredDescription
formIdstringYes
Output: void

get

forms.get Retrieve a form by ID Risk: read
await corsair.tally.api.forms.get({});
Input
NameTypeRequiredDescription
formIdstringYes
Output
NameTypeRequiredDescription
idstringYes
namestringNo
statusstringNo
workspaceIdstringNo
createdAtstringNo
updatedAtstringNo
blocksobject[]No
settingsobjectNo
{
}[]
{
}

list

forms.list List all forms with optional pagination and workspace filter Risk: read
await corsair.tally.api.forms.list({});
Input
NameTypeRequiredDescription
pagenumberNo
limitnumberNo
workspaceIdsstring[]No
Output
NameTypeRequiredDescription
itemsobject[]Yes
pagenumberNo
limitnumberNo
totalnumberNo
hasMorebooleanNo
{
  id: string,
  name?: string,
  status?: string,
  workspaceId?: string | null,
  createdAt?: string,
  updatedAt?: string,
  blocks?: {
  }[],
  settings?: {
  }
}[]

update

forms.update Update an existing form Risk: write
await corsair.tally.api.forms.update({});
Input
NameTypeRequiredDescription
formIdstringYes
namestringNo
statusstringNo
blocksobject[]No
settingsobjectNo
{
}[]
{
}
Output
NameTypeRequiredDescription
idstringYes
namestringNo
statusstringNo
workspaceIdstringNo
createdAtstringNo
updatedAtstringNo
blocksobject[]No
settingsobjectNo
{
}[]
{
}

Organizations

cancelInvite

organizations.cancelInvite Cancel a pending organization invite [DESTRUCTIVE] Risk: destructive
await corsair.tally.api.organizations.cancelInvite({});
Input
NameTypeRequiredDescription
organizationIdstringYes
inviteIdstringYes
Output: void

createInvite

organizations.createInvite Invite users to an organization Risk: write
await corsair.tally.api.organizations.createInvite({});
Input
NameTypeRequiredDescription
organizationIdstringYes
workspaceIdsstring[]Yes
emailsstringYes
Output: void

listInvites

organizations.listInvites List pending invites for an organization Risk: read
await corsair.tally.api.organizations.listInvites({});
Input
NameTypeRequiredDescription
organizationIdstringYes
Output: object[]
{
  id: string,
  organizationId?: string,
  email?: string,
  createdAt?: string,
  updatedAt?: string
}[]

listUsers

organizations.listUsers List all users in an organization Risk: read
await corsair.tally.api.organizations.listUsers({});
Input
NameTypeRequiredDescription
organizationIdstringYes
Output: object[]
{
  id: string,
  email?: string,
  name?: string | null,
  subscriptionPlan?: string | null
}[]

removeUser

organizations.removeUser Remove a user from an organization [DESTRUCTIVE] Risk: destructive
await corsair.tally.api.organizations.removeUser({});
Input
NameTypeRequiredDescription
organizationIdstringYes
userIdstringYes
Output: void

Questions

list

questions.list List all questions for a form Risk: read
await corsair.tally.api.questions.list({});
Input
NameTypeRequiredDescription
formIdstringYes
Output
NameTypeRequiredDescription
questionsobject[]Yes
hasResponsesbooleanNo
{
  id: string,
  type?: string,
  title?: string | null,
  isTitleModifiedByUser?: boolean,
  formId?: string,
  isDeleted?: boolean,
  numberOfResponses?: number,
  createdAt?: string,
  updatedAt?: string,
  fields?: {
  }[]
}[]

Submissions

delete

submissions.delete Delete a form submission [DESTRUCTIVE] Risk: destructive
await corsair.tally.api.submissions.delete({});
Input
NameTypeRequiredDescription
formIdstringYes
submissionIdstringYes
Output: void

get

submissions.get Retrieve a specific form submission Risk: read
await corsair.tally.api.submissions.get({});
Input
NameTypeRequiredDescription
formIdstringYes
submissionIdstringYes
Output
NameTypeRequiredDescription
questionsobject[]No
submissionobjectYes
{
  id: string,
  type?: string,
  title?: string | null,
  isTitleModifiedByUser?: boolean,
  formId?: string,
  isDeleted?: boolean,
  numberOfResponses?: number,
  createdAt?: string,
  updatedAt?: string,
  fields?: {
  }[]
}[]
{
  id: string,
  respondentId?: string | null,
  formId?: string,
  createdAt?: string,
  isCompleted?: boolean,
  responses?: {
    id: string,
    formId?: string,
    questionId?: string,
    respondentId?: string,
    submissionId?: string | null,
    sessionUuid?: string,
    answer?: any,
    formattedAnswer?: string,
    createdAt?: string,
    updatedAt?: string
  }[]
}

list

submissions.list List form submissions with optional filters Risk: read
await corsair.tally.api.submissions.list({});
Input
NameTypeRequiredDescription
formIdstringYes
pagenumberNo
limitnumberNo
filterall | completed | partialNo
startDatestringNo
endDatestringNo
afterIdstringNo
Output
NameTypeRequiredDescription
pagenumberNo
limitnumberNo
hasMorebooleanNo
totalNumberOfSubmissionsPerFilterobjectNo
questionsobject[]No
submissionsobject[]Yes
{
}
{
  id: string,
  type?: string,
  title?: string | null,
  isTitleModifiedByUser?: boolean,
  formId?: string,
  isDeleted?: boolean,
  numberOfResponses?: number,
  createdAt?: string,
  updatedAt?: string,
  fields?: {
  }[]
}[]
{
  id: string,
  respondentId?: string | null,
  formId?: string,
  createdAt?: string,
  isCompleted?: boolean,
  responses?: {
    id: string,
    formId?: string,
    questionId?: string,
    respondentId?: string,
    submissionId?: string | null,
    sessionUuid?: string,
    answer?: any,
    formattedAnswer?: string,
    createdAt?: string,
    updatedAt?: string
  }[]
}[]

Users

getMe

users.getMe Retrieve the current authenticated user Risk: read
await corsair.tally.api.users.getMe({});
Input: empty object Output
NameTypeRequiredDescription
idstringYes
emailstringNo
namestringNo
subscriptionPlanstringNo

Webhook Management

create

webhookManagement.create Create a new webhook subscription Risk: write
await corsair.tally.api.webhookManagement.create({});
Input
NameTypeRequiredDescription
formIdstringYes
urlstringYes
eventTypesstring[]Yes
signingSecretstringNo
httpHeadersobject[]No
externalSubscriberstringNo
{
  name: string,
  value: string
}[]
Output
NameTypeRequiredDescription
idstringYes
urlstringNo
eventTypesstring[]No
isEnabledbooleanNo
signingSecretstringNo
createdAtstringNo

delete

webhookManagement.delete Delete a webhook subscription [DESTRUCTIVE] Risk: destructive
await corsair.tally.api.webhookManagement.delete({});
Input
NameTypeRequiredDescription
webhookIdstringYes
Output: void

list

webhookManagement.list List all webhooks Risk: read
await corsair.tally.api.webhookManagement.list({});
Input
NameTypeRequiredDescription
pagenumberNo
limitnumberNo
Output
NameTypeRequiredDescription
webhooksobject[]Yes
pagenumberNo
limitnumberNo
hasMorebooleanNo
totalCountnumberNo
{
  id: string,
  url?: string,
  eventTypes?: string[],
  isEnabled?: boolean,
  signingSecret?: string | null,
  createdAt?: string
}[]

listEvents

webhookManagement.listEvents List delivery events for a webhook Risk: read
await corsair.tally.api.webhookManagement.listEvents({});
Input
NameTypeRequiredDescription
webhookIdstringYes
pagenumberNo
Output
NameTypeRequiredDescription
eventsobject[]Yes
pagenumberNo
limitnumberNo
hasMorebooleanNo
totalNumberOfEventsnumberNo
{
  id?: string,
  eventType?: string,
  deliveryStatus?: string,
  statusCode?: number | null,
  response?: string | null,
  retry?: number,
  payload?: {
  },
  createdAt?: string,
  updatedAt?: string
}[]

retryEvent

webhookManagement.retryEvent Retry a failed webhook event delivery Risk: write
await corsair.tally.api.webhookManagement.retryEvent({});
Input
NameTypeRequiredDescription
webhookIdstringYes
eventIdstringYes
Output: void

update

webhookManagement.update Update a webhook subscription Risk: write
await corsair.tally.api.webhookManagement.update({});
Input
NameTypeRequiredDescription
webhookIdstringYes
formIdstringYes
urlstringYes
eventTypesstring[]Yes
isEnabledbooleanYes
signingSecretstringNo
httpHeadersobject[]No
{
  name: string,
  value: string
}[]
Output: void

Workspaces

create

workspaces.create Create a new workspace (Pro subscription required) Risk: write
await corsair.tally.api.workspaces.create({});
Input
NameTypeRequiredDescription
namestringYes
Output
NameTypeRequiredDescription
idstringYes
namestringNo
createdAtstringNo
updatedAtstringNo
membersany[]No
invitesany[]No

delete

workspaces.delete Delete a workspace [DESTRUCTIVE] Risk: destructive
await corsair.tally.api.workspaces.delete({});
Input
NameTypeRequiredDescription
workspaceIdstringYes
Output: void

get

workspaces.get Retrieve a workspace by ID Risk: read
await corsair.tally.api.workspaces.get({});
Input
NameTypeRequiredDescription
workspaceIdstringYes
Output
NameTypeRequiredDescription
idstringYes
namestringNo
createdAtstringNo
updatedAtstringNo
membersany[]No
invitesany[]No

list

workspaces.list List all workspaces Risk: read
await corsair.tally.api.workspaces.list({});
Input
NameTypeRequiredDescription
pagenumberNo
Output
NameTypeRequiredDescription
itemsobject[]Yes
pagenumberNo
limitnumberNo
totalnumberNo
hasMorebooleanNo
{
  id: string,
  name?: string,
  createdAt?: string,
  updatedAt?: string,
  members?: any[],
  invites?: any[]
}[]

update

workspaces.update Update a workspace name Risk: write
await corsair.tally.api.workspaces.update({});
Input
NameTypeRequiredDescription
workspaceIdstringYes
namestringYes
Output
NameTypeRequiredDescription
idstringYes
namestringNo
createdAtstringNo
updatedAtstringNo
membersany[]No
invitesany[]No