> ## 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.

# API

> API reference for Reply.io: every `replyio.api.*` operation with input and output types.

Every `replyio.api.*` operation is listed below with parameter shapes and return types from the plugin Zod schemas.

<Info>
  **New to Corsair?** See [API access](/concepts/api), [authentication](/concepts/auth), and [error handling](/concepts/error-handling).
</Info>

## Contact Lists

### list

`contactLists.list`

List contact lists with pagination

**Risk:** `read`

```ts theme={null}
await corsair.replyio.api.contactLists.list({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `top` | `number` | No | — |
| `skip` | `number` | No | — |
| `search` | `string` | No | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `items` | `object[]` | Yes | — |
| `hasMore` | `boolean` | Yes | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      isShared: boolean
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

## Contacts

### clearStatus

`contacts.clearStatus`

Clear clearable contact statuses (opt-out, replied, bounced)

**Risk:** `write`

```ts theme={null}
await corsair.replyio.api.contacts.clearStatus({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `contactIds` | `number[]` | Yes | — |
| `statuses` | `optedOut \| replied \| bounced[]` | No | — |

**Output:** `object`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
    }
    ```
  </Accordion>
</AccordionGroup>

***

### create

`contacts.create`

Create a new contact in Reply.io

**Risk:** `write`

```ts theme={null}
await corsair.replyio.api.contacts.create({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `email` | `string` | No | — |
| `firstName` | `string` | No | — |
| `lastName` | `string` | No | — |
| `phone` | `string` | No | — |
| `phone2` | `string` | No | — |
| `title` | `string` | No | — |
| `company` | `string` | No | — |
| `companySize` | `Empty \| SelfEmployed \| Ten \| Fifty \| TwoHundred \| FiveHundred \| OneThousand \| FiveThousand \| TenThousand \| OverTenThousand` | No | — |
| `industry` | `string` | No | — |
| `city` | `string` | No | — |
| `state` | `string` | No | — |
| `country` | `string` | No | — |
| `timeZoneId` | `string` | No | — |
| `linkedInUrl` | `string` | No | — |
| `linkedInSalesNavigatorUrl` | `string` | No | — |
| `linkedInRecruiterUrl` | `string` | No | — |
| `notes` | `string` | No | — |
| `accountId` | `number` | No | — |
| `customFields` | `object[]` | No | — |

<AccordionGroup>
  <Accordion title="customFields full type">
    ```ts theme={null}
    {
      key: string,
      value?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `number` | Yes | — |
| `email` | `string` | No | — |
| `domain` | `string` | No | — |
| `firstName` | `string` | No | — |
| `lastName` | `string` | No | — |
| `phone` | `string` | No | — |
| `title` | `string` | No | — |
| `company` | `string` | No | — |
| `companySize` | `string` | No | — |
| `industry` | `string` | No | — |
| `city` | `string` | No | — |
| `state` | `string` | No | — |
| `country` | `string` | No | — |
| `timeZoneId` | `string` | No | — |
| `linkedInUrl` | `string` | No | — |
| `linkedInSalesNavigatorUrl` | `string` | No | — |
| `linkedInRecruiterUrl` | `string` | No | — |
| `phoneStatus` | `pending \| invalid \| valid \| validationFailed \| notValidated` | No | — |
| `notes` | `string` | No | — |
| `ownerUserId` | `number` | No | — |
| `accountId` | `number` | No | — |
| `isOptedOut` | `boolean` | No | — |
| `callStatus` | `none \| toCall \| called` | No | — |
| `meetingStatus` | `none \| meetingBooked` | No | — |
| `addingDate` | `string` | No | — |
| `createdAt` | `string` | No | — |
| `lastModifiedAt` | `string` | No | — |
| `customFields` | `object[]` | No | — |

<AccordionGroup>
  <Accordion title="customFields full type">
    ```ts theme={null}
    {
      key: string,
      value?: string | null
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### delete

`contacts.delete`

Delete a contact \[DESTRUCTIVE · IRREVERSIBLE]

**Risk:** `destructive` · **Irreversible**

```ts theme={null}
await corsair.replyio.api.contacts.delete({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `number` | Yes | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `success` | `true` | Yes | — |

***

### get

`contacts.get`

Get a contact by ID

**Risk:** `read`

```ts theme={null}
await corsair.replyio.api.contacts.get({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `number` | Yes | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `number` | Yes | — |
| `email` | `string` | No | — |
| `domain` | `string` | No | — |
| `firstName` | `string` | No | — |
| `lastName` | `string` | No | — |
| `phone` | `string` | No | — |
| `title` | `string` | No | — |
| `company` | `string` | No | — |
| `companySize` | `string` | No | — |
| `industry` | `string` | No | — |
| `city` | `string` | No | — |
| `state` | `string` | No | — |
| `country` | `string` | No | — |
| `timeZoneId` | `string` | No | — |
| `linkedInUrl` | `string` | No | — |
| `linkedInSalesNavigatorUrl` | `string` | No | — |
| `linkedInRecruiterUrl` | `string` | No | — |
| `phoneStatus` | `pending \| invalid \| valid \| validationFailed \| notValidated` | No | — |
| `notes` | `string` | No | — |
| `ownerUserId` | `number` | No | — |
| `accountId` | `number` | No | — |
| `isOptedOut` | `boolean` | No | — |
| `callStatus` | `none \| toCall \| called` | No | — |
| `meetingStatus` | `none \| meetingBooked` | No | — |
| `addingDate` | `string` | No | — |
| `createdAt` | `string` | No | — |
| `lastModifiedAt` | `string` | No | — |
| `customFields` | `object[]` | No | — |

<AccordionGroup>
  <Accordion title="customFields full type">
    ```ts theme={null}
    {
      key: string,
      value?: string | null
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getStatus

`contacts.getStatus`

Get a contact's statuses across sequences

**Risk:** `read`

```ts theme={null}
await corsair.replyio.api.contacts.getStatus({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `number` | Yes | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `contactId` | `number` | Yes | — |
| `isOptedOut` | `boolean` | Yes | — |
| `callStatus` | `none \| toCall \| called` | Yes | — |
| `meetingStatus` | `none \| meetingBooked` | Yes | — |
| `sequences` | `object[]` | Yes | — |

<AccordionGroup>
  <Accordion title="sequences full type">
    ```ts theme={null}
    {
      sequenceId: number,
      sequenceName: string,
      statusInSequence: active | paused | inactive | invalidEmail | outOfOffice | finished | contacted | opened | clicked | autoReplied | bounced | replied,
      emailDisposition: {
        isReplied: boolean,
        isBounced: boolean
      }
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### list

`contacts.list`

List contacts with pagination and optional filters

**Risk:** `read`

```ts theme={null}
await corsair.replyio.api.contacts.list({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `top` | `number` | No | — |
| `skip` | `number` | No | — |
| `email` | `string` | No | — |
| `linkedIn` | `string` | No | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `items` | `object[]` | Yes | — |
| `hasMore` | `boolean` | Yes | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      id: number,
      email?: string | null,
      domain?: string | null,
      firstName?: string | null,
      lastName?: string | null,
      phone?: string | null,
      title?: string | null,
      company?: string | null,
      companySize?: string | null,
      industry?: string | null,
      city?: string | null,
      state?: string | null,
      country?: string | null,
      timeZoneId?: string | null,
      linkedInUrl?: string | null,
      linkedInSalesNavigatorUrl?: string | null,
      linkedInRecruiterUrl?: string | null,
      phoneStatus?: pending | invalid | valid | validationFailed | notValidated | null,
      notes?: string | null,
      ownerUserId?: number | null,
      accountId?: number | null,
      isOptedOut?: boolean,
      callStatus?: none | toCall | called | null,
      meetingStatus?: none | meetingBooked | null,
      addingDate?: string | null,
      createdAt?: string | null,
      lastModifiedAt?: string | null,
      customFields?: {
        key: string,
        value?: string | null
      }[]
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### searchByEmail

`contacts.searchByEmail`

Search contacts by exact email address

**Risk:** `read`

```ts theme={null}
await corsair.replyio.api.contacts.searchByEmail({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `email` | `string` | Yes | — |
| `top` | `number` | No | — |
| `skip` | `number` | No | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `items` | `object[]` | Yes | — |
| `hasMore` | `boolean` | Yes | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      id: number,
      email?: string | null,
      domain?: string | null,
      firstName?: string | null,
      lastName?: string | null,
      phone?: string | null,
      title?: string | null,
      company?: string | null,
      companySize?: string | null,
      industry?: string | null,
      city?: string | null,
      state?: string | null,
      country?: string | null,
      timeZoneId?: string | null,
      linkedInUrl?: string | null,
      linkedInSalesNavigatorUrl?: string | null,
      linkedInRecruiterUrl?: string | null,
      phoneStatus?: pending | invalid | valid | validationFailed | notValidated | null,
      notes?: string | null,
      ownerUserId?: number | null,
      accountId?: number | null,
      isOptedOut?: boolean,
      callStatus?: none | toCall | called | null,
      meetingStatus?: none | meetingBooked | null,
      addingDate?: string | null,
      createdAt?: string | null,
      lastModifiedAt?: string | null,
      customFields?: {
        key: string,
        value?: string | null
      }[]
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### setStatus

`contacts.setStatus`

Set contacts' in-sequence status in bulk

**Risk:** `write`

```ts theme={null}
await corsair.replyio.api.contacts.setStatus({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `sequenceId` | `number` | Yes | — |
| `contactIds` | `number[]` | Yes | — |
| `statusInSequence` | `active \| paused \| finished \| outOfOffice` | Yes | — |

**Output:** `object`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
    }
    ```
  </Accordion>
</AccordionGroup>

***

### update

`contacts.update`

Update an existing contact

**Risk:** `write`

```ts theme={null}
await corsair.replyio.api.contacts.update({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `number` | Yes | — |
| `email` | `string` | No | — |
| `firstName` | `string` | No | — |
| `lastName` | `string` | No | — |
| `phone` | `string` | No | — |
| `phone2` | `string` | No | — |
| `title` | `string` | No | — |
| `company` | `string` | No | — |
| `companySize` | `Empty \| SelfEmployed \| Ten \| Fifty \| TwoHundred \| FiveHundred \| OneThousand \| FiveThousand \| TenThousand \| OverTenThousand` | No | — |
| `industry` | `string` | No | — |
| `city` | `string` | No | — |
| `state` | `string` | No | — |
| `country` | `string` | No | — |
| `timeZoneId` | `string` | No | — |
| `linkedInUrl` | `string` | No | — |
| `linkedInSalesNavigatorUrl` | `string` | No | — |
| `linkedInRecruiterUrl` | `string` | No | — |
| `notes` | `string` | No | — |
| `accountId` | `number` | No | — |
| `isOptedOut` | `boolean` | No | — |
| `callStatus` | `none \| toCall \| called` | No | — |
| `meetingStatus` | `none \| meetingBooked` | No | — |
| `ownerUserId` | `number` | No | — |
| `customFields` | `object[]` | No | — |

<AccordionGroup>
  <Accordion title="customFields full type">
    ```ts theme={null}
    {
      id?: number,
      name?: string,
      value?: string | null
    }[]
    ```
  </Accordion>
</AccordionGroup>

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `number` | Yes | — |
| `email` | `string` | No | — |
| `domain` | `string` | No | — |
| `firstName` | `string` | No | — |
| `lastName` | `string` | No | — |
| `phone` | `string` | No | — |
| `title` | `string` | No | — |
| `company` | `string` | No | — |
| `companySize` | `string` | No | — |
| `industry` | `string` | No | — |
| `city` | `string` | No | — |
| `state` | `string` | No | — |
| `country` | `string` | No | — |
| `timeZoneId` | `string` | No | — |
| `linkedInUrl` | `string` | No | — |
| `linkedInSalesNavigatorUrl` | `string` | No | — |
| `linkedInRecruiterUrl` | `string` | No | — |
| `phoneStatus` | `pending \| invalid \| valid \| validationFailed \| notValidated` | No | — |
| `notes` | `string` | No | — |
| `ownerUserId` | `number` | No | — |
| `accountId` | `number` | No | — |
| `isOptedOut` | `boolean` | No | — |
| `callStatus` | `none \| toCall \| called` | No | — |
| `meetingStatus` | `none \| meetingBooked` | No | — |
| `addingDate` | `string` | No | — |
| `createdAt` | `string` | No | — |
| `lastModifiedAt` | `string` | No | — |
| `customFields` | `object[]` | No | — |

<AccordionGroup>
  <Accordion title="customFields full type">
    ```ts theme={null}
    {
      key: string,
      value?: string | null
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

## Email Accounts

### connectGmail

`emailAccounts.connectGmail`

Get the Gmail OAuth connect URL for the user to open

**Risk:** `write`

```ts theme={null}
await corsair.replyio.api.emailAccounts.connectGmail({});
```

**Input:** *empty object*

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `url` | `string` | Yes | — |
| `provider` | `gmail` | Yes | — |

***

### connectOffice365

`emailAccounts.connectOffice365`

Get the Microsoft 365 OAuth connect URL for the user to open

**Risk:** `write`

```ts theme={null}
await corsair.replyio.api.emailAccounts.connectOffice365({});
```

**Input:** *empty object*

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `url` | `string` | Yes | — |
| `provider` | `office-365` | Yes | — |

***

### delete

`emailAccounts.delete`

Delete an email account \[DESTRUCTIVE · IRREVERSIBLE]

**Risk:** `destructive` · **Irreversible**

```ts theme={null}
await corsair.replyio.api.emailAccounts.delete({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `number` | Yes | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `success` | `true` | Yes | — |

***

### list

`emailAccounts.list`

List email accounts with pagination

**Risk:** `read`

```ts theme={null}
await corsair.replyio.api.emailAccounts.list({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `top` | `number` | No | — |
| `skip` | `number` | No | — |
| `my` | `boolean` | No | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `items` | `object[]` | Yes | — |
| `hasMore` | `boolean` | Yes | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      id: number,
      ownerUserId?: number | null,
      email: string,
      senderName?: string | null,
      emailAccountType: custom | gmail | outlook | exchange | exchangeOnPremise,
      isDefault?: boolean,
      dailyLimit?: number | null,
      connectionStatus: unknown | connected | disconnected,
      tags?: string[]
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### listDisconnected

`emailAccounts.listDisconnected`

List email accounts disconnected by auth or connection errors

**Risk:** `read`

```ts theme={null}
await corsair.replyio.api.emailAccounts.listDisconnected({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `top` | `number` | No | — |
| `skip` | `number` | No | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `items` | `object[]` | Yes | — |
| `hasMore` | `boolean` | Yes | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      id: number,
      ownerUserId?: number | null,
      email: string,
      senderName?: string | null,
      emailAccountType: custom | gmail | outlook | exchange | exchangeOnPremise,
      isDefault?: boolean,
      dailyLimit?: number | null,
      connectionStatus: unknown | connected | disconnected,
      tags?: string[]
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### update

`emailAccounts.update`

Update an email account with custom SMTP/IMAP settings

**Risk:** `write`

```ts theme={null}
await corsair.replyio.api.emailAccounts.update({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `number` | Yes | — |
| `connection` | `object` | No | — |
| `safety` | `object` | No | — |
| `signature` | `object` | No | — |
| `optOut` | `object` | No | — |
| `rampUp` | `object` | No | — |
| `tags` | `string[]` | No | — |

<AccordionGroup>
  <Accordion title="connection full type">
    ```ts theme={null}
    {
      email?: string,
      senderName?: string,
      smtpHost?: string,
      smtpPort?: number,
      smtpPassword?: string,
      smtpSsl?: boolean,
      imapHost?: string,
      imapPort?: number,
      imapPassword?: string,
      imapSsl?: boolean
    }
    ```
  </Accordion>

  <Accordion title="safety full type">
    ```ts theme={null}
    {
      dailyLimit?: number,
      isEmailsThrottlingEnabled?: boolean,
      emailsPerInterval?: number,
      emailsThrottlingSecondsInterval?: number,
      isSendingDelayEnabled?: boolean,
      maxSendingDelaySeconds?: number,
      minSendingDelaySeconds?: number
    }
    ```
  </Accordion>

  <Accordion title="signature full type">
    ```ts theme={null}
    {
      signature?: string
    }
    ```
  </Accordion>

  <Accordion title="optOut full type">
    ```ts theme={null}
    {
      message?: string,
      emailFooter?: string,
      isOptOutLinkEnabled?: boolean,
      optOutTextBlock?: string
    }
    ```
  </Accordion>

  <Accordion title="rampUp full type">
    ```ts theme={null}
    {
      enabled?: boolean,
      startValue?: number,
      incrementValue?: number
    }
    ```
  </Accordion>
</AccordionGroup>

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `number` | Yes | — |
| `ownerUserId` | `number` | No | — |
| `email` | `string` | Yes | — |
| `senderName` | `string` | No | — |
| `emailAccountType` | `custom \| gmail \| outlook \| exchange \| exchangeOnPremise` | Yes | — |
| `isDefault` | `boolean` | No | — |
| `dailyLimit` | `number` | No | — |
| `connectionStatus` | `unknown \| connected \| disconnected` | Yes | — |
| `tags` | `string[]` | No | — |
| `isInUse` | `boolean` | No | — |
| `sendingConnectivityError` | `string` | No | — |
| `receivingConnectivityError` | `string` | No | — |
| `sendingLockedByProvider` | `boolean` | No | — |
| `updatedAt` | `string` | No | — |

***

## Schedules

### delete

`schedules.delete`

Delete a sending schedule \[DESTRUCTIVE · IRREVERSIBLE]

**Risk:** `destructive` · **Irreversible**

```ts theme={null}
await corsair.replyio.api.schedules.delete({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `number` | Yes | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `success` | `true` | Yes | — |

***

## Sequence Contacts

### add

`sequenceContacts.add`

Add contacts to a sequence in bulk

**Risk:** `write`

```ts theme={null}
await corsair.replyio.api.sequenceContacts.add({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `sequenceId` | `number` | Yes | — |
| `contactIds` | `number[]` | Yes | — |
| `removeFromExisting` | `boolean` | No | — |
| `startStepId` | `number` | No | — |
| `ignoreStepDelay` | `boolean` | No | — |
| `startFrom` | `string` | No | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `added` | `number[]` | Yes | — |
| `notProcessed` | `object` | Yes | — |

<AccordionGroup>
  <Accordion title="notProcessed full type">
    ```ts theme={null}
    {
    }
    ```
  </Accordion>
</AccordionGroup>

***

### bulkRemove

`sequenceContacts.bulkRemove`

Remove multiple contacts from a sequence at once

**Risk:** `write`

```ts theme={null}
await corsair.replyio.api.sequenceContacts.bulkRemove({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `sequenceId` | `number` | Yes | — |
| `contactIds` | `number[]` | Yes | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `requested` | `number` | Yes | — |
| `removed` | `number` | Yes | — |
| `notFound` | `number` | Yes | — |
| `notInSequence` | `number` | Yes | — |
| `removedIds` | `number[]` | Yes | — |

***

### listExtended

`sequenceContacts.listExtended`

List sequence contacts with extended engagement state

**Risk:** `read`

```ts theme={null}
await corsair.replyio.api.sequenceContacts.listExtended({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `sequenceId` | `number` | Yes | — |
| `top` | `number` | No | — |
| `skip` | `number` | No | — |
| `additionalColumns` | `CurrentStep \| LastStepCompletedAt \| Status[]` | No | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `items` | `object[]` | Yes | — |
| `hasMore` | `boolean` | Yes | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      contactId: number,
      email?: string | null,
      firstName?: string | null,
      lastName?: string | null,
      title?: string | null,
      addedAt?: string | null,
      currentStep?: {
        stepId: number,
        displayStepNumber?: string | null,
        stepNumber?: number | null
      } | null,
      lastStepCompletedAt?: string | null,
      status?: {
        status: string,
        replied?: boolean,
        delivered?: boolean,
        bounced?: boolean,
        opened?: boolean,
        clicked?: boolean
      } | null
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### remove

`sequenceContacts.remove`

Remove a contact from a sequence

**Risk:** `write`

```ts theme={null}
await corsair.replyio.api.sequenceContacts.remove({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `sequenceId` | `number` | Yes | — |
| `contactId` | `number` | Yes | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `success` | `true` | Yes | — |

***

### setStatus

`sequenceContacts.setStatus`

Set contacts' status for enrollments in a specific sequence

**Risk:** `write`

```ts theme={null}
await corsair.replyio.api.sequenceContacts.setStatus({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `sequenceId` | `number` | Yes | — |
| `contactIds` | `number[]` | Yes | — |
| `statusInSequence` | `active \| paused \| finished \| outOfOffice` | Yes | — |

**Output:** `object`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
    }
    ```
  </Accordion>
</AccordionGroup>

***

## Sequences

### archive

`sequences.archive`

Archive a sequence and remove its contacts

**Risk:** `write`

```ts theme={null}
await corsair.replyio.api.sequences.archive({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `sequenceId` | `number` | Yes | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `number` | Yes | — |
| `ownerUserId` | `number` | No | — |
| `name` | `string` | Yes | — |
| `created` | `string` | No | — |
| `status` | `new \| active \| paused` | Yes | — |
| `isArchived` | `boolean` | Yes | — |
| `health` | `healthy \| stalled \| degraded \| blocked` | No | — |
| `scheduleId` | `number` | No | — |
| `emailAccounts` | `object[]` | No | — |
| `linkedInAccounts` | `object[]` | No | — |
| `settings` | `object` | No | — |
| `steps` | `object[]` | No | — |

<AccordionGroup>
  <Accordion title="emailAccounts full type">
    ```ts theme={null}
    {
      id: number,
      email: string
    }[]
    ```
  </Accordion>

  <Accordion title="linkedInAccounts full type">
    ```ts theme={null}
    {
      id: number,
      name?: string | null,
      profileUrl?: string | null,
      status?: string | null
    }[]
    ```
  </Accordion>

  <Accordion title="settings full type">
    ```ts theme={null}
    {
    }
    ```
  </Accordion>

  <Accordion title="steps full type">
    ```ts theme={null}
    {
      id?: number,
      type?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### delete

`sequences.delete`

Delete a sequence \[DESTRUCTIVE · IRREVERSIBLE]

**Risk:** `destructive` · **Irreversible**

```ts theme={null}
await corsair.replyio.api.sequences.delete({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `sequenceId` | `number` | Yes | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `success` | `true` | Yes | — |

***

### get

`sequences.get`

Get a sequence by ID with settings and steps

**Risk:** `read`

```ts theme={null}
await corsair.replyio.api.sequences.get({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `sequenceId` | `number` | Yes | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `number` | Yes | — |
| `ownerUserId` | `number` | No | — |
| `name` | `string` | Yes | — |
| `created` | `string` | No | — |
| `status` | `new \| active \| paused` | Yes | — |
| `isArchived` | `boolean` | Yes | — |
| `health` | `healthy \| stalled \| degraded \| blocked` | No | — |
| `scheduleId` | `number` | No | — |
| `emailAccounts` | `object[]` | No | — |
| `linkedInAccounts` | `object[]` | No | — |
| `settings` | `object` | No | — |
| `steps` | `object[]` | No | — |

<AccordionGroup>
  <Accordion title="emailAccounts full type">
    ```ts theme={null}
    {
      id: number,
      email: string
    }[]
    ```
  </Accordion>

  <Accordion title="linkedInAccounts full type">
    ```ts theme={null}
    {
      id: number,
      name?: string | null,
      profileUrl?: string | null,
      status?: string | null
    }[]
    ```
  </Accordion>

  <Accordion title="settings full type">
    ```ts theme={null}
    {
    }
    ```
  </Accordion>

  <Accordion title="steps full type">
    ```ts theme={null}
    {
      id?: number,
      type?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### list

`sequences.list`

List sequences with pagination and optional filters

**Risk:** `read`

```ts theme={null}
await corsair.replyio.api.sequences.list({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `top` | `number` | No | — |
| `skip` | `number` | No | — |
| `status` | `active \| paused \| new` | No | — |
| `ownerUserId` | `number` | No | — |
| `folderId` | `string` | No | — |
| `isArchived` | `boolean` | No | — |
| `name` | `string` | No | — |
| `createdAfter` | `string` | No | — |
| `sortBy` | `created \| name \| status` | No | — |
| `sortDirection` | `asc \| desc` | No | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `items` | `object[]` | Yes | — |
| `hasMore` | `boolean` | Yes | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      id: number,
      ownerUserId?: number | null,
      name: string,
      created?: string | null,
      status: new | active | paused,
      isArchived: boolean,
      health?: healthy | stalled | degraded | blocked | null
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### pause

`sequences.pause`

Pause a running sequence

**Risk:** `write`

```ts theme={null}
await corsair.replyio.api.sequences.pause({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `sequenceId` | `number` | Yes | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `number` | Yes | — |
| `ownerUserId` | `number` | No | — |
| `name` | `string` | Yes | — |
| `created` | `string` | No | — |
| `status` | `new \| active \| paused` | Yes | — |
| `isArchived` | `boolean` | Yes | — |
| `health` | `healthy \| stalled \| degraded \| blocked` | No | — |
| `scheduleId` | `number` | No | — |
| `emailAccounts` | `object[]` | No | — |
| `linkedInAccounts` | `object[]` | No | — |
| `settings` | `object` | No | — |
| `steps` | `object[]` | No | — |

<AccordionGroup>
  <Accordion title="emailAccounts full type">
    ```ts theme={null}
    {
      id: number,
      email: string
    }[]
    ```
  </Accordion>

  <Accordion title="linkedInAccounts full type">
    ```ts theme={null}
    {
      id: number,
      name?: string | null,
      profileUrl?: string | null,
      status?: string | null
    }[]
    ```
  </Accordion>

  <Accordion title="settings full type">
    ```ts theme={null}
    {
    }
    ```
  </Accordion>

  <Accordion title="steps full type">
    ```ts theme={null}
    {
      id?: number,
      type?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### start

`sequences.start`

Start a sequence in New or Paused status

**Risk:** `write`

```ts theme={null}
await corsair.replyio.api.sequences.start({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `sequenceId` | `number` | Yes | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `number` | Yes | — |
| `ownerUserId` | `number` | No | — |
| `name` | `string` | Yes | — |
| `created` | `string` | No | — |
| `status` | `new \| active \| paused` | Yes | — |
| `isArchived` | `boolean` | Yes | — |
| `health` | `healthy \| stalled \| degraded \| blocked` | No | — |
| `scheduleId` | `number` | No | — |
| `emailAccounts` | `object[]` | No | — |
| `linkedInAccounts` | `object[]` | No | — |
| `settings` | `object` | No | — |
| `steps` | `object[]` | No | — |

<AccordionGroup>
  <Accordion title="emailAccounts full type">
    ```ts theme={null}
    {
      id: number,
      email: string
    }[]
    ```
  </Accordion>

  <Accordion title="linkedInAccounts full type">
    ```ts theme={null}
    {
      id: number,
      name?: string | null,
      profileUrl?: string | null,
      status?: string | null
    }[]
    ```
  </Accordion>

  <Accordion title="settings full type">
    ```ts theme={null}
    {
    }
    ```
  </Accordion>

  <Accordion title="steps full type">
    ```ts theme={null}
    {
      id?: number,
      type?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

## Steps

### create

`steps.create`

Add a new step to a sequence

**Risk:** `write`

```ts theme={null}
await corsair.replyio.api.steps.create({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `sequenceId` | `number` | Yes | — |
| `step` | `object` | Yes | — |

<AccordionGroup>
  <Accordion title="step full type">
    ```ts theme={null}
    {
      type: email,
      delayInMinutes: number,
      executionMode: automatic | manual,
      variants: {
        subject?: string,
        message?: string,
        attachmentIds?: number[]
      }[]
    } | {
      type: linkedIn,
      actionType: message | connect | inMail | viewProfile | endorseSkills | voiceMessage | likeRecentPosts | followProfile | commentOnRecentPost,
      delayInMinutes: number
    } | {
      type: call,
      delayInMinutes: number
    } | {
      type: sms,
      delayInMinutes: number,
      executionMode: automatic | manual,
      message: string
    } | {
      type: whatsApp,
      delayInMinutes: number,
      message: string
    } | {
      type: zapier,
      delayInMinutes: number,
      name: string,
      action: immediately | wait
    } | {
      type: task,
      delayInMinutes: number,
      actionType: toDo | meeting,
      description: string
    } | {
      type: condition,
      delayInMinutes: number,
      waitInMinutes: number,
      conditions: {
        property: string,
        rules: {
          operator: string,
          value: string
        }[]
      }[]
    }
    ```
  </Accordion>
</AccordionGroup>

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `number` | Yes | — |
| `type` | `email \| linkedIn \| call \| sms \| whatsApp \| zapier \| task \| condition` | Yes | — |
| `parentId` | `number` | No | — |
| `ifConditionPositive` | `boolean` | No | — |
| `delayInMinutes` | `number` | No | — |

***

### get

`steps.get`

Get a sequence step by ID

**Risk:** `read`

```ts theme={null}
await corsair.replyio.api.steps.get({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `sequenceId` | `number` | Yes | — |
| `stepId` | `number` | Yes | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `number` | Yes | — |
| `type` | `email \| linkedIn \| call \| sms \| whatsApp \| zapier \| task \| condition` | Yes | — |
| `parentId` | `number` | No | — |
| `ifConditionPositive` | `boolean` | No | — |
| `delayInMinutes` | `number` | No | — |

***

### list

`steps.list`

List all steps in a sequence

**Risk:** `read`

```ts theme={null}
await corsair.replyio.api.steps.list({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `sequenceId` | `number` | Yes | — |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      type: email | linkedIn | call | sms | whatsApp | zapier | task | condition,
      parentId?: number | null,
      ifConditionPositive?: boolean | null,
      delayInMinutes?: number | null
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

## Users

### getCurrent

`users.getCurrent`

Get the current authenticated user and verify the API key

**Risk:** `read`

```ts theme={null}
await corsair.replyio.api.users.getCurrent({});
```

**Input:** *empty object*

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `userId` | `number` | Yes | — |
| `username` | `string` | Yes | — |
| `teamId` | `number` | Yes | — |

***

### listTeam

`users.listTeam`

List users on the current team

**Risk:** `read`

```ts theme={null}
await corsair.replyio.api.users.listTeam({});
```

**Input:** *empty object*

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      teamId: number,
      teamName: string,
      userId: number,
      userName: string,
      userEmail: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.