NEW출시 기념 · CMS 이용료·초기 설정비·번역·오디오 50% 할인요금 보기 →
펼친 종이 책 위에 코드 괄호와 터미널 창, RSS 물결 기호가 떠 있는 에디프레소 개발자 문서 일러스트

사이트 관리 API & RSS 피드

외부 편집 도구와 번역 시스템에서 기사를 등록·수정하고, RSS로 발행 기사를 제공할 수 있습니다. 아래에서 인증 방법, 요청 형식과 오류 대응을 확인하세요.

1. 인증과 기본 주소

모든 API는 사이트별 API 토큰으로 인증합니다. 토큰은 사이트 관리 콘솔의 API 연동 메뉴(https://{내-도메인}/admin/site/api)에서 발급하며, 보안을 위해 발급 화면에서 1회만 표시됩니다.

BASE = https://{내-도메인}/admin/api/v1

curl -H "Authorization: Bearer <API토큰>" "$BASE/articles?per_page=10"

2. 공통 규칙

3. 기사 API

GET/articles

기사 목록. 쿼리: q(제목/슬러그 검색) · status · category_id · page(기본 1) · per_page(기본 20, 최대 100).

{"ok":true, "total":2310, "page":1, "per_page":20,
 "articles":[{"id":"…","title":"…","slug":"…","status":"published","tier":"normal",
              "category":"뉴스","author":"홍길동","published_at":"2026-08-24T09:00:00", …}]}
POST/articles

기사 작성. title·slug는 필수, 나머지는 생략 시 기본값(초안·normal).

curl -X POST -H "Authorization: Bearer <토큰>" -H "Content-Type: application/json" \
  "$BASE/articles" -d '{
  "title": "새 기사 제목",
  "slug": "new-article-slug",
  "subtitle": "부제",
  "summary": "목록·RSS에 노출되는 요약",
  "body": "<p>본문 HTML</p>",
  "status": "draft",
  "category_id": "…",
  "author_id": "…",
  "thumb_url": "/storage/….jpg",
  "scheduled_at": "2026-08-25T09:00",
  "keywords": "손흥민, 토트넘, 프리미어리그",
  "series_ids": [], "related_ids": []
}'

응답 201: 저장된 기사 전체(article)를 돌려줍니다. 슬러그 중복이면 409.

keywords(기사 키워드/태그) — 문자열 "손흥민, 토트넘" 또는 배열 ["손흥민","토트넘"] 둘 다 받습니다. 기사 하단 태그와 사이트맵 <news:keywords>에 쓰입니다. 보내지 않으면(또는 빈 값이면) 발행 시점에 AI가 본문에서 4~8개를 자동 추출해 채웁니다 값을 보내면 그대로 저장하고 자동 추출은 하지 않습니다. 최대 8개까지 저장되며 앞뒤 공백·중복은 정리됩니다.

GET/articles/{id}

기사 상세 — 본문·연재/관련 링크·locales(언어별 번역 맵)까지 포함합니다.

PUT/articles/{id}

부분 수정: JSON에 보낸 필드만 바뀌고 생략한 필드는 기존 값이 유지됩니다 (keywords도 동일 — 생략하면 기존 키워드가 그대로 남습니다).

curl -X PUT -H "Authorization: Bearer <토큰>" "$BASE/articles/{id}" \
  -d '{"status":"published"}'      # 발행 처리 — 다른 필드는 그대로
DELETE/articles/{id}

휴지통 이동(soft delete). 콘솔의 휴지통에서 복원할 수 있습니다.

4. 다국어(번역) API

사이트의 언어 설정에서 켠 추가 언어에 대해 기사별 번역을 저장합니다. 번역은 제목·부제·요약·본문·상태(draft/published)와 keywords만 가지며, 대표 이미지·카테고리·기자 등은 원본 기사와 공유합니다. 발행된 번역은 https://{내-도메인}/{언어}/news/{slug}에 노출됩니다.

PUT/articles/{id}/locales/{locale}
curl -X PUT -H "Authorization: Bearer <토큰>" "$BASE/articles/{id}/locales/en" \
  -d '{"title":"English Title","summary":"…","body":"<p>…</p>","status":"published",
       "keywords":"Son Heung-min, Tottenham"}'

사이트에서 활성화되지 않은 언어 코드는 400으로 거부됩니다. 활성 언어 목록은 GET /locales로 확인하세요.

keywords는 그 언어 표기로 넣으세요(원본 키워드를 번역해 쓰지 않습니다). 생략하면 그 언어 본문에서 AI가 따로 추출합니다.

5. 기자·참조 목록 API

POST/authors

기자 등록. name만 필수 — 같은 이름의 활성 기자가 이미 있으면 새로 만들지 않고 그 id를 돌려줍니다("created": false). 기사 작성 전에 호출해 받은 id를 기사 author_id에 넣으면 바이라인·구조화데이터(author)에 기명 기자가 실립니다.

curl -X POST -H "Authorization: Bearer <토큰>" -H "Content-Type: application/json" \
  "$BASE/authors" -d '{
  "name": "홍길동",
  "email": "hong@example.com",
  "title": "기자",
  "bio": "짧은 소개(선택)",
  "profile_image_url": "/storage/….jpg",
  "locales": {
    "en": {"name": "Hong Gil-dong"},
    "ja": {"name": "ホン・ギルドン"}
  }
}'
# → {"ok":true, "id":"…", "created":true}   (이미 있으면 200 + created:false)

locales(선택)는 언어별 이름·직책(title)·소개(bio) 표기입니다 — 사이트에서 활성화한 언어 코드만 허용되고, 비운 필드는 기본값으로 폴백됩니다. "기자"·"편집장" 같은 일반 직책은 번역을 안 보내도 언어 페이지에서 자동 번역됩니다. 이미 있는 기자에게 번역만 나중에 보강하려면 같은 name으로 다시 호출하면 됩니다.

로그인 계정·권한 설정은 API로 만들지 않습니다 — 사이트 콘솔의 회원 관리에서 하세요.

엔드포인트내용
GET/categories섹션(카테고리) 트리 — category_id에 쓸 id·이름·깊이·활성 여부
GET/authors기자 목록 — author_id에 쓸 id·이름
GET/series연재 목록 — series_ids에 쓸 id·이름
GET/locales기본 언어(root_locale) + 활성 추가 언어 목록

6. RSS 피드 (공개 · 전문)

주소내용접근
/feed.xml최신 발행 기사 50건 — 요약만 담는 RSS 2.0공개 (누구나)
/{언어}/feed.xml해당 언어의 발행 번역만 담는 공개 피드공개 (누구나)
/feed/full.xml?key=…기사 전문(본문 HTML 전체)을 content:encoded로 담는 피드전문 RSS 접근키 보유 파트너만
/{언어}/feed/full.xml?key=…해당 언어 번역 전문 피드전문 RSS 접근키 보유 파트너만

전문 피드 키는 콘솔 API 연동 메뉴에서 "전문 RSS 접근키"로 발급해 계약된 신디케이션 파트너에게만 전달하세요. 키가 없거나 틀리면 403이 반환되며, 전문 피드는 검색엔진 색인·공유 캐시에서 제외됩니다. 키가 유출된 경우 콘솔에서 폐기하고 새로 발급하면 됩니다.

7. 오류와 상태 코드

실패 응답은 {"ok": false, "error": "설명"} 형태입니다.

코드의미
400잘못된 요청 — 필수 필드 누락, 잘못된 JSON, 미활성 언어 코드 등
401토큰 없음 또는 무효 — Authorization: Bearer 헤더 확인
403권한 없음 — 전문 피드 키 오류 포함
404대상 없음 — 삭제되었거나 다른 사이트의 리소스
409충돌 — 이미 사용 중인 슬러그
500서버 오류 — 잠시 후 다시 시도해 주세요. 반복되면 발생 시각과 요청 경로를 고객센터에 알려주세요. API 토큰은 보내지 마세요.

작업 문의

24시간 AI가 바로 응대합니다.

사이트 수정 요청이나 운영 중 궁금한 점을 언제든 남겨주세요. AI가 요청 내용을 확인하고 필요한 정보를 안내합니다.

고객센터 1688-4615
도입 문의 support@edipresso.com
전화 상담 평일 09:00 – 18:00 · 접수는 24시간 가능
문의 접수 도입 문의 폼 · 영업일 1일 이내 회신