기능별

파일 업로드

클라이언트에 로컬 이미지, 동영상, 오디오, PDF, 스프레드시트 등의 파일만 있을 때는 플랫폼 파일 업로드 흐름을 사용하세요. API는 임시 업로드 위치와 안정적인 public_url을 반환하며, 스토리지 구현 세부 사항은 클라이언트에 드러나지 않습니다.

#URL, 업로드, Base64 중 선택

가진 입력권장 방법이유
기존 공개 HTTPS URLURL을 바로 전송중복 업로드가 없고 요청 본문이 가장 작습니다.
기기의 로컬 파일업로드 후 public_url 전송큰 파일에도 안정적이며 재시도 시 재사용할 수 있습니다.
작은 인라인 이미지이고 모델이 Base64를 명시적으로 지원함Base64 사용 가능선택한 모델 규약이 허용할 때만 사용하세요.

#로컬 파일 업로드 흐름

  1. 1

    현재 한도 확인

    사용자별 한도가 적용되도록 같은 API 키를 사용하세요.

    GET /v1/media/upload-policy
  2. 2

    업로드 정책 생성

    kind, 구체적인 content_type, 정확한 바이트 크기를 보내세요.

    POST /v1/media/upload-policy
  3. 3

    파일 업로드

    반환된 fields 항목 전체와 파일을 upload_url로 POST하세요.

    multipart/form-data
  4. 4

    반환된 URL 사용

    모델이 지원하는 미디어 필드에 public_url을 넣으세요.

    public_url
create-policy.sh
curl https://www.aisplice.store/v1/media/upload-policy \
  -H "Authorization: Bearer sk-YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "file",
    "content_type": "application/pdf",
    "size": 1048576
  }'

#업로드 필드는 불투명한 값으로 취급

fields로 반환된 모든 키와 값을 이름 변경, 필터링, 캐싱 없이 그대로 보내세요. 업로드 정책은 유효 기간이 짧고 생성된 파일 경로 하나에 묶여 있습니다.

browser.ts
const form = new FormData();
for (const [key, value] of Object.entries(policy.fields)) {
  form.append(key, String(value));
}
form.append("file", file); // keep the file field last

const uploaded = await fetch(policy.upload_url, {
  method: "POST",
  body: form,
});
if (!uploaded.ok) throw new Error(await uploaded.text());

const modelInputUrl = policy.public_url;

#파일 유형과 모델 지원

업로드 성공이 모델 지원을 의미하지는 않음

업로드 엔드포인트는 PDF, Excel, 텍스트 같은 일반 파일을 저장할 수 있지만, 모델은 요청 규약에 맞는 파일 또는 URL 필드가 문서화되어 있을 때만 이를 읽을 수 있습니다. 이미지 전용 모델은 스프레드시트에 공개 URL이 있다고 해서 읽을 수 있는 것이 아닙니다.
선택한 모델 규약 확인

모든 필드: API 레퍼런스의 /v1/media/upload-policy →

아직 해결되지 않았나요?

요청 ID나 오류 메시지를 보내 주시면 확인해 드리겠습니다.