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

# Make your first request

> Point your existing OpenAI or Anthropic code at the gateway and send a request

This guide is for **developers** sending traffic. If you already call OpenAI or Anthropic, you keep
your code and change two things: the base URL and the API key.

<Info>
  You'll need the **gateway base URL** (such as
  `https://your-gateway.example.com/v1`) and an **API key** (it starts with
  `sk-olga-`). Your operator creates these in [Set up the
  gateway](/gateway/set-up-the-gateway).
</Info>

## Send a request

Point your client at the gateway and use your gateway key. Everything else about your code stays the
same.

<CodeGroup>
  ```python Python (OpenAI) theme={null}
  from openai import OpenAI

  client = OpenAI(
    base_url="https://your-gateway.example.com/v1", # the gateway
    api_key="sk-olga-...", # your gateway key
  )

  response = client.responses.create(model="gpt-4o-mini", input="Hello!")
  print(response.output_text)

  ```

  ```python Python (Anthropic) theme={null}
  from anthropic import Anthropic

  client = Anthropic(
    base_url="https://your-gateway.example.com",  # the gateway
    api_key="sk-olga-...", # your gateway key
  )

  message = client.messages.create(
    model="claude-sonnet-4-7",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello!"}],
  )
  print(message.content[0].text)
  ```

  ```typescript TypeScript (OpenAI) theme={null}
  import OpenAI from "openai";

  const client = new OpenAI({
    baseURL: "https://your-gateway.example.com/v1", // the gateway
    apiKey: "sk-olga-...", // your gateway key
  });

  const response = await client.responses.create({
    model: "gpt-4o-mini",
    input: "Hello!",
  });
  console.log(response.output_text);
  ```

  ```bash cURL theme={null}
  curl https://your-gateway.example.com/v1/responses \
    -H "Authorization: Bearer sk-olga-..." \
    -H "Content-Type: application/json" \
    -d '{"model": "gpt-4o-mini", "input": "Hello!"}'
  ```
</CodeGroup>

<Note>
  The gateway speaks the **OpenAI Responses API** at `/v1/responses` and the
  **Anthropic Messages API** at `/v1/messages`. Use whichever your SDK targets.
  Streaming behaves exactly as it does against the provider directly: set
  `stream=True` (or `stream: true`) and read the events as usual.
</Note>

## What you just got

On its way to the provider and back, your request was also:

* **Checked against your usage limits**, and refused if it would exceed one.
* **Screened by guardrails** for PII and prompt injection, on both the input and the response.
* **Traced** to your Openlayer project, with model, tokens, latency, and cost.

None of that needed a line of code in your app.

<img width="700" style={{ borderRadius: "0.5rem" }} src="https://mintcdn.com/openlayer-docs/0DNdDuuycN4Yl8SH/images/gateway/gateway_trace.png?fit=max&auto=format&n=0DNdDuuycN4Yl8SH&q=85&s=d25a940e0fabec1eeb235ebfb1dea5be" alt="Every gateway request becomes a trace in Openlayer" data-path="images/gateway/gateway_trace.png" />

## If something goes wrong

<AccordionGroup>
  <Accordion title="401 Unauthorized">
    The key is missing, mistyped, or has been disabled or deleted. Confirm you're sending the
    `sk-olga-` key your operator gave you, as `Authorization: Bearer <key>`.
  </Accordion>

  <Accordion title="429 Too Many Requests">
    A usage limit on your key or team has been reached. Ask your operator to review your
    [usage limits](/gateway/budgets-and-limits).
  </Accordion>

  <Accordion title="422 Unprocessable Entity">
    A guardrail blocked the request or the response. The error names the guardrail and the stage it
    fired on. See [Guardrails](/gateway/guardrails).
  </Accordion>

  <Accordion title="503 Service Unavailable">
    The target provider isn't connected, or its API key isn't set on the gateway host. Your operator
    can fix this in [Connect providers](/gateway/connect-providers).
  </Accordion>
</AccordionGroup>
