Help center

API quickstart

Create a read-only key, list your libraries and SOPs, then read one SOP in full. Four steps, about two minutes.

Business plan Updated
On this page
  1. Before you start
  2. Step 1: Create a key
  3. Step 2: List your libraries
  4. Step 3: List SOPs in a library
  5. Step 4: Read one SOP in full
  6. The same thing in code
  7. Next steps

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

  1. In SOPCompass, open People, then Settings & billing, and scroll to API keys.
  2. Under New key name, type Quickstart.
  3. Leave Access on Read only and click Create key.
  4. Click Copy. This is the only time the key is shown.
  5. 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