콘텐츠로 건너뛰기
Clevera 고객 센터

Clevera REST API 사용하기

사용자 스크립트에서 Clevera를 호출하는 방법: 베이스 URL, Bearer 토큰 인증, 엔드포인트 및 각 엔드포인트에 필요한 권한, 유료 작업을 위한 견적 후 시작 흐름, 멱등성, 오류 형식 및 속도 제한에 대해 알아봅니다.

업데이트됨 읽는 시간 7분

Clevera의 REST API를 사용하면 사용자 고유의 스크립트와 서비스에서 에이전트가 MCP를 통해 수행할 수 있는 작업(라이브러리 읽기, 영상 및 아티클 요청, 영상 내보내기, 문서 사이트 작업 및 작업 추적)을 수행할 수 있습니다. 이 아티클에서는 베이스 URL, 인증, 유료 작업을 위한 요청 흐름, 오류 및 속도 제한을 다룹니다.

기본 사항

베이스 URL https://app.clevera.ai/api/v1
인증 API 토큰을 사용한 Authorization: Bearer <token> (토큰은 clv_agent_로 시작함)
형식 JSON 입출력. Accept: application/json을 전송하고, 본문이 있는 경우 Content-Type: application/json를 전송합니다.
ID 작업에 대한 job_…와 같은 공개 ID. API가 반환하는 ID를 사용하세요.

GET /docs/me으로 토큰을 확인하세요:

Terminal
curl -H "Authorization: Bearer $CLEVERA_TOKEN" \
     -H "Accept: application/json" \
     https://app.clevera.ai/api/v1/docs/me

응답에는 해당 토큰이 누구를 대신하여 작동하는지(토큰 이름 및 만료일, 사용자 및 현재 역할, 워크스페이스, 범위 내 사이트, 현재 작동 중인 권한(사용자의 현재 역할에 맞춰 조정된 토큰 권한))가 표시됩니다. 호출이 거부되면 먼저 이 호출을 수행하세요.

엔드포인트

각 엔드포인트에는 표시된 권한이 필요합니다. 권한 없이 호출하면 403 forbidden_ability이 반환됩니다. 에이전트 권한을 참조하세요.

라이브러리 및 자료

메서드 및 경로 권한 기능
GET /create/types any 요청 가능한 영상 및 소셜 클립 유형입니다.
GET /library library:read 토큰 소유자가 볼 수 있는 영상, 녹화본 및 아티클입니다.
GET /recordings library:read 녹화본만 해당합니다.
GET /library/{item} library:read 단일 항목입니다.
GET /library/{item}/transcript library:read 해당 항목의 스크립트입니다.
GET /library/{item}/article library:read 해당 항목의 아티클입니다.
GET /library/{item}/embed library:read 해당 항목의 임베드 코드입니다.
GET /materials library:read 업로드된 이미지, 영상 및 PDF입니다.
POST /materials, POST /materials/import, POST /materials/uploads, POST /materials/uploads/{upload_id}/complete materials:write 이미지, 영상 또는 PDF를 추가합니다(직접 업로드, URL에서 가져오기 또는 대용량 업로드).

영상 및 아티클

메서드 및 경로 권한 기능
POST /videos/quotes videos:create 녹화본에서 영상(type: how_to, product_demo, cleanup, styled_video), 녹화본에서 아티클(article) 또는 번역(translation)을 견적합니다.
POST /videos videos:create + credits:spend 견적된 영상을 생성합니다(quote_id).
POST /articles/from-recording videos:create + credits:spend 견적된 아티클을 생성합니다.
POST /videos/translations videos:create + credits:spend 견적된 번역을 생성합니다.
POST /clips/quotes videos:create 소셜 클립을 견적합니다(GET /create/types의 유형).
POST /clips videos:create + credits:spend 견적된 소셜 클립을 생성합니다.
POST /videos/{video_id}/exports videos:export MP4 렌더링: resolution 1080p(기본값), 2k 또는 4k; 항상 60fps. 무료입니다.

작업 및 크레딧

메서드 및 경로 권한 기능
POST /quotes 작업 권한 모든 작업 유형에 대한 견적입니다.
POST /jobs 작업 권한 (+ 유료 시 credits:spend) 견적된 작업을 시작합니다.
GET /jobs jobs:read 작업 목록을 표시합니다.
GET /jobs/{job} jobs:read 단일 작업의 상태 및 결과입니다.
GET /jobs/{job}/wait jobs:read 폴링 대신 변경 사항을 기다립니다.
GET /jobs/{job}/events jobs:read 작업의 진행 상황 이벤트입니다.
POST /jobs/{job}/cancel jobs:read 작업을 취소합니다. 너무 늦은 경우: "이 작업은 더 이상 취소할 수 없습니다."
GET /credits credits:spend 또는 jobs:read 워크스페이스의 크레딧 잔액입니다.

문서 사이트

메서드 및 경로 권한 기능
GET /docs/sites, GET /docs/sites/{site}, GET /docs/sites/{site}/tree, GET /docs/sites/{site}/pages content:read 토큰 범위 내의 사이트 및 해당 페이지입니다.
GET /docs/sites/{site}/search, GET /docs/pages/{page}, GET /docs/pages/{page}/revisions content:read 초안을 포함하여 페이지를 검색하고 읽습니다.
POST /docs/sites/{site}/articles, PATCH /docs/pages/{page}/article, POST /docs/pages/{page}/review articles:write 아티클 초안을 생성 및 편집하고 검토를 위해 제출합니다. 라이브 아티클은 site:publish도 필요합니다.
PATCH /docs/pages/{page}, DELETE /docs/pages/{page}, POST /docs/sites/{site}/sections, PATCH /docs/sections/{section} structure:write 페이지 및 섹션을 이동, 이름 변경, 숨기기 및 제거합니다.
GET/POST /docs/sites/{site}/site-pages, PUT /docs/site-pages/{page}/body content:read / site-pages:write 홈, 연락처 및 법적 고지 페이지입니다.
GET/POST /docs/sites/{site}/changelog, PATCH /docs/changelog/{entry} content:read / changelog:write 변경 로그 항목을 초안으로 작성합니다.
POST /docs/media, POST /docs/media/uploads media:write 이미지를 업로드합니다.
POST /docs/sites/{site}/publish, POST /docs/pages/{page}/ready, POST /docs/changelog/{entry}/publish site:publish 독자가 볼 수 있도록 게시합니다.
GET /insights/sites/{site}, …/gaps, …/feedback insights:read 검색 격차, 답변되지 않은 질문, 페이지 피드백입니다.
PATCH /docs/sites/{site}/settings, …/appearance, PUT …/navigation, POST …/redirects site:configure 사이트 설정입니다.
POST /docs/sites sites:create 문서 사이트를 생성합니다.

에이전트 및 문서 사이트에 대한 자세한 정보: AI 에이전트를 문서 사이트에 연결하기.

크레딧이 소모되는 작업은 항상 견적을 먼저 받은 후 시작해야 합니다:

  1. 견적 받기. 원하는 작업과 함께 POST /videos/quotes(또는 /clips/quotes)을 호출합니다. 응답에는 quote_id와 크레딧 범위가 포함됩니다. 견적은 15분 동안 유효하며 한 번 사용할 수 있습니다.
  2. 선택적으로 드라이런(dry-run) 수행. "dry_run": true과 함께 시작 요청을 보내 작업이 시작될지, 승인이 필요한지, 차단될지 확인합니다. 아무것도 작성되지 않습니다.
  3. 작업 시작. quote_id 및 Idempotency-Key 헤더와 함께 POST /videos를 호출합니다. 응답은 작업이 포함된 202입니다.
  4. 작업 추적. 작업의 status가 변경될 때까지 GET /jobs/{job}/wait을 호출하거나 웹훅을 수신 대기합니다.
Quote, then start a how-to video
curl -X POST https://app.clevera.ai/api/v1/videos/quotes \
  -H "Authorization: Bearer $CLEVERA_TOKEN" -H "Content-Type: application/json" \
  -d '{"type": "how_to", "recording_id": "<recording id>", "language": "en-US"}'

curl -X POST https://app.clevera.ai/api/v1/videos \
  -H "Authorization: Bearer $CLEVERA_TOKEN" -H "Content-Type: application/json" \
  -H "Idempotency-Key: 3f6c1a2e-8d4b-4f7a-9c1e-2b5d7e9f0a13" \
  -d '{"quote_id": "<quote id>"}'

작업 상태:

상태 의미
queued 수락됨, 실행 예정입니다.
running 실행 중입니다.
needs_input 사람의 승인을 기다리는 중입니다(보통 에이전트 요청에서 승인). 작업에는 링크와 만료 시간이 포함됩니다.
succeeded 완료되었습니다. 작업은 새 영상이나 아티클로 연결됩니다.
failed 실패했습니다. 작업에 error_code가 포함되어 있습니다.
canceled 취소되었거나 승인이 거부되었습니다.
expired 24시간 이내에 승인되지 않았습니다.

시작 요청이 즉시 실행될지 아니면 사람의 승인을 기다릴지는 토큰의 지출 한도와 아래에서 자동 승인 설정에 따라 다릅니다. 에이전트 지출 및 승인 제어하기를 참조하세요.

재시도 및 멱등성

모든 생성 및 시작 요청 시 Idempotency-Key 헤더(작업당 새로운 UUID)를 전송하세요. 네트워크 오류로 인해 동일한 키와 본문으로 재시도하면 두 번째 영상이 생성되는 대신 첫 번째 응답이 반환됩니다. 키는 24시간 동안 유지됩니다.

코드 의미
idempotency_key_reused 본문이 다른 동일한 키입니다. 새 요청에는 새 키를 사용하세요.
idempotency_in_progress 이 키를 사용한 첫 번째 요청이 여전히 실행 중입니다. 기다렸다가 재시도하세요.
idempotency_conflict "이 멱등성 키는 다른 요청에 사용되었습니다."

오류

모든 오류는 동일한 형식을 가지며, 다음에 수행할 작업을 알려주는 메시지가 포함되어 있습니다:

{
  "error": {
    "code": "forbidden_ability",
    "message": "This token lacks the videos:create ability. Ask the workspace member who owns it for a token that has it.",
    "details": { "ability": "videos:create" }
  },
  "request_id": "req_example"
}

지원팀에 문의할 때 request_id을 포함하세요.

HTTP 코드 일반적인 원인
401 unauthenticated, token_expired, token_revoked 토큰 없음, 잘못된 토큰, 만료된 토큰 또는 취소된 토큰입니다.
402 insufficient_credits 워크스페이스에 견적을 위한 크레딧이 부족합니다.
403 forbidden_ability, forbidden_role, forbidden_item, ip_not_allowed, live_content_needs_publish, site_paused, forbidden 권한 누락, 소유자의 역할, 컬렉션 액세스 또는 IP 허용 목록 문제입니다.
403 plan_locked "에이전트 API는 이 워크스페이스의 플랜에 포함되어 있지 않습니다. Pro 플랜 이상에서 사용할 수 있습니다."
404 not_found, unknown_kind "이 토큰 범위 내에 해당 ID를 가진 항목이 없습니다. 먼저 목록을 조회하거나 검색한 후 반환된 ID를 사용하세요."
409 revision_conflict, quote_used, not_cancelable, idempotency_* 콘텐츠가 변경되었거나, 견적이 사용되었거나, 재시도 충돌이 발생했습니다.
410 quote_expired "이 견적은 만료되었습니다. 새 견적을 요청하세요."
413 unsupported_media 파일이 너무 크거나 지원되지 않는 유형입니다.
422 validation_failed, invalid_input, quote_mismatch, limit_reached 필드가 잘못되었습니다. details에서 해당 필드 이름을 확인할 수 있습니다.
429 rate_limited, cap_exceeded, busy 요청 과다, 지출 한도 초과 또는 두 개의 시작 요청이 동시에 발생했습니다.

모든 메시지와 해결 방법: 에이전트 및 API 오류 수정하기.

속도 제한

제한 값 메시지
토큰당 요청 분당 300회 "이 토큰의 요청 속도가 제한을 초과했습니다. 기다렸다가 재시도하세요."
워크스페이스당 요청 분당 1,200회(모든 토큰 합산) "이 워크스페이스의 에이전트 요청 속도가 제한을 초과했습니다. 기다렸다가 재시도하세요."
토큰당 쓰기 분당 60회 "이 토큰의 쓰기 요청이 너무 많습니다. 기다렸다가 재시도하세요."
토큰당 일일 쓰기 2,000회 "이 토큰의 일일 쓰기 제한에 도달했습니다. 내일 다시 시도하세요."
토큰당 게시 시간당 10회 "이 토큰의 시간당 게시 제한에 도달했습니다. 나중에 다시 시도하세요."
유료 시작 토큰당 시간당 20회, 워크스페이스당 일일 100회 retry_after과 함께 rate_limited
업로드 분당 30회; 토큰당 일일 500MB; 파일당 25MB "이 토큰의 업로드 요청이 너무 많습니다. 기다렸다가 재시도하세요." / "이 토큰의 일일 업로드 용량 제한에 도달했습니다. 내일 다시 시도하세요."
유효한 토큰 없는 호출 IP 주소당 분당 60회 "요청이 너무 많습니다. 기다렸다가 재시도하세요."

429 응답에는 Retry-After 헤더와 본문에 retry_after(초)가 포함됩니다. 재시도하기 전에 해당 시간만큼 기다리세요. 읽기, 견적 및 상태 확인은 크레딧을 소모하지 않습니다.