메인 콘텐츠로 건너뛰기
POST
참조 파일을 업로드하면 공개 URL이 바로 반환되며 폴링은 필요하지 않습니다. 보관 기간은 3, 7, 15, 30일입니다. 3일 보관은 계정 무료 한도 내에서 무료이며, 초과분과 장기 보관에는 유료 업로드 활성화가 필요합니다. 실제 무료 한도와 사용 가능한 옵션은 콘솔에서 확인하세요.
문서 Playground는 파일 업로드를 지원하지 않습니다. 아래 cURL, Python, JavaScript 예제를 사용하세요. JavaScript 예제에는 파일을 선택한 <input type="file"> 요소가 필요합니다.

인증

string
필수
활성 상태이며 만료되지 않은 유효한 APIMart API Key를 Bearer <token> 형식으로 사용하세요. 계정은 정지되지 않아야 하며 잔액이 양수여야 합니다. 유료 업로드에는 해당 비용을 지불할 충분한 계정 잔액과 API Key의 남은 사용 금액 한도가 필요합니다. 무료 파일 한도와 Key의 지출 한도는 별개입니다. API Key 관리에서 Key를 발급받을 수 있습니다.

요청 매개변수

integer
선택 사항이며 3, 7, 15, 30일을 지원합니다. 지정하면 계정 기본값을 덮어씁니다. 생략하면 콘솔에서 현재 적용 중인 기본값을 사용하므로 항상 3일인 것은 아닙니다. URL 쿼리 매개변수만 적용되며 같은 이름의 폼 필드는 무시됩니다. 사용 가능한 옵션은 콘솔을 확인하세요.
file
필수
multipart/form-data의 file 필드에 파일명과 함께 파일 하나를 전송하세요. 파일 부분을 JSON, base64 문자열, 파일 URL로 대체하지 마세요. 다른 폼 필드는 무시하며 여러 file 부분을 보내면 첫 번째만 처리합니다.지원 형식: JPEG (.jpg, .jpeg), PNG (.png), GIF (.gif), WebP (.webp)기본 파일 크기 상한: 30MB. 크기 상한은 설정에 따라 변경될 수 있습니다. 실제 서비스 설정과 크기 초과 오류의 값을 기준으로 하세요.
cURL --form, Python files, JavaScript FormData를 사용할 때는 클라이언트가 boundary를 포함한 Content-Type을 생성하도록 두세요. 이 헤더를 직접 설정하지 마세요.

파일 검증

확장자나 클라이언트가 지정한 MIME 유형이 아닌 실제 내용으로 형식을 판별합니다. 내용은 업로드 API 종류와 일치해야 합니다. 이름을 바꿔도 형식이 변환되지 않으며 유형 불일치는 HTTP 400을 반환합니다. 이미지 전체가 디코딩되어야 하며 총 40MP 이하, 각 변 32768픽셀 이하여야 합니다. GIF는 최대 500프레임입니다.

보관 기간과 유료 업로드 설정

콘솔 개요에서 무료 한도와 현재 가격을 확인하고, 유료 업로드를 활성화하여 가격에 동의한 뒤 기본 보관 기간을 선택하세요. 콘솔의 단가와 실제 파일 크기로 과금하며, 1 GB = 1024³바이트입니다. 업로드 실패 시 환불됩니다. 특정 옵션의 가격이 인상되면 다시 사용하기 전에 재확인해야 하며, 인하 시에는 필요하지 않습니다. 유료 업로드를 끄면 새 업로드 비용이 발생하지 않고 기본 보관 기간이 3일로 초기화됩니다. 다시 켤 때 현재 가격을 확인해야 합니다. 설정한 장기 보관 옵션을 사용할 수 없게 되면 적용 중인 기본값도 3일로 돌아갑니다. 콘솔 표시를 확인하세요.
기본값이 7, 15, 30일이면 retention_days를 생략해도 무료 한도가 남아 있는지와 관계없이 파일마다 과금됩니다. 해당 요청에 3일 규칙을 적용하려면 retention_days=3을 지정하세요. 위 요청 예제는 모두 3일을 명시합니다.
아래 예제는 7일 보관을 지정합니다. 먼저 유료 업로드를 활성화하고 해당 가격을 확인해야 합니다.

성공 응답

HTTP 200으로 파일 정보를 반환합니다. url은 JSON 최상위에 있으며 data 래퍼나 생성 작업 ID는 없습니다. 응답 예제는 파일 정보만 표시하며 선택 필드인 quota와 overage는 생략합니다. 반환 조건은 아래 설명을 참고하세요.
string
파일 공개 URL입니다. 대상 생성 API의 해당 참조 매개변수에 전달하세요. 모델별 형식, 크기, 수량, 길이 제한이 별도로 적용되므로 업로드 성공이 모델 호환성을 보장하지는 않습니다.
string
원본 파일명입니다.
string
서버가 파일 내용에서 감지한 MIME 유형이며 클라이언트 선언값이 아닙니다.
string
파일 분류입니다. 이 API는 image를 반환합니다.
integer
실제 파일 크기(바이트)입니다.
integer
업로드 시각의 Unix 타임스탬프(초)입니다.
integer
실제로 적용된 보관 기간(일). 3, 7, 15, 30 중 하나입니다.
integer
파일 만료 시각을 나타내는 Unix 타임스탬프(초). URL 유효 기간은 이 값으로 판단하세요.
object
과금된 업로드에만 반환됩니다. 3일 옵션의 초과 업로드 또는 모든 7 / 15 / 30일 업로드가 대상입니다. charged는 과금 여부, bytes는 과금 파일 바이트 수, cost_usd는 이번 요금(USD), price_per_gb_usd는 GB당 단가, retention_days는 과금 옵션입니다. 무료 업로드에서는 생략됩니다.
object
계정 공용 무료 한도 정보이며 선택 필드입니다. 3일 옵션에서 반환되며 장기 보관은 무료 한도를 사용하지 않아 생략합니다. 무제한 계정과 통계 조회 불가 시 동작은 아래를 참고하세요.

공유 할당량과 요청 속도 제한

이미지, 영상, 오디오 API는 계정의 무료 한도를 공유하며 API Key가 여러 개여도 합산되지 않습니다. 기간은 매 정시에 이동하며 기본적으로 최근 약 71–72시간의 3일 옵션 성공 업로드를 집계합니다. 장기 보관, 형식 오류, 크기 초과, 저장 실패는 무료 한도를 사용하지 않습니다. 실제 한도는 콘솔 또는 quota.limit를 확인하세요. 3일 옵션의 일반 한도 응답에는 X-Upload-Quota-Limit, X-Upload-Quota-Remaining, X-Upload-Quota-Reset이 포함되며 각각 limit, remaining, reset_at에 대응합니다. Reset은 Unix 초입니다. 무제한 계정은 quota: {"unlimited": true}를 반환하고 세 헤더는 생략합니다. 통계를 일시적으로 조회할 수 없으면 성공 응답에도 quota가 없을 수 있으며, 장기 보관에서도 생략합니다. 필드가 없다고 0이나 무제한으로 해석하거나 재업로드하지 마세요. 3일 무료 한도를 소진해도 유료 업로드가 활성화되고 해당 가격을 확인했다면 유료로 계속 업로드할 수 있습니다. 그 외에는 아래 429 처리를 따르세요. 별도로 Key당 60초에 1000회 요청 제한이 있으며 rate_limit_error에 해당합니다. 무료 파일 한도와는 별개입니다.

오류 처리

오류는 최상위 error에 포함됩니다. HTTP 상태, error.type / error.code, 최상위 overage 필드를 함께 확인하고 언어에 따라 달라지는 error.message에만 의존하지 마세요. 오류의 overage는 성공 시 과금 정보와 다르며 available, enabled, needs_reconfirm, retention_days, price_per_gb_usd, 선택적인 settings_url 및 reason을 포함할 수 있습니다. 활성화와 가격 재확인은 콘솔에서 진행하세요.

URL 사용 및 파일 보관

무료 한도의 72시간 집계 기간과 파일 보관 기간은 별개입니다. 선택한 옵션에 따라 파일이 만료되며 실제 시각은 expires_at을 기준으로 합니다. 만료 후 URL은 404를 반환합니다. 원본을 보관하고 URL이 영구적이라고 가정하지 마세요. 대량 업로드에는 자체 객체 스토리지(OSS)를 권장합니다. 모델이 공개 파일 URL을 지원한다면 자체 저장소 링크를 직접 사용하여 반복 업로드와 저장 비용을 줄일 수 있습니다.

다른 업로드 API