メインコンテンツまでスキップ

はてなブックマーク ブックマーク API

本ドキュメントに関する注意事項

本ドキュメントははてなブックマーク REST API の解説の一部です。

ブックマーク API の概要

名前実行する操作
GET /rest/1/my/bookmarkブックマーク情報を取得する
POST /rest/1/my/bookmarkブックマークを追加または更新する
DELETE /rest/1/my/bookmarkブックマークを削除する

GET /rest/1/my/bookmark

概要

認証したユーザーのブックマーク情報を取得します。

URL

https://bookmark.hatenaapis.com/rest/1/my/bookmark
非推奨

api.b.hatena.ne.jp のエンドポイントは 2020年3月4日以降は利用できなくなります。

http://api.b.hatena.ne.jp/1/my/bookmark

認証

OAuth 認証 (read_public または read_private) が必要です。

HTTP メソッド

GET でアクセスしてください。

引数

  • url

取得したいブックマークの URLurl クエリーパラメーターに指定します。

結果

取得に成功した場合、ブックマークオブジェクトを返します。

ブックマークが存在しない場合、ステータスコード 404 を返します。

リクエストが不正である場合、ステータスコード 400 を返します。

POST /rest/1/my/bookmark

概要

認証したユーザーのブックマークを追加・更新します。

既にブックマーク済みのページであれば更新、そうでなければ新たに追加します。

URL

https://bookmark.hatenaapis.com/rest/1/my/bookmark
非推奨

api.b.hatena.ne.jp のエンドポイントは 2020年3月4日以降は利用できなくなります。

http://api.b.hatena.ne.jp/1/my/bookmark

認証

OAuth 認証 (write_public または write_private) が必要です。

HTTP メソッド

POST でアクセスしてください。

引数

  • url
  • comment
  • tags
  • post_twitter
  • post_mixi
  • post_evernote
  • private

取得したいブックマークの URLurl クエリーパラメーターに指定します。

任意でブックマークコメントを comment に指定することができます。

任意でブックマークにタグをつけることができます。tags クエリーパラメーターを最大10個まで指定することができます。

ブックマークした際に各種外部サービスに共有することができます。それぞれのサービスについて OAuth 認証したうえで post_twitter, post_mixi_check, post_evernote クエリーパラメーターに真値を渡すと共有できます。

ブックマークを非公開にする場合は private クエリーパラメーターに真値を渡します。

結果

追加または更新に成功した場合、ブックマークオブジェクトを返します。

リクエストが不正である場合、ステータスコード 400 を返します。

DELETE /rest/1/my/bookmark

概要

認証したユーザーのブックマークを削除します。

URL

https://bookmark.hatenaapis.com/rest/1/my/bookmark
非推奨

api.b.hatena.ne.jp のエンドポイントは 2020年3月4日以降は利用できなくなります。

http://api.b.hatena.ne.jp/1/my/bookmark

認証

OAuth 認証 (write_public または write_private) が必要です。

HTTP メソッド

DELETE でアクセスしてください。

引数

  • url

取得したいブックマークの URLurl クエリーパラメーターに指定します。

結果

削除に成功した場合、ステータスコード 204 を返します。

ブックマークが存在しない場合、ステータスコード 404 を返します。

リクエストが不正である場合、ステータスコード 400 を返します。

サンプルコード

ブックマークを追加・取得・削除するサンプルコードです。

#!/usr/bin/env ruby

require 'oauth'
require 'yaml'

auth_file = '.auth.yaml'

if !File.exist?(auth_file)
# https://www.hatena.ne.jp/oauth/develop より取得する
auth = {
'consumer_key' => '***',
'consumer_secret' => '***',
}

@consumer = OAuth::Consumer.new(
auth['consumer_key'],
auth['consumer_secret'],
:site => '',
# 必要ならば read_private,write_private を追加する
:request_token_path => 'https://www.hatena.com/oauth/initiate?scope=read_public,write_public',
:access_token_path => 'https://www.hatena.com/oauth/token',
:authorize_path => 'https://www.hatena.ne.jp/oauth/authorize')

@request_token = @consumer.get_request_token

print 'Open: ' + @request_token.authorize_url + "\n"
print 'CODE: '
@access_token = @request_token.get_access_token(:oauth_verifier => gets.strip)

auth['token'] = @access_token.token
auth['token_secret'] = @access_token.secret

File.open(auth_file, 'w') {|f| YAML.dump(auth, f)}
File.chmod(0600, auth_file)
end

auth = YAML.load(File.open(auth_file))

@consumer = OAuth::Consumer.new(
auth['consumer_key'],
auth['consumer_secret'],
:site => 'https://bookmark.hatenaapis.com/rest/1',
)

@access_token = OAuth::AccessToken.new(@consumer, auth['token'], auth['token_secret'])

url = 'https://example.com'
path = "/my/bookmark?#{URI.encode_www_form [['url', url]]}"
res = @access_token.post(path)
print res.code, "\t", res.body, "\n"
res = @access_token.get(path)
print res.code, "\t", res.body, "\n"
res = @access_token.delete(path)
print res.code, "\n"

うまく動かない場合は以下の手順をお試しください。