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

# Geminiネイティブ画像生成

> <ul><li>Gemini画像生成</li></ul>

<RequestExample>
  ```bash cURL theme={null} theme={null}
  curl --request POST \
    --url 'https://api.elkapi.com/v1beta/models/gemini-3.1-pro-preview:generateContent' \
    --header 'Authorization: Bearer <token>' \
    --header 'Content-Type: application/json' \
    --data '{
    "contents": [
      "こんにちは、自己紹介してください"
    ],
    "generationConfig": {
      "responseModalities": [
        "responseModalitie"
      ],
      "imageConfig": {
        "aspectRatio": "aspectRatio",
        "imageSize": "imageSize"
      }
    }
  }'
  ```

  ```python Python theme={null} theme={null}
  import requests

  url = "https://api.elkapi.com/v1beta/models/gemini-3.1-pro-preview:generateContent"
  headers = {
      "Authorization": "Bearer <token>"
  }
  headers["Content-Type"] = "application/json"
  payload = {
      "contents": [
          "こんにちは、自己紹介してください"
      ],
      "generationConfig": {
          "responseModalities": [
              "responseModalitie"
          ],
          "imageConfig": {
              "aspectRatio": "aspectRatio",
              "imageSize": "imageSize"
          }
      }
  }

  response = requests.request("POST", url, headers=headers, json=payload)
  print(response.json())
  ```

  ```javascript JavaScript theme={null} theme={null}
  const url = "https://api.elkapi.com/v1beta/models/gemini-3.1-pro-preview:generateContent";

  const headers = {
    "Authorization": "Bearer <token>"
  };
  headers["Content-Type"] = "application/json";
  const payload = {
    "contents": [
      "こんにちは、自己紹介してください"
    ],
    "generationConfig": {
      "responseModalities": [
        "responseModalitie"
      ],
      "imageConfig": {
        "aspectRatio": "aspectRatio",
        "imageSize": "imageSize"
      }
    }
  };

  const response = await fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(payload)
  });

  console.log(await response.json());
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null} theme={null}
  {
    "candidates": [
      {
        "content": "こんにちは、自己紹介してください",
        "finishReason": "finishReason",
        "safetyRatings": [
          {}
        ]
      }
    ],
    "usageMetadata": {
      "promptTokenCount": 1,
      "candidatesTokenCount": 1,
      "totalTokenCount": 1
    }
  }
  ```
</ResponseExample>

## Authorizations

<ParamField header="Authorization" type="string" required>
  すべてのエンドポイントで Bearer Token 認証が必要です。

  リクエストヘッダーに追加します:

  ```
  Authorization: Bearer YOUR_API_KEY
  ```
</ParamField>

## Path Parameters

<ParamField path="model" type="string" required default="gemini-3.1-pro-preview">
  モデル名

  例:`gemini-3.1-pro-preview`
</ParamField>

## Body

<ParamField body="contents" type="array<object>" required>
  <ParamField body="contents.role" type="string" />

  <ParamField body="contents.parts" type="array<object>">
    <ParamField body="contents.parts.text" type="string" />
  </ParamField>
</ParamField>

<ParamField body="generationConfig" type="object" required>
  <ParamField body="generationConfig.thinkingConfig" type="object">
    <ParamField body="generationConfig.thinkingConfig.includeThoughts" type="boolean" required>
      思考内容を返すかどうか
    </ParamField>
  </ParamField>

  <ParamField body="generationConfig.responseModalities" type="array<string>" required />

  <ParamField body="generationConfig.imageConfig" type="object" required>
    <ParamField body="generationConfig.imageConfig.aspectRatio" type="string" required />

    <ParamField body="generationConfig.imageConfig.imageSize" type="string" required />
  </ParamField>
</ParamField>

## Response

<ResponseField name="candidates" type="array<object>">
  <ResponseField name="candidates.content" type="object">
    <ResponseField name="candidates.content.role" type="string" />

    <ResponseField name="candidates.content.parts" type="array<object>" />
  </ResponseField>

  <ResponseField name="candidates.finishReason" type="string" />

  <ResponseField name="candidates.safetyRatings" type="array<object>" />
</ResponseField>

<ResponseField name="usageMetadata" type="object">
  <ResponseField name="usageMetadata.promptTokenCount" type="integer" />

  <ResponseField name="usageMetadata.candidatesTokenCount" type="integer" />

  <ResponseField name="usageMetadata.totalTokenCount" type="integer" />
</ResponseField>
