Developer guide

API 호출하기

API 호환 경로와 스트리밍·음성 규칙

Written in 한국어. A version in your language is being prepared.

CLEVI 게이트웨이의 호출 경로는 OpenAI 호환 규격과 Anthropic 호환 규격으로 나뉩니다.
두 규격은 같은 API 키를 사용하며, 대화형 추론 모델은 어느 규격으로도 호출할 수 있습니다.
임베딩과 음성·보이스 경로는 OpenAI 호환 규격에만 있고,
Anthropic 호환 규격은 messages, count_tokens, models 세 경로를 제공합니다.

스트리밍은 요청 본문의 stream으로 켜며, 임베딩과 일부 모델·경로는 지원하지 않습니다. 음성·보이스 경로는 오디오를 그대로 반환하고 산출물을 CleviDrive에 3일 동안 보관하는 등 일반 추론과 다른 규칙을 따릅니다.

모델 ID와 모델별 허용 호출은 모델 페이지에, 인증 헤더와 base URL은 API 키로 인증하기 페이지에 있습니다.

경로 선택

하려는 일과 사용 중인 SDK에 따라 경로를 선택하세요. 표의 경로는 각 규격의 base URL 뒤에 이어지는 상대 경로입니다.

하려는 일규격경로
대화형 추론, OpenAI SDK 사용OpenAI 호환POST /chat/completions 또는 POST /responses
대화형 추론, Anthropic SDK 사용Anthropic 호환POST /v1/messages
임베딩 생성OpenAI 호환POST /embeddings
음성 합성·전사, 보이스 관리OpenAI 호환/audio와 /voices 아래 경로
호출할 수 있는 모델 확인둘 다GET /models

OpenAI 호환 경로

OpenAI 호환 규격의 base URL은 https://platform.clevi.net/api/v2/aiservice/openai/v1 입니다. 요청과 응답 본문은 OpenAI 규격을 따릅니다. 아래 표는 추론과 모델 경로를 호스트 기준 전체 경로로 표기하며, 음성·보이스 경로는 뒤의 음성과 보이스 경로 절에 정리했습니다.

메서드경로설명
POST/api/v2/aiservice/openai/v1/chat/completions대화형 추론을 요청합니다. stream을 켜면 SSE로 응답합니다.
POST/api/v2/aiservice/openai/v1/responsesResponses 규격으로 호출합니다. stream을 지원합니다.
GET/api/v2/aiservice/openai/v1/responses/{responseId}저장된 응답 1건을 조회합니다.
GET/api/v2/aiservice/openai/v1/responses/{responseId}/input_items저장된 응답의 입력 항목 목록을 조회합니다.
POST/api/v2/aiservice/openai/v1/responses/{responseId}/cancel백그라운드로 진행 중인 응답을 취소합니다.
DELETE/api/v2/aiservice/openai/v1/responses/{responseId}저장된 응답을 삭제합니다.
POST/api/v2/aiservice/openai/v1/completions레거시 텍스트 완성을 요청합니다. stream을 지원합니다.
POST/api/v2/aiservice/openai/v1/embeddings임베딩을 생성합니다. 스트리밍은 지원하지 않습니다.
GET/api/v2/aiservice/openai/v1/models이 키로 호출할 수 있는 모델 목록을 반환합니다.
GET/api/v2/aiservice/openai/v1/models/{modelId}모델 1건을 조회합니다. 접근할 수 없는 모델이면 404를 반환합니다.

chat/completions를 호출하는 최소 예제입니다. sk-... 자리에는 API 키 화면에서 발급한 키를, model에는 모델 페이지의 ID를 넣으세요.

curl https://platform.clevi.net/api/v2/aiservice/openai/v1/chat/completions \
  -H "X-API-Key: sk-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "cip-5.5-im",
    "messages": [{"role": "user", "content": "안녕하세요"}]
  }'

그 밖의 경로

다음 경로는 진단, 레거시 호환, 중계 용도입니다.

경로설명
GET /api/v2/aiservice/openai/v1/healthz음성 provider의 상태를 확인합니다.
/api/v2/aiservice/openai/v1/api/status · /api/options · /api/generate · /outputs/{filename}레거시 Cosa의 상태·옵션 조회, 생성 호출(multipart), 산출물 내려받기 경로입니다.
/api/v2/aiservice/openai/v1/{routeKey} (GET · POST · PUT · PATCH · DELETE)위 표에 없는 provider 경로를 규칙을 적용해 중계합니다. chat/completions, completions, embeddings, responses는 전용 경로가 처리하므로 POST 중계로 호출하면 404를 반환합니다.

요청과 응답 필드 전체는 OpenAPI 3.0 문서 https://platform.clevi.net/api/v2/console/openapi/cloud-inference-v1 에서 확인할 수 있습니다. 경로 목록은 이 문서에서 생성되며, 문서는 콘솔에 로그인한 세션으로만 열립니다. 같은 문서로 클라이언트를 생성할 수 있습니다.

Anthropic 호환 경로

Anthropic 호환 규격의 base URL은 https://platform.clevi.net/api/v2/aiservice/anthropic 이며, Anthropic SDK가 요청 경로에 /v1을 직접 추가합니다. 요청과 응답 본문은 Anthropic Messages 규격을 따릅니다.

메서드경로설명
POST/api/v2/aiservice/anthropic/v1/messagesMessages 규격으로 호출합니다. model, messages, max_tokens가 필요하며 stream을 지원합니다.
POST/api/v2/aiservice/anthropic/v1/messages/count_tokens과금 없이 입력 토큰 수만 추정합니다. max_tokens는 필요하지 않습니다.
GET/api/v2/aiservice/anthropic/v1/models커서 페이지네이션 방식의 모델 목록을 반환합니다. limit은 1~1000이며 범위를 벗어나면 400을 반환합니다.
GET/api/v2/aiservice/anthropic/v1/models/{modelId}모델 1건을 조회합니다. 접근할 수 없는 모델이면 404를 반환합니다.

messages를 호출하는 최소 예제입니다.

curl https://platform.clevi.net/api/v2/aiservice/anthropic/v1/messages \
  -H "X-API-Key: sk-..." \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "cip-5.5-im",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "안녕하세요"}]
  }'

anthropic-version 헤더를 생략하면 2023-06-01로 처리합니다. 게이트웨이는 anthropic-version과 anthropic-beta 헤더를 그대로 전달합니다.

스트리밍 (SSE)

요청 본문에 stream을 true로 설정하면 서버가 Server-Sent Events로 응답합니다. 지원 여부는 경로와 모델에 따라 다음과 같이 다릅니다.

대상동작
OpenAI 호환 POST /chat/completions · POST /completions · POST /responsesstream을 지원합니다.
Anthropic 호환 POST /v1/messagesstream을 지원합니다.
POST /embeddings스트리밍을 지원하지 않습니다.
Ivy 검색 계열 모델(ivy-4-mm-search 등)stream을 켜도 서버가 해제하고 한 번에 응답합니다.
GET /responses/{responseId}?stream=true400을 반환합니다. 백그라운드 응답의 사용량을 정확히 한 번만 계량할 수 있을 때까지 닫아 둔 경로입니다.

첫 청크와 함께 다음 세 헤더를 보냅니다. 이후에는 청크마다 data: 줄을 보내고 즉시 flush하며, 업스트림이 이벤트 이름을 제공한 경우에만 event: 줄을 함께 보냅니다.

  • Content-Type: text/event-stream
  • Cache-Control: no-cache
  • X-Accel-Buffering: no

Anthropic 호환 경로의 청크는 event 줄과 data 줄이 짝을 이룹니다.

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"안"}}

chat/completions의 청크는 data 줄로 오며, 마지막에 data: [DONE]을 그대로 전달합니다.

data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[...]}

data: [DONE]

스트리밍 도중 오류가 발생하면 일반 호출과 같은 오류 JSON이 data: 한 줄로 전달되고, HTTP 상태 코드도 함께 바뀝니다.

음성과 보이스 경로

TTS·STT와 Cosa 보이스 관리 경로는 OpenAI 호환 규격에 있으며, 일반 추론과 다른 규칙이 몇 가지 적용됩니다. 어떤 모델이 어느 경로를 허용하는지는 모델 페이지의 Cosa 표에서 확인하세요.

메서드경로설명
POST/api/v2/aiservice/openai/v1/audio/speech텍스트를 음성으로 합성해 오디오를 그대로 반환합니다.
POST/api/v2/aiservice/openai/v1/audio/transcriptions오디오를 텍스트로 전사합니다 (multipart).
POST/api/v2/aiservice/openai/v1/audio/speech/clone복제 보이스로 음성을 합성합니다 (multipart).
GET/api/v2/aiservice/openai/v1/voices호출자가 사용할 수 있는 보이스 목록을 반환합니다.
POST/api/v2/aiservice/openai/v1/voices오디오 샘플로 보이스를 등록합니다 (multipart).
POST/api/v2/aiservice/openai/v1/voices/design설명문으로 합성 보이스를 만듭니다.
DELETE/api/v2/aiservice/openai/v1/voices/{voiceId}보이스를 삭제합니다. 소유자만 삭제할 수 있습니다.

다음 규칙은 음성·보이스 경로에만 적용됩니다.

규칙내용
바이너리 전달audio/speech, audio/speech/clone, outputs/{filename}의 성공 응답은 오디오를 그대로 전송하면서 동시에 CleviDrive에 저장합니다.
영수증 헤더X-Clevi-Drive-File-Id, X-Clevi-Drive-File-Version-Id, X-Clevi-Drive-Download-Url, X-Clevi-Drive-Expires-At, X-Clevi-Drive-Retention-Days: 3 헤더를 응답에 포함합니다.
Product 선택audio/speech와 audio/transcriptions는 요청 본문의 model로 Product를 선택합니다. 보이스·진단 경로는 X-Product-Sku 헤더 또는 product_sku 쿼리가 필요합니다.
보이스 소유권복제하거나 등록한 보이스는 만든 주체에게 귀속됩니다. 다른 소유자의 보이스로 합성하거나 삭제하려 하면 403을 반환하며, GET /voices 목록에도 본인 소유 보이스만 포함합니다.
크기와 시간요청 상한은 28 MiB, 업스트림 호출 제한 시간은 5분입니다.
provider 혼잡업스트림이 혼잡하면 409를 그대로 전달하고, Retry-After가 있으면 그 값도 함께 전달합니다. 게이트웨이는 재시도하거나 큐에 넣지 않습니다.
CLEVI

ބަހާއި ސަރަޙައްދު

މެޝިންގެ ތަރުޖަމާކުރެވިފައިވާ ބަސްތައް މާކްކުރެވިފައިވާނެ. ލިބެން ހުރިގޮތް ފަހުގެ ސައިޓް ބަންޑްލަށް ބަލާގަނެވޭނެ.

136 ބަސް

ލަފާދެވިފައި

1

އިރުމަތީ އޭޝިއާ

7

ދެކުނު އިރުމަތީ އޭޝިއާ

11

ދެކުނު އޭޝިއާ

18

މެދު އޭޝިއާ

5

މެދުއިރުމަތި އަދި ކޮކޭސަސް

10

ހުޅަނގު އަދި ދެކުނު ޔޫރަޕް

16

ބްރިޓަން އަދި އަޔަލޭންޑް

4

އުތުރު ޔޫރަޕް އަދި ބޯލްޓިކް

10

މެދު ޔޫރަޕް އަދި ބޯލްކަން

14

އިރުމަތީ ޔޫރަޕް

5

އިރުމަތީ އެފްރިކާ އަދި ހޯން

8

ހުޅަނގު އަދި މެދު އެފްރިކާ

9

ދެކުނު އެފްރިކާ

8

އެމެރިކާސް

5

ޕެސިފިކް

5