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

# Gerar Conteúdo via Stream

> Realiza o stream da geração de conteúdo usando o formato da API Google Gemini

Versão em streaming do endpoint `generateContent` do Gemini. Retorna Server-Sent Events.

## Parâmetros de Caminho

<ParamField path="model" type="string" required>
  Nome do modelo (ex: `gemini-2.5-pro`, `gemini-3.5-flash`).
</ParamField>

## Parâmetros de Consulta

<ParamField query="key" type="string">
  Chave de API (alternativa à autenticação via header).
</ParamField>

## Corpo da Requisição

Igual a [Gerar Conteúdo](/api-reference/gemini/generate-content).

Em solicitações de streaming, omita `generationConfig.candidateCount` ou mantenha-o em `1`; valores maiores são rejeitados em vez de descartar candidatos extras silenciosamente.

## Resposta

Retorna um stream de objetos JSON, cada um contendo uma resposta parcial.

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.tokenlab.sh/v1beta/models/gemini-2.5-pro:streamGenerateContent?key=sk-your-api-key" \
    -H "Content-Type: application/json" \
    -d '{
      "contents": [
        {
          "parts": [{"text": "Tell me a story"}]
        }
      ]
    }'
  ```

  ```python Python theme={null}
  import google.generativeai as genai

  genai.configure(
      api_key="sk-your-api-key",
      transport="rest",
      client_options={"api_endpoint": "api.tokenlab.sh"}
  )

  model = genai.GenerativeModel("gemini-2.5-pro")
  response = model.generate_content("Tell me a story", stream=True)

  for chunk in response:
      print(chunk.text, end="")
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://api.tokenlab.sh/v1beta/models/gemini-2.5-pro:streamGenerateContent?key=sk-your-api-key',
    {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({
        contents: [{ parts: [{ text: 'Tell me a story' }] }]
      })
    }
  );

  const reader = response.body.getReader();
  const decoder = new TextDecoder();

  while (true) {
    const { done, value } = await reader.read();
    if (done) break;
    console.log(decoder.decode(value));
  }
  ```

  ```go Go theme={null}
  package main

  import (
      "bufio"
      "bytes"
      "encoding/json"
      "fmt"
      "net/http"
  )

  func main() {
      payload := map[string]interface{}{
          "contents": []map[string]interface{}{
              {"parts": []map[string]string{{"text": "Tell me a story"}}},
          },
      }

      jsonData, _ := json.Marshal(payload)
      req, _ := http.NewRequest("POST",
          "https://api.tokenlab.sh/v1beta/models/gemini-2.5-pro:streamGenerateContent?key=sk-your-api-key",
          bytes.NewBuffer(jsonData))
      req.Header.Set("Content-Type", "application/json")

      client := &http.Client{}
      resp, _ := client.Do(req)
      defer resp.Body.Close()

      scanner := bufio.NewScanner(resp.Body)
      for scanner.Scan() {
          fmt.Println(scanner.Text())
      }
  }
  ```

  ```php PHP theme={null}
  <?php
  $payload = [
      'contents' => [
          ['parts' => [['text' => 'Tell me a story']]]
      ]
  ];

  $ch = curl_init('https://api.tokenlab.sh/v1beta/models/gemini-2.5-pro:streamGenerateContent?key=sk-your-api-key');

  curl_setopt_array($ch, [
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_POST => true,
      CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
      CURLOPT_POSTFIELDS => json_encode($payload),
      CURLOPT_WRITEFUNCTION => function($ch, $data) {
          echo $data;
          return strlen($data);
      }
  ]);

  curl_exec($ch);
  curl_close($ch);
  ```

  ## Exemplo de Entrada de Visão

  As solicitações de visão em streaming usam a mesma estrutura `contents[].parts[]` que o endpoint sem streaming.

  ```json theme={null}
  {
    "contents": [
      {
        "role": "user",
        "parts": [
          { "text": "Please describe this image." },
          {
            "inline_data": {
              "mime_type": "image/jpeg",
              "data": "/9j/4AAQSkZJRgABAQ..."
            }
          }
        ]
      }
    ]
  }
  ```
</RequestExample>

<ResponseExample>
  ```json Chunk do Stream theme={null}
  {
    "candidates": [
      {
        "content": {
          "role": "model",
          "parts": [
            {"text": "Once upon a time"}
          ]
        }
      }
    ]
  }
  ```
</ResponseExample>
