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

Connections

Get connections for a URL

get

Returns connections where the given URL is the source or target, optionally filtered by direction and type.

Query parameters
pagenumber · nullableOptional
limitnumber · nullableOptional
sortBystring · enumOptionalPossible values:
sortOrderstring · enumOptionalPossible values:
urlstringRequired
directionstring · 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.connection.getForUrl
GET /xrpc/network.cosmik.connection.getForUrl?url=text HTTP/1.1
Host: api.semble.so
Accept: */*
200

200

{
  "connections": [
    {
      "connection": {
        "id": "text",
        "type": "text",
        "note": "text",
        "createdAt": "text",
        "updatedAt": "text",
        "curator": {
          "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
            }
          ]
        }
      },
      "source": {
        "url": "text",
        "metadata": {
          "url": "text",
          "title": "text",
          "description": "text",
          "author": "text",
          "publishedDate": "text",
          "siteName": "text",
          "imageUrl": "text",
          "type": "text",
          "retrievedAt": "text",
          "doi": "text",
          "isbn": "text"
        },
        "urlLibraryCount": 1,
        "urlInLibrary": true,
        "urlConnectionCount": 1,
        "urlIsConnected": true
      },
      "target": {
        "url": "text",
        "metadata": {
          "url": "text",
          "title": "text",
          "description": "text",
          "author": "text",
          "publishedDate": "text",
          "siteName": "text",
          "imageUrl": "text",
          "type": "text",
          "retrievedAt": "text",
          "doi": "text",
          "isbn": "text"
        },
        "urlLibraryCount": 1,
        "urlInLibrary": true,
        "urlConnectionCount": 1,
        "urlIsConnected": true
      }
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "totalCount": 1,
    "hasMore": true,
    "limit": 1
  },
  "sorting": {
    "sortBy": "createdAt",
    "sortOrder": "asc"
  }
}

Create a connection

post

Creates a typed link between two URLs with an optional note.

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
sourceTypestring · enumRequiredPossible values:
sourceValuestringRequired
targetTypestring · enumRequiredPossible values:
targetValuestringRequired
connectionTypestring · enumOptionalPossible values:
notestringOptional
Responses
200

200

application/json
connectionIdstringRequired
post/network.cosmik.connection.create
POST /xrpc/network.cosmik.connection.create HTTP/1.1
Host: api.semble.so
Content-Type: application/json
Accept: */*
Content-Length: 123

{
  "sourceType": "URL",
  "sourceValue": "text",
  "targetType": "URL",
  "targetValue": "text",
  "connectionType": "SUPPORTS",
  "note": "text"
}
200

200

{
  "connectionId": "text"
}

List a user's connections

get

Returns a paginated list of connections created by a user, identified by handle or DID. Filterable by connection type.

Query parameters
pagenumber · nullableOptional
limitnumber · nullableOptional
sortBystring · enumOptionalPossible values:
sortOrderstring · enumOptionalPossible values:
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
get/network.cosmik.connection.listByUser
GET /xrpc/network.cosmik.connection.listByUser?identifier=text HTTP/1.1
Host: api.semble.so
Accept: */*
200

200

{
  "connections": [
    {
      "connection": {
        "id": "text",
        "type": "text",
        "note": "text",
        "createdAt": "text",
        "updatedAt": "text",
        "curator": {
          "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
            }
          ]
        }
      },
      "source": {
        "url": "text",
        "metadata": {
          "url": "text",
          "title": "text",
          "description": "text",
          "author": "text",
          "publishedDate": "text",
          "siteName": "text",
          "imageUrl": "text",
          "type": "text",
          "retrievedAt": "text",
          "doi": "text",
          "isbn": "text"
        },
        "urlLibraryCount": 1,
        "urlInLibrary": true,
        "urlConnectionCount": 1,
        "urlIsConnected": true
      },
      "target": {
        "url": "text",
        "metadata": {
          "url": "text",
          "title": "text",
          "description": "text",
          "author": "text",
          "publishedDate": "text",
          "siteName": "text",
          "imageUrl": "text",
          "type": "text",
          "retrievedAt": "text",
          "doi": "text",
          "isbn": "text"
        },
        "urlLibraryCount": 1,
        "urlInLibrary": true,
        "urlConnectionCount": 1,
        "urlIsConnected": true
      }
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "totalCount": 1,
    "hasMore": true,
    "limit": 1
  },
  "sorting": {
    "sortBy": "createdAt",
    "sortOrder": "asc"
  }
}

Update a connection

post

Updates the type, note, or direction of an existing connection.

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
connectionIdstringRequired
connectionTypestring · enumOptionalPossible values:
notestringOptional
removeNotebooleanOptional
swapbooleanOptional
Responses
200

200

application/json
connectionIdstringRequired
post/network.cosmik.connection.update
POST /xrpc/network.cosmik.connection.update HTTP/1.1
Host: api.semble.so
Content-Type: application/json
Accept: */*
Content-Length: 95

{
  "connectionId": "text",
  "connectionType": "SUPPORTS",
  "note": "text",
  "removeNote": true,
  "swap": true
}
200

200

{
  "connectionId": "text"
}

Delete a connection

post

Permanently deletes a connection owned by 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
connectionIdstringRequired
Responses
200

200

application/json
connectionIdstringRequired
post/network.cosmik.connection.delete
POST /xrpc/network.cosmik.connection.delete HTTP/1.1
Host: api.semble.so
Content-Type: application/json
Accept: */*
Content-Length: 23

{
  "connectionId": "text"
}
200

200

{
  "connectionId": "text"
}

Last updated