slite-knowledge-base
Slite Knowledge Base
Slite is a team knowledge base with AI-powered search. Use this skill to query notes, ask questions, search content, and audit knowledge health via the Slite API.
Setup
Generate an API key
- Open the organization menu (top left of the Slite app)
- Click Settings
- In the left panel, click API
- Click Create a new key and follow the prompts
- Copy the key immediately — it is only shown once
You can create multiple keys and revoke unused ones from the same page.
Configure
export SLITE_API_KEY="YOUR_API_KEY"
All endpoints use Bearer token auth against https://api.slite.com/v1.
# Base pattern for all requests
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/<endpoint>"
Authentication check
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/me" | jq .
Returns: displayName, email, organizationName, organizationDomain.
Ask (AI-powered Q&A)
Ask a question
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/ask?question=How+do+we+handle+on-call+rotations" | \
jq '{answer, sources: [.sources[] | {title, url}]}'
Scoped to a parent note
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/ask?question=What+is+our+deploy+process&parentNoteId=NOTE_ID" | \
jq '{answer, sources: [.sources[] | {title, url}]}'
With a specific assistant
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/ask?question=YOUR_QUESTION&assistantId=ASSISTANT_ID" | \
jq '{answer, sources: [.sources[] | {id, title, url, updatedAt}]}'
Notes
List notes
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/notes" | \
jq '{total, hasNextPage, notes: [.notes[] | {id, title, updatedAt}]}'
Filter and sort
# By owner
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/notes?ownerId=USER_ID" | jq '.notes[] | {id, title}'
# By parent note
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/notes?parentNoteId=NOTE_ID" | jq '.notes[] | {id, title}'
# Sort by last edited (descending)
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/notes?orderBy=lastEditedAt_DESC" | jq '.notes[] | {id, title}'
Order options: lastEditedAt_DESC, lastEditedAt_ASC, listPosition_DESC, listPosition_ASC.
Paginate through notes
# First page
RESPONSE=$(curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/notes")
echo "$RESPONSE" | jq '{total, hasNextPage}'
# Next page (use nextCursor from previous response)
CURSOR=$(echo "$RESPONSE" | jq -r '.nextCursor')
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/notes?cursor=$CURSOR" | jq '.notes[] | {id, title}'
Get note by ID
# Default format
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/notes/NOTE_ID" | jq '{id, title, content}'
# As markdown
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/notes/NOTE_ID?format=md" | jq '{id, title, content}'
# As HTML
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/notes/NOTE_ID?format=html" | jq '{id, title, content}'
Format options: md, html, sliteml.
Get note children
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/notes/NOTE_ID/children" | \
jq '{total, hasNextPage, notes: [.notes[] | {id, title}]}'
# Paginate children (max 50 per page)
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/notes/NOTE_ID/children?cursor=CURSOR" | jq '.notes[] | {id, title}'
Search
Basic search
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/search-notes?query=deployment+guide" | \
jq '.hits[] | {id, title, highlight}'
Search with filters
# Scoped to a parent note subtree
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/search-notes?query=onboarding&parentNoteId=NOTE_ID" | \
jq '.hits[] | {id, title}'
# Filter by review state
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/search-notes?query=api&reviewState=Verified" | \
jq '.hits[] | {id, title}'
# Filter by hierarchy depth
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/search-notes?query=runbook&depth=2" | \
jq '.hits[] | {id, title}'
# Include archived notes
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/search-notes?query=old+process&includeArchived=true" | \
jq '.hits[] | {id, title}'
Review states: Verified, Outdated, VerificationRequested, VerificationExpired.
Search with pagination
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/search-notes?query=meeting+notes&page=0&hitsPerPage=20" | \
jq '{nbPages, page, hits: [.hits[] | {id, title}]}'
Search with highlight tags
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/search-notes?query=deploy&highlightPreTag=**&highlightPostTag=**" | \
jq '.hits[] | {title, highlight}'
Filter by edit date
# Notes edited after a date
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/search-notes?query=roadmap&lastEditedAfter=2026-01-01T00:00:00Z" | \
jq '.hits[] | {id, title}'
Knowledge management
List all notes
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/knowledge-management/notes?first=50" | \
jq '{total, hasNextPage, notes: [.notes[] | {id, title}]}'
Filter by review state
# Find outdated notes
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/knowledge-management/notes?reviewStateList=Outdated&first=50" | \
jq '.notes[] | {id, title}'
# Notes pending verification
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/knowledge-management/notes?reviewStateList=VerificationRequested&first=50" | \
jq '.notes[] | {id, title}'
Filter by owner or channel
# By owner
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/knowledge-management/notes?ownerIdList=USER_ID&first=50" | \
jq '.notes[] | {id, title}'
# By channel
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/knowledge-management/notes?channelIdList=CHANNEL_ID&first=50" | \
jq '.notes[] | {id, title}'
Recent notes
# Notes created or updated in the last 7 days
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/knowledge-management/notes?sinceDaysAgo=7&first=50" | \
jq '.notes[] | {id, title}'
Public notes
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/knowledge-management/notes/public?first=50" | \
jq '.notes[] | {id, title}'
Inactive notes
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/knowledge-management/notes/inactive?first=50" | \
jq '.notes[] | {id, title}'
Empty notes
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/knowledge-management/notes/empty?first=50" | \
jq '.notes[] | {id, title}'
Users
Search users
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/users?query=john" | \
jq '.users[] | {id, displayName, email}'
Include archived users
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/users?query=jane&includeArchived=true" | \
jq '.users[] | {id, displayName, email, archivedAt}'
Get user by ID
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/users/USER_ID" | \
jq '{id, displayName, email, organizationRole, isGuest}'
Groups
Search groups
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/groups?query=engineering" | \
jq '.groups[] | {id, name, description}'
Get group by ID
curl -s -H "Authorization: Bearer $SLITE_API_KEY" \
"https://api.slite.com/v1/groups/GROUP_ID" | jq '{id, name, description}'
Troubleshooting
| Problem | Fix |
|---|---|
| 401 Unauthorized | Check SLITE_API_KEY is set and valid. Regenerate at Settings → API |
| 422 Validation error | Check required parameters. query is required for /users and /groups |
| 429 Rate limited | Back off and retry. Reduce request frequency |
| 404 Not found | Verify the note/user/group ID exists and you have access |
| Empty search results | Try broader query terms, check parentNoteId scope, try includeArchived=true |
| Pagination not working | Use nextCursor from response for notes, page param for search |
Tips
- The
/askendpoint uses AI to answer from your knowledge base — great for natural language queries - Use
format=mdwhen fetching note content for the most readable output - Knowledge management endpoints help audit content health: find inactive, empty, or outdated notes
- Paginated endpoints return
hasNextPageandnextCursor— loop untilhasNextPageis false - Search supports
hitsPerPageup to 100 (usepagestarting at 0) - Knowledge management endpoints accept
firstup to 50 per page
More from ddnetters/homelab-agent-skills
ntfy-notifications
Self-hosted push notifications with ntfy — publishing, authentication, priorities, and integration patterns for scripts and monitoring
9gogcli
Use `gog` CLI for Gmail and Google Calendar operations. Trigger when user asks to send/search/read email, manage Gmail labels/drafts/filters, create/update/list calendar events, check availability, or interact with Google Workspace email and scheduling. Also covers auth setup, account management, and output formatting.
2arr-media-stack
Radarr, Sonarr, Prowlarr, Bazarr, and qBittorrent APIs for automated media management — search, add, monitor, and troubleshoot downloads
2caddy-reverse-proxy
Caddy reverse proxy configuration, Caddyfile syntax, automatic HTTPS, Docker integration, and common patterns
2langfuse-observability
LLM observability with Langfuse — query traces, generations, costs, metrics, and debug LLM pipelines via the REST API
2plex-media-server
Plex Media Server API — library management, media search, playback sessions, server status, and automation
2