For the complete documentation index, see llms.txt. This page is also available as Markdown.

Graph

Follow a user or collection

post

Follows a target user or collection on behalf of the authenticated user.

Header parameters
X-Semble-ClientstringOptional

A short identifier for your integration (e.g. my-plugin, mcp). Please set this if you are building an integration — it helps Semble understand which tools people use. Values are lowercased before being recorded, so MyPlugin and myplugin are the same client. After lowercasing the value must match ^[a-z0-9][a-z0-9_-]{0,31}$; values that do not are ignored, and the client is inferred from the auth method instead.

Example: my-pluginPattern: ^[A-Za-z0-9][A-Za-z0-9_-]{0,31}$
Body
targetIdstringRequired
targetTypestring · enumRequiredPossible values:
Responses
200

200

application/json
followIdstringRequired
post/network.cosmik.graph.follow
POST /xrpc/network.cosmik.graph.follow HTTP/1.1
Host: api.semble.so
Content-Type: application/json
Accept: */*
Content-Length: 39

{
  "targetId": "text",
  "targetType": "USER"
}
200

200

{
  "followId": "text"
}

Unfollow a user or collection

post

Removes a follow relationship between the authenticated user and a target.

Header parameters
X-Semble-ClientstringOptional

A short identifier for your integration (e.g. my-plugin, mcp). Please set this if you are building an integration — it helps Semble understand which tools people use. Values are lowercased before being recorded, so MyPlugin and myplugin are the same client. After lowercasing the value must match ^[a-z0-9][a-z0-9_-]{0,31}$; values that do not are ignored, and the client is inferred from the auth method instead.

Example: my-pluginPattern: ^[A-Za-z0-9][A-Za-z0-9_-]{0,31}$
Body
targetIdstringRequired
targetTypestring · enumRequiredPossible values:
Responses
200

200

application/json
successbooleanRequired
post/network.cosmik.graph.unfollow
POST /xrpc/network.cosmik.graph.unfollow HTTP/1.1
Host: api.semble.so
Content-Type: application/json
Accept: */*
Content-Length: 39

{
  "targetId": "text",
  "targetType": "USER"
}
200

200

{
  "success": true
}

List users a user follows

get

Returns users followed by the specified account, identified by handle or DID.

Query parameters
identifierstringRequired
pagenumber · nullableOptional
limitnumber · nullableOptional
Header parameters
X-Semble-ClientstringOptional

A short identifier for your integration (e.g. my-plugin, mcp). Please set this if you are building an integration — it helps Semble understand which tools people use. Values are lowercased before being recorded, so MyPlugin and myplugin are the same client. After lowercasing the value must match ^[a-z0-9][a-z0-9_-]{0,31}$; values that do not are ignored, and the client is inferred from the auth method instead.

Example: my-pluginPattern: ^[A-Za-z0-9][A-Za-z0-9_-]{0,31}$
Responses
200

200

application/json
get/network.cosmik.graph.getFollowing
GET /xrpc/network.cosmik.graph.getFollowing?identifier=text HTTP/1.1
Host: api.semble.so
Accept: */*
200

200

{
  "users": [
    {
      "id": "text",
      "name": "text",
      "handle": "text",
      "avatarUrl": "text",
      "bannerUrl": "text",
      "description": "text",
      "isFollowing": true,
      "isSubscribed": true,
      "subscriptionScopes": [
        "CARD"
      ],
      "followsYou": true,
      "followerCount": 1,
      "followingCount": 1,
      "followedCollectionsCount": 1,
      "urlCardCount": 1,
      "collectionCount": 1,
      "connectionCount": 1,
      "connectionsByType": {
        "total": 1,
        "ANY_ADDITIONAL_PROPERTY": 1
      },
      "labels": [
        {
          "$type": "com.atproto.label.defs#label",
          "ver": 1,
          "src": "text",
          "uri": "text",
          "cid": "text",
          "val": "text",
          "neg": true,
          "cts": "text",
          "exp": "text",
          "sig": null
        }
      ]
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "totalCount": 1,
    "hasMore": true,
    "limit": 1
  }
}

List a user's followers

get

Returns users who follow the specified account, identified by handle or DID.

Query parameters
identifierstringRequired
pagenumber · nullableOptional
limitnumber · nullableOptional
Header parameters
X-Semble-ClientstringOptional

A short identifier for your integration (e.g. my-plugin, mcp). Please set this if you are building an integration — it helps Semble understand which tools people use. Values are lowercased before being recorded, so MyPlugin and myplugin are the same client. After lowercasing the value must match ^[a-z0-9][a-z0-9_-]{0,31}$; values that do not are ignored, and the client is inferred from the auth method instead.

Example: my-pluginPattern: ^[A-Za-z0-9][A-Za-z0-9_-]{0,31}$
Responses
200

200

application/json
get/network.cosmik.graph.getFollowers
GET /xrpc/network.cosmik.graph.getFollowers?identifier=text HTTP/1.1
Host: api.semble.so
Accept: */*
200

200

{
  "users": [
    {
      "id": "text",
      "name": "text",
      "handle": "text",
      "avatarUrl": "text",
      "bannerUrl": "text",
      "description": "text",
      "isFollowing": true,
      "isSubscribed": true,
      "subscriptionScopes": [
        "CARD"
      ],
      "followsYou": true,
      "followerCount": 1,
      "followingCount": 1,
      "followedCollectionsCount": 1,
      "urlCardCount": 1,
      "collectionCount": 1,
      "connectionCount": 1,
      "connectionsByType": {
        "total": 1,
        "ANY_ADDITIONAL_PROPERTY": 1
      },
      "labels": [
        {
          "$type": "com.atproto.label.defs#label",
          "ver": 1,
          "src": "text",
          "uri": "text",
          "cid": "text",
          "val": "text",
          "neg": true,
          "cts": "text",
          "exp": "text",
          "sig": null
        }
      ]
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "totalCount": 1,
    "hasMore": true,
    "limit": 1
  }
}

List collections a user follows

get

Returns collections followed by the specified account, identified by handle or DID.

Query parameters
identifierstringRequired
pagenumber · nullableOptional
limitnumber · nullableOptional
Header parameters
X-Semble-ClientstringOptional

A short identifier for your integration (e.g. my-plugin, mcp). Please set this if you are building an integration — it helps Semble understand which tools people use. Values are lowercased before being recorded, so MyPlugin and myplugin are the same client. After lowercasing the value must match ^[a-z0-9][a-z0-9_-]{0,31}$; values that do not are ignored, and the client is inferred from the auth method instead.

Example: my-pluginPattern: ^[A-Za-z0-9][A-Za-z0-9_-]{0,31}$
Responses
200

200

application/json
get/network.cosmik.graph.getFollowingCollections
GET /xrpc/network.cosmik.graph.getFollowingCollections?identifier=text HTTP/1.1
Host: api.semble.so
Accept: */*
200

200

{
  "collections": [
    {
      "id": "text",
      "uri": "text",
      "name": "text",
      "author": {
        "id": "text",
        "name": "text",
        "handle": "text",
        "avatarUrl": "text",
        "bannerUrl": "text",
        "description": "text",
        "isFollowing": true,
        "isSubscribed": true,
        "subscriptionScopes": [
          "CARD"
        ],
        "followsYou": true,
        "followerCount": 1,
        "followingCount": 1,
        "followedCollectionsCount": 1,
        "urlCardCount": 1,
        "collectionCount": 1,
        "connectionCount": 1,
        "connectionsByType": {
          "total": 1,
          "ANY_ADDITIONAL_PROPERTY": 1
        },
        "labels": [
          {
            "$type": "com.atproto.label.defs#label",
            "ver": 1,
            "src": "text",
            "uri": "text",
            "cid": "text",
            "val": "text",
            "neg": true,
            "cts": "text",
            "exp": "text",
            "sig": null
          }
        ]
      },
      "description": "text",
      "accessType": "OPEN",
      "cardCount": 1,
      "createdAt": "text",
      "updatedAt": "text",
      "isFollowing": true,
      "isSubscribed": true,
      "subscriptionScopes": [
        "CARD"
      ],
      "followerCount": 1
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "totalCount": 1,
    "hasMore": true,
    "limit": 1
  }
}

Get following count

get

Returns the number of users a given account follows.

Query parameters
identifierstringRequired
Header parameters
X-Semble-ClientstringOptional

A short identifier for your integration (e.g. my-plugin, mcp). Please set this if you are building an integration — it helps Semble understand which tools people use. Values are lowercased before being recorded, so MyPlugin and myplugin are the same client. After lowercasing the value must match ^[a-z0-9][a-z0-9_-]{0,31}$; values that do not are ignored, and the client is inferred from the auth method instead.

Example: my-pluginPattern: ^[A-Za-z0-9][A-Za-z0-9_-]{0,31}$
Responses
200

200

application/json
countnumberRequired
get/network.cosmik.graph.getFollowingCount
GET /xrpc/network.cosmik.graph.getFollowingCount?identifier=text HTTP/1.1
Host: api.semble.so
Accept: */*
200

200

{
  "count": 1
}

Get follower count

get

Returns the number of followers for a given account.

Query parameters
identifierstringRequired
Header parameters
X-Semble-ClientstringOptional

A short identifier for your integration (e.g. my-plugin, mcp). Please set this if you are building an integration — it helps Semble understand which tools people use. Values are lowercased before being recorded, so MyPlugin and myplugin are the same client. After lowercasing the value must match ^[a-z0-9][a-z0-9_-]{0,31}$; values that do not are ignored, and the client is inferred from the auth method instead.

Example: my-pluginPattern: ^[A-Za-z0-9][A-Za-z0-9_-]{0,31}$
Responses
200

200

application/json
countnumberRequired
get/network.cosmik.graph.getFollowersCount
GET /xrpc/network.cosmik.graph.getFollowersCount?identifier=text HTTP/1.1
Host: api.semble.so
Accept: */*
200

200

{
  "count": 1
}

Get following collections count

get

Returns the number of collections a given account follows.

Query parameters
identifierstringRequired
Header parameters
X-Semble-ClientstringOptional

A short identifier for your integration (e.g. my-plugin, mcp). Please set this if you are building an integration — it helps Semble understand which tools people use. Values are lowercased before being recorded, so MyPlugin and myplugin are the same client. After lowercasing the value must match ^[a-z0-9][a-z0-9_-]{0,31}$; values that do not are ignored, and the client is inferred from the auth method instead.

Example: my-pluginPattern: ^[A-Za-z0-9][A-Za-z0-9_-]{0,31}$
Responses
200

200

application/json
countnumberRequired
get/network.cosmik.graph.getFollowingCollectionsCount
GET /xrpc/network.cosmik.graph.getFollowingCollectionsCount?identifier=text HTTP/1.1
Host: api.semble.so
Accept: */*
200

200

{
  "count": 1
}

Subscribe to a user or collection

post

Marks an existing follow as subscribed for the authenticated user. Requires that the user is already following the target.

Header parameters
X-Semble-ClientstringOptional

A short identifier for your integration (e.g. my-plugin, mcp). Please set this if you are building an integration — it helps Semble understand which tools people use. Values are lowercased before being recorded, so MyPlugin and myplugin are the same client. After lowercasing the value must match ^[a-z0-9][a-z0-9_-]{0,31}$; values that do not are ignored, and the client is inferred from the auth method instead.

Example: my-pluginPattern: ^[A-Za-z0-9][A-Za-z0-9_-]{0,31}$
Body
targetIdstringRequired
targetTypestring · enumRequiredPossible values:
Responses
200

200

application/json
followIdstringRequired
subscribedAtstringRequired
post/network.cosmik.graph.subscribe
POST /xrpc/network.cosmik.graph.subscribe HTTP/1.1
Host: api.semble.so
Content-Type: application/json
Accept: */*
Content-Length: 57

{
  "targetId": "text",
  "targetType": "USER",
  "scopes": [
    "CARD"
  ]
}
200

200

{
  "followId": "text",
  "subscribedAt": "text",
  "scopes": [
    "CARD"
  ]
}

Unsubscribe from a user or collection

post

Clears the subscription flag on an existing follow. Idempotent.

Header parameters
X-Semble-ClientstringOptional

A short identifier for your integration (e.g. my-plugin, mcp). Please set this if you are building an integration — it helps Semble understand which tools people use. Values are lowercased before being recorded, so MyPlugin and myplugin are the same client. After lowercasing the value must match ^[a-z0-9][a-z0-9_-]{0,31}$; values that do not are ignored, and the client is inferred from the auth method instead.

Example: my-pluginPattern: ^[A-Za-z0-9][A-Za-z0-9_-]{0,31}$
Body
targetIdstringRequired
targetTypestring · enumRequiredPossible values:
Responses
200

200

application/json
successbooleanRequired
post/network.cosmik.graph.unsubscribe
POST /xrpc/network.cosmik.graph.unsubscribe HTTP/1.1
Host: api.semble.so
Content-Type: application/json
Accept: */*
Content-Length: 39

{
  "targetId": "text",
  "targetType": "USER"
}
200

200

{
  "success": true
}

Update the scopes of an existing subscription

post

Replaces the scope set on a subscription. Requires the caller to already be subscribed to the target.

Header parameters
X-Semble-ClientstringOptional

A short identifier for your integration (e.g. my-plugin, mcp). Please set this if you are building an integration — it helps Semble understand which tools people use. Values are lowercased before being recorded, so MyPlugin and myplugin are the same client. After lowercasing the value must match ^[a-z0-9][a-z0-9_-]{0,31}$; values that do not are ignored, and the client is inferred from the auth method instead.

Example: my-pluginPattern: ^[A-Za-z0-9][A-Za-z0-9_-]{0,31}$
Body
targetIdstringRequired
targetTypestring · enumRequiredPossible values:
Responses
200

200

application/json
followIdstringRequired
subscribedAtstringRequired
post/network.cosmik.graph.updateSubscription
POST /xrpc/network.cosmik.graph.updateSubscription HTTP/1.1
Host: api.semble.so
Content-Type: application/json
Accept: */*
Content-Length: 57

{
  "targetId": "text",
  "targetType": "USER",
  "scopes": [
    "CARD"
  ]
}
200

200

{
  "followId": "text",
  "subscribedAt": "text",
  "scopes": [
    "CARD"
  ]
}

List my subscriptions

get

Returns the authenticated user's subscribed users and collections, ordered by subscribedAt DESC.

Query parameters
pagenumber · nullableOptional
limitnumber · nullableOptional
targetTypestring · enumOptionalPossible values:
Header parameters
X-Semble-ClientstringOptional

A short identifier for your integration (e.g. my-plugin, mcp). Please set this if you are building an integration — it helps Semble understand which tools people use. Values are lowercased before being recorded, so MyPlugin and myplugin are the same client. After lowercasing the value must match ^[a-z0-9][a-z0-9_-]{0,31}$; values that do not are ignored, and the client is inferred from the auth method instead.

Example: my-pluginPattern: ^[A-Za-z0-9][A-Za-z0-9_-]{0,31}$
Responses
200

200

application/json
get/network.cosmik.graph.getSubscriptions
GET /xrpc/network.cosmik.graph.getSubscriptions HTTP/1.1
Host: api.semble.so
Accept: */*
200

200

{
  "items": [
    {
      "type": "USER",
      "user": {
        "id": "text",
        "name": "text",
        "handle": "text",
        "avatarUrl": "text",
        "bannerUrl": "text",
        "description": "text",
        "isFollowing": true,
        "isSubscribed": true,
        "subscriptionScopes": [
          "CARD"
        ],
        "followsYou": true,
        "followerCount": 1,
        "followingCount": 1,
        "followedCollectionsCount": 1,
        "urlCardCount": 1,
        "collectionCount": 1,
        "connectionCount": 1,
        "connectionsByType": {
          "total": 1,
          "ANY_ADDITIONAL_PROPERTY": 1
        },
        "labels": [
          {
            "$type": "com.atproto.label.defs#label",
            "ver": 1,
            "src": "text",
            "uri": "text",
            "cid": "text",
            "val": "text",
            "neg": true,
            "cts": "text",
            "exp": "text",
            "sig": null
          }
        ]
      },
      "subscribedAt": "text",
      "scopes": [
        "CARD"
      ]
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "totalCount": 1,
    "hasMore": true,
    "limit": 1
  }
}

Last updated