API 개요
urlu의 QR(/api/qr)과 URL 단축(/api/shorten) API는 API 키 없이 호출할 수 있고, 모든 응답에 CORS가 열려 있습니다. 서버·브라우저·엣지 함수 어디서든 같은 엔드포인트를 쓸 수 있습니다.
QR API는 저장소를 사용하지 않습니다. 요청마다 PNG/SVG 바이트를 반환하므로, `<img src>`에 URL을 그대로 넣거나 curl --output으로 파일로 저장하면 됩니다. 단축 API만 링크 레코드를 DB에 남깁니다.
단축 후 QR — 권장 패턴
1) POST /api/shorten에 {"url":"…","slug":"optional"}를 보냅니다. 2) 응답의 shortUrl을 data=에 넣어 GET /api/qr?data=…&size=512로 PNG를 받습니다.
이 순서를 지키면 QR 데이터가 짧아지고, 클릭 집계도 단축 링크 기준으로 일관됩니다. /docs 페이지에 파라미터 표와 curl 예제가 있습니다.
배치·대량 생성
행사 명단·제품 목록마다 QR이 필요하면, 스크립트에서 URL 목록을 loop 돌며 /api/qr을 호출합니다. 레이트 리밋은 없지만, 초당 수십 건 이상은 자체적으로 간격을 두는 것이 좋습니다.
response=json을 쓰면 data URL 형태의 JSON을 받을 수 있어, 모바일 앱 미리보기나 Slack 봇에 붙이기 쉽습니다.
오류와 한도
QR 데이터는 최대 2,953바이트입니다. 초과 시 413 payload_too_large가 옵니다. 문서 본문 QR이 아니라면 거의 해당되지 않습니다.
오류 본문은 {"error":{"code","message","details?"}} 형식입니다. validation_failed(422)일 때 details에 필드별 이유가 있습니다.
자체 서버에서 urlu API를 프록시할 때는 사용자 입력 URL을 그대로 넘기지 말고, 허용 프로토콜(http/https)만 검증하세요.