Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/atproto-notification-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
OpenAPI Specification
openapi: 3.2.0
info:
title: Bluesky Application API (app.bsky) Notification API
description: The Bluesky application-layer Lexicon API providing feed, actor, graph, notification, and video endpoints for the microblogging application built on AT Protocol. The AppView is accessible unauthenticated at public.api.bsky.app for read operations, and at api.bsky.app for authenticated write operations. Schemas are defined using Lexicon, AT Protocol's schema definition language.
version: 1.0.0
contact:
name: Bluesky
url: https://docs.bsky.app/
license:
name: MIT / Apache-2.0
url: https://github.com/bluesky-social/atproto/blob/main/LICENSE.txt
servers:
- url: https://public.api.bsky.app/xrpc
description: Public AppView (unauthenticated read operations)
- url: https://api.bsky.app/xrpc
description: Authenticated AppView (write operations)
security:
- bearerAuth: []
- {}
tags:
- name: notification
description: Notification management
paths:
/app.bsky.notification.listNotifications:
get:
operationId: app_bsky_notification_listNotifications
summary: List Notifications
description: Enumerate notifications for the requesting account. Requires auth.
tags:
- notification
parameters:
- name: reasons
in: query
required: false
description: Notification reasons to include in response.
schema:
type: array
items:
type: string
style: form
explode: true
- name: limit
in: query
required: false
schema:
type: integer
minimum: 1
maximum: 100
default: 50
- name: priority
in: query
required: false
schema:
type: boolean
- name: cursor
in: query
required: false
schema:
type: string
- name: seenAt
in: query
required: false
schema:
type: string
format: date-time
responses:
'200':
description: Notifications
content:
application/json:
schema:
type: object
required:
- notifications
properties:
cursor:
type: string
notifications:
type: array
items:
$ref: '#/components/schemas/Notification'
priority:
type: boolean
seenAt:
type: string
format: date-time
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/app.bsky.notification.getUnreadCount:
get:
operationId: app_bsky_notification_getUnreadCount
summary: Get Unread Count
description: Count the number of unread notifications for the requesting account. Requires auth.
tags:
- notification
parameters:
- name: priority
in: query
required: false
schema:
type: boolean
- name: seenAt
in: query
required: false
schema:
type: string
format: date-time
responses:
'200':
description: Unread notification count
content:
application/json:
schema:
type: object
required:
- count
properties:
count:
type: integer
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
components:
schemas:
ProfileView:
type: object
required:
- did
- handle
properties:
did:
type: string
handle:
type: string
displayName:
type: string
description:
type: string
avatar:
type: string
format: uri
associated:
type: object
additionalProperties: true
indexedAt:
type: string
format: date-time
createdAt:
type: string
format: date-time
viewer:
$ref: '#/components/schemas/ViewerState'
labels:
type: array
items:
$ref: '#/components/schemas/Label'
ViewerState:
type: object
description: Metadata about the relationship between the requesting account and the subject account.
properties:
muted:
type: boolean
mutedByList:
type: object
additionalProperties: true
blockedBy:
type: boolean
blocking:
type: string
description: AT-URI of the blocking record, if present
blockingByList:
type: object
additionalProperties: true
following:
type: string
description: AT-URI of the follow record, if present
followedBy:
type: string
description: AT-URI of the follow record from the subject to the requester
knownFollowers:
type: object
additionalProperties: true
Notification:
type: object
required:
- uri
- cid
- author
- reason
- record
- isRead
- indexedAt
properties:
uri:
type: string
description: AT-URI of the notification record
cid:
type: string
author:
$ref: '#/components/schemas/ProfileView'
reason:
type: string
description: Expected values are 'like', 'repost', 'follow', 'mention', 'reply', 'quote', 'starterpack-joined'
enum:
- like
- repost
- follow
- mention
- reply
- quote
- starterpack-joined
reasonSubject:
type: string
description: AT-URI of the record that is the subject of the notification
record:
type: object
additionalProperties: true
isRead:
type: boolean
indexedAt:
type: string
format: date-time
labels:
type: array
items:
$ref: '#/components/schemas/Label'
Error:
type: object
required:
- error
- message
properties:
error:
type: string
message:
type: string
Label:
type: object
required:
- src
- uri
- val
- cts
properties:
ver:
type: integer
src:
type: string
description: DID of the actor who created this label
uri:
type: string
description: AT URI of the record, repository (account), or other resource this label applies to
cid:
type: string
description: Optionally constrains label to specific version of record/blob
val:
type: string
description: The short string name of the value or type of this label
maxLength: 128
neg:
type: boolean
description: If true, this is a negation label, overwriting a previous label
cts:
type: string
format: date-time
description: Timestamp when this label was created
exp:
type: string
format: date-time
description: Timestamp at which this label expires
responses:
Unauthorized:
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
BadRequest:
description: Bad request or validation error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: Access JWT obtained from com.atproto.server.createSession
externalDocs:
description: Bluesky HTTP API Reference
url: https://docs.bsky.app/docs/advanced-guides/atproto