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

## Uploading Files

<Tabs>
  <Tab title="REST">
    ```sh theme={"system"}
    curl --location --request POST 'https://aigw.portkey.ai/v1/files' \
    --header 'Authorization: Bearer <portkey_api_key>' \
    --header 'x-portkey-provider: @provider' \
    --form 'purpose="<purpose>"' \
    --form 'file=@"<file_path>"'
    ```
  </Tab>

  <Tab title="OpenAI NodeJS">
    ```js theme={"system"}
    import OpenAI from 'openai'; // We're using the v4 SDK

    const openai = new OpenAI({
      apiKey: "PORTKEY_API_KEY",  // defaults to process.env["PORTKEY_API_KEY"]
      baseURL: "https://aigw.portkey.ai/v1",
      defaultHeaders: {
          "x-portkey-provider": "openai",
      }
    });

    const uploadFile = async () => {
      const file = await openai.files.create({
        purpose: "batch",
        file: fs.createReadStream("file.pdf")
      });

      console.log(file);
    }

    await uploadFile();
    ```
  </Tab>

  <Tab title="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": "openai"}
    )

    upload_file_response = openai.files.create(
      purpose="batch",
      file=open("file.pdf", "rb")
    )

    print(upload_file_response)
    ```
  </Tab>
</Tabs>

## List Files

<Tabs>
  <Tab title="REST">
    ```sh theme={"system"}
    curl --location 'https://aigw.portkey.ai/v1/files' \
    --header 'Authorization: Bearer <portkey_api_key>' \
    --header 'x-portkey-provider: @provider'
    ```
  </Tab>

  <Tab title="OpenAI NodeJS">
    ```js theme={"system"}
    import OpenAI from 'openai'; // We're using the v4 SDK

    const openai = new OpenAI({
      apiKey: "PORTKEY_API_KEY",  // defaults to process.env["PORTKEY_API_KEY"]
      baseURL: "https://aigw.portkey.ai/v1",
      defaultHeaders: {
          "x-portkey-provider": "openai",
      }
    });

    const listFiles = async () => {
      const files = await openai.files.list();

      console.log(file);
    }

    await listFiles();
    ```
  </Tab>

  <Tab title="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": "openai"}
    )

    files = openai.files.list()

    print(files)
    ```
  </Tab>
</Tabs>

## Get File

<Tabs>
  <Tab title="REST">
    ```sh theme={"system"}
    curl --location 'https://aigw.portkey.ai/v1/files/<file_id>' \
    --header 'Authorization: Bearer <portkey_api_key>' \
    --header 'x-portkey-provider: @provider'
    ```
  </Tab>

  <Tab title="OpenAI NodeJS">
    ```js theme={"system"}
    import OpenAI from 'openai'; // We're using the v4 SDK

    const openai = new OpenAI({
      apiKey: "PORTKEY_API_KEY",  // defaults to process.env["PORTKEY_API_KEY"]
      baseURL: "https://aigw.portkey.ai/v1",
      defaultHeaders: {
          "x-portkey-provider": "openai",
      }
    });

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

      console.log(file);
    }

    await getFile();
    ```
  </Tab>

  <Tab title="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": "openai"}
    )

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

    print(file)
    ```
  </Tab>
</Tabs>

## Get File Content

<Tabs>
  <Tab title="REST">
    ```sh theme={"system"}
    curl --location 'https://aigw.portkey.ai/v1/files/<file_id>/content' \
    --header 'Authorization: Bearer <portkey_api_key>' \
    --header 'x-portkey-provider: @provider'
    ```
  </Tab>

  <Tab title="OpenAI NodeJS">
    ```js theme={"system"}
    import OpenAI from 'openai'; // We're using the v4 SDK

    const openai = new OpenAI({
      apiKey: "PORTKEY_API_KEY",  // defaults to process.env["PORTKEY_API_KEY"]
      baseURL: "https://aigw.portkey.ai/v1",
      defaultHeaders: {
          "x-portkey-provider": "openai",
      }
    });

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

      console.log(file_content);
    }

    await getFileContent();
    ```
  </Tab>

  <Tab title="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": "openai"}
    )

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

    print(file_content)
    ```
  </Tab>
</Tabs>

## Delete File

<Tabs>
  <Tab title="REST">
    ```sh theme={"system"}
    curl --location --request DELETE 'https://aigw.portkey.ai/v1/files/<file_id>' \
    --header 'Authorization: Bearer <portkey_api_key>' \
    --header 'x-portkey-provider: @provider'
    ```
  </Tab>

  <Tab title="OpenAI NodeJS">
    ```js theme={"system"}
    import OpenAI from 'openai'; // We're using the v4 SDK

    const openai = new OpenAI({
      apiKey: "PORTKEY_API_KEY",  // defaults to process.env["PORTKEY_API_KEY"]
      baseURL: "https://aigw.portkey.ai/v1",
      defaultHeaders: {
          "x-portkey-provider": "openai",
      }
    });

    const deleteFile = async () => {
      const delete_file_response = await openai.files.delete(file_id="file_id");

      console.log(delete_file_response);
    }

    await deleteFile();
    ```
  </Tab>

  <Tab title="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": "openai"}
    )

    delete_file_response = openai.files.delete(file_id="file_id")

    print(delete_file_response)
    ```
  </Tab>
</Tabs>


## Related topics

- [Files](/docs/aigw/integrations/llms/anthropic/files.md)
