curl --request POST \
--url https://api.apimart.ai/v1beta/models/gemini-2.5-pro:generateContent \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"contents": [
{
"role": "user",
"parts": [
{
"text": "안녕하세요, 자기소개를 해주세요"
}
]
}
]
}'
import requests
url = "https://api.apimart.ai/v1beta/models/gemini-2.5-pro:generateContent"
payload = {
"contents": [
{
"role": "user",
"parts": [
{
"text": "안녕하세요, 자기소개를 해주세요"
}
]
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1beta/models/gemini-2.5-pro:generateContent";
const payload = {
contents: [
{
role: "user",
parts: [
{
text: "안녕하세요, 자기소개를 해주세요"
}
]
}
]
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://api.apimart.ai/v1beta/models/gemini-2.5-pro:generateContent"
payload := map[string]interface{}{
"contents": []map[string]interface{}{
{
"role": "user",
"parts": []map[string]interface{}{
{
"text": "안녕하세요, 자기소개를 해주세요",
},
},
},
},
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://api.apimart.ai/v1beta/models/gemini-2.5-pro:generateContent";
String payload = """
{
"contents": [
{
"role": "user",
"parts": [
{
"text": "안녕하세요, 자기소개를 해주세요"
}
]
}
]
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://api.apimart.ai/v1beta/models/gemini-2.5-pro:generateContent";
$payload = [
"contents" => [
[
"role" => "user",
"parts" => [
[
"text" => "안녕하세요, 자기소개를 해주세요"
]
]
]
]
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://api.apimart.ai/v1beta/models/gemini-2.5-pro:generateContent")
payload = {
contents: [
{
role: "user",
parts: [
{
text: "안녕하세요, 자기소개를 해주세요"
}
]
}
]
}
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json
response = http.request(request)
puts response.body
{
"code": 200,
"data": {
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"text": "안녕하세요! 제 소개를 드리겠습니다.\n\n저는 Google에서 훈련하고 개발한 대규모 언어 모델입니다..."
}
]
},
"finishReason": "STOP",
"index": 0,
"safetyRatings": [
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"probability": "NEGLIGIBLE"
}
]
}
],
"promptFeedback": {
"safetyRatings": [
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"probability": "NEGLIGIBLE"
}
]
]
},
"usageMetadata": {
"promptTokenCount": 4,
"candidatesTokenCount": 611,
"totalTokenCount": 2422,
"thoughtsTokenCount": 1807,
"promptTokensDetails": [
{
"modality": "TEXT",
"tokenCount": 4
}
]
}
}
{
"error": {
"code": 400,
"message": "유효하지 않은 요청 매개변수입니다",
"status": "INVALID_ARGUMENT"
}
}
{
"error": {
"code": 401,
"message": "인증에 실패했습니다. API 키를 확인하세요",
"status": "UNAUTHENTICATED"
}
}
{
"error": {
"code": 402,
"message": "잔액이 부족합니다. 충전해주세요",
"status": "PAYMENT_REQUIRED"
}
}
{
"error": {
"code": 403,
"message": "접근이 거부되었습니다",
"status": "PERMISSION_DENIED"
}
}
{
"error": {
"code": 404,
"message": "지정된 모델을 찾을 수 없습니다",
"status": "NOT_FOUND"
}
}
{
"error": {
"code": 429,
"message": "요청이 너무 빈번합니다. 나중에 다시 시도하세요",
"status": "RESOURCE_EXHAUSTED"
}
}
{
"error": {
"code": 500,
"message": "서버 내부 오류",
"status": "INTERNAL"
}
}
{
"error": {
"code": 502,
"message": "게이트웨이 오류, 서비스를 일시적으로 사용할 수 없습니다",
"status": "BAD_GATEWAY"
}
}
{
"error": {
"code": 503,
"message": "서비스를 일시적으로 사용할 수 없습니다",
"status": "UNAVAILABLE"
}
}
텍스트 시리즈
Gemini 네이티브 형식
- Google 네이티브 API 형식으로 Gemini 모델 호출
- 동기 처리 모드로 실시간 응답
- 최소한의 매개변수로 빠르게 시작
POST
/
v1beta
/
models
/
{model}
:
{method}
curl --request POST \
--url https://api.apimart.ai/v1beta/models/gemini-2.5-pro:generateContent \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"contents": [
{
"role": "user",
"parts": [
{
"text": "안녕하세요, 자기소개를 해주세요"
}
]
}
]
}'
import requests
url = "https://api.apimart.ai/v1beta/models/gemini-2.5-pro:generateContent"
payload = {
"contents": [
{
"role": "user",
"parts": [
{
"text": "안녕하세요, 자기소개를 해주세요"
}
]
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1beta/models/gemini-2.5-pro:generateContent";
const payload = {
contents: [
{
role: "user",
parts: [
{
text: "안녕하세요, 자기소개를 해주세요"
}
]
}
]
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://api.apimart.ai/v1beta/models/gemini-2.5-pro:generateContent"
payload := map[string]interface{}{
"contents": []map[string]interface{}{
{
"role": "user",
"parts": []map[string]interface{}{
{
"text": "안녕하세요, 자기소개를 해주세요",
},
},
},
},
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://api.apimart.ai/v1beta/models/gemini-2.5-pro:generateContent";
String payload = """
{
"contents": [
{
"role": "user",
"parts": [
{
"text": "안녕하세요, 자기소개를 해주세요"
}
]
}
]
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://api.apimart.ai/v1beta/models/gemini-2.5-pro:generateContent";
$payload = [
"contents" => [
[
"role" => "user",
"parts" => [
[
"text" => "안녕하세요, 자기소개를 해주세요"
]
]
]
]
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://api.apimart.ai/v1beta/models/gemini-2.5-pro:generateContent")
payload = {
contents: [
{
role: "user",
parts: [
{
text: "안녕하세요, 자기소개를 해주세요"
}
]
}
]
}
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json
response = http.request(request)
puts response.body
{
"code": 200,
"data": {
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"text": "안녕하세요! 제 소개를 드리겠습니다.\n\n저는 Google에서 훈련하고 개발한 대규모 언어 모델입니다..."
}
]
},
"finishReason": "STOP",
"index": 0,
"safetyRatings": [
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"probability": "NEGLIGIBLE"
}
]
}
],
"promptFeedback": {
"safetyRatings": [
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"probability": "NEGLIGIBLE"
}
]
]
},
"usageMetadata": {
"promptTokenCount": 4,
"candidatesTokenCount": 611,
"totalTokenCount": 2422,
"thoughtsTokenCount": 1807,
"promptTokensDetails": [
{
"modality": "TEXT",
"tokenCount": 4
}
]
}
}
{
"error": {
"code": 400,
"message": "유효하지 않은 요청 매개변수입니다",
"status": "INVALID_ARGUMENT"
}
}
{
"error": {
"code": 401,
"message": "인증에 실패했습니다. API 키를 확인하세요",
"status": "UNAUTHENTICATED"
}
}
{
"error": {
"code": 402,
"message": "잔액이 부족합니다. 충전해주세요",
"status": "PAYMENT_REQUIRED"
}
}
{
"error": {
"code": 403,
"message": "접근이 거부되었습니다",
"status": "PERMISSION_DENIED"
}
}
{
"error": {
"code": 404,
"message": "지정된 모델을 찾을 수 없습니다",
"status": "NOT_FOUND"
}
}
{
"error": {
"code": 429,
"message": "요청이 너무 빈번합니다. 나중에 다시 시도하세요",
"status": "RESOURCE_EXHAUSTED"
}
}
{
"error": {
"code": 500,
"message": "서버 내부 오류",
"status": "INTERNAL"
}
}
{
"error": {
"code": 502,
"message": "게이트웨이 오류, 서비스를 일시적으로 사용할 수 없습니다",
"status": "BAD_GATEWAY"
}
}
{
"error": {
"code": 503,
"message": "서비스를 일시적으로 사용할 수 없습니다",
"status": "UNAVAILABLE"
}
}
curl --request POST \
--url https://api.apimart.ai/v1beta/models/gemini-2.5-pro:generateContent \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"contents": [
{
"role": "user",
"parts": [
{
"text": "안녕하세요, 자기소개를 해주세요"
}
]
}
]
}'
import requests
url = "https://api.apimart.ai/v1beta/models/gemini-2.5-pro:generateContent"
payload = {
"contents": [
{
"role": "user",
"parts": [
{
"text": "안녕하세요, 자기소개를 해주세요"
}
]
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1beta/models/gemini-2.5-pro:generateContent";
const payload = {
contents: [
{
role: "user",
parts: [
{
text: "안녕하세요, 자기소개를 해주세요"
}
]
}
]
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://api.apimart.ai/v1beta/models/gemini-2.5-pro:generateContent"
payload := map[string]interface{}{
"contents": []map[string]interface{}{
{
"role": "user",
"parts": []map[string]interface{}{
{
"text": "안녕하세요, 자기소개를 해주세요",
},
},
},
},
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://api.apimart.ai/v1beta/models/gemini-2.5-pro:generateContent";
String payload = """
{
"contents": [
{
"role": "user",
"parts": [
{
"text": "안녕하세요, 자기소개를 해주세요"
}
]
}
]
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://api.apimart.ai/v1beta/models/gemini-2.5-pro:generateContent";
$payload = [
"contents" => [
[
"role" => "user",
"parts" => [
[
"text" => "안녕하세요, 자기소개를 해주세요"
]
]
]
]
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://api.apimart.ai/v1beta/models/gemini-2.5-pro:generateContent")
payload = {
contents: [
{
role: "user",
parts: [
{
text: "안녕하세요, 자기소개를 해주세요"
}
]
}
]
}
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json
response = http.request(request)
puts response.body
{
"code": 200,
"data": {
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"text": "안녕하세요! 제 소개를 드리겠습니다.\n\n저는 Google에서 훈련하고 개발한 대규모 언어 모델입니다..."
}
]
},
"finishReason": "STOP",
"index": 0,
"safetyRatings": [
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"probability": "NEGLIGIBLE"
}
]
}
],
"promptFeedback": {
"safetyRatings": [
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"probability": "NEGLIGIBLE"
}
]
]
},
"usageMetadata": {
"promptTokenCount": 4,
"candidatesTokenCount": 611,
"totalTokenCount": 2422,
"thoughtsTokenCount": 1807,
"promptTokensDetails": [
{
"modality": "TEXT",
"tokenCount": 4
}
]
}
}
{
"error": {
"code": 400,
"message": "유효하지 않은 요청 매개변수입니다",
"status": "INVALID_ARGUMENT"
}
}
{
"error": {
"code": 401,
"message": "인증에 실패했습니다. API 키를 확인하세요",
"status": "UNAUTHENTICATED"
}
}
{
"error": {
"code": 402,
"message": "잔액이 부족합니다. 충전해주세요",
"status": "PAYMENT_REQUIRED"
}
}
{
"error": {
"code": 403,
"message": "접근이 거부되었습니다",
"status": "PERMISSION_DENIED"
}
}
{
"error": {
"code": 404,
"message": "지정된 모델을 찾을 수 없습니다",
"status": "NOT_FOUND"
}
}
{
"error": {
"code": 429,
"message": "요청이 너무 빈번합니다. 나중에 다시 시도하세요",
"status": "RESOURCE_EXHAUSTED"
}
}
{
"error": {
"code": 500,
"message": "서버 내부 오류",
"status": "INTERNAL"
}
}
{
"error": {
"code": 502,
"message": "게이트웨이 오류, 서비스를 일시적으로 사용할 수 없습니다",
"status": "BAD_GATEWAY"
}
}
{
"error": {
"code": 503,
"message": "서비스를 일시적으로 사용할 수 없습니다",
"status": "UNAVAILABLE"
}
}
인증
모든 API 엔드포인트에는 Bearer Token 인증이 필요합니다API 키 가져오기:API 키 관리 페이지를 방문하여 API 키를 가져오세요요청 헤더에 추가:
Authorization: Bearer YOUR_API_KEY
경로 매개변수
모델 이름예제에서는
gemini-2.5-pro를 사용하며, 다른 지원되는 Gemini 모델로 대체할 수 있습니다:gemini-3.5-flash- Gemini 3.5 고속 버전gemini-3.1-pro-preview- Gemini 3.1 Pro 미리보기 버전gemini-3-pro-preview- Gemini 3 Pro 미리보기 버전gemini-2.5-pro- Gemini 2.5 전문 버전
생성 방법 (빠른 시작에는
generateContent 권장):generateContent: 완전한 응답을 기다린 후 한 번에 반환streamGenerateContent: 스트림 형식으로 단계적으로 콘텐츠 반환
generateContent, streamGenerateContent본문
대화 내용 목록최소 1개의 메시지가 필요합니다
예:
표시 contents 객체 구조
표시 contents 객체 구조
[
{
"role": "user",
"parts": [{ "text": "안녕하세요, 자기소개를 해주세요" }]
}
]
생성 구성 (선택사항)
표시 generationConfig 속성
표시 generationConfig 속성
안전 설정 (선택사항)
표시 safetySettings 객체 구조
표시 safetySettings 객체 구조
안전 카테고리:
HARM_CATEGORY_HATE_SPEECH: 혐오 발언HARM_CATEGORY_DANGEROUS_CONTENT: 위험한 콘텐츠HARM_CATEGORY_HARASSMENT: 괴롭힘HARM_CATEGORY_SEXUALLY_EXPLICIT: 성적으로 노골적인 콘텐츠
임계값 수준:
BLOCK_NONE: 차단하지 않음BLOCK_ONLY_HIGH: 높은 위험만 차단BLOCK_MEDIUM_AND_ABOVE: 중간 이상 위험 차단BLOCK_LOW_AND_ABOVE: 낮은 이상 위험 차단
응답
후보 응답 목록
표시 candidates 객체 구조
표시 candidates 객체 구조
완료 이유:
STOP: 정상 완료MAX_TOKENS: 최대 토큰 제한 도달SAFETY: 안전상의 이유로 중지RECITATION: 반복으로 인해 중지OTHER: 기타 이유
후보 응답의 인덱스
사용량 통계
표시 usageMetadata 속성
표시 usageMetadata 속성
⌘I