> ## Documentation Index
> Fetch the complete documentation index at: https://docs.inprocess.world/llms.txt
> Use this file to discover all available pages before exploring further.

# Upload File with In•Process

Upload files to Arweave through the In•Process API. Send a URL and the server fetches the file, uploads it to Arweave via Turbo, and returns an `ar://` URI.

<Note>
  To upload directly from the client without routing through this API, see [Upload Files to Arweave](/arweave/upload-to-arweave).
</Note>

## Endpoint

`POST /upload`

## Authentication

| Method  | Header                                       |
| ------- | -------------------------------------------- |
| Privy   | `Authorization: Bearer <privy_access_token>` |
| API key | `x-api-key: <api_key>`                       |

For OTP tokens, see [Sign in with In•Process](/oauth/login-with-otp).

## Upload tiers

| Tier     | Condition                                                    |
| -------- | ------------------------------------------------------------ |
| **Free** | Files under 5 MB — up to **11 uploads per month** per artist |
| **Paid** | Files ≥ 5 MB, or uploads beyond the 11/month free quota      |

Paid uploads debit USDC from the artist's smart wallet. If the balance is insufficient, the API returns **402** with `required`, `available`, and `smart_wallet` fields.

## Example (TypeScript)

```typescript theme={null}
const UPLOAD_URL = "https://api.inprocess.world/api/upload";

export async function uploadFileViaInProcess(
  fileUrl: string,
  accessToken: string
): Promise<string> {
  const res = await fetch(UPLOAD_URL, {
    method: "POST",
    headers: {
      Authorization: `Bearer ${accessToken}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ url: fileUrl }),
  });

  if (!res.ok) {
    const { message } = await res.json();
    throw new Error(message ?? `HTTP ${res.status}`);
  }

  const { uri } = await res.json();
  return uri;
}
```

Use `x-api-key` instead of `Authorization` when integrating with an API key.

## See also

* [Upload File to Arweave — API reference](/api-reference/arweave/upload)
* [Upload Files to Arweave](/arweave/upload-to-arweave)
* [Sign in with In•Process](/oauth/login-with-otp)
