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

アカウント

client.accounts API はアカウント情報の取得・管理操作を提供します。

アカウントの取得

ID で取得

final account = await client.accounts.fetchById('12345');
print(account.displayName);
print(account.followersCount);

ユーザー名(acct)で取得

final account = await client.accounts.lookup('user@mastodon.social');

サーバーが lookup エンドポイントをサポートしていない場合、ライブラリが自動的に検索ベースのフォールバックを行います。

認証ユーザー

final me = await client.accounts.verifyCredentials();
print(me.source); // 認証ユーザーのみ利用可能な追加フィールド

複数アカウント

final accounts = await client.accounts.fetchMultiple(['1', '2', '3']);

検索

final results = await client.accounts.search(
'keyword',
limit: 10,
resolve: true, // WebFinger でリモートアカウントを解決
);

ソーシャルグラフ

フォロワーとフォロー

どちらもページネーション対応の MastodonPage<MastodonAccount> を返します。

final followers = await client.accounts.fetchFollowers('12345', limit: 40);
final following = await client.accounts.fetchFollowing('12345', limit: 40);

非公開アカウントの場合、エラーではなく空のページが返されます。

リレーションシップ

final rels = await client.accounts.fetchRelationships(['12345', '67890']);
for (final rel in rels) {
print('${rel.id}: following=${rel.following}, followedBy=${rel.followedBy}');
}

共通フォロー

final familiar = await client.accounts.fetchFamiliarFollowers(['12345']);

フォロー / アンフォロー

// オプション付きフォロー
final rel = await client.accounts.follow(
'12345',
reblogs: true, // ホームタイムラインにブーストを表示
notify: true, // 新規投稿時に通知を受け取る
languages: ['en'], // これらの言語の投稿のみ表示
);

// アンフォロー
await client.accounts.unfollow('12345');

ブロック / ミュート

// ブロック
await client.accounts.block('12345');
await client.accounts.unblock('12345');

// 期間付きミュート
await client.accounts.mute('12345', duration: 3600); // 1時間
await client.accounts.unmute('12345');

プロフィール操作

プロフィール更新

final updated = await client.accounts.updateCredentials(
MastodonCredentialAccountUpdateRequest(
displayName: 'New Name',
note: 'Updated bio',
),
);

おすすめユーザー(プロフィールに表示)

await client.accounts.endorse('12345');   // プロフィールに表示
await client.accounts.unendorse('12345'); // プロフィールから削除

プライベートメモ

await client.accounts.setNote('12345', comment: 'カンファレンスで会った');

アカウントの投稿一覧

final page = await client.accounts.fetchStatuses(
'12345',
limit: 20,
excludeReplies: true,
excludeReblogs: true,
);

利用可能なフィルター: excludeReplies, excludeReblogs, onlyMedia, pinned, tagged