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

# Replicate

[Replicate](https://replicate.com/) is a platform for building and running machine learning models.

Replicate does not have a standarized JSON body format for their inference API, hence it is not possible to use unified API to interact with Replicate.
Portkey instead provides a proxy to Replicate, allowing you to use virtual keys and observability features.

## Portkey SDK Integration with Replicate

To integrate Replicate with Portkey:

### 1. Install the Portkey SDK

Add the Portkey SDK to your application to interact with Replicate through Portkey's gateway.

<Tabs>
  <Tab title="NodeJS">
    ```sh theme={"system"}
    npm install --save portkey-ai
    ```
  </Tab>

  <Tab title="Python">
    ```sh theme={"system"}
    pip install portkey-ai
    ```
  </Tab>
</Tabs>

### 2. Initialize Portkey with a Virtual Key

To use Replicate with Portkey, get your Replicate API key from [here](https://replicate.com/account/api-tokens), then add it to Portkey to create your [Replicate virtual key](/product/ai-gateway/virtual-keys#using-virtual-keys).

<Tabs>
  <Tab title="NodeJS SDK">
    ```js theme={"system"}
    import Portkey from 'portkey-ai'

    const portkey = new Portkey({
        apiKey: "PORTKEY_API_KEY", // defaults to process.env["PORTKEY_API_KEY"]
        virtualKey: "VIRTUAL_KEY" // Your Replicate Virtual Key
    })
    ```
  </Tab>

  <Tab title="Python SDK">
    ```python theme={"system"}
    from portkey_ai import Portkey

    portkey = Portkey(
        api_key="PORTKEY_API_KEY",  # Replace with your Portkey API key
        virtual_key="VIRTUAL_KEY"   # Replace with your virtual key for Replicate
    )
    ```
  </Tab>

  <Tab title="OpenAI Python SDK">
    ```python theme={"system"}
    from openai import OpenAI

    from portkey_ai import PORTKEY_GATEWAY_URL, createHeaders

    client = OpenAI(
        api_key="REPLICATE_API_KEY",
        base_url=PORTKEY_GATEWAY_URL,
        default_headers=createHeaders(
            api_key="PORTKEY_API_KEY",
            provider="replicate"
        )
    )
    ```
  </Tab>

  <Tab title="OpenAI Node SDK">
    ```js theme={"system"}
    import OpenAI from "openai";

    import { PORTKEY_GATEWAY_URL, createHeaders } from "portkey-ai";

    const client = new OpenAI({
      apiKey: "REPLICATE_API_KEY",
      baseURL: PORTKEY_GATEWAY_URL,
      defaultHeaders: createHeaders({
        provider: "replicate",
        apiKey: "PORTKEY_API_KEY",
      }),
    });
    ```
  </Tab>
</Tabs>

### 3. Use the Portkey SDK to interact with Replicate

<Tabs>
  <Tab title="Python">
    ```python theme={"system"}
    from portkey_ai import Portkey

    portkey = Portkey(
        api_key="PORTKEY_API_KEY",  # Replace with your Portkey API key
        virtual_key="REPLICATE_VIRTUAL_KEY",
    )

    response = portkey.post(
        url="predictions", # Replace with the endpoint you want to call
    )

    print(response)
    ```
  </Tab>

  <Tab title="NodeJS">
    ```javascript theme={"system"}
    import Portkey from 'portkey-ai';

    // Initialize the Portkey client
    const portkey = new Portkey({
      apiKey: "PORTKEY_API_KEY", // Replace with your Portkey API key
      virtualKey: "REPLICATE_VIRTUAL_KEY", // Add your Replicate's virtual key
    });

    response = portkey.post(
        url="predictions", # Replace with the endpoint you want to call
    )

    print(response)
    ```
  </Tab>

  <Tab title="OpenAI NodeJS">
    ```javascript theme={"system"}
    import OpenAI from 'openai'; // We're using the v4 SDK
    import { PORTKEY_GATEWAY_URL, createHeaders } from 'portkey-ai'

    const openai = new OpenAI({
      apiKey: 'REPLICATE_API_KEY', // defaults to process.env["OPENAI_API_KEY"],
      baseURL: PORTKEY_GATEWAY_URL,
      defaultHeaders: createHeaders({
        virtualKey: "REPLICATE_VIRTUAL_KEY",
        apiKey: "PORTKEY_API_KEY", // defaults to process.env["PORTKEY_API_KEY"]
      })
    });

    response = openai.post(
        url="predictions", # Replace with the endpoint you want to call
    )

    print(response)
    ```
  </Tab>

  <Tab title="OpenAI Python">
    ```python theme={"system"}
    from openai import OpenAI
    from portkey_ai import PORTKEY_GATEWAY_URL, createHeaders

    openai = OpenAI(
        api_key='REPLICATE_API_KEY',
        base_url=PORTKEY_GATEWAY_URL,
        default_headers=createHeaders(
            provider="replicate",
            api_key="PORTKEY_API_KEY"
        )
    )

    response = openai.post(
        url="predictions", # Replace with the endpoint you want to call
    )

    print(response)
    ```
  </Tab>

  <Tab title="cURL">
    ```sh theme={"system"}
    curl --location --request POST 'https://api.portkey.ai/v1/predictions' \
    --header 'x-portkey-virtual-key: REPLICATE_VIRTUAL_KEY' \
    --header 'x-portkey-api-key: PORTKEY_API_KEY'
    ```
  </Tab>
</Tabs>
