DNA 포럼 API 서비스 모음 DNA Lens
API 서비스 전체 API 목록 | 개발자 포럼 | 예제 모음 | 개발자 행사 DevDay | DevNight | API 콘테스트 | 매쉬업경진대회@

블로그 API


블로그 API는 다음(Daum) 블로그 서비스를 외부에서 이용하는데 있어서 필요한 기능들을 제공합니다. 개발자 분들은 API를 이용해서 글을 등록할수 있고, 동영상을 업로드 할수 있습니다.

요청 방법(Request Method) #

  1. XML-RPC요청 방식을 통해 제공 가능합니다.
  2. REST 요청 방식을 통해 제공 가능합니다.

인증 요청 변수 (Request Parameters) #

  • 공통 인증 변수: 모든 API 서비스 요청시 공통적으로 넣어야 할 변수는 아래와 같습니다.

인증 파라미터 #

  • 인증에 사용되는 공통 파라미터를 설명합니다.

요청 변수 설명
apikey 40 byte hexadecimal string (필수) 모든 오픈 API 호출에 공통으로 사용되는 인증키 입니다.
Daum 회원이면, apikey를 발급 받을 수 있습니다.
오픈 API는 검색, UCC, 디앤샵 API로 구분됩니다. 나중에 다른 API가 추가될 수 도 있습니다.
각 API별로 Daum 회원은 하나의 apikey 만을 발급받을 수 있습니다. 그리고, 이 apikey로는 허가된 API만 호출 할 수 있습니다.

예) apikey=4125603e35da5d8820b07dc7b19050dbc838336b
apid 20 byte hexadecimal string 오픈 API를 이용하여 어플리케이션 이나 웹 사이트를 작성한 개발자 분들은 프로그램 등록을 할 수 있습니다. apid 는 등록된 프로그램에 대해서 오픈 API 인증 시스템에서 제공한 프로그램 아이디 입니다.
일부 오픈 API는 apid 파라미터를 필수로 요구하는 경우가 있습니다.
등록된 프로그램은 이 DNA 사이트를 통해서 홍보되며, 개발자 본인의 의사에 따라 다른 사용자가 다운받아 설치할 수 있게 됩니다.

예) apid=ba8c53ab7970189d93a7

서명 인증 파라미터 #

  • 서명된 오픈 API는 인증키가 다른 사용자에 의해서 도용 되는 것을 보호해 줍니다.
  • 서명은 필수적인 파라미터가 아닙니다. 그러나, 일부 오픈 API는 반드시 서명을 요구합니다.
  • 서명에 사용되는 파라미터를 설명합니다.

이름 설명
ts YYYYMMDDhhmmss 오픈 API를 호출하는 시간.
UTC Time 으로 변환되서 전달되어야 합니다.
서명 값(sig)을 전달할 때 반드시 포함되어야 합니다.

예, ts=20060501153010
nonce 16 byte hexadecimal string 랜덤한 8byte binary 값. ts 와 함께 서명의 재 사용여부를 확인하는데 사용됩니다.
서명 값(sig)을 전달할 때 반드시 포함되어야 합니다.

예, nonce=bd149ae021feb132
sigalg "hmacsha1" 서명에 사용하는 알고리즘 이름. "hmacsha1" 으로 고정되어 있습니다. 실제 사용하는 알고리즘은 RFC 2014 에 정의되어 있는 HMACSHA-1 입니다.
서명 값(sig)을 전달할 때 반드시 포함되어야 합니다.
sig 40 byte hexadecimal string 오픈 API 호출 URL 전체에 대해서 서명키로 서명한 값.

예) sig=b45de8a31aed6e58b831dd72087bb4ed71fcaf98

  • 서명 값 만들기 & 소스 예제 코드 : HowToSign


  • 샘플 URL
http://apis.daum.net/blog/XMLRPC.do?apid=search_plugin&apikey=12345&sig=abcde

블로그 글 및 댓글 쓰기 #

블로그 글쓰기 ( Deprecated ) daum.blog.openapi.newPost.execute #

  • XML-RPC 요청주소
  • method
    • daum.blog.openapi.newPost.execute
  • Request Parameters
    • String subject // 글 제목
    • String body // 글 내용
    • String tag // 이 글에 대한 태그, 태그가 여러개일 경우 구분자 , 로 구분한다.
    • String "" // 빈값 처리 (vector 객체순서 준수)
    • String "" // 빈값 처리 (vector 객체순서 준수)
    • String "" // 빈값 처리 (vector 객체순서 준수)
    • String "" // 빈값 처리 (vector 객체순서 준수)
    • String cateid // 글을 입력하는 카테고리 ID를 넣습니다. (전체는 기본 "0")
    • string regdt // 글 등록일 (yyyy-MM-dd'T'HH:mm:ss'Z')
  • Response Elements
    • String articleno /* 등록된 글 번호. */ || null /* 실패 */

예제 방식 #

<?xml version="1.0" encoding="UTF-8"?>
<methodcall>
	<methodname>daum.blog.openapi.newPost.execute</methodname>
	<params>
		<param><value>subject</value></param>
		<param><value>body</value></param>
		<param><value>tag</value></param>
	</params>
</methodcall>

블로그 글쓰기&파일첨부 daum.blog.openapi.newPost.execute #

  • 파일첨부는 파일 URL을 입력하는 방식입니다.
  • Hashtable로 값을 받기 때문에 null 대신 ""을 권장합니다.

  • XML-RPC 요청주소
  • method
    • daum.blog.openapi.newPost.execute
  • Request Parameters
    • vector : articleList (본문내용 1개)
      • Hashtable : String subject | 글 제목
      • Hashtable : String body | 글 내용
      • Hashtable : String tag | 이 글에 대한 태그, 태그가 여러개일 경우 구분자 , 로 구분한다.
      • Hashtable : String cateid | 글을 입력하는 카테고리 ID를 넣습니다. (전체는 기본 "0")
      • Hashtable : string regdt | 글 등록일 (yyyy-MM-dd'T'HH:mm:ss'Z')
      • Hashtable : articleopen | 전체공개:A, 통하는블로그공개:F, 비공개:H
      • Hashtable : scrapopen | 전체공개:A, 부분공개:P, 비공개:H
    • vector : attachFile (첨부파일 n개)
      • Hashtable : String size | 파일사이즈
      • Hashtable : String filename | 파일 이름
      • Hashtable : String url | URL
      • Hashtable : String source | 소스
      • Hashtable : String conttype | 첨부타입 (파이 pi, 파일 fi, 동영상 vi)
    • vector (articleList 와 attachFile를 담고있음)
      • articleList.toArray()
      • attachFile.toArray()

  • Response Elements
    • String articleno /* 등록된 글 번호. */ || null /* 실패 */

블로그 글수정 daum.blog.openapi.modifyPost.execute #

  • XML-RPC 요청주소
  • method
    • daum.blog.openapi.modifyPost.execute
  • Request Parameters
    • String articleno //글 번호
    • String subject // 글 제목
    • String body // 글 내용
    • String tag // 이 글에 대한 태그, 태그가 여러개일 경우 구분자 , 로 구분한다.
  • Response Elements
    • String articleno /* 수정된 글 번호. */ || null /* 실패 */

예제 방식 #

<?xml version="1.0" encoding="UTF-8"?>
<methodcall>
	<methodname>daum.blog.openapi.modifyPost.execute</methodname>
	<params>
                  <param><value>123456</value></param>
		<param><value>subject</value></param>
		<param><value>body</value></param>
		<param><value>tag</value></param>
	</params>
</methodcall>


블로거 뉴스 송부 daum.blog.openapi.newPost.executeNewsReporter #

  • XML-RPC 요청주소
  • method
    • daum.blog.openapi.newPost.executeNewsReporter
  • Request Parameters
    • String : subject // 글제목
    • String : body // 글 내용
    • String : tag // 태그
    • String newsCateId // 블로그가 만든뉴스 카테고리(분류) ID
  • Response Elements
    • String : articleno /* 성공 글 번호 */ || null /* 실패 */

블로그 댓글 쓰기 daum.blog.openapi.newComment.execute #

  • XML-RPC 요청주소
  • method
    • daum.blog.openapi.newComment.execute
  • Request Parameters
    • string : blogid (블로그 아이디 )
    • string : articleNum (글번호 )
    • string : writerId (작성자 아이디 )
    • string : writerDaumId (작성자 다음아이디)
    • string : password (작성자비밀번호)
    • string : writerDaumName (작성자 다음이름)
    • string : contents (댓글 내용)
    • string : regdt (글작성날짜 (yyyy-MM-dd'T'HH:mm:ss'Z'))
  • Response Elements
    • String : true / false로 넘겨옴

블로그 정보 조회 #

블로그 개설여부 확인 daum.blog.openapi.checkBlog.execute #

블로그명 중복체크 daum.blog.openapi.checkBlogName.execute #

  • XML-RPC 요청주소
  • method : daum.blog.openapi.checkBlogName.execute
  • Request Parameters
    • String blogName(블로그이름)
  • Response Elements
    • String : 없으면 "notexist", 있으면 "exist"

블로그 목록보기 #

  • REST 요청주소
  • Request Parameters (필수)
    • String : blogname //내 블로그 이름 (필수)
    • int : listScale // 한페이지에 나오는 글의 갯수(필수) ->없으면 20이 기본
  • Request Parameters (선택)
    • int : curPage 가고자 하는 페이지 번호(선택 : 이전,다음으로 페이지이동시)
    • String : minno 2->1 페이지로 갈때 가장 작은 number
    • String : maxno 2->3 페이지로 갈때 가장 큰 number
  • Response Elements
    • String : link //글 URL
    • String : title //글 제목
    • String : date // 글 쓴 날짜
    • String : nickname // 별명
    • String : scrap //스크랩 여부
    • maxno : 한페이지중 가장 큰 articleno (페이징시 필요)
    • minno :한페이지중 가장 작은 articleno (페이징시 필요)

블로그 글보기 #

블로그 관리 #

블로그 개설 daum.blog.openapi.makeBlog.execute #

  • XML-RPC 요청주소
  • method
    • daum.blog.openapi.makeBlog.execute
  • Request Parameters
    • String : blogName(블로그이름)
    • String : blogTitle(제목)
    • String : blogDesc(설명)
  • Response Elements
    • String : success /* 성공 */ || notlogin /* 로그인 실패 */ || existblog /*이미블로그가 존재하는 사용자 */ || existbloname /* 존재하는 블로그 /* || blacklistuser /* 블랙리스트 */ ||' fail /* 기타 */

블로그 댓글 목록 #

  • REST 요청주소
  • Request Parameters
    • String : blogname // 블로그이름
    • String : articleno // 글번호
    • String : pageno // 페이저번호
    • String : countperpage // 1페이지당 글갯수
  • Response Elements
    • String : no // 댓글번호
    • String : parentno // 댓글의부모글
    • String : description // 내용
    • String : pubData // 댓글쓴 시간
    • String : author //블로그별명
    • String : open // 공개설정 (Y/N)

기타 정보 #

블로그가 만든뉴스 카테고리 (분류) ID #

미니알리미 구독리스트 #

미니알리미 내글에 대한 반응 #

오류 메시지 #

  • 공통 오류 메시지는 다음과 같습니다.
오류는 다음과 같은 xml로 전달됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<apierror>
      <code></code>
      <message></message>
      <dcode></code>
      <dmessage></dmessage>
</apierror>
오류 xml 의 각 항목은 아래와 같은 값을 가집니다.

오류 코드 (code|dcode) 오류(message) 상세 오류(dmessage) 설명
10 | invalid request 오픈 API 호출이 공통 호출 규약에 맞지 않은 경우에 전달된다.
10 | 11 invalid request apikey missing apikey 파라미터가 없음
10 | 12 invalid request Missing auth parameter 'ts'. ts 파라미터가 없음
10 | 13 invalid request Missing auth parameter 'nonce'. nonce 파라미터가 없음
10 | 14 invalid request Missing auth parameter 'sigalg'. sigalg 파라미터가 없음
10 | 15 invalid request Missing auth parameter 'sig'. sig 파라미터가 없음
10 | 18 invalid request Missing parameter 'apid'. apid 파라미터가 없음
20 | unknown ap instance 프로그램 인증 실패.
20 | 21 unknown ap instance invalid apikey 유효하지 않은 apikey
20 | 22 unknown ap instance unregistered apikey 등록되지 않은 apikey
20 | 23 unknown ap instance unregistered apid 등록되지 않은 apid
20 | 24 unknown ap instance Signature sigkey is not valid. 유효하지 않은 서명키
20 | 25 unknown ap instance invalid apid 유효하지 않은 apid
20 | 26 unknown ap instance SignatureKey is not issued to this apikey. apikey 해당하지 않는 서명키
20 | 27 unknown ap instance ts, nonce are reused. ts,nonce 재사용 오류
20 | 28 unknown ap instance Unsupported Sign Algorithm. 지원하지 않는 서명 알고리즘
30 | unknown daumuser apikey 소유자의 Daum 인증 실패.
40 | access denied 서비스 접근 거부
40 | 41 access denied valid api call but traffic overed 하루 api 호출 traffic 초과
40 | 42 access denied apikey does not match api category 이 apikey 로 호출할 수 있는 api 가 아님
40 | 43 access denied unsigned call 서명되지 않은 호출
40 | 44 access denied unregistered ip 등록되지 않은 IP 주소
40 | 45 access denied apid doesnot use api 프로그램이 이 api를 사용하고 있지 않음
404 no such api 해당 오픈 API 서비스가 없음
500 system error 오픈 API 서비스 내부 시스템 에러.
504 service timeout 오픈 API 서비스 연결 실패. 서비스 시스템 과부하 또는 장애로 인한 서비스 연결 실패.
100 | service api runtime error 오픈 API 서비스 실행 오류. 101~299 값을 가지며, 각 API 에서 정의함.


트래픽 제한 #

  • 오픈 API는 하나의 apikey에 대해서 하루 5,000 회의 호출 만을 허용합니다.
  • 트래픽 제어는 보안을 위한 측면이 크며, 증가 추이에 따라 트래픽 허용 수를 늘리는 정책을 사용할 예정입니다.
  • 상용 서비스를 위해 또는 사용자 증가로 인하여 허용 traffic 수를 늘리고자 할때에는 어플리케이션 등록을 마치고, 해당 apid에 대해 별도로 traffic 을 조정할 수 있습니다.


샘플 코드 #

  • PHP 코드
  • JavaScript 코드