Semble API docs

A full-featured API with authentication is under-construction. What is documented below are our existing public endpoints and how to use them. The full-featured API will succeed these endpoints.

Semble Public API Documentation

Overview

The Semble API provides access to our AppView, providing endpoints for search and aggregation. This documentation covers all publicly accessible endpoints.

Base URL: https://api.semble.so


Table of Contents

  1. User Profiles

  2. Content Discovery

  3. Cards & URLs

  4. Collections

  5. Search

  6. Common Types

  7. Error Responses


User Profiles

Get User Profile

Retrieve public profile information for a user by their handle or DID.

Endpoint: GET /api/users/:identifier

Parameters:

  • identifier (path) - User's handle (e.g., alice.bsky.social) or DID (e.g., did:plc:xyz...)

Response: GetProfileResponse

Example Request:

Example Response:


Content Discovery

Get Global Feed

Retrieve the global activity feed showing recent content additions across all users.

Endpoint: GET /api/feeds/global

Query Parameters:

  • page (optional, number) - Page number for pagination (default: 1)

  • limit (optional, number) - Items per page (default: 20)

  • beforeActivityId (optional, string) - Cursor for pagination

  • urlType (optional, UrlType) - Filter by URL type (article, link, book, research, audio, video, social, event, software)

  • source (optional, ActivitySource) - Filter by source (margin, semble)

Response: GetGlobalFeedResponse

Example Request:

Example Response:

Cards & URLs

Cards represent saved content in Semble. URL cards link to external content with metadata.

Get User's URL Cards

Retrieve all URL cards saved by a specific user.

Endpoint: GET /api/cards/user/:identifier

Parameters:

  • identifier (path) - User's handle or DID

Query Parameters:

  • page (optional, number) - Page number

  • limit (optional, number) - Items per page

  • sortBy (optional, string) - Sort field (default: createdAt)

  • sortOrder (optional, 'asc' | 'desc') - Sort direction (default: desc)

  • urlType (optional, UrlType) - Filter by URL type

Response: GetUrlCardsResponse

Example Request:

Example Response:

Get Libraries for URL

Get all users who have saved a specific URL (across all cards).

Endpoint: GET /api/cards/libraries/url

Query Parameters:

  • url (required, string) - The URL to query

  • page (optional, number) - Page number

  • limit (optional, number) - Items per page

  • sortBy (optional, string) - Sort field

  • sortOrder (optional, 'asc' | 'desc') - Sort direction

Response: GetLibrariesForUrlResponse

Example Request:

Example Response:

Get Note Cards for URL

Get all note cards associated with a specific URL.

Endpoint: GET /api/cards/notes/url

Query Parameters:

  • url (required, string) - The URL to query

  • page (optional, number) - Page number

  • limit (optional, number) - Items per page

  • sortBy (optional, string) - Sort field

  • sortOrder (optional, 'asc' | 'desc') - Sort direction

Response: GetNoteCardsForUrlResponse

Example Request:

Example Response:


Collections

Collections are curated groups of cards organized by users.

Search Collections

Search for collections globally by name or description.

Endpoint: GET /api/collections/search

Query Parameters:

  • searchText (optional, string) - Text to search in collection names/descriptions

  • identifier (optional, string) - Filter by author's handle or DID

  • accessType (optional, CollectionAccessType) - Filter by access type (OPEN, CLOSED)

  • page (optional, number) - Page number

  • limit (optional, number) - Items per page

  • sortBy (optional, string) - Sort field

  • sortOrder (optional, 'asc' | 'desc') - Sort direction

Response: GetCollectionsResponse

Example Request:

Example Response:

Get Collections for URL

Get all collections that contain a specific URL.

Endpoint: GET /api/collections/url

Query Parameters:

  • url (required, string) - The URL to query

  • page (optional, number) - Page number

  • limit (optional, number) - Items per page

  • sortBy (optional, string) - Sort field

  • sortOrder (optional, 'asc' | 'desc') - Sort direction

Response: GetCollectionsForUrlResponse

Example Request:

Example Response:

Get User's Collections

Get all collections created by a specific user.

Endpoint: GET /api/collections/user/:identifier

Parameters:

  • identifier (path) - User's handle or DID

Query Parameters:

  • searchText (optional, string) - Filter collections by name/description

  • page (optional, number) - Page number

  • limit (optional, number) - Items per page

  • sortBy (optional, string) - Sort field

  • sortOrder (optional, 'asc' | 'desc') - Sort direction

Response: GetCollectionsResponse

Example Request:

Get Open Collections with Contributor

Get all open collections where a user has contributed content.

Endpoint: GET /api/collections/contributed/:identifier

Parameters:

  • identifier (path) - User's handle or DID

Query Parameters:

  • page (optional, number) - Page number

  • limit (optional, number) - Items per page

  • sortBy (optional, string) - Sort field

  • sortOrder (optional, 'asc' | 'desc') - Sort direction

Response: GetCollectionsResponse

Example Request:

Get Collection by AT URI

Get a collection by its AT Protocol URI components.

Endpoint: GET /api/collections/at/:handle/:recordKey

Parameters:

  • handle (path) - User's handle (e.g., alice.bsky.social)

  • recordKey (path) - Record key (the last part of the AT URI)

Query Parameters:

  • page (optional, number) - Page number for cards in collection

  • limit (optional, number) - Items per page

  • sortBy (optional, string) - Sort field

  • sortOrder (optional, 'asc' | 'desc') - Sort direction

  • urlType (optional, UrlType) - Filter cards by URL type

Response: GetCollectionPageResponse

Example Request:

Example Response:

Get Collection Page

Get detailed information about a collection including all its cards.

Endpoint: GET /api/collections/:collectionId

Parameters:

  • collectionId (path) - The collection's UUID

Query Parameters:

  • page (optional, number) - Page number for cards

  • limit (optional, number) - Items per page

  • sortBy (optional, string) - Sort field

  • sortOrder (optional, 'asc' | 'desc') - Sort direction

  • urlType (optional, UrlType) - Filter cards by URL type

Response: GetCollectionPageResponse

Example Request:


Get Similar URLs

Find URLs similar to a given URL based on content similarity.

Endpoint: GET /api/search/similar-urls

Query Parameters:

  • url (required, string) - The reference URL

  • threshold (optional, number) - Similarity threshold (0-1)

  • urlType (optional, string) - Filter by URL type

  • page (optional, number) - Page number

  • limit (optional, number) - Items per page

  • sortBy (optional, string) - Sort field

  • sortOrder (optional, 'asc' | 'desc') - Sort direction

Response: GetSimilarUrlsForUrlResponse

Example Request:

Example Response:

Semantic Search URLs

Search for URLs using semantic/natural language queries.

Endpoint: GET /api/search/semantic

Query Parameters:

  • query (required, string) - Natural language search query

  • threshold (optional, number) - Relevance threshold (0-1)

  • urlType (optional, string) - Filter by URL type

  • identifier (optional, string) - Filter by author's handle or DID

  • page (optional, number) - Page number

  • limit (optional, number) - Items per page

  • sortBy (optional, string) - Sort field

  • sortOrder (optional, 'asc' | 'desc') - Sort direction

Response: SemanticSearchUrlsResponse

Example Request:

Example Response:

Search AT Protocol Accounts

Search for AT Protocol accounts (Bluesky users).

Endpoint: GET /api/search/accounts

Query Parameters:

  • q (optional, string) - Search query (Lucene syntax supported)

  • term (optional, string) - DEPRECATED: use 'q' instead

  • limit (optional, number) - Items to return

  • cursor (optional, string) - Pagination cursor

Response: SearchAtProtoAccountsResponse

Example Request:

Example Response:

Search Leaflet Docs

Search for Leaflet documents that link to a specific URL.

Endpoint: GET /api/search/leaflet-docs

Query Parameters:

  • url (required, string) - The URL to search for

  • limit (optional, number) - Items to return

  • cursor (optional, string) - Pagination cursor

Response: SearchLeafletDocsForUrlResponse

Example Request:

Example Response:


Common Types

User

UrlCard

Collection

Pagination

FeedPagination

Enums


Error Responses

All endpoints may return standard HTTP error responses:

400 Bad Request

Invalid request parameters.

401 Unauthorized

Authentication required but not provided (only for protected endpoints).

403 Forbidden

Invalid or expired authentication token.

404 Not Found

Resource not found.

500 Internal Server Error

Server error occurred.


Rate Limiting

The API may implement rate limiting. When rate limited, you'll receive a 429 Too Many Requests response with retry information in headers.


Notes

  • All timestamps are in ISO 8601 format (e.g., 2024-01-15T10:30:00Z)

  • All IDs are UUIDs unless otherwise specified

  • Optional authentication enhances responses but is not required

  • Pagination defaults: page=1, limit=20

  • Sorting defaults: sortBy=createdAt, sortOrder=desc


Support

For issues, feature requests, or questions about the API, please contact the Semble team or file an issue on the project repository.

Last updated