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
User Profiles
Content Discovery
Cards & URLs
Collections
Search
Common Types
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 paginationurlType(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 numberlimit(optional, number) - Items per pagesortBy(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 querypage(optional, number) - Page numberlimit(optional, number) - Items per pagesortBy(optional, string) - Sort fieldsortOrder(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 querypage(optional, number) - Page numberlimit(optional, number) - Items per pagesortBy(optional, string) - Sort fieldsortOrder(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/descriptionsidentifier(optional, string) - Filter by author's handle or DIDaccessType(optional, CollectionAccessType) - Filter by access type (OPEN, CLOSED)page(optional, number) - Page numberlimit(optional, number) - Items per pagesortBy(optional, string) - Sort fieldsortOrder(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 querypage(optional, number) - Page numberlimit(optional, number) - Items per pagesortBy(optional, string) - Sort fieldsortOrder(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/descriptionpage(optional, number) - Page numberlimit(optional, number) - Items per pagesortBy(optional, string) - Sort fieldsortOrder(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 numberlimit(optional, number) - Items per pagesortBy(optional, string) - Sort fieldsortOrder(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 collectionlimit(optional, number) - Items per pagesortBy(optional, string) - Sort fieldsortOrder(optional, 'asc' | 'desc') - Sort directionurlType(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 cardslimit(optional, number) - Items per pagesortBy(optional, string) - Sort fieldsortOrder(optional, 'asc' | 'desc') - Sort directionurlType(optional, UrlType) - Filter cards by URL type
Response: GetCollectionPageResponse
Example Request:
Search
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 URLthreshold(optional, number) - Similarity threshold (0-1)urlType(optional, string) - Filter by URL typepage(optional, number) - Page numberlimit(optional, number) - Items per pagesortBy(optional, string) - Sort fieldsortOrder(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 querythreshold(optional, number) - Relevance threshold (0-1)urlType(optional, string) - Filter by URL typeidentifier(optional, string) - Filter by author's handle or DIDpage(optional, number) - Page numberlimit(optional, number) - Items per pagesortBy(optional, string) - Sort fieldsortOrder(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' insteadlimit(optional, number) - Items to returncursor(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 forlimit(optional, number) - Items to returncursor(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=20Sorting 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

