リスナー操作

APIトークンで認証すると、Webやアプリと同様にフォロー、再生位置、コメント、プレイリストを操作できます。

番組のフォロー

mutation FollowPodcast($podcastId: ID!) {
  followPodcast(podcastId: $podcastId) {
    id
    title
    isFollowing
  }
}

解除にはunfollowPodcast(podcastId:)を使います。

再生位置

positionはエピソード先頭からの秒数です。オフライン中の操作を後から送信する場合は、記録時刻をISO 8601形式のclientUpdatedAtで指定すると、より新しい位置の上書きを防げます。

mutation SavePlaybackPosition($episodeId: ID!, $position: Float!) {
  updatePlaybackPosition(
    episodeId: $episodeId
    position: $position
    isCompleted: false
    clientUpdatedAt: "2026-09-01T11:30:00+09:00"
  ) {
    id
    playbackPosition {
      position
      isCompleted
      updatedAt
    }
  }
}

コメント

mutation CreateComment($episodeId: ID!, $body: String!) {
  createComment(episodeId: $episodeId, body: $body) {
    episode { id commentsCount }
    moderationWarning { message reason }
  }
}

moderationWarningが返った場合、コメントはまだ投稿されていません。内容を確認し、投稿を続ける場合だけconfirmedFlagged: trueを付けて再送します。削除にはdeleteComment(commentId:)、スターにはaddCommentStar(commentId:)を使います。

プレイリスト

mutation CreatePlaylist($title: String!) {
  createPlaylist(title: $title, visibility: PRIVATE) {
    id
    title
    visibility
  }
}

mutation AddEpisode($playlistId: ID!, $episodeId: ID!) {
  addEpisodeToPlaylist(playlistId: $playlistId, episodeId: $episodeId) {
    id
    title
    containsEpisode(episodeId: $episodeId)
  }
}

ほかにupdatePlaylistdeletePlaylistremoveEpisodeFromPlaylistaddPodcastToPlaylistremovePodcastFromPlaylistupdatePlaylistsOrderを利用できます。自分が閲覧できるプレイリストはme { playlists { ... } }で取得できます。