sayren Docs
업로드

파일 업로드 자리 발급

파일 바이트는 이 API를 거치지 않는다. 응답 `uploadUrl`에 파일을 그대로 PUT하면(1시간 유효) `url`이 공개 주소가 된다. 상품 이미지는 그 주소를 상품의 `images`에 넣는다. 허용 확장자와 크기 상한은 `purpose`가 정한다 — `product-image`: jpg·jpeg·png·webp·avif·gif / 최대 10MB, `description`: jpg·jpeg·png·gif·webp·avif·svg·mp4·webm·mov / 최대 50MB, `flow-attachment`: jpg·jpeg·png·webp·avif·gif·pdf / 최대 20MB, `ai-attachment`: jpg·jpeg·png·webp·gif·pdf / 최대 10MB. 객체 키는 서버가 정하므로 보낸 파일명은 확장자만 쓰이고 저장되지 않는다.

POST
/v1/uploads

파일 바이트는 이 API를 거치지 않는다. 응답 uploadUrl에 파일을 그대로 PUT하면(1시간 유효) url이 공개 주소가 된다. 상품 이미지는 그 주소를 상품의 images에 넣는다. 허용 확장자와 크기 상한은 purpose가 정한다 — product-image: jpg·jpeg·png·webp·avif·gif / 최대 10MB, description: jpg·jpeg·png·gif·webp·avif·svg·mp4·webm·mov / 최대 50MB, flow-attachment: jpg·jpeg·png·webp·avif·gif·pdf / 최대 20MB, ai-attachment: jpg·jpeg·png·webp·gif·pdf / 최대 10MB. 객체 키는 서버가 정하므로 보낸 파일명은 확장자만 쓰이고 저장되지 않는다.

Authorization

accessToken
headerAuthorizationBearer <token>

Sayren 계정 토큰(로그인 토큰 또는 개인 액세스 토큰, RFC 9068 JWT)

Header Parameters

X-Store-Id*string

대상 상점 id. 토큰의 상점 범위 밖이면 403 STORE_NOT_GRANTED, 없으면 400 STORE_ID_REQUIRED다

Request Body

application/json
  1. body
filename*string
Length1 <= length <= 255
purpose?string

업로드 용도. 허용 확장자와 크기 상한이 용도별로 다르다

Default"description"
Value in"product-image""description""flow-attachment""ai-attachment"
size?integer

파일 바이트 크기. 주면 용도별 상한을 발급 전에 검사한다

Range0 < value

Response Body

자리 발급 완료

application/json
  1. response
meta*
data*
error*|null
curl -X POST 'https://api.sayren.io/v1/uploads' \  -H 'X-Store-Id: string' \  -H 'Content-Type: application/json' \  -d '{  "filename": "string"}'
{  "meta": {    "status": 201,    "code": "OK",    "message": "OK",    "isSuccess": true  },  "data": {    "url": "http://example.com",    "uploadUrl": "http://example.com"  },  "error": null}