# "Request contains an invalid argument" when using OpenAI compatibility

**URL:** <https://discuss.ai.google.dev/t/request-contains-an-invalid-argument-when-using-openai-compatibility/64738>\
**Category:** Gemini API\
**Tags:** javascript, api, gemini-api, node-js\
**Created:** [February 6, 2025, 5:07pm UTC](https://discuss.ai.google.dev/t/request-contains-an-invalid-argument-when-using-openai-compatibility/64738 "2025-02-06T17:07:32Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![s16n](https://d1dlmcr85iqnpo.cloudfront.net/user_avatar/discuss.ai.google.dev/s16n/32/34803_2.png) [@s16n](https://discuss.ai.google.dev/u/s16n)\
**Post date:** [February 6, 2025, 5:07pm UTC](https://discuss.ai.google.dev/t/request-contains-an-invalid-argument-when-using-openai-compatibility/64738/1 "2025-02-06T17:07:32Z")

</div>

The following code (on node v22.2.0) uses `fetch` to call the OpenAI-compatible Gemini API

```typescript
async function main() {
  const resp = await fetch(
    "https://generativelanguage.googleapis.com/v1beta/openai/chat/completions",
    {
      method: "POST",
      headers: {
        Authorization: "Bearer $API_KEY",
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        model: "gemini-1.5-flash",
        messages: [{ role: "user", content: "Explain to me how AI works" }],
      }),
    },
  );
  const data = await resp.json();
  console.log(data);
}

main().catch(console.error);

```

but it gives

```auto
[
  {
    error: {
      code: 400,
      message: 'Request contains an invalid argument.',
      status: 'INVALID_ARGUMENT'
    }
  }
]

```

However, sending a raw request:

```auto
printf "POST /v1beta/openai/chat/completions HTTP/1.1\r\nHost: generativelanguage.googleapis.com\r\nAuthorization: Bearer $API_KEY\r\nContent-Type: application/json\r\nContent-Length: 96\r\n\r\n{\"model\":\"gemini-1.5-flash\",\"messages\":[{\"role\":\"user\",\"content\":\"Explain to me how AI works\"}]}\r\n" | openssl s_client -quiet -connect generativelanguage.googleapis.com:443

```

works.

What is going wrong when using node’s fetch and how can I address the problem? Due to some restrictions, I can’t use an external library (such as axios or node-fetch, which do work).

---

<div class="post-metadata">

**Author:** ![aeaton](https://d1dlmcr85iqnpo.cloudfront.net/user_avatar/discuss.ai.google.dev/aeaton/32/41529_2.png) [@aeaton](https://discuss.ai.google.dev/u/aeaton)\
**Post date:** [February 13, 2025, 10:40am UTC](https://discuss.ai.google.dev/t/request-contains-an-invalid-argument-when-using-openai-compatibility/64738/4 "2025-02-13T10:40:48Z")

</div>

I think this is the same as [another thread](https://discuss.ai.google.dev/t/invalid-argument-when-using-node-js-fetch/62280/10): there seems to be something about the request sent by `undici`/Node that the API server doesn’t like (but should, probably, be able to handle).
