메인 콘텐츠로 건너뛰기
POST
/
v1
/
moderations
curl --request POST \
  --url https://direct.evolink.ai/v1/moderations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "model": "evolink-moderation-1.0",
  "input": [
    {
      "type": "text",
      "text": "I want to kill them."
    }
  ]
}
'
{
  "evolink_summary": {
    "risk_level": "medium",
    "flagged": false,
    "violations": [],
    "max_score": 0.597383272,
    "max_category": "sexual"
  },
  "id": "modr-0d9740456c391e43c445bf0f010940c7",
  "model": "evolink-moderation-1.0",
  "results": [
    {
      "flagged": false,
      "categories": {
        "harassment": false,
        "harassment/threatening": false,
        "hate": false,
        "hate/threatening": false,
        "illicit": false,
        "illicit/violent": false,
        "self-harm": false,
        "self-harm/intent": false,
        "self-harm/instructions": false,
        "sexual": false,
        "sexual/minors": false,
        "violence": false,
        "violence/graphic": false
      },
      "category_scores": {
        "harassment": 0.0006,
        "harassment/threatening": 0.0007,
        "hate": 0.00003,
        "hate/threatening": 0.0000025,
        "illicit": 0.000013,
        "illicit/violent": 0.0000096,
        "self-harm": 0.0000166,
        "self-harm/intent": 0.000004,
        "self-harm/instructions": 0.0000031,
        "sexual": 0.597383272,
        "sexual/minors": 0.000004,
        "violence": 0.0231,
        "violence/graphic": 0.0089
      },
      "category_applied_input_types": {
        "harassment": [
          "text"
        ],
        "harassment/threatening": [
          "text"
        ],
        "hate": [
          "text"
        ],
        "hate/threatening": [
          "text"
        ],
        "illicit": [
          "text"
        ],
        "illicit/violent": [
          "text"
        ],
        "self-harm": [
          "text"
        ],
        "self-harm/intent": [
          "text"
        ],
        "self-harm/instructions": [
          "text"
        ],
        "sexual": [
          "text"
        ],
        "sexual/minors": [
          "text"
        ],
        "violence": [
          "text"
        ],
        "violence/graphic": [
          "text"
        ]
      }
    }
  ]
}
BaseURL: 기본 BaseURL은 https://direct.evolink.ai이며, 텍스트 모델 지원이 더 우수하고 장시간 연결을 지원합니다. https://api.evolink.ai는 멀티모달 서비스의 주력 엔드포인트이며, 텍스트 모델에 대해서는 대체 주소로 사용됩니다.

인증

Authorization
string
header
필수

##모든 엔드포인트는 Bearer Token 인증이 필요합니다##

API 키 발급:

API 키 관리 페이지에서 API 키를 발급받으세요.

요청 헤더에 추가:

Authorization: Bearer YOUR_API_KEY

본문

application/json
model
enum<string>
필수

모더레이션 모델 이름. 고정값 evolink-moderation-1.0

사용 가능한 옵션:
evolink-moderation-1.0
예시:

"evolink-moderation-1.0"

input
(텍스트 입력 항목 · object | 이미지 입력 항목 · object)[]
필수

모더레이션 대상 콘텐츠. 객체 배열 형식으로 통일되어 있으며, 각 요소는 text 또는 image_url 객체입니다.

"input": [
{"type": "text", "text": "모더레이션할 텍스트"},
{"type": "image_url", "image_url": {"url": "https://..."}}
]

제한사항:

  • 배열 내 type=image_url 객체는 최대 1개까지 허용됩니다. 여러 이미지를 모더레이션해야 하는 경우 동시 요청으로 분할하세요
  • type=text 객체의 개수에는 제한이 없습니다

응답

모더레이션 성공

모더레이션 응답. 최상위의 evolink_summary는 비즈니스 측에서 사용을 권장하는 통합 리스크 요약이며, results는 카테고리별 상세 점수를 제공합니다.

EvoLink 리스크 요약: 13개 카테고리의 category_scores를 기반으로 각 카테고리의 민감도에 따라 차등 적용된 임계값으로 산출된 통합 요약입니다. 비즈니스에서는 이 정보만으로도 허용/거부/검토 송부 판단이 가능합니다.

리스크 등급 임계값 표

카테고리medium 임계값high 임계값비고
sexual/minors0.050.20레드라인 항목, 가장 엄격한 임계값
self-harm / self-harm/intent / self-harm/instructions0.300.60인명 관련, 엄격함
violence/graphic0.400.70잔인한 폭력
illicit/violent0.400.70폭력적 불법
sexual0.500.80일반 성적 콘텐츠
violence0.500.80일반 폭력
harassment/threatening0.500.80위협적 괴롭힘
hate/threatening0.500.80위협적 혐오
harassment0.600.85일반 괴롭힘
hate0.600.85일반 혐오
illicit0.600.85일반 불법 안내

판정 규칙

어느 한 카테고리라도 score >= 해당 카테고리 high 임계값   → risk_level = "high",   flagged = true,  violations에 추가
어느 한 카테고리라도 score >= 해당 카테고리 medium 임계값 → risk_level = "medium", flagged = false
그 외 → risk_level = "low", flagged = false

비즈니스 측 사용 가이드

summary = response["evolink_summary"]

if summary["flagged"]: # high → 즉시 거부
reject(reason=summary["violations"])
elif summary["risk_level"] == "medium": # 회색 영역
log_for_review(summary) # 로그 기록, 수동 검토
proceed()
else: # low → 허용
proceed()
id
string

이번 모더레이션 요청의 고유 식별자

예시:

"modr-0d9740456c391e43c445bf0f010940c7"

model
string

실제로 사용된 모델 이름. 고정값 evolink-moderation-1.0

예시:

"evolink-moderation-1.0"

results
object[]

모더레이션 결과 목록. 항상 1개의 result를 반환합니다 (배열 형식의 입력은 단일 평가로 통합되어 점수가 매겨집니다).

멀티모달 평가 범위

13개 카테고리 중 일부 카테고리는 텍스트만 평가하며, 이미지에 대해서는 평가하지 않습니다:

카테고리평가 범위
harassment / harassment/threatening텍스트만
hate / hate/threatening텍스트만
illicit / illicit/violent텍스트만
sexual/minors텍스트만 (레드라인 항목 — 주의)
self-harm / self-harm/intent / self-harm/instructions텍스트 + 이미지
sexual텍스트 + 이미지
violence / violence/graphic텍스트 + 이미지

핵심 사항:

  • 이미지만 전달한 경우, 위 7개의 텍스트 전용 카테고리의 점수는 항상 0이며 category_applied_input_types는 빈 배열이 됩니다 — 이는 콘텐츠가 안전함을 의미하는 것이 아니라, 평가되지 않았음을 의미합니다
  • 미성년자 관련 리스크(sexual/minors 레드라인 항목)와 관련된 비즈니스라면 반드시 텍스트 컨텍스트와 함께 모더레이션해야 하며, 이미지 점수에만 의존해서는 안 됩니다