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

# CloudConvert plugin

> Create, wait for, inspect, list and delete CloudConvert jobs and tasks; cancel or retry tasks; create GCS/S3 export jobs; discover operations and formats; and view account credits with API-key authentication. Job-level webhook fields are not exposed. See https://cloudconvert.com/docs/api-reference/jobs and https://cloudconvert.com/docs/api-reference/tasks.

Use **CloudConvert** through Corsair: one client, typed API calls.

CloudConvert warns that its synchronous endpoints can time out for long-running jobs and tasks. Prefer async jobs plus status reads for long work. The provider's `redirect=true` returns raw export-file content; this JSON plugin rejects that option. Job-level `webhook_url` is not exposed. Export credentials are stored in Corsair's encrypted per-tenant key manager and are not endpoint arguments. Add an `export/url` task to make a downloadable URL available in the finished export task's `result.files[].url`. Do not send credentials as extra task fields: when an endpoint requires approval (including strict mode), Corsair records raw incoming arguments before endpoint validation, so an invalid request containing secret fields could still expose them to the local permissions table or hosted Hub approval.

**What you get:**

* 17 typed API operations

## Setup

**1. Install**

```bash npm theme={null}
npm install corsair @corsair-dev/cloudconvert better-sqlite3
npm install --save-dev @types/better-sqlite3
```

```bash yarn theme={null}
yarn add corsair @corsair-dev/cloudconvert better-sqlite3
yarn add --dev @types/better-sqlite3
```

```bash pnpm theme={null}
pnpm install corsair @corsair-dev/cloudconvert better-sqlite3
pnpm install --save-dev @types/better-sqlite3
```

```bash bun theme={null}
bun add corsair @corsair-dev/cloudconvert better-sqlite3
bun add --dev @types/better-sqlite3
```

**2. Add the plugin**

```ts corsair.ts theme={null}
import Database from 'better-sqlite3';
import { createCorsair } from 'corsair';
import { cloudconvert } from '@corsair-dev/cloudconvert';

export const corsair = createCorsair({
	plugins: [
		cloudconvert(),
	],
	database: new Database('corsair.db'),
	kek: process.env.CORSAIR_KEK!,
	multiTenancy: true,
	hub: {
		projectApiKey: process.env.CORSAIR_API_KEY!,
		signingSecret: process.env.CORSAIR_SIGNING_SECRET!,
	},
});
```

With `multiTenancy: true`, scope calls with `corsair.withTenant(id)`. See [Quick start](https://docs.corsair.dev/quick-start.md) for KEK + Hub keys, and [Multi-tenancy](https://docs.corsair.dev/concepts/multi-tenancy.md) for account isolation.

**3. Choose authentication**

> [tab] API Key (Recommended)
>
> Store the CloudConvert API key before the first call: `pnpm corsair setup --plugin=cloudconvert --tenant=acme api_key=<your-key>` (leave out `--tenant` without `multiTenancy`), or pass it as `key` in the plugin options. With Hub, each tenant enters their own key on the connect page. See [API key auth](https://docs.corsair.dev/concepts/api-key).
>
> ```ts theme={null}
> cloudconvert()
> ```
>
> More: [API Key](https://docs.corsair.dev/concepts/api-key)

**4. Connect a tenant**

Mint a connect link and send the tenant to it. Hub hosts the page and delivers the result to your app — see [Connect / OAuth](https://docs.corsair.dev/management/connect).

```ts theme={null}
const { connectUrl } = await corsair.manage.connect.createLink({
	plugin: 'cloudconvert',
	tenantId: 'acme',
});
// redirect the user's browser to connectUrl
```

## Example API calls

**List recent jobs**

```ts theme={null}
const tenant = corsair.withTenant('acme');
await tenant.cloudconvert.api.jobs.list({ perPage: 10 });
```

**Create a conversion job**

```ts theme={null}
const tenant = corsair.withTenant('acme');
await tenant.cloudconvert.api.jobs.create({
	tasks: {
		import_file: { operation: 'import/url', url: 'https://example.test/input.docx' },
		convert: { operation: 'convert', input: 'import_file', output_format: 'pdf' },
		export_file: { operation: 'export/url', input: 'convert' },
	},
	tag: 'request-123',
});
```

See the full list on the [API](https://docs.corsair.dev/plugins/cloudconvert/api.md) page.

## What's next

> [card] [API reference](https://docs.corsair.dev/plugins/cloudconvert/api.md)
>
> Every `cloudconvert.api.*` operation with input and output types.

> [card] [Connect / OAuth](https://docs.corsair.dev/management/connect)
>
> createLink, Hub delivery, and tenant connect flows.

> [card] [Use with agents](https://docs.corsair.dev/mcp-adapters/mcp-adapters)
>
> Expose this plugin's operations as MCP tools.


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