API quickstart
Create a read-only key, list your libraries and SOPs, then read one SOP in full. Four steps, about two minutes.
On this page
This walkthrough makes three read requests. It uses a read only key, so nothing in your workspace can change.
Before you start
- Your workspace is on the Business plan.
- You are an owner or admin of the workspace. Only they can create keys.
Step 1: Create a key
- In SOPCompass, open People, then Settings & billing, and scroll to API keys.
- Under New key name, type
Quickstart. - Leave Access on Read only and click Create key.
- Click Copy. This is the only time the key is shown.
- Click I’ve saved it.
Store the key in an environment variable so it stays out of your code:
Shell
export SOPCOMPASS_API_KEY="sc_live_paste_your_key_here"Step 2: List your libraries
Shell
curl https://app.sopcompass.com/api/v1/libraries \
-H "Authorization: Bearer $SOPCOMPASS_API_KEY"You get every library the workspace can see:
JSON
{
"data": [
{
"id": "3f6b2c1e-8a4d-4c7e-9b1a-2d5e7f8a9b01",
"title": "Hiring",
"description": "Everything from offer letter to first week.",
"board_id": "9a1c4e2b-6d3f-4b8a-8c7e-1f2a3b4c5d02",
"board_name": "Company",
"default_departments": ["hr_people"],
"sop_count": 6,
"shared": false,
"shared_from": null,
"created_at": "2026-08-30T12:00:00.000000Z"
}
]
}Step 3: List SOPs in a library
Copy a library id from step 2 and ask for its SOPs, two at a time:
Shell
curl "https://app.sopcompass.com/api/v1/sops?library_id=3f6b2c1e-8a4d-4c7e-9b1a-2d5e7f8a9b01&limit=2" \
-H "Authorization: Bearer $SOPCOMPASS_API_KEY"The response has has_more and next_cursor. Pass the cursor back as cursor to get the next page. See Pagination.
Step 4: Read one SOP in full
Copy an SOP id from step 3:
Shell
curl https://app.sopcompass.com/api/v1/sops/5b7e9d1a-2c4f-4e6b-8a1d-3c5e7f9a0b03 \
-H "Authorization: Bearer $SOPCOMPASS_API_KEY"The response includes the SOP’s cards, each with its HTML, its steps and image_urls. See Get an SOP.
The same thing in code
JavaScript
// Node 18+ (fetch is built in). Run on a server, never in a browser.
const BASE = "https://app.sopcompass.com/api/v1";
const headers = { Authorization: `Bearer ${process.env.SOPCOMPASS_API_KEY}` };
const libraries = await fetch(`${BASE}/libraries`, { headers }).then((r) => r.json());
const libraryId = libraries.data[0].id;
const sops = await fetch(`${BASE}/sops?library_id=${libraryId}&limit=2`, { headers }).then((r) => r.json());
const sop = await fetch(`${BASE}/sops/${sops.data[0].id}`, { headers }).then((r) => r.json());
console.log(sop.data.title, sop.data.cards.length, "cards");Python
import os
import requests
BASE = "https://app.sopcompass.com/api/v1"
session = requests.Session()
session.headers["Authorization"] = f"Bearer {os.environ['SOPCOMPASS_API_KEY']}"
libraries = session.get(f"{BASE}/libraries").json()
library_id = libraries["data"][0]["id"]
sops = session.get(f"{BASE}/sops", params={"library_id": library_id, "limit": 2}).json()
sop = session.get(f"{BASE}/sops/{sops['data'][0]['id']}").json()
print(sop["data"]["title"], len(sop["data"]["cards"]), "cards")Next steps
- Handle failures properly: Errors and Rate limits.
- Keep a copy of your SOPs current: Keep a knowledge base in sync.
- When you’re done testing, revoke the
Quickstartkey and create one per integration. See Security best practices.