Misskey API

MisskeyはAPIを公開しています。APIを使ってMisskeyクライアント、Misskey連携Webサービス、Bot等(以下「アプリケーション」と呼びます)を開発することができます。 ストリーミングAPIもあるので、リアルタイム性のあるアプリケーションを作ることも可能です。

Misskey公式SDKやサードパーティライブラリを使うことによって、このドキュメントで説明するいくつかの手順を簡略化できるなど、より便利にAPIを利用することができます。
ライブラリについてはこちらを参照してください。

APIを使い始めるには、APIを利用するアカウントに紐づいたアクセストークンを取得する必要があります。 このドキュメントでは、アクセストークンを取得する手順を説明した後、基本的なAPIの使い方を説明します。

アクセストークンの取得

基本的に、APIはリクエストにはアクセストークンが必要となります。 アクセストークンは、ユーザーに紐づいた認証情報で、APIを利用するユーザーを識別するとともに、アクセストークンごとにどういった操作の権限を持っているかが管理されます。

ユーザーとそのユーザーに紐づいたアクセストークンは一対多の関係であり、あるユーザーに対して複数のアクセストークンが発行され得ます。

あなた自分自身のアクセストークンは簡単に取得できるほか、あなたのアプリケーションを使用することになる不特定のユーザーのアクセストークンを取得することもできます。

  • 前者の場合: 「自分自身のアクセストークンを手動発行する」 に進む
  • 後者の場合: 「アプリケーション利用者にアクセストークンの発行をリクエストする」 に進む

自分自身のアクセストークンを手動発行する

Misskey Webの「設定 > API」で、自分のアクセストークンを発行できます。

アクセストークンは他人に知られないようにしてください。

アプリケーション利用者にアクセストークンの発行をリクエストする

アプリケーションを利用するユーザー(以下単に「ユーザー」と呼びます)のアクセストークンを取得するには、以下の手順で発行をリクエストします。

以下に説明する方法は、アプリを作成せずインスタントにアクセストークンを発行する、MiAuthと呼ばれるものです。

アプリ作成方式でのアクセストークン取得方法もあります(旧来型)。

Step 1

UUIDを生成する。以後これをセッションIDと呼びます。

このセッションIDは毎回生成し、使いまわさないようにしてください。

Step 2

アプリケーション認証フォームをユーザーのブラウザで表示させる。認証フォームは、以下の形式のURLで開くことができます:

https://{host}/miauth/{session}

ここで、

  • {host}の部分は、ユーザーのインスタンスのホストに置き換えます。通常ホストはユーザーが入力します。
  • {session}の部分は、セッションIDに置き換えます。

また、URLにクエリパラメータとしていくつかのオプションを設定できます:

名前説明
nameアプリケーション名。
iconアプリケーションのアイコン画像URL。
callback認証が終わった後にリダイレクトするURL。
リダイレクト時には、sessionというクエリパラメータでセッションIDが付きます。
permissionアプリケーションが要求する権限。
要求する権限を,で区切って列挙します。権限の一覧はこちらで確認できます。

https://misskey.io/miauth/c1f6d42b-468b-4fd2-8274-e58abdedef6f?name=MyApp&callback=https%3A%2F%2Fmyapp.example.com%2Fcallback&permission=write:notes,write:following,read:drive

Step 3

ユーザーがアプリケーションアクセスを許可した後、次の形式のURLにPOSTリクエストすると、レスポンスとしてアクセストークンを含むJSONが返ります。

https://{host}/api/miauth/{session}/check

ここで、

  • {host}の部分は、ユーザーのインスタンスのホストに置き換えます。
  • {session}の部分は、セッションIDに置き換えます。

レスポンスに含まれるプロパティは以下の通りです:

名前説明
tokenユーザーのアクセストークン。
userユーザーの情報。

APIの利用

アクセストークンが取得できたら、各種エンドポイントにリクエストすることでAPIの利用が行えます。

  • HTTP APIはすべてPOSTで、リクエスト/レスポンスともにJSON形式です(drive/files/createを除く)。
  • 要求ヘッダーにContent-Type: application/jsonを指定します。
  • アクセストークンは、iというパラメータ名でリクエストボディJSONに含めます。

アクセストークン付きのボディの例(metaの場合):

{
    "i": "HogEFugA1341",
    "detail": false
}

APIの詳細は、APIリファレンスを参照してください。

MisskeyはRESTを採用していません。

また、MisskeyはHTTP APIだけでなく、ストリーミングAPIも提供しています。ストリーミングAPIの詳細はこちらのドキュメントを参照してください。