핸드폰 아이콘
딥시크
dipseek Fx 이미지
이미지 생성

딥시크 API 문서

딥시크 채팅과 이미지 생성(dipseek Fx)을 내 서버나 앱에서 HTTP로 호출하세요.

API 키 만들기첫 API 호출 따라하기

소개

딥시크 API는 웹 서비스와 같은 모델·프롬프트·대화 기억을 그대로 사용합니다. API로 나눈 대화는 웹의 대화 기록에도 남고, 웹에서 하던 대화를 API로 이어갈 수도 있습니다.

기준 주소https://dipseek.kr/api/v1
형식요청·응답 모두 UTF-8 JSON (스트리밍은 SSE)
시간대한국 시간(KST)
이용 대상이용권을 결제한 회원
이용권 결제 회원 전용 — 이용권이 활성 상태인 동안 API 키를 만들고 호출할 수 있습니다. 이용권이 끝나면 호출이 403 subscription_required로 거부되며, 다시 결제하면 기존 키를 그대로 쓸 수 있습니다. 이용권 보기

첫 API 호출

  1. 이용권을 결제한 뒤, 왼쪽 위 My Profile → Profile → API 키 관리 또는 API 키 페이지에서 키를 만듭니다. 키는 만든 직후 한 번만 보입니다.
  2. 키를 환경변수 DIPSEEK_API_KEY에 넣습니다.
  3. 아래 코드로 호출합니다.
curl https://dipseek.kr/api/v1/chat \
  -H "Authorization: Bearer $DIPSEEK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"message":"안녕! 자기소개 한 줄만 해줘"}'
import os, requests

r = requests.post(
    "https://dipseek.kr/api/v1/chat",
    headers={"Authorization": "Bearer " + os.environ["DIPSEEK_API_KEY"]},
    json={"message": "안녕! 자기소개 한 줄만 해줘"},
)
data = r.json()
print(data["answer"])
const res = await fetch("https://dipseek.kr/api/v1/chat", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.DIPSEEK_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ message: "안녕! 자기소개 한 줄만 해줘" }),
});
const data = await res.json();
console.log(data.answer);

응답

{
  "ok": true,
  "id": 176310,
  "room": "ZVZIbHBDT0lvRGNYNjYrODJzM0lOQT09",
  "answer": "안녕하세요! 저는 딥시크의 AI 어시스턴트예요.",
  "usage": { "input_tokens": 412, "output_tokens": 38 }
}

인증과 API 키

모든 요청에 Authorization: Bearer dsk_… 헤더가 필요합니다. 주소(쿼리스트링)에 키를 넣는 방식과 로그인 쿠키는 지원하지 않습니다.

  • 키는 회원당 최대 5개, 이름은 1~50자입니다.
  • 서버에는 키의 해시만 저장됩니다. 잃어버리면 복구할 수 없으니 삭제하고 새로 만드세요.
  • 키로 쓴 채팅 사용량과 이미지 포인트는 키를 만든 회원의 한도에서 차감됩니다.
키는 서버에서만 쓰세요. 웹 페이지의 자바스크립트나 앱 안에 넣으면 누구나 꺼내 쓸 수 있습니다. 노출됐다면 키 페이지에서 바로 삭제하고 새로 만드세요.

이용 조건과 한도

항목내용
채팅웹과 같은 월 사용량 한도(이용권 기준)를 함께 씁니다. 넘으면 402 monthly_limit_reached
이미지 생성요청마다 이미지 포인트 15P. 이미지가 실제로 만들어졌을 때만 차감되며, 부족하면 402 insufficient_points
동시 작업이미지는 한 계정당 동시에 한 작업만 진행할 수 있습니다.
호출 횟수키 하나당 분당 채팅 20 · 이미지 요청 6 · 조회 60 (자세히)

남은 한도는 GET /me로 확인할 수 있습니다.

채팅 이어가기

첫 응답의 room 값을 다음 요청의 room에 넣으면 이전 대화를 기억한 채 이어서 답합니다. room을 생략하면 매번 새 대화방이 만들어집니다.

curl https://dipseek.kr/api/v1/chat \
  -H "Authorization: Bearer $DIPSEEK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"message":"방금 한 말을 영어로 번역해줘","room":"ZVZIbHBDT0lvRGNYNjYrODJzM0lOQT09"}'
import os, requests
API = "https://dipseek.kr/api/v1"
H = {"Authorization": "Bearer " + os.environ["DIPSEEK_API_KEY"]}

first = requests.post(API + "/chat", headers=H, json={"message": "파이썬 리스트 컴프리헨션이 뭐야?"}).json()
second = requests.post(API + "/chat", headers=H,
                       json={"message": "예제를 하나 더 보여줘", "room": first["room"]}).json()
print(second["answer"])
const API = "https://dipseek.kr/api/v1";
const headers = { Authorization: `Bearer ${process.env.DIPSEEK_API_KEY}`, "Content-Type": "application/json" };
const post = (body) => fetch(`${API}/chat`, { method: "POST", headers, body: JSON.stringify(body) }).then(r => r.json());

const first = await post({ message: "파이썬 리스트 컴프리헨션이 뭐야?" });
const second = await post({ message: "예제를 하나 더 보여줘", room: first.room });
console.log(second.answer);

스트리밍

"stream": true를 보내면 답변을 만드는 대로 text/event-stream(SSE)으로 받습니다.

curl -N https://dipseek.kr/api/v1/chat \
  -H "Authorization: Bearer $DIPSEEK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"message":"비트코인을 쉽게 설명해줘","stream":true}'
import os, json, requests

with requests.post("https://dipseek.kr/api/v1/chat",
                   headers={"Authorization": "Bearer " + os.environ["DIPSEEK_API_KEY"]},
                   json={"message": "비트코인을 쉽게 설명해줘", "stream": True},
                   stream=True) as r:
    event = None
    for line in r.iter_lines(decode_unicode=True):
        if line.startswith("event: "):
            event = line[7:]
        elif line.startswith("data: ") and event == "delta":
            print(json.loads(line[6:])["text"], end="", flush=True)
const res = await fetch("https://dipseek.kr/api/v1/chat", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.DIPSEEK_API_KEY}`, "Content-Type": "application/json" },
  body: JSON.stringify({ message: "비트코인을 쉽게 설명해줘", stream: true }),
});
const reader = res.body.getReader();
const dec = new TextDecoder();
let buf = "";
for (;;) {
  const { value, done } = await reader.read();
  if (done) break;
  buf += dec.decode(value, { stream: true });
  let i;
  while ((i = buf.indexOf("\n\n")) >= 0) {
    const block = buf.slice(0, i); buf = buf.slice(i + 2);
    if (block.includes("event: delta")) process.stdout.write(JSON.parse(block.split("data: ")[1]).text);
  }
}

이벤트 순서

event: room
data: {"room":"ZVZI..."}

event: delta
data: {"text":"비트코인은 "}

event: done
data: {"id":176311,"room":"ZVZI...","usage":{"input_tokens":120,"output_tokens":410}}

오류는 event: error로 오고 data에 error, message가 들어 있습니다. 연결을 중간에 끊으면 그 답변은 저장되지 않습니다.

이미지 생성

이미지는 만드는 데 1~2분 걸리므로 접수 → 조회 두 단계로 씁니다. 한 번에 4장이 만들어집니다.

# 1) 접수
curl https://dipseek.kr/api/v1/images \
  -H "Authorization: Bearer $DIPSEEK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"벚꽃이 흩날리는 한강 다리 위의 여자","shape":"landscape"}'
# -> 202 {"ok":true,"id":3651,"status":"processing","cost_points":15}

# 2) 3~5초 간격으로 조회
curl https://dipseek.kr/api/v1/images/3651 \
  -H "Authorization: Bearer $DIPSEEK_API_KEY"
import os, time, requests
API = "https://dipseek.kr/api/v1"
H = {"Authorization": "Bearer " + os.environ["DIPSEEK_API_KEY"]}

job = requests.post(API + "/images", headers=H,
                    json={"prompt": "푸른 숲속의 작은 오두막", "shape": "square"}).json()
while True:
    time.sleep(4)
    r = requests.get(f"{API}/images/{job['id']}", headers=H)
    if r.status_code == 404:          # 실패한 작업은 정리되어 404가 올 수 있습니다
        raise SystemExit("failed")
    img = r.json()["image"]
    if img["status"] != "processing":
        break
print(img["status"], img["images"])
const API = "https://dipseek.kr/api/v1";
const headers = { Authorization: `Bearer ${process.env.DIPSEEK_API_KEY}`, "Content-Type": "application/json" };

const job = await fetch(`${API}/images`, {
  method: "POST", headers,
  body: JSON.stringify({ prompt: "푸른 숲속의 작은 오두막", shape: "square" }),
}).then(r => r.json());

let img;
for (;;) {
  await new Promise(r => setTimeout(r, 4000));
  const res = await fetch(`${API}/images/${job.id}`, { headers });
  if (res.status === 404) throw new Error("failed");   // 실패한 작업은 정리되어 404가 올 수 있습니다
  img = (await res.json()).image;
  if (img.status !== "processing") break;
}
console.log(img.status, img.images);
이미지 주소는 생성 서버가 제공하는 주소입니다. 서비스에 쓸 이미지는 받아서 직접 보관하세요. 7분이 지나도 끝나지 않으면 failed(timeout)로 처리되고 포인트는 차감되지 않습니다.

API 레퍼런스

채팅 요청

POST/api/v1/chat
필드타입설명
messagestring필수. 질문 (최대 8,000자)
roomstring선택. 이전 응답의 room. 없으면 새 대화방
streamboolean선택. true면 SSE 스트리밍. 기본 false

응답: id(대화 번호), room, answer, usage.input_tokens, usage.output_tokens

대화방 목록

GET/api/v1/chat/rooms?limit=20&before=방번호

내 대화방을 최신순으로 돌려줍니다 (최대 100개). before에 마지막 항목의 id를 넣어 이어서 불러옵니다.

{ "ok": true, "rooms": [ { "id": 981, "room": "ZVZI...", "title": "안녕! 자기소개…", "created_at": "2026-11-09 15:02:11" } ] }

대화 기록

GET/api/v1/chat/rooms/{room}?limit=20&before=id

대화방의 질문·답변 기록입니다(오래된 것부터). before에 id를 넣으면 그 이전 대화를 불러옵니다.

이미지 생성 접수

POST/api/v1/images
필드타입설명
promptstring필수. 만들 이미지 설명, 한국어 가능 (최대 1,000자)
shapestring선택. portrait(세로, 기본) · square · landscape(가로)

응답 202: id, status: "processing", cost_points: 15

이미지 작업 조회 / 목록

GET/api/v1/images/{id}
GET/api/v1/images?limit=20&before=id

status는 processing · completed · failed 중 하나입니다. 목록은 최신순, 최대 50개입니다.

{
  "ok": true,
  "image": {
    "id": 3651,
    "status": "completed",
    "prompt": "벚꽃이 흩날리는 한강 다리 위의 여자",
    "images": ["https://…/0.png", "https://…/1.png", "https://…/2.png", "https://…/3.png"],
    "error": null,
    "created_at": "2026-11-09 15:02:11",
    "completed_at": "2026-11-09 15:03:40"
  }
}

이미지 작업 취소 / 삭제

DELETE/api/v1/images/{id}

진행 중이면 취소하고(포인트 미차감), 끝난 작업이면 기록을 삭제합니다.

계정 상태

GET/api/v1/me

이 키의 계정 상태입니다. 호출 전에 남은 한도를 확인할 때 쓰세요.

{
  "ok": true,
  "key": { "id": 7, "name": "내 서버", "prefix": "dsk_3fa91c2b" },
  "plan": "paid",
  "subscription_expires_at": "2026-12-09 23:59:59",
  "chat": { "used": 1520, "limit": 20000, "remaining": 18480, "resets_at": "2026-12-01 00:00:00" },
  "image": { "points": 60, "cost_per_request": 15 },
  "rate_limits_per_minute": { "chat": 20, "image": 6, "read": 60 }
}

호출 한도

구분키 하나당 분당해당 요청
chat20회POST /chat
image6회POST /images
read60회그 밖의 모든 조회·삭제

응답 헤더 X-RateLimit-Limit, X-RateLimit-Remaining로 남은 횟수를 확인합니다. 넘으면 429와 Retry-After(초)가 옵니다.

오류 코드

실패하면 HTTP 상태 코드와 함께 아래 형태로 응답합니다. 코드(error)를 기준으로 처리하세요.

{ "ok": false, "error": "monthly_limit_reached", "message": "이번 달 사용 한도를 모두 사용했습니다. …" }
HTTPerror의미 / 조치
400invalid_request · invalid_json · message_too_long · prompt_too_long요청 형식을 확인하세요.
401unauthorized · invalid_api_key헤더가 없거나 키가 틀림/삭제됨
402monthly_limit_reached · insufficient_points월 한도 소진 또는 이미지 포인트 부족
403subscription_required이용권이 없거나 만료됨. 결제 후 다시 사용
403account_disabled탈퇴했거나 이용이 제한된 계정
404room_not_found · not_found없거나 내 것이 아닌 대화방/작업
409job_in_progress진행 중인 이미지 작업이 끝난 뒤 다시 요청
429rate_limitedRetry-After 초 뒤에 재시도
502upstream_error · image_server_unavailableAI/이미지 서버 문제. 잠시 후 재시도 (이미지는 포인트 미차감)
500server_error서버 오류. 계속되면 문의해주세요.

API 키 만들기

[결제 요청]
항목명 파라미터 필수여부 입력
지불수단 PayMethod 필수
상품갯수 GoodsCnt 필수
거래 상품명 GoodsName 필수
거래 금액 Amt 필수
상품주문번호 Moid 필수
상점아이디 MID 필수
결제결과전송URL ReturnURL 필수
결제결과RetrURL RetryURL 선택
회원사고객ID mallUserID 선택
구매자명 BuyerName 필수
구매자연락처 BuyerTel 필수
구매자메일주소 BuyerEmail 필수
보호자메일주소 ParentEmail 선택
배송지주소 BuyerAddr 선택
우편번호 BuyerPostNo 선택
회원사고객IP UserIP 선택
상점서버IP MallIP 필수
가상계좌입금만료일 VbankExpDate 선택
암호화데이타 EncryptData 필수
화면처리방식 FORWARD 필수
상점결제결과처리 MallResultFWD 선택
결제타입 TransType 필수
결제결과인코딩 EncodingType 선택
오픈타입 OpenType 선택
휴대폰결제타입 GoodsCl 선택
용역제공기간 OfferPeriod 선택
카드사코드 fn_cd 선택
할부개월 CardQuota 선택
무이자할부구분 CardInterest 선택
소켓사용여부 SocketYN 선택
간편결제 몰아이디 SspMallID 선택
UI Color SkinColor 선택
TAX 코드 TaxCD 선택
봉사료 SvcAmt 선택
부가세 Tax 선택
카드사포인트사용 CardPoint 선택
전문생성일시 ediDate 필수
결과응답URLEncoding UrlEncode 선택
상품정보 Productinfo 선택
상점 모드 DivideInfo 선택
결제하기
Settings
이용권 구매
이용권 구매
이름
이메일 주소
API
딥시크 채팅·이미지 API
모든 채팅 삭제
회원 탈퇴
개인정보 처리방침
보기
유료서비스 이용약관
보기

채팅 삭제

이 채팅을 삭제하시겠습니까?