JEV 생태계를 소개하는 독립적인 가이드. JEV 공식 웹사이트
개발자 가이드

API

애플리케이션을 JEV AI에 연결하세요. 키를 생성하고 구조화된 질문을 보내 코드에서 결과를 확인하세요.

API 키 관리

AI로 첫 호출 실행하기

터미널 접근 권한이 있는 AI 코딩 어시스턴트에 전체 지시문을 복사하세요. 이 사이트의 URL, 인증 방법, 요청 예시, 결과 확인 절차가 포함되어 있습니다. 아래 질문 유형을 바꾸면 지시문도 변경됩니다. 먼저 실행 환경에 JEV_API_KEY를 설정하세요.

지시문 미리보기
JEV AI API로 요청 예시를 한 번 실행하고 실제 결과를 보고하세요. 터미널이나 서버 측 HTTP 도구를 사용하여 실행하고 단계 설명만 하지 마세요.

기본 URL: https://jevai.info
문서: https://jevai.info/api
모델: typesafe/jev-1.13
인증: Authorization: Bearer <JEV_API_KEY 값>
Content-Type: application/json

1. 실행 환경에서 JEV_API_KEY를 읽으세요. 없다면 계속하기 전에 로컬에서 설정해 달라고 요청하세요. 채팅에 붙여넣으라고 요청하지 마세요. 키를 출력하거나 로그에 넣거나 프런트엔드 코드에 저장하지 마세요. HTTP 요청을 실행할 수 없다면 그 사실을 알리고 결과를 만들어내는 대신 실행 가능한 코드를 제공하세요.
2. Bearer 헤더를 포함하여 GET https://jevai.info/api/jev/account?page=1을 호출하세요. data.balance.ready, data.balance.pending, data.balance.balance를 확인하세요. 새 요청에는 질문당 32,000개의 사용 가능한 입력 토큰이 필요합니다. 서비스를 사용할 수 없거나 다른 작업이 대기 중이거나 잔액이 부족하면 이를 알리고 중단하세요. 토큰을 구매하거나 계정 설정을 변경하지 마세요.
3. requestId에 사용할 새 UUID를 생성하고 다음 JSON으로 https://jevai.info/api/jev/run에 POST를 정확히 한 번 보내세요 (requestId만 생성한 UUID로 교체):

{
  "requestId": "123e4567-e89b-42d3-a456-426614174000",
  "model": "typesafe/jev-1.13",
  "state": "구독 요금이 두 번 청구되었습니다. 중복 결제를 환불해 주세요.",
  "questions": {
    "decision": {
      "type": "choice",
      "instructions": "어느 팀에서 이 문의 티켓을 처리해야 하나요?",
      "criteria": {
        "billing": "결제, 청구서 및 환불",
        "technical": "오류, 버그 및 설정 문제",
        "other": "그 외 모든 요청"
      }
    }
  }
}

4. HTTP 상태와 JSON의 code/message를 확인하세요. 완료된 결과라면 data.id, data.status, data.result.answers, inputTokens, outputTokens를 보고하세요. 계정 엔드포인트를 다시 조회하여 남은 잔액을 확인하세요. 예시의 숫자를 실제 응답 대신 사용하지 마세요.
5. 모델 호출은 구매한 입력 토큰을 사용하며 출력 토큰은 무료입니다. 새 UUID로 예시를 반복 실행하지 마세요. 시간 초과가 발생하면 먼저 계정 내역을 확인하세요. 재시도가 필요하면 원래 UUID와 본문을 그대로 재사용하고 최소 1초 이상 기다리며 Retry-After를 준수하세요. UUID를 재사용하면 대기 중이거나 예약이 해제된 상태를 포함한 저장 기록을 반환하며 작업을 다시 시작하지 않습니다. needs_review 또는 미해결 작업이 있으면 실행 ID를 보고하고 중단하세요.

간결한 실행 요약을 반환하세요. API 키는 비공개로 유지하세요.
  1. 01

    API 키 생성하기

    API 키 페이지에서 키를 생성하세요. 복사 버튼이나 키 접두사를 클릭하여 전체 키를 복사할 수 있습니다. 해시만 저장된 이전 키는 복구할 수 없으므로 필요하면 새로 생성하세요.

    API 키 관리
  2. 02

    토큰 잔액 확인하기

    API 요청은 플레이그라운드와 동일한 구매 토큰 잔액을 사용합니다. 무료로 키를 생성한 뒤 모델 요청을 실행하기 전에 토큰 패키지를 구매하세요.

    토큰 구매
  3. 03

    첫 요청 보내기

    질문 유형을 선택하고 백엔드에서 사용할 예시를 복사하세요. 이 페이지의 예시는 자동 실행되지 않으며 토큰을 소비하지 않습니다.

    예시 보기

연결 및 인증

모든 요청에 Authorization: Bearer YOUR_API_KEY를 포함하세요. 이 예시는 서버에서 이 사이트의 JSON API를 호출하며 OpenAI SDK나 브라우저 로그인 쿠키를 사용하지 않습니다.

기본 URL
https://jevai.info
모델
typesafe/jev-1.13
터미널 · 환경 변수
export JEV_API_KEY="YOUR_API_KEY"

로컬 터미널에서 YOUR_API_KEY를 전체 키로 바꾸세요. 키는 백엔드 환경 변수에 보관하고 프런트엔드 코드나 공개 저장소에 넣지 마세요. 이 키는 이 사이트에서만 작동하며 모델 제공업체에 직접 사용할 수 없습니다.

요청 보내기

POST /api/jev/run

choice는 2~255개 선택지 중 하나의 카테고리를 선택합니다. 이 예시는 문의 티켓을 담당 팀으로 분류합니다.

curl 7.76+와 uuidgen이 있는 Bash 호환 셸을 사용하세요. 먼저 같은 터미널에서 JEV_API_KEY를 설정하세요.

Shell
REQUEST_ID="$(uuidgen)"

curl --fail-with-body 'https://jevai.info/api/jev/run' \
  --request POST \
  --header "Authorization: Bearer $JEV_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{
  "requestId": "'"$REQUEST_ID"'",
  "model": "typesafe/jev-1.13",
  "state": "구독 요금이 두 번 청구되었습니다. 중복 결제를 환불해 주세요.",
  "questions": {
    "decision": {
      "type": "choice",
      "instructions": "어느 팀에서 이 문의 티켓을 처리해야 하나요?",
      "criteria": {
        "billing": "결제, 청구서 및 환불",
        "technical": "오류, 버그 및 설정 문제",
        "other": "그 외 모든 요청"
      }
    }
  }
}'

새 작업마다 새로운 UUID requestId가 필요합니다. 재시도할 때는 원래 requestId와 요청 본문을 그대로 재사용하세요. POST /api/jev/run만 모델을 실행하며 토큰을 소비할 수 있습니다.

응답 예시 보기

실시간 결과가 아닌 설명용 데이터입니다. code: 0은 요청이 수락되었음을 뜻하며 data.status도 확인해야 합니다. status가 completed이고 result가 null이 아닐 때 data.result.answers에서 답을 읽으세요. 반복 요청은 진행 중이거나 예약이 해제된 기록을 반환할 수 있습니다.

JSON
{
  "code": 0,
  "message": "ok",
  "data": {
    "id": "example-run-id",
    "status": "completed",
    "inputTokens": 180,
    "outputTokens": 24,
    "questionCount": 1,
    "elapsedMs": 850,
    "createdAt": "2026-09-28T12:00:00.000Z",
    "result": {
      "model": "typesafe/jev-1.13",
      "answers": {
        "decision": {
          "type": "choice",
          "choice": "billing"
        }
      },
      "usage": {
        "input_tokens": 180,
        "output_tokens": 24
      },
      "elapsedMs": 850
    }
  }
}

요청 매개변수

필드유형 / 값설명
requestIdUUID필수. 하나의 작업을 식별하는 UUID로, 동일한 본문을 재시도할 때 모델 중복 실행을 방지합니다.
modeltypesafe/jev-1.13선택. 기본값은 이 모델이며 다른 모델 이름은 허용되지 않습니다.
statestring | string[] | object필수. 모든 질문이 공유하는 맥락입니다. 문자열은 1~16,000자여야 하며 배열에는 이러한 문자열을 1~100개 넣을 수 있습니다. JSON 객체도 허용됩니다.
questionsobject필수. 이름이 지정된 질문 1~8개. 이름은 ASCII 영문자로 시작하고 영문자, 숫자, 밑줄만 포함하며 최대 64자입니다.
questions.*.typechoice | score | noul각 질문에 필수. 위에서 유형을 선택하면 해당 예시를 볼 수 있습니다.
questions.*.instructionsstring필수. 결정할 내용을 1~16,000자로 명확하게 설명하세요.
questions.*.criteriaobject | string[]choice: 선택지 설명 2~255개를 담은 객체 (설명은 null 가능). score: 순서가 지정된 설명 2~10개. noul: 이 필드를 생략하세요.

전체 JSON 본문은 최대 32 KiB입니다. 허용되지 않은 최상위 필드나 질문 필드는 거부됩니다. API 경로에는 /ko 같은 언어 접두사가 붙지 않습니다.

잔액 및 요청 내역 확인

GET /api/jev/account
curl --fail-with-body 'https://jevai.info/api/jev/account?page=1' \
  --header "Authorization: Bearer $JEV_API_KEY"

이 엔드포인트는 모델을 호출하지 않습니다. data.balance.balance에서 사용 가능한 토큰을, data.balance.reserved에서 예약된 토큰을 확인하세요. data.history.items에는 페이지당 최대 20개 요청이 포함됩니다. hasMore가 true인 동안 page를 증가시키세요.

토큰 사용량 열기

토큰 과금 방식

각 질문은 실행 전에 32,000개의 입력 토큰을 예약하므로 사용 가능한 잔액이 이를 충당해야 합니다. 완료된 요청은 실제 입력 사용량으로 정산하고 미사용 예약분을 반환합니다. 출력 토큰은 무료입니다. 검토 대기 중인 예약은 해결될 때까지 잠겨 있습니다.

중복 과금 없는 재시도

요청 사이에 최소 1초 간격을 두고 계정당 한 번에 하나의 작업을 실행하세요. 시간 초과 후에는 내역을 확인하고 동일한 UUID와 변경하지 않은 본문으로만 재시도하세요. UUID를 재사용하면 저장된 기록이 반환되며 예약이 해제된 작업은 다시 시작되지 않습니다. 이전 작업의 예약 해제를 확인한 뒤에만 새 작업을 시작하세요. needs_review 또는 멈춘 작업은 실행 ID와 함께 고객 지원에 문의하고 API 키는 절대 보내지 마세요.

문제 해결

오류는 성공이 아닌 HTTP 상태를 반환합니다. JSON 본문의 code는 -1이고 message에 오류 코드가 포함됩니다. HTTP 상태와 본문을 모두 확인하세요.

HTTP오류 코드해결 방법
400invalid_requestJSON 구조, 질문 기준, UUID 형식, 32 KiB 본문 제한을 확인하세요.
401unauthorizedBearer 헤더에 활성 API 키 전체를 사용하세요. 접두사, 삭제된 키, 제공업체 키는 사용할 수 없습니다.
402insufficient_tokens토큰을 구매하거나 이전 예약이 해제될 때까지 기다리세요. 사용 가능 잔액과 예약 잔액을 확인하세요.
403invalid_origin브라우저 세션의 출처 확인 오류입니다. 서버 연동에서는 브라우저 쿠키 대신 유효한 Bearer 키를 보내세요.
409idempotency_conflict해당 requestId가 이미 다른 입력에 사용되었습니다. 재시도에는 원래 입력을 사용하고 새 작업에는 새 UUID를 사용하세요.
409request_pending / account_busy다른 작업이 대기 중이거나 계정이 사용 중입니다. 내역을 확인하고 나중에 다시 시도하세요. 요청을 병렬 실행하지 마세요.
429rate_limitedRetry-After에 지정된 시간이 지난 후 동일한 작업을 재시도하세요.
502 / 503needs_review / upstream_rejected / service_unavailable / account_unavailable재시도 전에 내역을 확인하세요. needs_review는 고객 지원 검토가 필요하므로 대체 요청을 시작하지 마세요. 일시적인 서비스 오류는 나중에 다시 시도하세요.
고객 지원 문의