QR 생성 API
인증 없이 호출할 수 있는 이미지 생성 API 입니다. 같은 파라미터는 항상 같은 이미지를 돌려주므로 GET 응답은 1년 캐시(immutable)됩니다. CORS 가 열려 있어 다른 사이트에서도 바로 쓸 수 있습니다.
엔드포인트
GET
/api/qr?data=...&style=...쿼리스트링POST
/api/qrJSON 본문 · 캐시 안 함응답은 이미지 바이트입니다 (image/png 또는 image/svg+xml).
파라미터
- datastring
- QR 에 담을 내용 (URL, 텍스트). 최대 2000자. 길수록 칸이 촘촘해집니다.기본값
필수 - formatpng | svg
- 출력 형식. 인쇄에는 svg 를 권장합니다.기본값
png - sizenumber
- PNG 한 변 픽셀 (64–4096). SVG 는 width/height 속성으로 들어갑니다.기본값
1024 - stylesquare | dots | rounded
- 모듈 모양. rounded 는 이웃 칸끼리 이어지는 리퀴드 모양입니다.기본값
square - eyesquare | rounded | circle
- 모서리 위치 마커(파인더) 모양.기본값
square - fghex
- 코드 색. # 은 빼거나 %23 으로 인코딩합니다.기본값
111111 - fg2hex
- 그라디언트 끝 색. gradient 와 함께 씁니다.기본값
- - gradientnone | diagonal | horizontal | vertical | radial
- 코드 색 그라디언트 방향.기본값
none - bgtransparent | hex
- 배경. 기본은 투명입니다.기본값
transparent - plateboolean
- 코드 뒤에 둥근 판을 깔고 판 바깥은 투명하게 둡니다. 어두운 바탕에 붙일 때 권장.기본값
false - plateColorhex
- 판 색.기본값
ffffff - logostring
- 가운데 배지 글자 (4글자 이하, 한글 가능). 지정하면 오류정정이 H 로 고정됩니다.기본값
- - logoBghex
- 배지 색.기본값
fg 와 같음 - logoFghex
- 배지 글자 색.기본값
ffffff - eccauto | L | M | Q | H
- 오류정정 레벨. auto 는 사각형이면 M, 꾸민 모양이면 H.기본값
auto - marginnumber
- 바깥 여백 칸 수 (0–16). 스캔 안정성을 위해 4 이상 권장.기본값
4 - downloadboolean
- 1 이면 Content-Disposition: attachment 로 내려받기를 유도합니다.기본값
false
예시
HTML 에 바로 넣기
<img src="https://qr.core.today/api/qr?data=https%3A%2F%2Faiart.ulsan.ai%2F&style=dots&eye=rounded&fg=7c3aed&fg2=2563eb&gradient=diagonal" alt="QR" />curl (GET) — 검은 바탕용 흰 판 PNG
curl -o qr.png "https://qr.core.today/api/qr?data=https%3A%2F%2Faiart.ulsan.ai%2F&style=dots&eye=rounded&fg=7c3aed&plate=1&size=2048"curl (POST) — 로고 넣은 SVG
curl -X POST https://qr.core.today/api/qr \
-H "Content-Type: application/json" \
-d '{
"data": "https://aiart.ulsan.ai/",
"format": "svg",
"style": "rounded",
"eye": "rounded",
"fg": "#ec4899", "fg2": "#7c3aed", "gradient": "diagonal",
"logo": "AI", "logoBg": "#7c3aed"
}' -o qr.svgJavaScript
const res = await fetch("https://qr.core.today/api/qr", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ data: "https://core.today", style: "dots", size: 512 }),
});
if (!res.ok) throw new Error((await res.json()).error);
const blob = await res.blob(); // image/png오류
잘못된 파라미터는 400 과 함께 JSON 을 돌려줍니다.
{
"error": "잘못된 파라미터입니다",
"issues": [{ "path": "fg", "message": "색상은 #rrggbb 형식이어야 합니다" }]
}내용이 QR 용량을 넘으면 {"error":"데이터가 너무 길어 QR 코드에 담을 수 없습니다"} (400) 입니다.
잘 읽히게 만드는 요령
- 표준 QR 은 진한 코드 + 밝은 바탕을 전제로 합니다. 배경이 투명하면 붙일 곳의 바탕이 밝아야 합니다.
- 어두운 바탕에는
plate=1(흰 판) 을 권장합니다. 흰 코드(fg=ffffff)는 반전 QR 이라 최신 휴대폰 카메라는 대부분 읽지만, 일부 스캐너 앱은 읽지 못합니다. - 로고·도트·리퀴드처럼 꾸밀수록 오류정정 H 가 안전합니다 (auto 가 알아서 고릅니다).
- 내용이 짧을수록 칸이 커져 작게 인쇄해도 잘 읽힙니다. 인쇄 전 여러 기기로 실제 스캔을 확인하세요.