Content Generation APIv1

이미지 생성

자연어 프롬프트로 이미지 PNG 한 장을 생성합니다. 참고 이미지(url|b64, 최대 16장) 입력, 완료 결과 재생성(POST /v1/free-images/{id}/regenerate), 시안 기반 생성(/v1/references 등록·검수 후 필드 교체)을 지원합니다. 크기 생략 시 3840×2160, 장변 ≤3840px, 비율 제한 없음(3:1 초과는 밴드 합성). 3:1 초과 비율은 참고 최대 15장. 와이드 비율로 전자현수막·배너도 생성합니다. 프롬프트는 기본으로 LLM 정제를 거칩니다(refine:false 로 옵트아웃).

POST/v1/free-images Auth Raw Spec

자유 이미지 생성 시작

비동기 — 202 즉시 반환 후 백그라운드 생성. 요청 본문은 application/json.

매개변수

이름위치타입필수설명
Idempotency-KeyheaderstringminLength: 1maxLength: 255—같은 키로 24h 내 재호출 시 첫 응답 리플레이. 다른 본문이면 409.

요청 본문 · application/json · 필수

promptstringminLength: 1maxLength: 2000

이미지 묘사 자연어 프롬프트. reference 지정 시 선택('추가 요청' 역할 — 조립된 프롬프트 뒤에 덧붙여짐, 미지정 시 조립 프롬프트만 사용).

widthintegerdefault: 3840min: 1

생략 시 3840. 비율 제한 없음 — 3:1 초과는 밴드 합성으로 생성(유효 단변 해상도 = 3840/비율). 장변 ≤3840px. reference 지정 시 1920 또는 3840 만 가능(프리셋 잠금, 기본 3840). 세로형(aspect<1) 시안은 산출 height 가 두 프리셋 모두에서 상한(3840px)을 넘으면 400(세로형 정식 지원 없음).

heightintegerdefault: 2160min: 1

생략 시 2160. reference 지정 시 지정 불가(시안 aspect 로 산출됨).

imagesarray<object>minItems: 1maxItems: 16

참고 이미지 (선택, 최대 16장). 제공 시 참고 이미지를 반영해 생성합니다. 3:1 초과 비율에서는 최대 15장(영역 가이드 1슬롯). reference 와 동시 지정 불가(시안 이미지가 참고 슬롯을 전담).

array<RefImageItem> 의 항목:

urlstring (uri)format: uri

https 공개 이미지 URL

b64string

base64 인코딩 이미지 (data URI prefix 허용)

descriptionstringmaxLength: 500

이 이미지를 결과에 어떻게 반영할지 설명 (선택)

refinebooleandefault: true

LLM 이 느슨한 입력을 최종 이미지 프롬프트로 정규화합니다(플레이그라운드와 동일). 직접 다듬은 프롬프트를 그대로 쓰려면 false. 정제 결과는 응답의 refinedPrompt 로 확인할 수 있습니다. 정제는 생성 전 LLM 호출 1회를 추가합니다(수 초). reference 지정 시 이 값은 무시됨(조립 프롬프트가 이미 최종형).

referenceFreeImageReferenceParam
idstring필수

시안 id (빌트인 또는 본인이 등록한 것)

fieldsobject

필드 key → 새 글자. required 필드는 필수, 미기재 선택 필드는 시안 원본 글자가 그대로 유지됨

model"gpt-image-2" | "gpt-image-2.5-flare" | "gpt-image-2.5-sunburst"default: "gpt-image-2"

생성에 쓸 이미지 모델. 생략하면 gpt-image-2 입니다. 아래 목록의 문자열을 그대로 넣으세요 — 줄임말(flare, 2.5flare)이나 내부 배포 이름은 받지 않습니다. 목록에 없는 값이면 400 INVALID_REQUEST 입니다. gpt-image-2 (기본) gpt-image-2.5-flare gpt-image-2.5-sunburst 크기 규칙(장변 ≤3840px · 비율 ≤3:1 · 초과 비율은 밴드 합성)은 모든 모델이 같습니다. 재생성(POST /v1/free-images/{id}/regenerate)은 원본과 같은 모델을 상속하며 따로 지정할 수 없습니다.

예시

표준 — 표준 비율 이미지

{
  "prompt": "햇살 좋은 봄날의 벚꽃 가득한 캠퍼스, 따뜻한 파스텔 톤",
  "width": 3840,
  "height": 2160
}

배너 — 와이드 배너·전자현수막 (8:1)

{
  "prompt": "봄 신입사원 환영 현수막, 밝은 파스텔 배경에 벚꽃 장식, 가운데 환영 문구가 들어갈 여백",
  "width": 3840,
  "height": 480
}

시안(reference) — 등록된 시안 기반 생성 — 필드만 교체

{
  "reference": {
    "id": "ref_01HXX0KZ8N5R7E2WV9MT3FQGPB",
    "fields": {
      "main": "영업2팀 가을 워크샵",
      "date": "2026.10.03 ~ 05"
    }
  },
  "prompt": "배경을 가을 단풍 느낌으로"
}

모델 지정 — 기본 모델 대신 다른 모델로 생성

{
  "prompt": "밤바다 위 불꽃놀이, 짙은 남색 하늘",
  "width": 1920,
  "height": 1080,
  "model": "gpt-image-2.5-flare"
}

예제 요청 (cURL)

curl -X POST "https://api.sysmate.example/v1/free-images" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"햇살 좋은 봄날의 벚꽃 가득한 캠퍼스, 따뜻한 파스텔 톤","width":3840,"height":2160}'

응답

상태본문설명
GET/v1/free-images/{id} Auth Raw Spec

자유 이미지 리소스 조회 (폴링)

매개변수

이름위치타입필수설명
idpathstring예—

예제 요청 (cURL)

curl -X GET "https://api.sysmate.example/v1/free-images/:id" \
  -H "Authorization: Bearer $API_KEY"

응답

상태본문설명
404—NOT_FOUND
POST/v1/free-images/{id}/regenerate Auth Raw Spec

완료된 이미지를 기준으로 재생성

succeeded 리소스의 결과 이미지 + 원래 프롬프트를 유지한 채 수정 요청(instruction)을 반영해 새 이미지 리소스를 만듭니다 (202 → 기존 GET 폴링). 재생성 결과를 다시 재생성할 수 있습니다.

매개변수

이름위치타입필수설명
idpathstring예원본(succeeded) 리소스 id
Idempotency-KeyheaderstringminLength: 1maxLength: 255—같은 키로 24h 내 재호출 시 첫 응답 리플레이. 다른 본문이면 409.

요청 본문 · application/json · 필수

instructionstring필수minLength: 1maxLength: 1000

이전 결과에 대한 수정 요청

imagesarray<object>minItems: 1maxItems: 15

추가 참고 이미지 (원본 결과가 자동으로 1번째 참고가 되므로 최대 15장). 극단 비율 원본은 추가 최대 14장.

array<RefImageItem> 의 항목:

urlstring (uri)format: uri

https 공개 이미지 URL

b64string

base64 인코딩 이미지 (data URI prefix 허용)

descriptionstringmaxLength: 500

이 이미지를 결과에 어떻게 반영할지 설명 (선택)

refineboolean

LLM 프롬프트 정제 여부. 생략 시 원본 리소스의 설정을 상속합니다(크기 상속과 같은 규칙).

예시

{
  "instruction": "배경을 밤하늘로 바꾸고 조명을 따뜻하게",
  "images": [
    {
      "url": "https://cdn.example.com/logo.png",
      "description": "우상단에 로고"
    }
  ]
}

예제 요청 (cURL)

curl -X POST "https://api.sysmate.example/v1/free-images/:id/regenerate" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"instruction":"배경을 밤하늘로 바꾸고 조명을 따뜻하게","images":[{"url":"https://cdn.example.com/logo.png","description":"우상단에 로고"}]}'

응답

상태본문설명
GET/v1/references Auth Raw Spec

시안 목록 (빌트인 + 내가 등록한 것)

예제 요청 (cURL)

curl -X GET "https://api.sysmate.example/v1/references" \
  -H "Authorization: Bearer $API_KEY"

응답

상태본문설명
POST/v1/references Auth Raw Spec

시안 등록 — AI 가 교체 가능 텍스트 필드를 비동기 검출

요청 본문 · application/json · 필수

imageobject필수

url 또는 b64 중 정확히 하나

urlstring (uri)format: uri

https 공개 이미지 URL

b64string

base64 인코딩 이미지 (PNG/JPEG, 4MB 이하)

namestringmaxLength: 100

예제 요청 (cURL)

curl -X POST "https://api.sysmate.example/v1/references" \
  -H "Authorization: Bearer $API_KEY"

응답

상태본문설명
GET/v1/references/{id} Auth Raw Spec

시안 상세 (검출된 fields 포함)

매개변수

이름위치타입필수설명
idpathstring예—

예제 요청 (cURL)

curl -X GET "https://api.sysmate.example/v1/references/:id" \
  -H "Authorization: Bearer $API_KEY"

응답

상태본문설명
PATCH/v1/references/{id} Auth Raw Spec

검출 결과 검수·수정 — fields 는 배열 전체 교체

매개변수

이름위치타입필수설명
idpathstring예—

요청 본문 · application/json · 필수

namestringmaxLength: 100
fieldsarray<object>minItems: 1maxItems: 20

배열 전체 교체(부분 병합 아님) — GET 으로 받은 배열을 고쳐 통째로 보낼 것

array<ReferenceField> 의 항목:

keystring필수pattern: ^[a-z][a-zA-Z0-9]{0,29}$

필드 식별자 (생성 요청 reference.fields 의 키)

labelstring필수maxLength: 50

사람이 읽는 필드 이름 (예: 중앙 제목, 일시, 장소)

originalstring필수maxLength: 200

시안 이미지 속 원본 글자 — 교체 대상. 이미지와 정확히 일치해야 함

requiredboolean필수

true 면 생성 시 반드시 값을 넣어야 함

valueTemplatestringmaxLength: 200

라벨-빈칸 슬롯용 — 입력이 {v} 에 끼워짐 (선택)

예제 요청 (cURL)

curl -X PATCH "https://api.sysmate.example/v1/references/:id" \
  -H "Authorization: Bearer $API_KEY"

응답

상태본문설명
DELETE/v1/references/{id} Auth Raw Spec

시안 삭제 (내가 등록한 것만)

매개변수

이름위치타입필수설명
idpathstring예—

예제 요청 (cURL)

curl -X DELETE "https://api.sysmate.example/v1/references/:id" \
  -H "Authorization: Bearer $API_KEY"

응답

상태본문설명
204—삭제됨

인증

Content Generation API 공통 인증(Bearer) 안내와 키 검증 엔드포인트. AI 생성 기능 진입 전에 GET /v1/auth/verify 로 보유한 키가 유효한지 확인할 수 있습니다 — 유효하면 200, 없거나 잘못됐거나 폐기된 키면 401 입니다. 키가 노출되지 않도록 서버 측에서 호출하세요.

GET/v1/auth/verify Auth Raw Spec

보유한 API 키가 유효한지 확인

요청에 실은 Bearer 키가 유효하면 200 과 키 메타데이터를, 키가 없거나 잘못됐거나 폐기됐거나 만료됐으면 401 을 반환합니다. AI 생성 메뉴 진입 시 사전 점검 용도로 사용하세요 — 200 이면 그대로 진행하고, 401 이면 사용자에게 유효한 키 등록을 안내하면 됩니다.

예제 요청 (cURL)

curl -X GET "https://api.sysmate.example/v1/auth/verify" \
  -H "Authorization: Bearer $API_KEY"

응답

상태본문설명

운영자 API

키 관리(발급·조회·폐기, 업체명·한도·만료일 수정), 키별 사용량·한도 잔여, 키별 생성 내역을 다루는 운영자용 API. 고객 키(Bearer)가 아니라 관리 토큰 x-admin-token 으로 인증합니다.

GET/api/admin/keys Auth Raw Spec

발급된 키 목록 조회

전체 키의 메타데이터를 최신순으로 반환합니다. 2026-08-03 이후 발급분은 평문 key 를 포함해 재복사할 수 있습니다. ?label= 로 특정 라벨의 키만 조회할 수 있습니다(정확 일치) — 한도 조정 전에 hash 를 찾는 용도로 편리합니다.

매개변수

이름위치타입필수설명
labelquerystring—라벨 정확 일치 필터. 일치하는 키가 없으면 빈 배열이 아니라 404 — 오타를 '키 없음'으로 오독하지 않게 합니다. 라벨을 바꾼 뒤에는 옛 라벨로 404 입니다.예: 초록우산

예제 요청 (cURL)

curl -X GET "https://api.sysmate.example/api/admin/keys?label=%EC%B4%88%EB%A1%9D%EC%9A%B0%EC%82%B0" \
  -H "x-admin-token: $API_TOKEN"

응답

상태본문설명
POST/api/admin/keys Auth Raw Spec

키 발급

업체 라벨을 지정해 새 키를 발급합니다. 응답에 평문 key 가 포함되며, 이후 목록 조회(GET)에서도 재조회할 수 있습니다. expiresInMonths 로 만료를 개월 단위로 걸 수 있습니다(선택, 생략 시 만료 없음). 발급 후 조정은 PATCH expiresAt.

요청 본문 · application/json · 필수

labelstring필수

고객사명 등 식별 라벨. 앞뒤 공백은 제거되며, 제거 후 빈 문자열이면 400. 라벨은 키와 1:1 — 이미 같은 라벨의 키가 있으면 409 로 거부됩니다(2026-08-20부터). 키 교체 시에는 구 키를 먼저 폐기하거나 새 라벨을 쓰세요. 라벨을 잘못 입력했다면 재발급하지 말고 PATCH newLabel 로 고치세요(키 값이 바뀌지 않아 업체에 다시 전달할 필요가 없습니다).

expiresInMonthsintegermin: 1

만료까지 개월 수(선택). 생략하면 만료 없음. 발급일(KST)과 같은 일자 N개월 뒤가 만료일이며 그 전날까지 사용할 수 있습니다 — 예: 5월 12일 발급 3개월 → 8월 12일 만료(8월 11일까지 사용). 같은 일자가 없는 달(1월 31일 + 1개월)이면 그 달을 끝까지 주고 다음 달 1일에 만료합니다.

예제 요청 (cURL)

curl -X POST "https://api.sysmate.example/api/admin/keys" \
  -H "x-admin-token: $API_TOKEN"

응답

상태본문설명
PATCH/api/admin/keys Auth Raw Spec

키 수정 — 업체명(라벨)·한도(월/일)·만료일

발급된 키의 속성을 수정합니다. 본문의 hash/label 은 대상 키(셀렉터)이고, newLabel·quota·expiresAt 은 바꿀 값입니다 — 바꿀 값은 하나 이상 보냅니다. 업체명을 잘못 등록했으면 newLabel 로 고칩니다(2026-10-07부터). 키 값은 그대로라 업체의 API 호출에는 영향이 없고, 다른 활성 키(만료된 키 포함)와 같은 이름이면 409, 현재 이름과 같으면 변경 없이 200 입니다. 업체명을 바꿀 때는 대상을 hash 로 지정하세요. 생성 한도를 설정하거나(quota: { period, limit }) 해제하고(quota: null = 무제한), 만료일을 설정·연장·정정·해제합니다(expiresAt: "YYYY-MM-DD" KST 날짜 = 이 날부터 사용 불가, null = 만료 없음). 만료된 키는 폐기와 달리 레코드가 남아 있어 만료일을 미루면 즉시 다시 사용할 수 있습니다. 기간(monthly=KST 매월 1일 초기화 / daily=KST 자정 초기화)을 키마다 선택할 수 있습니다. 대상 키는 hash 또는 label(정확 일치) 중 하나로 지정합니다 — 라벨은 키와 1:1 이라 보통 label 만으로 충분하지만, 라벨은 바뀔 수 있으니 시스템에 저장해 두는 식별자는 hash 를 쓰세요. 한도는 키 레코드에만 저장되고 캐시가 없어 다음 생성 요청부터 즉시 반영됩니다 — 되돌리기는 이 API 1회로 끝나며 배포가 필요 없습니다. 한도가 소진되면 생성 요청이 429 QUOTA_EXCEEDED 로 거부됩니다. 소모는 성공 + 진행중 요청만 세고 실패한 요청은 세지 않습니다. period 를 monthly 로 설정하면 소진 시 Retry-After 가 이달 말까지 남은 초 — 최대 약 268만 초(31일)까지 커질 수 있으니, 고객사 연동 시 그 값 그대로 sleep-block 하지 말라고 안내하세요. 옛 dailyLimit 필드로 보내면 400 으로 거부됩니다 — quota: { period: "daily", limit } 로 바꿔 보내세요.

요청 본문 · application/json · 필수

다음 중 하나:

object

object

예시

월 한도 100건(현재 표준) — KST 매월 1일 초기화

{
  "label": "초록우산",
  "quota": {
    "period": "monthly",
    "limit": 100
  }
}

일 한도로 되돌리기 — period 가 바뀌면 리셋 마커는 지워집니다

{
  "label": "초록우산",
  "quota": {
    "period": "daily",
    "limit": 10
  }
}

한도 해제(무제한) — quota 를 null 로 명시

{
  "label": "초록우산",
  "quota": null
}

해시로 지정

{
  "hash": "0b6f3625ca59f32f5f879b147d9f0ca71764924dd85720578fe6907b1248824f",
  "quota": {
    "period": "monthly",
    "limit": 100
  }
}

만료일 설정·연장·정정 — 8월 12일부터 사용 불가(8월 11일까지 사용). 연장은 현재 만료일에 더한 날짜를 보냄

{
  "label": "초록우산",
  "expiresAt": "2026-08-12"
}

만료 해제(만료 없음) — expiresAt 을 null 로 명시

{
  "label": "초록우산",
  "expiresAt": null
}

즉시 차단(과거 날짜) — 폐기와 달리 되돌릴 수 있다 — 날짜를 다시 미루면 재사용

{
  "label": "초록우산",
  "expiresAt": "2026-01-01"
}

업체명(라벨) 변경 — 잘못 등록한 업체명 교정 — 키 값·한도·만료일은 그대로

{
  "hash": "0b6f3625ca59f32f5f879b147d9f0ca71764924dd85720578fe6907b1248824f",
  "newLabel": "초록우산재단"
}

예제 요청 (cURL)

curl -X PATCH "https://api.sysmate.example/api/admin/keys" \
  -H "x-admin-token: $API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"label":"초록우산","quota":{"period":"monthly","limit":100}}'

응답

상태본문설명
DELETE/api/admin/keys Auth Raw Spec

키 폐기

해시로 키를 폐기합니다. 폐기는 캐시 없이 즉시 반영되어 해당 키의 API 호출이 곧바로 401 이 됩니다.

매개변수

이름위치타입필수설명
hashquerystringpattern: ^[0-9a-f]{64}$예폐기할 키의 sha256 해시(hex 64자). 목록·발급 응답의 hash 값을 사용합니다.예: 91351e313ea08e68fd7b5ad39401e3aedb350845233567950aaa00d6214e95f0

예제 요청 (cURL)

curl -X DELETE "https://api.sysmate.example/api/admin/keys?hash=91351e313ea08e68fd7b5ad39401e3aedb350845233567950aaa00d6214e95f0" \
  -H "x-admin-token: $API_TOKEN"

응답

상태본문설명
204—폐기됨 (본문 없음)
GET/api/admin/generations Auth Raw Spec

키별 생성 내역 조회 (갤러리·추적용)

특정 키(사용 업체)가 free-images API 로 생성에 성공한 건을 반환합니다(실패·진행중은 포함하지 않음). 시스메이트가 업체별 갤러리를 만들거나 생성 내역을 추적하는 용도입니다. 재생성은 원본을 뿌리로 하는 스레드로 묶입니다: 항목의 rootId 가 스레드 id, regeneratedFrom 이 부모입니다. view=roots 로 스레드 뿌리만(변형 수·마지막 활동 시각 포함) 받고, rootId=<뿌리 id> 로 그 스레드 전체를 오래된 순으로 받습니다. 기간 제한 없이 전체가 대상이고 from/to 로 좁힐 수 있습니다. 각 항목은 요약이며 상세는 GET /v1/free-images/{id} 로 조회하세요. 썸네일(thumbnailUrl)은 2026-09-03 이후 생성분에 있으며 없으면 image.url(원본, 1~3MB)로 폴백해야 합니다. 이미지 URL 은 인증 없이 공개 서빙되므로 URL 을 아는 누구나 볼 수 있습니다(발급 키 응답과 동일).

매개변수

이름위치타입필수설명
labelquerystring—대상 키의 라벨(정확 일치, 활성 키만). hash 와 둘 중 정확히 하나. 미일치 404, 같은 라벨이 여러 개면 409 + 후보. 라벨은 바뀔 수 있으니(PATCH newLabel) 시스템에 저장해 두는 식별자는 hash 를 쓰세요.예: 초록우산
hashquerystringpattern: ^[0-9a-f]{64}$—대상 키의 sha256 해시. 키 존재를 요구하지 않아 폐기된 키의 이미지도 조회됩니다(key.label 은 null).
viewquery"all" | "roots"default: "all"—all = 평면 최신순. roots = 재생성 스레드의 뿌리만, 마지막 활동 순 — 항목에 variantCount·threadUpdatedAt 이 붙습니다.
rootIdquerystring—스레드 뿌리 id. 지정하면 그 스레드의 성공 건 전부를 오래된 순으로 반환합니다(view·cursor 무시, 최대 limit). 갤러리에서 뿌리 카드를 펼칠 때 사용.
fromquerystring (date)format: date—KST 날짜(YYYY-MM-DD), 이 날 00:00 부터. 생략 시 제한 없음.
toquerystring (date)format: date—KST 날짜(YYYY-MM-DD), 이 날 포함. 생략 시 제한 없음.
limitqueryintegerdefault: 50min: 1max: 200—페이지 크기. 200 초과는 200 으로 잘립니다. 0·음수·정수 아님은 400.
cursorquerystring—이전 응답의 nextCursor 그대로. 해석 불가면 400.

예제 요청 (cURL)

curl -X GET "https://api.sysmate.example/api/admin/generations?label=%EC%B4%88%EB%A1%9D%EC%9A%B0%EC%82%B0&hash=:hash&view=:view&rootId=:rootId&from=:from&to=:to&limit=:limit&cursor=:cursor" \
  -H "x-admin-token: $API_TOKEN"

응답

상태본문설명
GET/api/admin/usage Auth Raw Spec

키별 사용량 조회

기간 내 생성 요청을 키별·일별·엔드포인트별로 집계해 반환합니다. 집계는 전체 이벤트 기준이고, events 상세만 최신순 500건 캡입니다. 사용량 로그는 요청 수락 시 기록되는 편의 계층입니다 — 로깅 실패가 생성을 막지 않으며, 기록 시작 전 데이터는 소급되지 않습니다.

매개변수

이름위치타입필수설명
fromquerystringpattern: ^\d{4}-\d{2}-\d{2}$—조회 시작일 YYYY-MM-DD (UTC). 기본값은 to−6일(최근 7일). from ≤ to 여야 합니다.예: 2026-07-29
toquerystringpattern: ^\d{4}-\d{2}-\d{2}$—조회 종료일 YYYY-MM-DD (UTC). 기본값은 오늘. 기간은 최대 31일입니다.예: 2026-08-04
keyquerystring—특정 키만 집계 — summary·keyOptions 응답의 keyHash(sha256 hex) 값을 사용합니다. keyOptions 는 필터와 무관하게 전체 키를 유지합니다.

예제 요청 (cURL)

curl -X GET "https://api.sysmate.example/api/admin/usage?from=2026-07-29&to=2026-08-04&key=:key" \
  -H "x-admin-token: $API_TOKEN"

응답

상태본문설명
GET/api/admin/usage/quota Auth Raw Spec

키별 한도·잔여 조회 (기간별)

발급된 모든 키의 현재 기간 창(키의 period 에 따라 오늘 또는 이달, KST) 한도·소모·잔여를 한 번에 반환합니다. 소모는 성공 + 진행중이며 실패한 요청은 세지 않습니다(결과물이 나가지 않은 요청은 소모하지 않는다는 정책). 재생성(regenerate)은 결과물이 나가는 별도 생성이라 1회 소모합니다. 한도 게이트와 같은 키 레코드를 읽으므로 값이 항상 일치합니다.

매개변수

이름위치타입필수설명
hashquerystringpattern: ^[0-9a-f]{64}$—키 해시 단건 조회.
labelquerystring—라벨 정확 일치 조회. hash 와 함께 주면 hash 가 우선합니다. 라벨은 바뀔 수 있으니(PATCH newLabel) 시스템에 저장해 두는 식별자는 hash 를 쓰세요.예: 초록우산

예제 요청 (cURL)

curl -X GET "https://api.sysmate.example/api/admin/usage/quota?hash=:hash&label=%EC%B4%88%EB%A1%9D%EC%9A%B0%EC%82%B0" \
  -H "x-admin-token: $API_TOKEN"

응답

상태본문설명
POST/api/admin/usage/quota/reset Auth Raw Spec

이번 기간 한도 초기화(리셋)

대상 키의 이번 기간(daily 키는 오늘, monthly 키는 이달, KST) 사용량을 다시 채웁니다. 사용량 기록은 지우지 않고 리셋 시각(resetAt)을 키에 기록해 그 이전 소모를 제외합니다 — 사용량 리포트·CSV 수치는 그대로입니다. 다음 기간이 시작되면 리셋은 자동으로 효력을 잃어 원래 한도로 돌아갑니다(복구 요청 불필요). 같은 기간에 다시 호출하면 그 시각까지 다시 비워집니다. 한도가 없는(무제한) 키는 400. 언제 쓰나: 고객이 이번 달 한도를 다 썼는데 추가 사용을 허용해야 할 때 — 한도를 올렸다가 다음 달에 다시 내리는 2회 작업 대신 이 API 1회로 끝냅니다. 한도 자체를 바꾸려면 PATCH /api/admin/keys 를 쓰세요(그때 period 가 바뀌면 리셋 마커는 지워집니다). 권장 절차: ① GET /api/admin/usage/quota?label=… 로 used·remaining 확인 → ② 이 API 호출 → ③ 응답의 exemptedCount(이번 리셋으로 면제된 소모 수)·remaining 확인 → ④ 필요하면 GET /api/admin/audit 에서 key.quota.reset 기록 확인. 모든 호출에 x-admin-token 헤더가 필요합니다.

요청 본문 · application/json · 필수

다음 중 하나:

object

object

예시

라벨로 지정(권장) — 라벨은 키와 1:1 — 사람이 치는 경로

{
  "label": "초록우산"
}

해시로 지정 — 스크립트·자동화 경로. 목록/잔여 조회 응답의 hash 를 그대로

{
  "hash": "0b6f3625ca59f32f5f879b147d9f0ca71764924dd85720578fe6907b1248824f"
}

예제 요청 (cURL)

curl -X POST "https://api.sysmate.example/api/admin/usage/quota/reset" \
  -H "x-admin-token: $API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"label":"초록우산"}'

응답

상태본문설명