개발자 가이드
AI 서비스에서 실제 인물의 얼굴, 목소리를 쓸 때 확인할 것
딥페이크, 얼굴 바꾸기, 목소리 복제, 유명인 아바타처럼 실제 사람의 얼굴, 목소리, 페르소나로 생성하는 기능이라면, 생성하기 전에 Rightis 의 초상권 조회 API 로 그 사람의 사용 동의와 퍼블리시티권 허락 범위를 확인합니다. 등록이 없다는 것은 허락이 아니고, 권리자가 정한 적 없다는 답도 허락이 아닙니다.
이 확인이 필요한 기능
결과물에서 실제 사람이나 캐릭터를 알아볼 수 있다면 생성 전에 확인합니다. 아래는 자주 만드는 기능들입니다.
아바타와 프로필 이미지
특정 인물을 닮은 아바타, 인물 사진의 화풍 바꾸기, 유명인과 함께 찍은 듯한 합성 사진을 만드는 기능입니다.
얼굴 바꾸기
사진이나 영상 속 얼굴을 다른 사람의 얼굴로 바꾸는 기능입니다. 바꿔 넣는 얼굴의 주인이 확인 대상입니다.
목소리 복제와 음성 합성
특정인의 목소리로 글을 읽어 주거나, 노래하거나, 더빙하는 기능입니다. 음성은 asset_types 의 voice 로 묻습니다.
유명인 챗봇과 페르소나
실제 인물이나 캐릭터의 이름, 말투, 성격으로 대화하는 봇입니다. 얼굴이나 목소리를 쓰지 않아도 그 사람으로 행세한다면 해당합니다.
다른 사람이 찍힌 사진 업로드
사용자가 올린 사진 속 인물이 올린 사람 본인이라는 보장은 없습니다. 본인 사진이라는 확인이 없다면 다른 사람의 얼굴로 다룹니다.
확인한다는 것
- 01
누구인지 정합니다
확인은 Rights ID 로 합니다. Rights ID 는 BR 로 시작하는 코드이고, 이름으로 공개 등록소를 검색해 찾을 수 있습니다. 누구인지 정하지 못하면 확인할 대상이 없는 것이지 허락받은 것이 아닙니다.
- 02
무엇을 할지 적습니다
use_type 에 용도를 글로 적고, asset_types 에 face, voice, style, image 중 쓰려는 것을, ai_methods 에 생성 방식을, territory 에 국가 코드를 넣습니다. 학습에 쓰려면 for_training 을 따로 켭니다. 생성과 학습은 서로 다른 권리입니다.
- 03
판단과 다음 할 일을 읽습니다
decision 은 물어본 쓰임에 대한 판단 하나이고, 여러 범위에 걸치면 제한이 센 쪽이 이깁니다. 코드가 따를 것은 next_action 입니다. allowed 가 나와도 다음 할 일은 계약 요청입니다.
- 04
계약을 맺고 기록합니다
계약은 next_action 의 주소에서 요청합니다. 주소가 비어 있으면 권리자가 지금은 요청을 받지 않는 것입니다. 계약이 활성화된 뒤의 사용은 사용 기록과 생성물 증명서로 남길 수 있습니다.
코드로 확인하기
SDK 의 rights.check 는 API 키가 있으면 키 있는 확인 경로를, 없으면 키 없는 공개 경로를 부릅니다. 두 경로는 같은 모양으로 답합니다. 키는 서버 환경 변수에 두고 브라우저 코드에는 넣지 마세요.
키 없는 공개 경로는 공개 등록소에 올라간 실제 사람만 답합니다. 샌드박스의 샘플 사람은 샌드박스 키로만 찾을 수 있습니다.
npm install @rightis/sdk
npx rightis check BR-XXXX-XXXX-XXXX --use "avatar generation" --asset faceimport { Rightis } from '@rightis/sdk';
// Reads RIGHTIS_SECRET_KEY. Without a key it calls the keyless public resolve.
const rightis = new Rightis();
const result = await rightis.rights.check({
rights_id: 'BR-XXXX-XXXX-XXXX',
use_type: 'avatar generation',
asset_types: ['face'],
ai_methods: ['image_generation'],
});
console.log(result.decision, result.next_action.type, result.next_action.url);curl -X POST https://rightis.org/api/public/v1/rights/resolve \
-H "Content-Type: application/json" \
-d '{
"rights_id": "BR-XV7E-8X7Z-ERB7",
"use_type": "voice clone",
"asset_types": ["voice"],
"ai_methods": ["voice_synthesis"]
}'{
"rights_id": "BR-XXXX-XXXX-XXXX",
"registered": false,
"identity": null,
"decision": null,
"scopes": [],
"unmapped": [],
"training": { "decision": "unspecified", "do_not_train": true },
"next_action": {
"type": "not_registered",
"url": null,
"reason": "No listed registration for this rights_id. Not registered is not permission. Treat the identity as not cleared for AI use."
},
"profile_url": null,
"notes": ["Rightis answers only for identities the holder chose to list."]
}판단마다 할 일
판단은 계약이 아닙니다. 어느 판단이 나와도 생성해도 되는 근거는 지금 활성화된 계약 하나입니다.
- decision: allowed
- 권리자가 미리 허용해 둔 범위입니다. 무료로 써도 된다는 뜻이 아닙니다. next_action 은 request_license 이고, 요청이 권리자 확인 없이 승인될 수 있습니다. 금액 하한 같은 조건은 요청할 때 봅니다.
- decision: requires_approval
- 권리자가 요청마다 결정합니다. 계약을 요청하고 답을 기다리는 동안에는 생성하지 않습니다. unmapped 에 낱말이 있으면 우리가 범위로 옮기지 못한 것이라 이 값이 나옵니다.
- decision: unspecified
- 권리자가 이 쓰임에 대해 정한 적이 없습니다. 허락이 아닙니다. 계약을 요청해 권리자에게 묻습니다.
- decision: denied
- 권리자가 거부한 범위가 하나라도 있습니다. next_action 은 stop 입니다. 생성하지 않습니다.
- next_action: not_registered
- 대장에 없는 Rights ID 입니다. decision 은 null 입니다. 등록이 없다는 것은 허락이 아닙니다. 그 사람에게 권리가 없다는 뜻이 아니라 Rightis 에 적힌 것이 없다는 뜻입니다.
- next_action: describe_use
- 사람은 찾았지만 무엇을 할지 적지 않았습니다. use_type 이나 asset_types 를 넣어 다시 묻습니다.
학습은 따로 답합니다. training 의 decision 과 do_not_train 을 보세요. 생성이 허용된 사람도 학습은 허용하지 않을 수 있습니다.
Rightis 에 닿지 못했거나 오류가 났다면 허락으로 읽지 않습니다. 확인하지 못한 것과 허락받은 것은 다릅니다.
import { Rightis, RightisError } from '@rightis/sdk';
const rightis = new Rightis(); // server side only
type Gate = { generate: boolean; reason: string; url?: string | null };
export async function mayGenerate(rightsId: string, licenseCode?: string): Promise<Gate> {
// 1. An active licence for this use is what lets you generate.
if (licenseCode) {
const v = await rightis.licenses.verify({ license_public_code: licenseCode });
// Also compare v.rights_categories, v.media_types and v.territory with your use.
if (v.valid) return { generate: true, reason: 'active licence' };
}
// 2. No licence yet: ask what to do next.
let r;
try {
r = await rightis.rights.check({
rights_id: rightsId,
use_type: 'face swap video',
asset_types: ['face'],
ai_methods: ['video_generation'],
});
} catch (e) {
// Could not ask. Unknown is not cleared.
return { generate: false, reason: e instanceof RightisError ? e.code : 'unreachable' };
}
switch (r.next_action.type) {
case 'stop':
return { generate: false, reason: 'denied by the rights holder' };
case 'not_registered':
return { generate: false, reason: 'not registered is not cleared' };
case 'describe_use':
return { generate: false, reason: 'describe the use and ask again' };
case 'request_license':
// allowed, requires_approval and unspecified all land here. None is a licence yet.
return { generate: false, reason: r.decision ?? 'request a licence', url: r.next_action.url };
}
}기록 남기기
아래는 지금 쓸 수 있는 기능입니다. 셋 다 API 키가 필요하고, 계약에 묶여서만 남습니다.
사용 기록
생성, 노출, 음성 합성 같은 사용을 계약 코드에 묶어 보냅니다. 한 번에 500건까지 받고 event_id 로 중복을 걸러 냅니다. SDK 에서는 usage.log 입니다.
생성물 증명서
생성물의 SHA-256 해시와 계약 코드를 보내면 서명된 증명서를 돌려줍니다. 계약이 지금 활성 상태가 아니면 발급하지 않습니다. 생성 도구 이름은 보내는 쪽의 선언이고 Rightis 가 확인한 값이 아닙니다. SDK 에는 아직 없고 OpenAPI 문서의 provenance 경로로 부릅니다.
계약 확인
계약 코드나 생성물 해시로 계약이 지금 유효한지 확인합니다. SDK 에서는 licenses.verify 입니다.
await rightis.usage.log([
{
event_id: 'gen_01J9Z3K7', // your id, resends are reported as duplicate
license_public_code: 'L-XXXXXXXX', // usage is recorded only against a licence
occurred_at: new Date().toISOString(),
use_type: 'generation',
decision: 'allow',
content_hash: outputSha256Hex, // optional, hex SHA-256 of what you generated
},
]);법은 어디까지 와 있나
시행 중인 법과 아직 법안인 것을 나눠 적었습니다. 어떤 법도 Rightis 확인을 요구하지 않습니다. 확인은 권리자가 무엇을 정해 두었는지 알려 줄 뿐 법적 판단을 대신하지 않습니다.
미국 연방
- 시행 중
TAKE IT DOWN Act
2025년 5월 제정, 플랫폼 의무는 2026년 5월 19일부터비동의 성적 이미지에 대해 플랫폼이 삭제 요청 창구를 두고, 유효한 요청을 받으면 48시간 안에 해당 이미지와 알려진 동일 사본을 지우도록 정합니다. AI 로 생성하거나 변조한 이미지도 대상입니다. 연방거래위원회가 집행을 시작했습니다.
출처: FTC - 법안 단계
NO FAKES Act
2026년 6월 22일 상원 법사위 통과, 아직 법률이 아닙니다목소리와 초상의 디지털 복제에 대한 연방 차원의 권리와 통지, 삭제 절차를 만드는 법안입니다. 통과되면 주마다 다른 지금의 기준이 하나로 모입니다.
출처: Congress.gov
미국 주법
- 시행 중
ELVIS Act (미국 테네시주)
2024년 7월 1일 시행목소리를 재산권으로 보호하고, 동의 없이 목소리를 복제하는 AI 사용을 겨냥한 미국 최초의 주법입니다. 2024년 3월 21일 서명, 2024 Tenn. Pub. Acts ch. 588.
출처: Tennessee 주정부 - 시행 중
AB 2602, AB 1836 (미국 캘리포니아주)
AB 2602 는 2025년 1월 1일, AB 1836 은 2026년 1월 1일 시행계약으로 사람의 초상이나 목소리를 디지털로 복제하려면 무엇을 만들 것인지 구체적으로 밝히고 동의를 받아야 합니다. 고인의 디지털 복제는 유족의 허락이 필요합니다.
출처: California Legislative Information
대한민국
- 시행 중
인공지능 기본법 (대한민국)
2026년 1월 22일 시행생성형 AI 사업자는 결과물이 AI 로 생성됐다는 사실을 표시해야 합니다. 딥페이크처럼 부작용이 우려되는 결과물에는 이용자가 알아볼 수 있는 표시를 해야 합니다. 시행 초기에는 과태료 대신 계도 기간을 둡니다.
출처: 국가법령정보센터 - 시행 중
부정경쟁방지법 (대한민국)
2022년 6월 8일 시행국내에 널리 알려지고 경제적 가치를 가지는 사람의 성명, 초상, 음성 등을 공정한 상거래 관행에 반하는 방법으로 무단 사용해 그 사람의 경제적 이익을 침해하는 행위를 부정경쟁행위로 정합니다. 한국에서 초상과 음성의 상업적 사용을 다투는 실질적인 근거입니다.
출처: 국가법령정보센터 - 시행 중
성폭력처벌법 제14조의2 (대한민국)
2024년 10월 16일 개정 시행사람의 얼굴이나 신체를 성적 수치심을 일으키는 형태로 편집하거나 합성해 반포하는 행위를 처벌하고, 2024년 개정으로 허위영상물임을 알면서 소지, 구입, 저장, 시청한 경우도 처벌 대상이 됐습니다.
출처: 국가법령정보센터
공개된 법령과 정부 자료를 정리한 것이며 법률 자문이 아닙니다. 개별 사안은 변호사와 상의하시기 바랍니다. 2026년 9월 10일 기준입니다.
자주 묻는 질문
- 초상권, 퍼블리시티권을 확인하는 API 가 있나요?
- 있습니다. Rightis 는 키 없이 부르는 공개 판단 API 와 API 키로 부르는 확인 API, npm 의 SDK 와 CLI 를 냅니다. Rights ID 와 용도를 보내면 허용, 승인 필요, 미설정, 거부 가운데 하나의 판단과 다음에 할 일을 돌려줍니다.
- 딥페이크나 목소리 복제 기능에서 동의는 어떻게 확인하나요?
- 생성 요청이 들어오면 모델을 부르기 전에 그 사람의 Rights ID 와 용도, 쓰려는 자산(얼굴, 목소리)을 보내 판단을 받습니다. 유효한 계약이 있을 때만 생성하고, 계약이 없으면 답에 담긴 다음 할 일을 따릅니다.
- 판단이 허용이면 바로 생성해도 되나요?
- 아닙니다. 허용은 권리자 확인 없이 계약이 체결될 수 있다는 뜻이지 계약 없이 써도 된다는 뜻이 아닙니다. 다음 할 일은 여전히 계약 요청입니다.
- Rightis 에 등록되지 않은 사람은 써도 되나요?
- 아닙니다. 초상권과 퍼블리시티권은 등록 없이 생기는 권리입니다. 등록이 없다는 것은 Rightis 에 기록이 없다는 뜻이고 허락이 아닙니다. 확인 요청이 실패했을 때도 허락이 없는 것으로 다룹니다.