TokenLab

Gemini 네이티브

콘텐츠 생성 (Generate Content)

Google Gemini API 형식을 사용하여 콘텐츠를 생성합니다.

POST
/v1beta/models/{model}:generateContent

Gemini Models API에서 반환된 모델과 함께 Gemini 요청 및 응답 형식을 사용하세요. ProtoJSON의 lowerCamelCase 및 이에 대응하는 proto snake_case 필드 이름을 모두 사용할 수 있습니다. 지원되는 선택적 필드와 값은 선택한 모델에 따라 다릅니다.

경로 매개변수 (Path Parameters)

modelstringpath필수

모델 이름 (예: gemini-2.5-pro, gemini-3.5-flash).

쿼리 매개변수 (Query Parameters)

keystringquery

API 키 (헤더 인증 대신 사용 가능).

인증 (Authentication)

Gemini 엔드포인트는 다음과 같은 여러 인증 방식을 지원합니다:

  • ?key=YOUR_API_KEY 쿼리 매개변수
  • x-goog-api-key: YOUR_API_KEY 헤더
  • Authorization: Bearer YOUR_API_KEY 헤더

요청 본문 (Request Body)

contentsarray필수

parts와 선택적 role을 포함하는 대화 내용입니다. 미디어 파트는 inlineData / inline_data 또는 fileData / file_data를 사용합니다. TokenLab에서 생성한 파일 및 캐시 ID는 해당 워크스페이스 내에서만 사용할 수 있습니다.

systemInstructionobject

모델에 대한 시스템 지침입니다.

generationConfigobject

temperature, topP, topK, maxOutputTokens, stopSequences, candidateCount, responseModalities, responseMimeType, responseSchema, thinkingConfig와 같은 생성 설정입니다. 대응하는 snake_case 이름도 허용됩니다. 지원되는 값과 조합은 모델에 따라 다릅니다.

safetySettingsarray

안전 필터 설정입니다.

위에 표시된 모든 lowerCamelCase 필드는 공식 proto snake_case 표기법으로도 사용할 수 있습니다. 예: system_instruction, generation_config, safety_settings, tool_config, cached_content, file_data.file_uri, inline_data.mime_type.

지원되는 메서드 (Supported Methods)

Gemini 호환 API에는 모델 목록 조회/가져오기, generateContent, streamGenerateContent, countTokens, embedContent, batchEmbedContents가 포함됩니다. Gemini Interactions 및 Live는 사용할 수 없습니다.

응답 (Response)

candidatesarray

생성된 콘텐츠 후보입니다.

usageMetadataobject

토큰 사용량 정보입니다.

요청

curl -X POST "https://api.tokenlab.sh/v1beta/models/gemini-2.5-pro:generateContent?key=sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "parts": [{"text": "Hello, Gemini!"}]
      }
    ],
    "generationConfig": {
      "temperature": 0.7,
      "maxOutputTokens": 1024
    }
  }'

비전 입력 예시 (Vision Input Example)

Gemini 멀티모달 요청의 경우, 인라인 바이트 또는 URL 기반 파일 참조를 사용하여 contents[].parts[] 내에 미디어를 배치하세요.

공식 Gemini 계약에서 지원하는 미디어 카테고리:

  • image
  • audio
  • video

인라인 미디어의 경우 inlineData 또는 inline_data를 사용하고 Base64로 인코딩된 파일 바이트를 전달하세요.

URL 기반 미디어의 경우 fileData 또는 file_data를 사용하고 공개 https URL을 전달하세요.

비디오 입력 예시 (Video Input Example)

{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "Please describe this video." },
        {
          "fileData": {
            "mimeType": "video/mp4",
            "fileUri": "https://example.com/demo.mp4"
          }
        }
      ]
    }
  ]
}

오디오 입력 예시 (Audio Input Example)

{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "Please describe this audio." },
        {
          "fileData": {
            "mimeType": "audio/mpeg",
            "fileUri": "https://example.com/demo.mp3"
          }
        }
      ]
    }
  ]
}

이미지 입력 예시 (Image Input Example)

인라인 이미지 바이트 사용:

{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "Please describe this image." },
        {
          "inlineData": {
            "mimeType": "image/jpeg",
            "data": "/9j/4AAQSkZJRgABAQ..."
          }
        }
      ]
    }
  ]
}

이미지 URL 사용:

{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "Please describe this image." },
        {
          "fileData": {
            "mimeType": "image/jpeg",
            "fileUri": "https://example.com/demo.jpg"
          }
        }
      ]
    }
  ]
}

오디오 입력 예시 (Audio Input Example)

오디오 URL 사용:

{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "Transcribe and summarize this audio." },
        {
          "file_data": {
            "mime_type": "audio/mpeg",
            "file_uri": "https://example.com/sample.mp3"
          }
        }
      ]
    }
  ]
}

비디오 입력 예시 (Video Input Example)

비디오 URL 사용:

{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "Describe this video briefly." },
        {
          "fileData": {
            "mimeType": "video/mp4",
            "fileUri": "https://example.com/sample.mp4"
          }
        }
      ]
    }
  ]
}

응답

Response
{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [
          {"text": "Hello! How can I assist you today?"}
        ]
      },
      "finishReason": "STOP",
      "safetyRatings": [
        {"category": "HARM_CATEGORY_HARASSMENT", "probability": "NEGLIGIBLE"}
      ]
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 5,
    "candidatesTokenCount": 10,
    "totalTokenCount": 15
  }
}

다른 인터페이스를 사용하기 전에 선택한 모델의 현재 모델 세부 정보를 읽어보세요. 가용성 및 요청 필드는 모델에 따라 다릅니다.

HTTPAPI
POST/v1beta/models/{model}:countTokens
POST/v1beta/models/{model}:embedContent
POST/v1beta/models/{model}:batchEmbedContents

토큰 계산에는 API 키가 필요하며 요금이 청구되지 않습니다. 반환된 입력 토큰 수는 계획을 위한 추정치이며, 실제 청구 금액은 최종 응답 사용량 및 청구 기록을 기준으로 합니다.

countTokens: contents / generateContentRequest

embedContent: content, taskType, title, outputDimensionality

batchEmbedContents: requests

인증

BearerAuth
AuthorizationBearer <token>

API 키 인증입니다. Dashboard > API > API Keys에서 API 키를 생성하거나 관리하십시오.

위치: header

경로 매개변수

model*string

모델 이름 (예: gemini-2.5-pro)

쿼리 매개변수

key?string

API 키 (헤더 인증의 대안)

헤더

X-TokenLab-Delivery-Policy?string

요청별 전송 정책입니다. API 키 및 Workspace 기본값을 재정의합니다. 자동으로 TokenLab Verified를 먼저 시도하며, 출력, 요청 수락 또는 영구 리소스 생성 전에 Official 전용으로 한 번 전환될 수 있습니다.

허용 값

  • "auto"
  • "verified"
  • "official"

요청 본문

application/json

네이티브 Gemini GenerateContent 요청입니다. ProtoJSON lowerCamelCase와 원본 proto snake_case 이름 모두 허용되며 혼합 요청을 포함하여 보존됩니다. 한 필드에 대해 두 가지 표기법이 모두 존재할 경우, TokenLab은 이를 병합하거나 로컬 우선순위를 선택하지 않습니다. 알 수 없는 필드는 최선의 노력으로 전달됩니다.

응답

application/json

application/json

application/json

application/json

application/json

application/json