curl --request POST \
--url https://direct.evolink.ai/v1/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "claude-opus-5",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Hello, world"
}
]
}
'import requests
url = "https://direct.evolink.ai/v1/messages"
payload = {
"model": "claude-opus-5",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Hello, world"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'claude-opus-5',
max_tokens: 1024,
messages: [{role: 'user', content: 'Hello, world'}]
})
};
fetch('https://direct.evolink.ai/v1/messages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://direct.evolink.ai/v1/messages",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'claude-opus-5',
'max_tokens' => 1024,
'messages' => [
[
'role' => 'user',
'content' => 'Hello, world'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://direct.evolink.ai/v1/messages"
payload := strings.NewReader("{\n \"model\": \"claude-opus-5\",\n \"max_tokens\": 1024,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Hello, world\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://direct.evolink.ai/v1/messages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"claude-opus-5\",\n \"max_tokens\": 1024,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Hello, world\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://direct.evolink.ai/v1/messages")
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 = "{\n \"model\": \"claude-opus-5\",\n \"max_tokens\": 1024,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Hello, world\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"model": "claude-haiku-4-5-20251001",
"id": "msg_bdrk_017XLrAa77zWvfBGQ6ESvrxz",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "# Hey there!\n\nHow's it going? What can I help you with today?"
}
],
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 8,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0,
"output_tokens": 24
}
}{
"error": {
"message": "잘못된 요청",
"type": "invalid_request_error"
},
"request_id": "<string>",
"type": "error"
}{
"error": {
"message": "인증 오류",
"type": "authentication_error"
},
"request_id": "<string>",
"type": "error"
}{
"error": {
"message": "과금 오류",
"type": "billing_error"
},
"request_id": "<string>",
"type": "error",
"fallback_suggestion": "https://evolink.ai/dashboard/billing"
}{
"error": {
"message": "Permission denied",
"type": "permission_error"
},
"request_id": "<string>",
"type": "error"
}{
"error": {
"message": "찾을 수 없음",
"type": "not_found_error"
},
"request_id": "<string>",
"type": "error"
}{
"error": {
"message": "Rate limited",
"type": "rate_limit_error"
},
"request_id": "<string>",
"type": "error",
"fallback_suggestion": "retry after 60 seconds"
}{
"error": {
"message": "내부 서버 오류",
"type": "api_error"
},
"request_id": "<string>",
"type": "error",
"fallback_suggestion": "try again later"
}{
"error": {
"message": "Overloaded",
"type": "overloaded_error"
},
"request_id": "<string>",
"type": "error",
"fallback_suggestion": "retry after 30 seconds"
}{
"error": {
"message": "Request timeout",
"type": "timeout_error"
},
"request_id": "<string>",
"type": "error",
"fallback_suggestion": "BaseURL을 https://direct.evolink.ai로 변경하세요. 이 엔드포인트는 장시간 작업에 더 적합합니다"
}Claude - Messages API
- 텍스트 및/또는 이미지 콘텐츠가 포함된 구조화된 입력 메시지 목록을 전송하면, 모델이 대화의 다음 메시지를 생성합니다.
- Messages API는 단일 쿼리 또는 상태 비저장 다중 턴 대화에 사용할 수 있습니다.
curl --request POST \
--url https://direct.evolink.ai/v1/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "claude-opus-5",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Hello, world"
}
]
}
'import requests
url = "https://direct.evolink.ai/v1/messages"
payload = {
"model": "claude-opus-5",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Hello, world"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'claude-opus-5',
max_tokens: 1024,
messages: [{role: 'user', content: 'Hello, world'}]
})
};
fetch('https://direct.evolink.ai/v1/messages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://direct.evolink.ai/v1/messages",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'claude-opus-5',
'max_tokens' => 1024,
'messages' => [
[
'role' => 'user',
'content' => 'Hello, world'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://direct.evolink.ai/v1/messages"
payload := strings.NewReader("{\n \"model\": \"claude-opus-5\",\n \"max_tokens\": 1024,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Hello, world\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://direct.evolink.ai/v1/messages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"claude-opus-5\",\n \"max_tokens\": 1024,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Hello, world\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://direct.evolink.ai/v1/messages")
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 = "{\n \"model\": \"claude-opus-5\",\n \"max_tokens\": 1024,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Hello, world\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"model": "claude-haiku-4-5-20251001",
"id": "msg_bdrk_017XLrAa77zWvfBGQ6ESvrxz",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "# Hey there!\n\nHow's it going? What can I help you with today?"
}
],
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 8,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0,
"output_tokens": 24
}
}{
"error": {
"message": "잘못된 요청",
"type": "invalid_request_error"
},
"request_id": "<string>",
"type": "error"
}{
"error": {
"message": "인증 오류",
"type": "authentication_error"
},
"request_id": "<string>",
"type": "error"
}{
"error": {
"message": "과금 오류",
"type": "billing_error"
},
"request_id": "<string>",
"type": "error",
"fallback_suggestion": "https://evolink.ai/dashboard/billing"
}{
"error": {
"message": "Permission denied",
"type": "permission_error"
},
"request_id": "<string>",
"type": "error"
}{
"error": {
"message": "찾을 수 없음",
"type": "not_found_error"
},
"request_id": "<string>",
"type": "error"
}{
"error": {
"message": "Rate limited",
"type": "rate_limit_error"
},
"request_id": "<string>",
"type": "error",
"fallback_suggestion": "retry after 60 seconds"
}{
"error": {
"message": "내부 서버 오류",
"type": "api_error"
},
"request_id": "<string>",
"type": "error",
"fallback_suggestion": "try again later"
}{
"error": {
"message": "Overloaded",
"type": "overloaded_error"
},
"request_id": "<string>",
"type": "error",
"fallback_suggestion": "retry after 30 seconds"
}{
"error": {
"message": "Request timeout",
"type": "timeout_error"
},
"request_id": "<string>",
"type": "error",
"fallback_suggestion": "BaseURL을 https://direct.evolink.ai로 변경하세요. 이 엔드포인트는 장시간 작업에 더 적합합니다"
}https://direct.evolink.ai이며, 텍스트 모델 지원이 더 우수하고 장시간 연결을 지원합니다. https://api.evolink.ai는 멀티모달 서비스의 주력 엔드포인트이며, 텍스트 모델에 대해서는 대체 주소로 사용됩니다.인증
##모든 API는 Bearer Token 인증이 필요합니다##
API Key 받기:
API Key 관리 페이지를 방문하여 API Key를 받으세요
요청 헤더에 추가:
Authorization: Bearer YOUR_API_KEY
본문
응답 생성에 사용할 모델입니다. 아래에 표시된 지원 모델 ID 중 하나를 선택하세요.
claude-haiku-4-5-20251001, claude-sonnet-4-5-20250929, claude-opus-4-5-20251101, claude-opus-4-6, claude-fable-5-1, claude-fable-5, claude-opus-5, claude-opus-4-8, claude-opus-4-7, claude-sonnet-4-6, claude-sonnet-5 "claude-opus-5"
중지하기 전에 생성할 최대 토큰 수.
모델이 이 최대값에 도달하기 전에 중지할 수 있습니다. 이 매개변수는 생성할 토큰의 절대 최대 수만 지정합니다.
x >= 11024
입력 메시지.
모델은 user와 assistant가 번갈아 나오는 대화 턴에서 작동하도록 훈련되었습니다. 새 Message를 생성할 때 messages 매개변수로 이전 대화 턴을 지정하면, 모델이 대화의 다음 Message를 생성합니다. 요청에서 연속된 user 또는 assistant 턴은 하나의 턴으로 결합됩니다.
각 입력 메시지는 role과 content가 포함된 객체여야 합니다. 단일 user 역할 메시지를 지정하거나 여러 user 및 assistant 메시지를 포함할 수 있습니다.
1 - 100000 elementsShow child attributes
Show child attributes
로드할 스킬이 포함된 컨테이너 파라미터.
Show child attributes
Show child attributes
모델 출력 설정(출력 형식 등).
Show child attributes
Show child attributes
모델이 생성을 중단하게 하는 사용자 정의 텍스트 시퀀스.
서버 전송 이벤트를 사용하여 응답을 점진적으로 스트리밍할지 여부.
시스템 프롬프트.
"Today's date is 2024-06-01."
응답에 주입되는 무작위성의 양입니다.
기본값은 1.0입니다. 범위는 0.0에서 1.0까지입니다.
0 <= x <= 11
Claude의 확장 사고를 활성화하기 위한 설정입니다.
type: "enabled"에서는 최소 1,024의 budget_tokens가 필요하며 max_tokens 한도에 포함됩니다.
type: "adaptive"에서는 요청 복잡도에 따라 Claude가 확장 사고의 사용 시점과 양을 결정합니다.
type: "disabled"에서는 확장 사고를 사용하지 않습니다.
- 워터마크 활성화 **참고:** - `true`: 생성된 비디오에 워터마크 추가 - `false`: 워터마크 없음 (기본값)
- Adaptive
- 비활성화됨
Show child attributes
Show child attributes
모델이 제공된 도구를 사용하는 방식.
- Auto
- Any
- 도구
- 없음
Show child attributes
Show child attributes
모델이 사용할 수 있는 클라이언트 도구 정의입니다. 각 도구에는 name, 선택적 description, input_schema가 포함됩니다.
Show child attributes
Show child attributes
각 후속 토큰에 대해 상위 K개 옵션에서만 샘플링합니다.
x >= 05
핵 샘플링을 사용합니다.
0 <= x <= 10.7
응답
메시지 내용. 두 가지 형식을 지원합니다:
1. 일반 텍스트 문자열: 문자열을 직접 전달합니다, 예: "content":"자기소개를 해주세요"
2. 객체 배열 (텍스트 입력, 멀티모달 입력 지원): 아래 구조를 참조하세요
고유 객체 식별자.
ID의 형식과 길이는 시간이 지남에 따라 변경될 수 있습니다.
"msg_013Zva2CMHLNnXjNJJKqJ2EF"
객체 유형.
Messages의 경우, 항상 "message"입니다.
"message"생성된 메시지의 대화 역할.
이 값은 항상 "assistant"입니다.
"assistant"모델이 생성한 콘텐츠.
이것은 콘텐츠 블록의 배열이며, 각 블록은 형태를 결정하는 type을 가지고 있습니다.
- 텍스트
- 사고
- 수정된 사고
- 도구 사용
- 서버 도구 사용
- 웹 검색 도구 결과
- ResponseWebFetchToolResultBlock
- 코드 실행 도구 결과
- ResponseBashCodeExecutionToolResultBlock
- ResponseTextEditorCodeExecutionToolResultBlock
- MCP 도구 사용
- Tool Use 또는 Function Calling을 위한 도구 목록 **참고**: - 각 도구에는 type이 포함되어야 합니다 - function 구조에는 name, description, parameters가 포함되어야 합니다 - tools 배열에 최대 128개의 함수
- 컨테이너 업로드
Show child attributes
Show child attributes
요청을 처리한 모델.
claude-haiku-4-5-20251001, claude-sonnet-4-5-20250929, claude-opus-4-5-20251101, claude-opus-4-6, claude-fable-5-1, claude-fable-5, claude-opus-5, claude-opus-4-8, claude-opus-4-7, claude-sonnet-4-6, claude-sonnet-5 "claude-opus-5"
중지 이유.
end_turn, max_tokens, stop_sequence, tool_use, pause_turn, refusal, model_context_window_exceeded 생성된 사용자 정의 중지 시퀀스 (있는 경우).
과금 및 속도 제한 사용량.
Show child attributes
Show child attributes
컨텍스트 관리 응답.
Show child attributes
Show child attributes
이 요청에 사용된 컨테이너 정보.
Show child attributes
Show child attributes