콘텐츠 API
편집진과 AI 가 함께 만들고 검증 절차를 거친 콘텐츠를 JSON, Markdown, TXT, HTML, JSON-LD 포맷과 다국어로 제공하는 API 입니다. 같은 키로 시맨틱 검색과 콘텐츠 음성(TTS) 메타, 그리고 모델 학습·RAG 색인용 데이터셋(본문 코퍼스·instruction·다국어 병렬)까지 이용할 수 있고, 임베딩 벡터 원본과 음성 mp3 는 Pro 플랜에서 제공합니다. 무료 키를 발급받아 바로 시작할 수 있습니다.
5가지 포맷
같은 콘텐츠를 JSON, Markdown, 순수 텍스트, HTML, schema.org JSON-LD 로 제공합니다.
다국어
한국어·영어·일본어·스페인어에 더해 기계번역 데이터 전용 언어를 제공합니다.
동일 콘텐츠 보장
사람이 보는 페이지와 API 응답이 같은 원본에서 생성됩니다. 클로킹이 없습니다.
요금제
Free
0원
- 월 100건 호출
- 비상업 이용 · 출처 표기 조건
- 이메일 인증 후 즉시 발급
Pro
월 30,000원
- 월 10,000건 + 초과분 종량 과금
- 상업 라이선스
- 국내 카드·해외 결제 지원 예정
유료 플랜 요금은 출시 시 이 페이지에 고지됩니다. 신규 신청 요금은 매월 인상될 수 있으며, 구독 유지 중에는 가입 시점 요금이 유지됩니다.
가격 인상 예정: 2026-09-01 부터 신규 신청은 월 31,500원입니다. 지금 구독하면 현재 가격이 유지됩니다.
구독 시작·해지는 로그인 후 "내 콘텐츠 API" 페이지에서 관리합니다.
API 테스트
발급받은 API 키 또는 쿼리 토큰으로 별도 도구 없이 각 엔드포인트를 브라우저에서 바로 호출해 상태 코드·쿼터·응답 본문을 확인할 수 있습니다.
사용법
발급받은 키를 Authorization 헤더에 넣어 호출합니다. 아래는 엔드포인트·파라미터·응답 포맷과 예시입니다.
엔드포인트
| 엔드포인트 | 설명 |
|---|---|
| GET /api/v1/contents | 게시 콘텐츠 목록 (lang·category·tag·updated_since·페이지네이션) |
| GET /api/v1/contents/{content_id} | 단건 본문 - format 파라미터로 포맷 지정 (json|md|txt|html|jsonld, 기본 json) |
| GET /api/v1/contents/by-slug/{slug} | 단건 본문 (content_id 대신 slug 로 조회) |
| GET /api/v1/contents/{content_id}/images | 이미지 메타데이터 (alt·캡션·라이선스) |
| GET /api/v1/categories | 카테고리 목록 (slug·이름·발행글 수) - category 필터용 slug 발견 |
| GET /api/v1/tags | 태그 목록 (slug·이름·발행글 수) - tag 필터용 slug 발견 |
| GET /api/v1/binders | 바인더(주제별 컬렉션) 목록 (slug·이름·발행글 수) |
| GET /api/v1/binders/{slug} | 바인더 단건 메타데이터 |
| GET /api/v1/binders/{slug}/contents | 바인더 소속 게시 콘텐츠 목록 (페이지네이션) |
| GET /api/v1/sites | 사이트(서비스 단위 주제 컬렉션) 목록 (slug·이름·발행글 수) |
| GET /api/v1/sites/{slug} | 사이트 단건 메타데이터 |
| GET /api/v1/sites/{slug}/contents | 사이트 소속 게시 콘텐츠 목록 (페이지네이션) |
| GET /api/v1/search | 게시 콘텐츠 검색 (q, 2자 이상). mode=semantic 이면 벡터 시맨틱 검색(임베딩 API 활성 시). |
| GET /api/v1/contents/{content_id}/embeddings | 콘텐츠 임베딩 벡터 원본 (Pro 전용, 임베딩 API 활성 시). lang 지정 시 해당 언어 1건, 미지정 시 현재 모델의 전 언어. |
| GET /api/v1/contents/{content_id}/audio | 콘텐츠 TTS 음성 메타 (오디오 API 활성 시). 언어·엔진·길이·문장 타임라인과 mp3 경로. |
| GET /api/v1/contents/{content_id}/audio/{lang} | 콘텐츠 TTS 음성 mp3 파일 (Pro 전용, 크레딧 3배, 오디오 API 활성 시). |
| GET /api/v1/datasets | 데이터셋 카탈로그 - 제공 종류·스키마 필드·상한·과금 규칙 (데이터셋 API 활성 시). |
| GET /api/v1/datasets/corpus | 본문 코퍼스 - 본문·요약·핵심포인트를 포함한 레코드를 여러 건 한 번에. 페이지네이션·증분(updated_since) 지원. |
| GET /api/v1/datasets/qa | instruction 데이터셋 - 콘텐츠 FAQ 를 chat messages(user/assistant) 쌍으로 전개. |
| GET /api/v1/datasets/parallel | 다국어 병렬 코퍼스 - 같은 글의 여러 언어를 한 행에 정렬. langs·status 로 언어·검수 상태 선택. |
| GET /api/v1/datasets/embeddings | 임베딩 벡터 벌크 (Pro 전용, 임베딩 API 활성 시). 글 단위로 벡터를 동봉. |
데이터셋 (학습·RAG)
모델 학습·파인튜닝·RAG 색인처럼 여러 건을 한 번에 가져가야 하는 용도를 위해, 콘텐츠를 학습용 스키마로 정규화해 제공합니다. 목록·단건 API 와 동일하게 page·per_page·category·tag·updated_since 를 지원하고, format=jsonl 로 받으면 학습 파이프라인에 바로 넣을 수 있습니다.
| 종류 | 설명 | 레코드 1건 | 크레딧 |
|---|---|---|---|
| corpus | 본문·요약·핵심포인트·태그·라이선스·번역상태를 담은 코퍼스 | 글 x 언어 | ceil(per_page/10) |
| qa | FAQ 를 user/assistant 메시지 쌍으로 전개한 instruction 데이터 | FAQ 항목 x 언어 | ceil(per_page/10) |
| parallel | 같은 글의 여러 언어를 한 행에 정렬한 병렬 코퍼스 | 글 | ceil(per_page/5) |
| embeddings | 임베딩 벡터를 글 단위로 동봉 (Pro 전용) | 글 | ceil(per_page/2) |
per_page 상한은 Free 플랜 10건, Pro 플랜은 종류별로 최대 100건입니다(임베딩은 20건). 크레딧은 요청한 per_page 기준으로 계산되어, 같은 분량을 단건 조회로 반복하는 것보다 적게 듭니다.
데이터셋 API 는 무료 데이터 제공을 대체하지 않습니다. 콘텐츠 낱건을 TXT·Markdown·JSON·JSON-LD 로 가져가는 무인증 경로는 지금처럼 무료로 계속 제공됩니다. 무료 데이터 이용 안내
제공 언어
| 언어 | 설정값(lang) | 구분 | 웹 페이지 | 데이터 파일 | 음성(TTS) | 임베딩 |
|---|---|---|---|---|---|---|
| 한국어 | ko | 1티어 | ✓ | ✓ | ✓ | ✓ |
| English | en | 1티어 | ✓ | ✓ | ✓ | ✓ |
| 日本語 | ja | 1티어 | ✓ | ✓ | ✓ | ✓ |
| Español | es | 1티어 | ✓ | ✓ | ✓ | ✓ |
| 인도네시아어 | id | 2티어 | - | ✓ | - | - |
| 포르투갈어 | pt | 2티어 | - | ✓ | - | - |
| 중국어(번체) | zh-hant | 2티어 | - | ✓ | - | - |
| 독일어 | de | 2티어 | - | ✓ | - | - |
- 1티어 - 번역 검수를 마친 언어입니다. 사람이 읽는 웹 페이지·검색 노출(sitemap·hreflang)·AI 음성(TTS)·임베딩까지 전부 제공됩니다.
- 2티어 - 기계번역 데이터 전용 언어입니다. 데이터 파일과 API 로만 제공되며 웹 페이지·검색 노출·음성(TTS)·임베딩은 제공되지 않습니다. 검수 전이라는 뜻으로 translation_status: machine 라벨이 항상 함께 표기됩니다.
API 의 lang 파라미터에는 위 설정값을 그대로 넣습니다. 콘텐츠 단건·데이터셋은 2티어 언어도 받지만, 음성(TTS)·임베딩 엔드포인트는 1티어 언어만 응답합니다.
쿼리 파라미터
| 파라미터 | 설명 |
|---|---|
| lang | 언어. 위 제공 언어 표의 설정값을 넣습니다. 미지정 시 ko. 단건·데이터셋은 2티어 언어도 받지만, 음성(TTS)·임베딩은 1티어(ko·en·ja·es)만 응답합니다. |
| format | 응답 포맷. 단건 조회는 json·md·txt·html·jsonld, 데이터셋은 json·jsonl 중 하나이며 기본값은 json 입니다. |
| page, per_page | 목록 페이지네이션. page(1부터), per_page(1~100, 기본 20). |
| category, tag, updated_since | 목록 필터. category(카테고리 slug), tag(태그 slug), updated_since(ISO 8601 이후 수정분). |
| q | 검색어 (검색 전용, 2자 이상). 제목·요약·본문·태그명 부분일치. |
| mode | 검색 모드 (검색 전용). mode=semantic 이면 벡터 의미 검색, 기본은 키워드. 시맨틱은 임베딩 API 활성 시에만 동작. |
| langs | 병렬 코퍼스에 담을 언어 (데이터셋 parallel 전용). 쉼표로 구분하며 미지정 시 전체 언어. |
| status | 번역 상태 필터 (데이터셋 parallel 전용). reviewed(검수본만)·machine(기계번역만)·all(기본). |
| service | 서비스(도메인) 필터. **선택 사항이며 기본은 전체** - 안 주면 모든 서비스의 콘텐츠·바인더·사이트가 함께 나옵니다. 도메인(injoys.com) 또는 키(injoys) 중 아무 형태나 받습니다. 없는 값은 400 으로 알립니다. |
지원 포맷 (단건 조회 format)
| format | Content-Type | 설명 |
|---|---|---|
| json | application/json | 구조화 데이터(제목·요약·본문·메타·태그). 기본값. |
| md | text/markdown | Markdown 본문. LLM·문서화에 적합. |
| txt | text/plain | 순수 텍스트 본문. |
| html | text/html | 렌더링된 HTML 본문. 바로 표시·임베드에 적합. |
| jsonld | application/ld+json | schema.org JSON-LD (Article). 검색·지식그래프용. |
예시
인증은 Authorization: Bearer 헤더 또는 X-Api-Key 헤더를 사용합니다.
# 목록 조회 curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/contents?lang=ko&page=1&per_page=20" # 카테고리로 필터 curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/contents?lang=ko&category=<CATEGORY_SLUG>" # 태그로 필터 curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/contents?lang=ko&tag=<TAG_SLUG>" # 증분 동기화 (특정 시각 이후 수정분) curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/contents?updated_since=2026-01-01T00:00:00Z" # 특정 서비스만 (선택 - 안 주면 전체) curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/contents?lang=ko&service=<SERVICE>" # 단건 조회 (HTML 포맷) curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/contents/<CONTENT_ID>?lang=ko&format=html" # slug 로 단건 조회 (Markdown 포맷) curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/contents/by-slug/<SLUG>?lang=ko&format=md" # 이미지 메타데이터 curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/contents/<CONTENT_ID>/images" # 카테고리 목록 curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/categories?lang=ko" # 태그 목록 curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/tags?lang=ko" # 바인더 목록 curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/binders?lang=ko" # 바인더 소속 콘텐츠 curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/binders/<BINDER_SLUG>/contents?lang=ko" # 사이트 목록 curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/sites?lang=ko" # 사이트 소속 콘텐츠 curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/sites/<SITE_SLUG>/contents?lang=ko" # 검색 curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/search?q=<KEYWORD>&lang=ko" # 시맨틱 검색 (벡터 의미 검색) curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/search?q=<KEYWORD>&mode=semantic&lang=ko" # 임베딩 벡터 원본 (Pro) curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/contents/<CONTENT_ID>/embeddings?lang=ko" # TTS 음성 메타 curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/contents/<CONTENT_ID>/audio?lang=ko" # TTS 음성 mp3 (Pro) curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/contents/<CONTENT_ID>/audio/ko" # 데이터셋 카탈로그 curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/datasets" # 본문 코퍼스 (한 번에 여러 건) curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/datasets/corpus?lang=ko&per_page=100" # 본문 코퍼스 JSONL (학습 파이프라인용) curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/datasets/corpus?lang=ko&format=jsonl" # 증분 동기화 (특정 시각 이후 수정분만) curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/datasets/corpus?updated_since=2026-01-01T00:00:00Z&format=jsonl" # instruction 데이터셋 (FAQ → messages 쌍) curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/datasets/qa?lang=ko&format=jsonl" # 다국어 병렬 코퍼스 (검수본만) curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/datasets/parallel?langs=ko,en,ja&status=reviewed" # 임베딩 벡터 벌크 (Pro) curl -H "Authorization: Bearer <API_KEY>" \ "https://onbinder.com/api/v1/datasets/embeddings?lang=ko&per_page=20"
선택: 헤더 대신 쿼리 토큰(URL 인증)을 쓸 수 있습니다. "내 콘텐츠 API" 페이지에서 발급한 QUERY_KEY 를 붙여 헤더 없이 호출합니다. URL·로그에 노출될 수 있어 읽기 전용·만료·폐기 가능하며, 민감하지 않은 편의용으로만 권장합니다.
https://onbinder.com/api/v1/contents?query_key=<QUERY_KEY>&lang=ko
월 쿼터는 성공(2xx) 응답만 산입되며, 잔여량은 X-Monthly-Quota-* 응답 헤더로 확인할 수 있습니다. 쿼터는 매월 1일(KST)에 초기화됩니다.
시맨틱 검색·임베딩·오디오·데이터셋 요청은 크레딧을 더 사용합니다: 시맨틱 검색(mode=semantic) 2배, 임베딩 벡터 원본 5배, TTS 음성 mp3 파일 3배(메타는 1배). 데이터셋은 요청한 per_page 에 비례합니다(코퍼스·QA 는 10건당 1, 병렬은 5건당 1, 임베딩은 2건당 1). 벡터 원본·음성 mp3 파일·임베딩 데이터셋은 Pro 플랜 전용이며, 각 기능은 관리자가 해당 API(임베딩/오디오/데이터셋)를 활성화한 경우에만 동작합니다.