블로그/guides·2026년 9월 9일·4분·eroq 팀 작성
렌더가 차단된 이유: 콘텐츠 정책 오류 읽는 법
content_blocked의 의미, 차단된 요청이 무료인 이유, 업스트림에서 검수되는 엔진, 거절과 실패를 구분하는 법.
생성을 눌렀는데 클립 대신 문장 하나가 돌아왔어요. The engine declined this prompt. Rephrase it and retry — you have not been charged.(엔진이 이 프롬프트를 거절했어요. 표현을 바꿔 다시 시도하세요. 크레딧은 차감되지 않았어요.) 짧은 메시지인 데다, 지금 내가 꽤 다른 네 가지 상황 중 어디에 있는지는 알려 주지 않아요. 이 글이 바로 그 빠진 문단이에요. 호들갑 없이요.
이 오류의 정체
차단에는 코드가 하나뿐이에요. 바로 content_blocked예요. 렌더링 엔진을 호출하는 두 곳, 즉 이미지와 동영상에서 같은 형태로 전달돼요.
이미지에서는 호출이 HTTP 422와 함께 표준 오류 형식으로 응답해요.
{
"error": {
"message": "The engine declined this prompt. Rephrase it and retry — you have not been charged.",
"type": "invalid_request_error",
"code": "content_blocked"
}
}
동영상은 비동기라서, 차단은 작업을 제출할 때가 아니라 폴링할 때 도착해요.
{
"id": "…",
"object": "video.generation",
"status": "failed",
"model": "seedance-1-pro",
"duration": "5s",
"error": { "type": "invalid_request_error", "code": "content_blocked" },
"usage": { "credits_spent": 0, "credits_remaining": 4820 }
}
type을 보세요. 차단은 요청에 대한 판단인 invalid_request_error이고, 엔진이 시도했다가 실패하면 upstream_error를 반환해요. 거절과 운 나쁜 시도를 가려내는 가장 빠른 방법이 이 필드 하나예요. video.generation.failed 웹훅을 받고 있다면 같은 코드가 거기에도 담겨 와요.
청구되지 않지만, 항목이 두 개 보일 수 있어요
credits_spent는 0이고 잔액도 시작한 그대로 끝나요. 다만 그 아래의 동작 방식은 알아 둘 만해요. 사용 내역을 보다가 놀라는 분들이 많거든요.
동영상은 제출할 때 차감하고 작업이 잘못 끝나면 환불하기 때문에, 차단된 클립은 같은 분 안에 차감 항목 하나와 그에 맞는 마이너스 환불 항목 하나를 남겨요. 합치면 0이에요. 이미지는 배치 전체를 먼저 차감하고, 빈손으로 돌아온 테이크마다 환불해요. 어느 쪽이든 실제로 받은 결과물에 대해서만 비용을 내요. 다만 사용 내역은 순서를 숨기지 않고 있는 그대로 보여 줘요. 자세한 설명은 사용 내역 읽는 법에 있어요.
절대 움직이지 않는 세 가지 한계
어떤 프롬프트는 eroq 어디에서도, 영구적으로 거부되고, 어떻게 다시 써도 달라지지 않아요. 이용 정책에 명시돼 있고, 내용도 짧아요.
미성년자가 관련된 모든 콘텐츠. 실제든, 허구든, 양식화됐든, 암시적이든 마찬가지예요. 동의 없는 실존 식별 가능 인물. 딥페이크와 공인 사칭이 여기에 포함돼요. 불법적인 모든 것, 그리고 괴롭힘. 이 부분은 요청 단위가 아니라 계정 단위로 제재되기 때문에, 우회할 수 있는 필터가 아니에요.
프롬프트가 이 영역에 있다면 차단이 올바른 결과이고, 이 글은 여기서 끝이에요. 아래 내용은 그 밖의 경우, 훨씬 더 흔한 경우에 관한 거예요.
영역별로 벽이 실제로 어디에 있는지
대부분이 이 경우에 해당하고, 이건 정책 문제가 아니라 라우팅 문제예요.
동영상 엔진은 하나를 빼고 모두 eroq보다 앞단, 즉 업스트림에서 각 제공사가 검수해요. Seedance 2.5, Seedance 1.0 Pro와 Lite, Kling, Hailuo, Veo는 모두 제공사의 규칙을 적용하고, 거절도 제공사가 하는 거예요. Motion One은 eroq 자체의 무검열 동영상 엔진이고, 무료 티어를 포함한 모든 계정에서 쓸 수 있어요. 장면 자체가 금지된 게 아니라 제공사가 장면을 거절한 게 문제라면, 답은 언제나 Motion One이에요.
채팅과 보이스에는 이런 구분이 없어요. eroq 자체 모델로 돌아가고, 같은 명문화된 정책 안에서 무검열이에요. 이미지에서는 Eroq Uncensored와 Anima가 무검열 모델이고, Flash Image와 Flux Image는 동영상 엔진처럼 업스트림에서 검수되는 서드파티 엔진이에요. 이미지도 특정 프롬프트를 거절할 수 있는 엔진을 거쳐 렌더되기 때문에 content_blocked를 가끔 만날 수 있고, 만난다면 위의 세 가지 절대 한계 중 하나이거나 단어 하나에 대한 오탐이에요. 채팅과 보이스에는 이런 식의 엔진 쪽 콘텐츠 관문이 없어요. 절대 한계는 무엇이든 실행되기 전에 내 텍스트에서 확인되고, 계정 단위로 적용돼요.
쉽게 말해, eroq 정책 안에 있지만 Kling 제공사의 규칙 밖에 있는 장면은 정책 위반이 아니라 엉뚱한 엔진을 향한 샷이에요. 표현을 아무리 바꿔도 통과하지 않아요. 엔진을 바꾸세요. 이 경계를 더 넓게 보고 싶다면 무검열 AI를 참고하세요.
거절과 실패 구분하기
네 가지 상태는 인터페이스에서 비슷해 보이지만 동작은 완전히 달라요. 전체 분류는 AI 동영상 렌더가 실패하는 이유에 있고, 빠르게 분류하기 위한 요약은 이래요.
content_blocked— 콘텐츠에 대한 판단. 재시도하면 똑같이 재현돼요. 다시 쓰거나 엔진을 바꾸세요.generation_failed— 엔진이 작업을 받았지만 아무것도 반환하지 않았어요. 주사위 운이에요. 재시도하세요.generation_timeout— 렌더가 돌아오지 않았어요. 10분 넘게 멈춘 작업은 처음 폴링할 때 실패 처리되고 환불돼요.- 사전 거절은 차단이 아예 아니에요.
403 plan_required(엔진이 내 플랜보다 상위),503 model_unavailable(그 엔진이 아직 열리지 않음),402 insufficient_credits(지갑이 비었음),403 role_forbidden(워크스페이스 역할상 크레딧을 쓸 수 없음),429 rate_limit_exceeded(몇 초 기다려야 하는지 알려 주는Retry-After헤더 포함). 모두 작업이 대기열에 들어가기 전에 결정되기 때문에, 청구되는 것도 환불할 것도 없어요.
써 둘 만한 재시도 로직은 한 줄이면 돼요. content_blocked는 절대 재시도하지 말고, 실패와 타임아웃은 재시도하고, 나머지는 전부 사람에게 넘기세요.
오탐일 때
짜증 나는 경우예요. 아무 문제 없는 내용을 썼는데 단어 하나가 필터에 걸렸어요. 필터는 의도가 아니라 명사를 읽기 때문에, 사건이 아니라 그림을 묘사하는 게 해결책이에요. 행위 대신 샷, 빛, 옷차림을 말하고, 실존 인물의 이름은 빼세요. 다시 쓰는 전체 절차는 위에 링크한 글에 있고, 북마크해 둘 만해요.
비용이 들지 않는 진단이 하나 더 있어요. 같은 프롬프트를 Motion One에서 돌려 보세요. 거기서는 렌더되는데 프리미엄 엔진에서는 차단됐다면, 프롬프트는 괜찮고 제공사가 엄격하다는 걸 알게 된 거예요. Motion One에서도 차단된다면, 생각보다 세 가지 절대 한계 중 하나에 훨씬 가까이 있는 거예요.
동영상 스튜디오를 열고 알맞은 엔진에서 그 샷을 다시 시도해 보세요.
자주 묻는 질문
렌더가 차단되면 비용이 청구되나요?
아니요. 차단된 작업에는 크레딧이 들지 않아요. 동영상은 제출할 때 차감했다가 작업이 차단되어 돌아오면 바로 환불하고, 이미지는 빈 테이크마다 환불하며, 응답의 credits_spent는 0으로 표시돼요. 잔액이 움직였다면 다르게 판단하기 전에 요청 로그에서 짝이 되는 마이너스 항목을 찾아보세요.
같은 프롬프트가 어떤 엔진에서는 렌더되고 다른 엔진에서는 안 되는 이유는 뭔가요?
Motion One을 제외한 모든 동영상 엔진은 업스트림 제공사가 자기 규칙에 따라 검수하기 때문이에요. Motion One은 명문화된 정책 안에서 동작하는 eroq 자체의 무검열 엔진이라, 제공사가 거절한 장면도 여기서는 렌더될 수 있어요. 채팅과 보이스는 eroq 자체 모델로 돌아가고, 이미지에서는 Eroq Uncensored와 Anima가 무검열 선택지라서, 이 구분이 가장 중요한 건 동영상이에요.
프롬프트가 차단되면 계정에 표시가 남나요?
절대 한계, 즉 미성년자, 실존 식별 가능 인물, 불법적인 모든 것은 요청 단위가 아니라 계정 단위로 제재되기 때문에 중요해요. 키워드 하나에 대한 평범한 오탐은 그런 게 아니고, 다시 쓰고 재시도하는 건 도구를 쓰는 평범한 과정이에요. 프로젝트가 선의 어느 쪽에 있는지 확신이 없다면 먼저 이용 정책을 읽어 보세요.
차단을 코드로 처리하려면 어떻게 하나요?
메시지 텍스트가 아니라 오류 코드로 분기하세요. content_blocked는 invalid_request_error로 오고 절대 재시도하면 안 되며, generation_failed와 generation_timeout은 upstream_error로 오고 두 번까지 시도해 볼 만해요. 그 밖의 모든 것, 즉 플랜 제한, 빈 지갑, 요청 한도는 루프가 아니라 사람이 손봐야 하는 설정 문제예요.
이 글에 나온 모델로 직접 만들어 보세요 — 무료 크레딧 50개로 시작하거나, 모든 엔진과 가격도 살펴보세요.