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

# Files

> Upload files to Google Cloud Storage for Vertex AI fine-tuning and batch inference

To perform fine-tuning or batch inference with Vertex AI, you need to upload files to Google Cloud Storage.
With Prisma AIRS AI Gateway, you can easily upload files to GCS and use them for fine-tuning or batch inference with Vertex AI models.

## Uploading Files

**REST**

```sh theme={"system"}
curl -X POST --header 'Authorization: Bearer <portkey_api_key>' \
 --header 'x-portkey-provider: @your-vertex-provider' \
 --header 'x-portkey-vertex-storage-bucket-name: <bucket_name>' \
 --header 'x-portkey-provider-file-name: <file_name>.jsonl' \
 --header 'x-portkey-provider-model: <model_name>' \
 --form 'purpose="fine-tune"' \
 --form 'file=@dataset.jsonl' \
 'https://aigw.portkey.ai/v1/files'
```

**OpenAI NodeJS**

```js theme={"system"}
import OpenAI from 'openai';
import * as fs from 'fs';

const openai = new OpenAI({
  apiKey: "PORTKEY_API_KEY",
  baseURL: "https://aigw.portkey.ai/v1",
  defaultHeaders: { "x-portkey-provider": "@VERTEX_PROVIDER", "x-portkey-vertex-storage-bucket-name": "your_bucket_name", "x-portkey-provider-file-name": "your_file_name.jsonl", "x-portkey-provider-model": "gemini-1.5-flash-001" }
});

const uploadFile = async () => {
  const file = await openai.files.create({
    purpose: "fine-tune", // Can be "fine-tune" or "batch"
    file: fs.createReadStream("dataset.jsonl")
  });

  console.log(file);
}

uploadFile();
```

**OpenAI Python**

```python theme={"system"}
from openai import OpenAI

openai = OpenAI(
    api_key="PORTKEY_API_KEY",
    base_url="https://aigw.portkey.ai/v1",
    default_headers={"x-portkey-provider": "@VERTEX_PROVIDER", "x-portkey-vertex-storage-bucket-name": "your_bucket_name", "x-portkey-provider-file-name": "your_file_name.jsonl", "x-portkey-provider-model": "gemini-1.5-flash-001"}
)

upload_file_response = openai.files.create(
  purpose="fine-tune", # Can be "fine-tune" or "batch"
  file=open("dataset.jsonl", "rb")
)

print(upload_file_response)
```

## Get File

**REST**

```sh theme={"system"}
curl -X GET --header 'Authorization: Bearer <portkey_api_key>' \
--header 'x-portkey-provider: @your-vertex-provider' \
'https://aigw.portkey.ai/v1/files/<file_id>'
```

**OpenAI NodeJS**

```js theme={"system"}
import OpenAI from 'openai';

const openai = new OpenAI({
  apiKey: "PORTKEY_API_KEY",
  baseURL: "https://aigw.portkey.ai/v1",
  defaultHeaders: { "x-portkey-provider": "@VERTEX_PROVIDER" }
});

const getFile = async () => {
  const file = await openai.files.retrieve("file_id");

  console.log(file);
}

getFile();
```

**OpenAI Python**

```python theme={"system"}
from openai import OpenAI

openai = OpenAI(
    api_key="PORTKEY_API_KEY",
    base_url="https://aigw.portkey.ai/v1",
    default_headers={"x-portkey-provider": "@VERTEX_PROVIDER"}
)

file = openai.files.retrieve(file_id="file_id")

print(file)
```

## Get File Content

**REST**

```sh theme={"system"}
curl -X GET --header 'Authorization: Bearer <portkey_api_key>' \
--header 'x-portkey-provider: @your-vertex-provider' \
'https://aigw.portkey.ai/v1/files/<file_id>/content'
```

**OpenAI NodeJS**

```js theme={"system"}
import OpenAI from 'openai';

const openai = new OpenAI({
  apiKey: "PORTKEY_API_KEY",
  baseURL: "https://aigw.portkey.ai/v1",
  defaultHeaders: { "x-portkey-provider": "@VERTEX_PROVIDER" }
});

const getFileContent = async () => {
  const fileContent = await openai.files.content("file_id");

  console.log(fileContent);
}

getFileContent();
```

**OpenAI Python**

```python theme={"system"}
from openai import OpenAI

openai = OpenAI(
    api_key="PORTKEY_API_KEY",
    base_url="https://aigw.portkey.ai/v1",
    default_headers={"x-portkey-provider": "@VERTEX_PROVIDER"}
)

file_content = openai.files.content(file_id="file_id")

print(file_content)
```

Note: The `ListFiles` endpoint is not supported for Vertex AI.


## Related topics

- [Files](https://docs.portkey.ai/docs/aigw/integrations/llms/anthropic/files.md)


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