개발가이드워터마크Image 워터마크 삽입

Image 워터마크 삽입 API

명세 내보내기
OpenAPI 3.0.3Postman 컬렉션Markdown

이미지 위에 지정한 글자를 반복 무늬로 새긴 PNG 이미지를 돌려줍니다. 응답은 JSON이 아닌 이미지 파일입니다.

POSThttps://apick.app/rest/draw_watermark_image
인증
Bearer 키
요청 형식
form-data
응답
JSON · 파일
경로
1개

왜 Image 워터마크 삽입인가

사진에 로고 각인, 퍼가도 내 이름이 따라갑니다

상품 사진과 작품 이미지를 무단으로 퍼가는 일은 매일 일어나고, 일일이 편집해 로고를 넣기엔 손이 모자랍니다. 이미지에 워터마크를 자동으로 넣어 노출될 때마다 브랜드가 함께 보이게 합니다.

도입 효과

  • 로고 넣기 편집 작업을 자동화
  • 무단 퍼가기 억제와 브랜드 노출
  • 업로드 즉시 일괄 적용 가능

이런 곳에서 많이 씁니다

  • 쇼핑몰 상품 상세 사진 로고 삽입
  • 부동산 중개 매물 사진 각인
  • 사진작가 포트폴리오 공개본 보호
가입하고 API 키 받기API 키 하나로 바로 호출 · 실패한 요청은 과금되지 않습니다

알아둘 점

업로드 용량 제한: 50MB
multipart/form-data 요청에 포함된 첨부 이미지 합계는 최대 50MB입니다.
제한을 초과하면 HTTP 413과 REQUEST_TOO_LARGE 오류가 반환되며 과금되지 않습니다.

이용 전 확인

상품 사진·시안·신분증 사본처럼 다른 용도로 쓰이면 안 되는 이미지에 "SAMPLE", "제출용" 같은 표시를 넣을 때 사용합니다. PNG·JPEG·WEBP·BMP 이미지를 받으며 결과는 항상 PNG입니다.

선택 항목도 함께 보내는 것을 권장합니다. 아래 표의 기본값을 그대로 넣으면 생략했을 때와 같은 결과를 얻습니다.

성공한 건당 10P입니다. 실패 응답은 과금되지 않습니다.

요청과 응답

API 요청
POST/rest/draw_watermark_image
  • Bearer 인증
  • multipart/form-data
  • 파일 응답
요청 파라미터 6개 · 필수 2
파라미터
설명
imagefile필수
분석할 이미지 파일입니다. JPG·PNG·WEBP를 지원하며, 파일 크기·해상도 제한은 요청 표를 확인하세요.
wmstring필수
이미지에 반복 삽입할 워터마크 문구입니다. 최대 30자이며, 한글·영문·숫자를 지원합니다. 너무 길면 잘리거나 밀집도가 낮아집니다.
예시
SAMPLE
font_sizeinteger선택
워터마크 글자의 크기입니다. 10~100 범위이며, 생략하면 10입니다. 값이 클수록 문구가 굵고 선명해집니다.
예시
10
colorstring선택
워터마크 색상 HEX (000000 ~ FFFFFF, 기본값 EEEEEE)
예시
EEEEEE
opacitynumber선택
워터마크의 불투명도입니다. 0은 완전 투명, 1은 완전 불투명이며, 생략하면 0.5입니다. 원본을 가리지 않으려면 0.2~0.4를 권장합니다.
예시
0.5
densityinteger선택
가로·세로로 반복되는 워터마크의 간격 계수입니다. 5~15 범위이며, 값이 작을수록 촘촘하게 반복됩니다.
예시
10
응답 필드 파일

정상 응답은 파일 본문입니다. 실패 시 JSON 오류가 올 수 있으므로 HTTP 상태와 Content-Type을 먼저 확인하세요.

입력 조건·전송 규칙
항목
설정
메서드·주소
POST https://apick.app/rest/draw_watermark_image
인증 헤더
Authorization: Bearer 내 계정의 API 인증키
본문 형식
multipart/form-data
요청 예시

사용 예시

상황별로 보내는 값과 응답에서 확인할 값을 모았습니다. 언어 탭에서 그대로 복사해 쓸 수 있습니다.

예시 1. 상품 사진에 SAMPLE 표시

기본값을 그대로 함께 보내 옅은 회색 글자를 넣습니다.

요청POST/rest/draw_watermark_image
curl --fail-with-body --request POST 'https://apick.app/rest/draw_watermark_image' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form 'image=@./product.jpg' \
  --form-string 'wm=SAMPLE' \
  --form-string 'font_size=10' \
  --form-string 'color=EEEEEE' \
  --form-string 'opacity=0.5' \
  --form-string 'density=10' \
  --dump-header response.headers --output result.png
# response.headers의 Content-Type을 확인한 뒤 파일을 사용하세요.
  • 본문은 항상 PNG입니다. output.png로 저장하세요.
예시 2. 사본 이미지에 제출용 표시

사본이 다른 곳에 쓰이지 않도록 진하고 큰 글자로 넣습니다.

요청POST/rest/draw_watermark_image
curl --fail-with-body --request POST 'https://apick.app/rest/draw_watermark_image' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form 'image=@./copy.jpg' \
  --form-string 'wm=제출용' \
  --form-string 'font_size=40' \
  --form-string 'color=000000' \
  --form-string 'opacity=0.3' \
  --form-string 'density=8' \
  --dump-header response.headers --output result.png
# response.headers의 Content-Type을 확인한 뒤 파일을 사용하세요.
  • font_size는 10~100, density는 5~15, opacity는 0~1 범위입니다.
  • wm은 30자 이하로 보내세요.

응답 처리

HTTP 성공과 업무 결과를 구분하세요. 경로별 응답 필드와 예시는 위 요청과 응답에 함께 있습니다.

성공하면 워터마크가 들어간 PNG 본문이 바로 옵니다. 내려받기 파일명은 output.png입니다.

원문 응답 필드 표 보기
응답 헤더
필드
타입
설명
success
integer
1이면 처리에 성공한 것입니다.
cost
integer
이번 요청에서 차감된 포인트입니다.
ms
integer
처리 시간(밀리초)입니다.
Content-Type
string
image/png

오류 코드

응답을 아래 순서로 확인하세요. 결과 유무와 과금 여부는 서로 다릅니다.

  1. HTTP 상태전송·인증·입력 오류
  2. api.successAPI 처리 여부
  3. data · result업무 결과와 오류 문구
  4. api.cost이번 요청의 과금
서비스 코드·조건

오류와 대처

실패하면 이미지 대신 JSON이 옵니다. HTTP 상태와 Content-Type을 먼저 확인하고, JSON이면 data.error 문구를 기록하세요. 실패 응답의 api.cost는 0입니다.

HTTP
data.error
대처
400
필수 입력값이 없습니다.
wm에 글자를 넣으세요.
400
마킹 문자는 최대 30자까지 허용됩니다.
wm을 30자 이하로 줄이세요.
424
opacity·font_size·density 값은 … 값만 허용됩니다.
문구에 나온 항목을 위 표의 범위 안으로 고치세요.
400
파일 유형이 맞지 않습니다. 이미지 형식의 파일만 허용됩니다.
이미지 파일인지 확인하세요.
424
첨부파일이 없습니다.
파일 필드 이름을 image로 보냈는지 확인하세요.
424
알 수 없는 이유로 실패했습니다.
이미지를 PNG 또는 JPEG로 다시 저장해 한 번 더 요청하세요.
인증·포인트 오류 result.error 문구
코드
HTTP
의미·조치
유효하지 않은 API키 입니다.
401
Authorization: Bearer 헤더의 인증키를 확인하세요.
허용되지 않은 IP주소 입니다.
401
마이페이지의 허용 IP 설정과 요청 서버 IP를 확인하세요.
비활성화된 계정입니다.
401
계정 이용 상태를 고객지원으로 문의하세요.
사용 가능한 포인트이 부족합니다.
200
HTTP 200이어도 result.error가 있으면 실패입니다. 포인트를 충전한 뒤 다시 요청하세요. 이 응답은 과금되지 않습니다.
인증 정보를 확인할 수 없습니다.
424
일시적인 확인 실패입니다. 잠시 후 다시 시도하세요.
폼 입력 오류 error.code
코드
HTTP
의미·조치
FORM_DATA_INVALID
400
필드 이름·값의 타입·배열 인덱스를 확인하세요. 인덱스는 0부터 연속으로 사용합니다.
FORM_DATA_FIELD_CONFLICT
400
같은 값과 중첩 경로를 동시에 지정하지 마세요.
MULTIPART_LIMIT_OR_PARSE_ERROR
400·413
boundary·파일 크기·필드 개수를 확인하세요. 서비스별 제한이 우선 적용됩니다.

요금·이용 조건

기본 요금기본 단가 10P · 건당

실제 차감 금액은 응답의 api.cost로 확인하세요. 상세 요금은 요금정책에서 볼 수 있습니다.

연동 팁

  • 요청 예제의 오류 처리 포함 모드는 시간 제한과 업무 실패 판정을 함께 보여줍니다.
  • 인증키는 서버 환경변수에 두고 브라우저·앱에 넣지 마세요.
  • HTTP 성공과 업무 결과를 구분하고, 실패 응답의 오류 문구를 그대로 기록하세요.
추가 예제·서비스별 연동 안내

결과 예시

[이미지] Image 워터마크 삽입 결과 예시

호출 예시

같은 요청을 JavaScript와 Python으로 옮긴 예시입니다. 키는 환경변수 APICK_API_KEY 에서 읽습니다.

JavaScript 예시
Python 예시

개발가이드 검색

API 이름·경로·파라미터·오류 코드로 찾을 수 있습니다.

표시 가격은 기본 단가입니다. 상세 과금 조건은 각 가이드에서 확인하세요.