CreateQR 개발자 매뉴얼

CreateQR API로 동적 QR 코드 생성을 자동화하세요

JSON 엔드포인트를 사용해 자체 시스템에서 QR 코드를 생성, 조회, 삭제하세요. 캠페인과 관리형 목적지에는 동적 QR 코드를, 지원되는 경우 WiFi와 암호화폐 지갑용 정적 QR 코드를 생성할 수 있습니다.

기본 경로: /api/v1 인증: Authorization: Bearer <key> (권장)

QR 코드 생성

URL과 관리형 대상에는 dynamic QR 코드를, WiFi와 암호화폐 지갑 페이로드에는 static QR 코드를 생성합니다.

POST https://createqr.app/api/v1/create

JSON만 전송하세요. 키 인증의 경우 헤더 사용이 권장됩니다. 본문의 키 필드는 기존 통합과의 호환성을 위해 제공됩니다.

빠른 시작(cURL)

이 dynamic URL 예시가 가장 빠른 Hello World 경로입니다.

curl -sS -X POST 'https://createqr.app/api/v1/create' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer ck_live_XXXXXXXXXXXXXXXXXXXXXXXX' \
  -d '{"data":"https://createqr.app","qrtype":"dynamic"}'

인증 및 호환성

  • 권장: Authorization: Bearer <key>
  • 다음도 허용됨: X-API-Key
  • JSON 대체 필드: apikey 또는 api_key
  • Content-Type은 application/json이어야 합니다
  • POST가 아닌 메서드는 405 method_not_allowed를 반환합니다

기본 매개변수

매개변수 유형 기본값 설명
apikey String 필수 비밀 API 키입니다. Authorization 헤더(Bearer) 사용을 권장합니다. JSON 본문의 apikey/api_key도 허용됩니다.
data String 필수 인코딩할 콘텐츠입니다. dynamic QR에는 유효한 URL이 필요합니다. static QR은 WiFi 페이로드 문자열 또는 암호화폐 지갑 주소만 허용합니다.
qrtype String dynamic QR 모드: URL과 관리형 대상에는 dynamic, WiFi와 암호화폐 지갑 페이로드에는 static만 사용합니다.
title String 선택 사항 대시보드에 표시되는 QR 제목입니다(120자까지 잘림).
folderid Number 선택 사항 계정에 속한 양의 정수 폴더 ID입니다.

색상 및 모양 매개변수

매개변수 유형 기본값 설명
transparent 문자열/불리언 off on/off, true/false, 1/0, yes/no를 허용합니다.
backcolor String #FFFFFF #RRGGBB 형식의 배경 16진수 색상입니다.
frontcolor String #000000 #RRGGBB 형식의 기본 점 16진수 색상입니다.
gradient 문자열/불리언 off 두 가지 색상의 점 그라데이션을 활성화합니다.
radial 문자열/불리언 off 방사형 그라데이션을 활성화합니다(gradient가 켜져 있을 때 작동).
gradient_color String #15A97C #RRGGBB 형식의 두 번째 그라데이션 색상입니다.
marker_out_color String #000000 모서리 점 주변 프레임 색상 in #RRGGBB format.
marker_in_color String #000000 모서리 점 색상 in #RRGGBB format.
pattern String default 본문 점 스타일 프리셋입니다.
default circle star diamond sparkle danger cross plus x heart shake blob special-circle-orizz special-circle-vert special-circle special-diamond ribbon oriental ellipse
marker String default 모서리 점 주변 프레임 스타일.
corner_1 corner_2 corner_3 corner_4 corner_5 corner_6 corner_7 corner_8
marker_in String default 모서리 점 유형.
corner_in_1 corner_in_2 corner_in_3 corner_in_4 corner_in_5 corner_in_6 corner_in_7 corner_in_8
optionlogo String none none, 권장되는 로컬 SVG 워터마크 경로, 레거시 로컬 PNG 경로 또는 base64 이미지 데이터입니다.
none /images/watermarks/v2/01-link.svg /images/watermarks/v2/02-location.svg /images/watermarks/v2/03-email.svg /images/watermarks/v2/04-whatsapp.svg /images/watermarks/v2/05-wifi.svg /images/watermarks/v2/06-vcard.svg /images/watermarks/v2/07-menu.svg /images/watermarks/v2/08-app.svg /images/watermarks/v2/09-video.svg /images/watermarks/v2/10-feedback.svg /images/watermarks/v2/11-event.svg /images/watermarks/v2/12-coupon.svg /images/watermarks/v2/13-music.svg /images/watermarks/v2/14-social.svg /images/watermarks/v2/15-paypal.svg /images/watermarks/v2/16-bitcoin.svg /images/watermarks/v2/17-scan.svg data:image/*;base64,...
no_logo_bg String/Bool on 로고 배경판을 제거합니다.

프레임 매개변수

매개변수 유형 기본값 설명
outer_frame String none 프레임 스타일 프리셋입니다.
none svg_frame_01 svg_frame_02 svg_frame_03 svg_frame_04 svg_frame_05 svg_frame_06 svg_frame_07 svg_frame_08 svg_frame_09 svg_frame_10 svg_frame_11 svg_frame_12 svg_frame_13 svg_frame_14 svg_frame_15 svg_frame_16 svg_frame_19 svg_frame_22 svg_frame_23 svg_frame_26 svg_frame_27 svg_frame_28 svg_frame_29 svg_frame_30 svg_frame_31 svg_frame_33 svg_frame_34 svg_frame_35 svg_frame_36 svg_frame_38 svg_frame_42
framelabel String 스캔하세요 프레임 텍스트 라벨입니다(80자까지 잘림).
label_font String Arial, Helvetica, sans-serif 프레임 라벨용 글꼴 스택입니다.
custom_frame_color 문자열/불리언 off 사용자 지정 프레임 색상을 활성화합니다.
framecolor String #000000 #RRGGBB 형식의 프레임 16진수 색상입니다.

생성 요청 예시

예시: 기본 QR

No-frills, fast scan

Request Method:
POST
Request URL:
https://createqr.app/api/v1/create
Request Parameters:

All parameters need to be sent as a JSON object in the request body.

{
    "apikey": "ck_live_XXXXXXXXXXXXXXXXXXXXXXXX",
    "data": "https://createqr.app",
    "qrtype": "dynamic",
    "title": "Launch Landing QR",
    "transparent": "off",
    "backcolor": "#FFFFFF",
    "frontcolor": "#000000",
    "marker_out_color": "#000000",
    "marker_in_color": "#000000",
    "pattern": "default",
    "marker": "corner_1",
    "marker_in": "corner_in_1",
    "optionlogo": "none"
}
Request Outcome
예시 출력 미리보기

예시: static WiFi QR

Built for distance

Request Method:
POST
Request URL:
https://createqr.app/api/v1/create
Request Parameters:

All parameters need to be sent as a JSON object in the request body.

{
    "apikey": "ck_live_XXXXXXXXXXXXXXXXXXXXXXXX",
    "data": "WIFI:T:WPA;S:CreateQR Guest;P:guest-2026;H:false;;",
    "qrtype": "static",
    "title": "Guest Wi-Fi QR",
    "transparent": "off",
    "backcolor": "#0B1220",
    "frontcolor": "#FFFFFF",
    "marker_out_color": "#F4C84A",
    "marker_in_color": "#F4C84A",
    "pattern": "circle",
    "marker": "corner_3",
    "marker_in": "corner_in_3",
    "optionlogo": "none"
}
Request Outcome
예시 출력 미리보기

Brand Color

Theme-aligned campaign

Request Method:
POST
Request URL:
https://createqr.app/api/v1/create
Request Parameters:

All parameters need to be sent as a JSON object in the request body.

{
    "apikey": "ck_live_XXXXXXXXXXXXXXXXXXXXXXXX",
    "data": "https://createqr.app/pricing",
    "qrtype": "dynamic",
    "title": "Pricing QR",
    "transparent": "off",
    "backcolor": "#EAF4FF",
    "frontcolor": "#033895",
    "marker_out_color": "#15A97C",
    "marker_in_color": "#15A97C",
    "pattern": "special-circle-orizz",
    "marker": "corner_4",
    "marker_in": "corner_in_4",
    "optionlogo": "none"
}
Request Outcome
예시 출력 미리보기

예시: 컬러 + 로고

Preset watermark icon

Request Method:
POST
Request URL:
https://createqr.app/api/v1/create
Request Parameters:

All parameters need to be sent as a JSON object in the request body.

{
    "apikey": "ck_live_XXXXXXXXXXXXXXXXXXXXXXXX",
    "data": "https://createqr.app/features",
    "qrtype": "dynamic",
    "title": "Feature Tour QR",
    "transparent": "off",
    "backcolor": "#033895",
    "frontcolor": "#FFFFFF",
    "marker_out_color": "#669DF4",
    "marker_in_color": "#669DF4",
    "pattern": "ribbon",
    "marker": "corner_5",
    "marker_in": "corner_in_5",
    "optionlogo": "/images/watermarks/v2/01-link.svg"
}
Request Outcome

예시: 프레임 캠페인 QR

Poster-ready "SCAN ME"

Request Method:
POST
Request URL:
https://createqr.app/api/v1/create
Request Parameters:

All parameters need to be sent as a JSON object in the request body.

{
    "apikey": "ck_live_XXXXXXXXXXXXXXXXXXXXXXXX",
    "data": "https://createqr.app/pricing",
    "qrtype": "dynamic",
    "title": "Pricing Poster QR",
    "transparent": "off",
    "frontcolor": "#2B0011",
    "marker_out_color": "#3B0001",
    "marker_in_color": "#3B0001",
    "pattern": "ellipse",
    "marker": "corner_8",
    "marker_in": "corner_in_7",
    "optionlogo": "none",
    "outer_frame": "balloon-top",
    "framelabel": "SCAN ME",
    "label_font": "Arial, Helvetica, sans-serif",
    "custom_frame_color": "on",
    "framecolor": "#3B0001"
}
Request Outcome
예시 출력 미리보기

Gradient Mood

Extra style for socials

Request Method:
POST
Request URL:
https://createqr.app/api/v1/create
Request Parameters:

All parameters need to be sent as a JSON object in the request body.

{
    "apikey": "ck_live_XXXXXXXXXXXXXXXXXXXXXXXX",
    "data": "https://createqr.app/why-us",
    "qrtype": "dynamic",
    "title": "Brand Story QR",
    "transparent": "off",
    "backcolor": "#FFFFFF",
    "frontcolor": "#4B1EFF",
    "gradient": "on",
    "radial": "off",
    "gradient_color": "#FF7A00",
    "marker_out_color": "#101828",
    "marker_in_color": "#101828",
    "pattern": "special-diamond",
    "marker": "corner_6",
    "marker_in": "corner_in_8",
    "optionlogo": "none"
}
Request Outcome
예시 출력 미리보기

예시: 암호화폐 지갑용 static QR

Static crypto address

Request Method:
POST
Request URL:
https://createqr.app/api/v1/create
Request Parameters:

All parameters need to be sent as a JSON object in the request body.

{
    "apikey": "ck_live_XXXXXXXXXXXXXXXXXXXXXXXX",
    "data": "bitcoin:bc1qexampleaddress",
    "qrtype": "static",
    "title": "Bitcoin Wallet QR",
    "transparent": "off",
    "backcolor": "#FFF7ED",
    "frontcolor": "#1F2937",
    "marker_out_color": "#F7931A",
    "marker_in_color": "#F7931A",
    "pattern": "circle",
    "marker": "corner_2",
    "marker_in": "corner_in_2",
    "optionlogo": "/images/watermarks/v2/16-bitcoin.svg"
}
Request Outcome
예시 출력 미리보기

성공 응답 엔벌로프

{
    "success": true,
    "data": {
        "qrid": "1284",
        "svg": "<svg ...>...</svg>",
        "type": "dynamic",
        "title": "Launch Landing QR",
        "dashboard_url": "https://createqr.app/app/qrs/1284",
        "download_url": "https://createqr.app/app/qrs/1284/download/svg"
    },
    "request_id": "0f8fad5b-d9cb-469f-a165-70867728950e"
}

QR 코드 삭제

ID로 QR 코드를 삭제합니다(소유자만 가능).

POST https://createqr.app/api/v1/delete

요청 본문

{
    "apikey": "ck_live_XXXXXXXXXXXXXXXXXXXXXXXX",
    "qrid": "1284"
}

응답

{
    "success": true,
    "data": {
        "deleted": true,
        "qrid": "1284"
    },
    "request_id": "0f8fad5b-d9cb-469f-a165-70867728950e"
}

QR 코드 목록

QR 코드를 최신순으로 페이지당 100개씩 조회합니다.

POST https://createqr.app/api/v1/list

페이지네이션은 1부터 시작하세요. 결과는 페이지당 최대 100개 항목을 반환합니다.

요청 본문

{
    "apikey": "ck_live_XXXXXXXXXXXXXXXXXXXXXXXX",
    "pagination": "1"
}

응답

{
    "success": true,
    "data": {
        "pagination": "1",
        "page_size": 100,
        "total": 2,
        "items": [
            {
                "qrid": "1284",
                "title": "Campaign QR",
                "type": "dynamic",
                "created_at": "2026-02-17 09:12:30",
                "short_url": "https://createqr.app/r/a1b2c3",
                "dashboard_url": "https://createqr.app/app/qrs/1284"
            },
            {
                "qrid": "1269",
                "title": "Guest Wi-Fi QR",
                "type": "static",
                "created_at": "2026-02-17 08:02:08",
                "dashboard_url": "https://createqr.app/app/qrs/1269"
            }
        ]
    },
    "request_id": "0f8fad5b-d9cb-469f-a165-70867728950e"
}

오류 응답, 제한 및 재시도

모든 응답에는 request_id가 포함됩니다. 빠르게 디버깅할 수 있도록 지원팀에 문의할 때 이를 함께 전달해 주세요.

일반적인 오류 응답 형식

{
    "success": false,
    "error": {
        "code": "validation_error",
        "message": "Static QR is only available for WiFi payloads or crypto wallet addresses."
    },
    "request_id": "5f5fbd38-f82f-49ad-bf11-f7f04ca9747a"
}

재시도 전략

  • 429 rate_limited: 지터를 포함한 지수 백오프로 재시도하세요.
  • Retry-After가 있으면 이를 준수하세요.
  • 429 monthly_quota_exceeded: 할당량이 재설정될 때까지 기다리거나 남은 할당량이 있는 키를 사용하세요.
  • 5xx: 시도 횟수 상한을 두고 재시도한 후, 팀에 알리세요.
오류 코드 HTTP 발생 시점 대응 방법
invalid_api_key 401 API 키가 없거나 유효하지 않음 Bearer, X-API-Key 또는 JSON 본문 필드를 통해 유효한 키를 제공하세요.
invalid_content_type 415 본문이 application/json이 아님 Content-Type: application/json을 전송하세요.
request_too_large 413 페이로드가 설정된 제한을 초과함 본문 크기를 줄이세요. 특히 base64 로고를 확인하세요.
plan_upgrade_required 403 현재 요금제에서는 API를 사용할 수 없음 결제 페이지에서 Business로 업그레이드하세요.
validation_error 422 URL, static 페이로드, color 또는 folderid 등의 필드가 유효하지 않음 URL과 관리형 대상에는 dynamic을 사용하고, WiFi 또는 암호화폐 지갑 페이로드에만 static을 사용하세요.
rate_limited 429 분당 제한에 도달함 지수 백오프로 재시도하고 Retry-After를 준수하세요.
monthly_quota_exceeded 429 월간 할당량을 모두 소진함 재설정을 기다리거나 할당량 및 키 설정을 조정하세요.
qr_not_found 404 삭제 대상이 없거나 본인 소유가 아님 qrid 소유권을 확인한 후 다시 시도하세요.
internal_error 500 예기치 않은 서버 측 문제 백오프로 재시도하고 지원팀 문의를 위해 request_id를 보관하세요.

자주 묻는 질문

통합에서 가장 자주 받는 질문에 대한 짧은 답변입니다.

API 요청은 몇 번까지 실행할 수 있나요?

API는 Business 전용입니다. 월간 할당량은 활성 플랜과 키별 재정의 설정에 따라 결정됩니다. 기본 Business 제공량은 넉넉하며, 관리자는 키별로 세부 조정할 수 있습니다.

JSON 본문에 API 키를 보낼 수 있나요?

예. 헤더 기반 인증을 권장하지만, 호환성을 위해 본문 필드 apikey 또는 api_key도 허용됩니다.

API로 static QR 코드를 만들 수 있나요?

예, 하지만 static 모드는 WiFi 페이로드 문자열과 암호화폐 지갑 주소로 제한됩니다. URL, PDF, 메뉴, 앱, 소셜 페이지 및 기타 관리형 대상에는 dynamic 모드를 사용하세요.

API로 생성한 QR도 대시보드에 표시되나요?

예. 생성에 성공한 모든 QR은 계정에 저장되며 다른 QR과 동일하게 관리할 수 있습니다.

한도에 도달하면 어떻게 되나요?

JSON 오류를 받게 됩니다. 429 응답의 경우 Retry-After를 준수하고 지터를 포함한 지수 백오프를 사용하세요.

다른 계정의 QR을 삭제할 수 있나요?

아니요. 삭제와 목록 조회는 인증된 API 키 소유자 범위로 제한됩니다.

보안 모범 사례

  • 브라우저 JavaScript, 모바일 번들 또는 공개 저장소에 원시 API 키를 절대 노출하지 마세요.
  • API 키 IP 허용 목록을 사용해 신뢰할 수 있는 서버로만 사용을 제한하세요.
  • 더 빠른 사고 분류를 위해 request_id를 자체 추적 ID와 함께 기록하세요.
  • 정기적으로 키를 교체하고 자격 증명 유출 직후에는 즉시 교체하세요.
API 키 관리자 열기