표절 검사 API REST 및 SDK 지원
표절 및 AI 감지를 위한 REST 엔드포인트. OpenAPI 3.0 명세, Python 및 Node SDK, Apache 2.0 참고 구현. 처음 curl부터 웹훅 기반 대량 처리까지 — noplag.com에서 구동 중인 동일 엔진 사용.
curl 한 줄로 유사도 점수 얻기.
POST로 텍스트 제출, 유사도 구간 반환. SDK 불필요, 컴파일 필요 없음, 독점적 wire format 없음.
$ curl https://engine.noplag.app/v1/checks \ -H "Authorization: Bearer $NOPLAG_KEY" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: $(uuidgen)" \ -d '{ "text": "The rain in Spain falls...", "corpora": ["web", "academic"], "ai_detection": true, "webhook_url": "https://you.example/hook" }'{ "check_id": "chk_01HX9R2Y4...", "status": "complete", "similarity_pct": 23.4, "ai_score": 0.08, "engine_commit": "v0.4.2", "sources": [ { "url": "https://en.wikipedia...", "matched_chars": 142, "similarity_pct": 100.0 } ]}4개 엔드포인트. 하나의 약속. URL 버전 관리.
동일한 OpenAPI 3.0 명세가 오픈 소스 저장소와 engine.noplag.app에 존재합니다. SDK는 태그된 릴리스마다 이 명세로부터 재생성됩니다.
Bearer 토큰. Idempotency-Key. 정직한 Rate-Limit 헤더.
특별한 점 없음. 표준 HTTP 관례 사용 — 이미 운영 중인 retry 미들웨어 그대로 적용 가능.
Bearer 토큰. 헤더 하나로 간단 처리.
Authorization: Bearer nplg_live_a82f...Idempotency-Key: 0e8f9c44-...키별, 분당. 헤더로 현재 상황 명확 표기.
X-RateLimit-Limit: 60X-RateLimit-Remaining: 41X-RateLimit-Reset: 1747920480Retry-After: 19 (only on 429)2종 SDK. 동일 OpenAPI 3.0 명세에서 생성.
Python, Node는 모든 엔진 태그 릴리즈마다 배포. 기타 언어(Go, Ruby, Java)는 openapi.yaml에서 생성 — 커뮤니티 PR 환영.
from noplag import Noplagclient = Noplag(api_key="nplg_live_…")report = client.checks.create( text="...", corpora=["web", "academic"], ai_detection=True,)print(report.similarity_pct)import Noplag from "@noplag/sdk";const client = new Noplag({ apiKey: process.env.NOPLAG_KEY,});const report = await client.checks.create({ text: "...", corpora: ["web", "academic"], aiDetection: true,});장시간 검사 콜백. 반복 재시도 포함.
이벤트 4종. JSON 본문. HMAC-SHA256 서명 헤더.
24시간 지수 재시도. 대시보드에서 재전송 가능.
서명 확인. 일치하지 않으면 거부.
모든 전송에 X-Noplag-Signature: t=<unix>,v1=<hex> 포함. 타임스탬프 + 본문에 대해 웹훅 시크릿으로 HMAC-SHA256 계산, 상수 시간 비교.
h = hmac.new(secret, f"{t}.{body}".encode(), hashlib.sha256).hexdigest()assert hmac.compare_digest(h, v1)HTTP를 따릅니다. API 설계서의 전부입니다.
POST는 idem. URL에 버전 포함. 오류 시 다음 조치 안내. rate-limit 창 위치를 헤더에 명확 표시. 오프셋 대신 커서 기반 페이징. 타임스탬프는 UTC ISO 8601. HATEOAS 커스텀 사용 안 함, 오류 시 200 OK 반환 없음, 서버 간 호출에 OAuth 요구하지 않음. API 설계 문서는 RFC 9110, OpenAPI 3.0 명세 — 별도의 “Noplag 방식” 학습 불필요.
설계 참고 읽기실제 통합 엔지니어들이 묻는 질문.
- 일반 문서 검사시 호출 지연은 어느 정도인가요?
- 색인된 코퍼스 기준 500단어 검사 시 p50 약 600ms, p95 약 1.8초입니다. Layer W(실시간 웹 검증) 활성화 시 약 2초가 추가됩니다. 이 과정은 Google과 Brave를 통해 왕복 요청이 발생합니다. 긴 문서(예상 처리 시간 8초 초과)는 즉시 check_id를 반환하고, 웹훅으로 결과를 전달합니다.
- API로 과금이 측정되는 방식은?
- /v1/checks 1건 제출당 1회 청구, 문서 길이는 요금제별 상한(프로 1,500단어, 프리미엄 50,000, 엔터프라이즈 맞춤). Idempotency-Key + 본문 동일 재시도(24시간 이내)는 중복 청구 없음. /v1/checks/{id} 및 SDK 보조 호출은 무료.
- 셀프호스팅 가능한가요?
- 네, github.com/NoplagLabs/noplag-engine은 engine.noplag.app에서 사용하는 것과 동일한 Apache 2.0 기준 구현체입니다. docker compose up 명령으로 로컬 /v1/checks 엔드포인트를 바로 사용할 수 있습니다. 클라우드 버전은 관리되는 코퍼스와 Google/Brave API 키를 추가로 제공합니다. 완전한 셀프호스팅을 원할 경우 직접 API 키를 준비해야 합니다.
- 신뢰할만한 rate-limit 재시도 헤더가 있나요?
- 429 발생시 Retry-After(초 단위) 반환. X-RateLimit-* 헤더는 모든 응답에 포함 — 429 기다릴 필요 없이 X-RateLimit-Remaining 값으로 자체 pre-throttle 가능. 둘 다 배포 간 안정, 정확성 보장.
- SDK 릴리즈 주기는 어떻게 되나요?
- Python, Node SDK는 openapi.yaml에서 엔진 태그마다 자동 생성. 엔진 주요 릴리즈(v0.x → v0.y)는 SDK도 당일 배포. 패치 수정은 1주 이내 제공. 두 SDK 모두 semver 따름; API 표면은 /v1 → /v2에서만 깨짐.
- 코퍼스가 월중 변경되면 어떻게 되나요?
- 모든 검사는 X-Engine-Commit 및 코퍼스 스냅샷 타임스탬프 각인. 예전 검사 재실행은 쿼리 파라미터 한 줄(?corpus_snapshot=…). 최초 보고서는 원본 스냅샷으로 보존 — 과거 보고서 유사도 점수는 조용히 변경되지 않음.
- 월간 할당량 소모 없이 테스트하려면?
- 테스트 키(nplg_test_…)로 샌드박스 사용 — 전체 API 표면 제공, 제출 영구 저장 없음, 할당량/요율 제한에 영향 없음. 샌드박스에서 웹훅도 정상 호출, 통합 테스트 무료.
- 대량 검사의 권장 방식은?
- 요율 제한 내에서 병렬 제출 — 설계상 batch 엔드포인트 없음(500개 일괄 처리시 312번째 오류 발생보다 500개 개별 호출이 낫다고 판단). 파이프라인 대량처리는 API+웹훅 조합 권장: 제출시 즉시 check_id 반환받고, 이후 200건 추가 제출, 결과는 도착즉시 처리.
- 내 폴더만 검사 범위로 지정 가능합니까?
- 가능 — 요청 본문에 corpora: []와 folder_id 지정시 사용자-개인 폴더만 매칭. corpora: ["academic"]과 조합시 “학술+내 폴더만” 검사 가능. 호출별 지정, 별도 요금제 불필요.
- EU 거주 및 온프레미스가 필요한 경우 변경점은?
- 엔터프라이즈 요금제에서 EU-거주별 전용 엔드포인트(api.eu.noplag.com) 제공 — OpenAPI 표면 동일, 개인정보 EEA 내 유지. 참고 구현을 자체 VPC에 완전 셀프호스팅 가능 — 동일 엔진, 동일 /v1, 데이터 외부 전송 없음. (open-core 전환 중, SOC 2 등 공식 인증은 미완료 상태 — 그 전까지는 감사 가능한 엔진을 제공합니다.)
API 키 발급, 첫 호출 시도.
프리 트라이얼, 100회 무료 호출 포함. 프로 요금제 월 $23/1,000회. 호출을 네트워크 내부에만 유지하고 싶다면 Apache 2.0 참고 구현 활용.