API reference

Spaces

8 endpoints · Overview

GET/v1/spaces

Spaces I am a member of
Bearer token

Responses

  • 200
    Spaces
    object
    › Show fields
    • itemsSpace[]
      › 10 fields
      • idstringrequired
      • namestringrequired
      • roleRolerequired
        viewercommentereditormanager
      • owner_idstringrequired
      • root_node_idstringrequired
      • journal_seqintegerrequired
      • created_atTimestamprequired
      • storage_idstring
        The storage profile its files are in; absent for the server's own storage
      • forkobject
        Set when the space is a fork
        › 3 fields
        • from_space_idstringrequired
        • pathstringrequired
          The folder of the original it copies ("/" for all of it)
        • at_seqintegerrequired
          The original's journal position when it was forked
      • org_idstring
        The organization it belongs to
Example request
curl "https://side.example.com/v1/spaces" \
  -H "Authorization: Bearer $SIDESPACE_TOKEN"
Example response · 200
{
  "items": [
    {
      "id": "id",
      "name": "A001_C003.mov",
      "role": "viewer",
      "owner_id": "nod_01JD7Q3A5C7E9G1J3K5M7P9R2S",
      "root_node_id": "nod_01JD7Q3A5C7E9G1J3K5M7P9R2S",
      "journal_seq": 1,
      "created_at": "2026-11-14T09:30:00Z",
      "storage_id": "nod_01JD7Q3A5C7E9G1J3K5M7P9R2S",
      "fork": {},
      "org_id": "nod_01JD7Q3A5C7E9G1J3K5M7P9R2S"
    }
  ]
}

POST/v1/spaces

Create a space (the caller becomes its manager)
Bearer token

Request bodyCreateSpaceRequest application/json

  • namestringrequired
  • storage_idstring
    One of my storage profiles to keep its files in

Responses

Example request
curl -X POST "https://side.example.com/v1/spaces" \
  -H "Authorization: Bearer $SIDESPACE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"A001_C003.mov"}'
Example response · 201
{
  "id": "id",
  "name": "A001_C003.mov",
  "role": "viewer",
  "owner_id": "nod_01JD7Q3A5C7E9G1J3K5M7P9R2S",
  "root_node_id": "nod_01JD7Q3A5C7E9G1J3K5M7P9R2S",
  "journal_seq": 1,
  "created_at": "2026-11-14T09:30:00Z",
  "storage_id": "nod_01JD7Q3A5C7E9G1J3K5M7P9R2S",
  "fork": {
    "from_space_id": "nod_01JD7Q3A5C7E9G1J3K5M7P9R2S",
    "path": "Ep01/Shots/A001_C003.mov",
    "at_seq": 1
  },
  "org_id": "nod_01JD7Q3A5C7E9G1J3K5M7P9R2S"
}

GET/v1/spaces/{sid}

Bearer token

Parameters · path

  • sidstringrequired
    ^spc_[0-9A-HJKMNP-TV-Z]{26}$

Responses

Example request
curl "https://side.example.com/v1/spaces/spc_01JD7Q2M8X4V6N0R3T5W9Y1B2C" \
  -H "Authorization: Bearer $SIDESPACE_TOKEN"
Example response · 200
{
  "id": "id",
  "name": "A001_C003.mov",
  "role": "viewer",
  "owner_id": "nod_01JD7Q3A5C7E9G1J3K5M7P9R2S",
  "root_node_id": "nod_01JD7Q3A5C7E9G1J3K5M7P9R2S",
  "journal_seq": 1,
  "created_at": "2026-11-14T09:30:00Z",
  "storage_id": "nod_01JD7Q3A5C7E9G1J3K5M7P9R2S",
  "fork": {
    "from_space_id": "nod_01JD7Q3A5C7E9G1J3K5M7P9R2S",
    "path": "Ep01/Shots/A001_C003.mov",
    "at_seq": 1
  },
  "org_id": "nod_01JD7Q3A5C7E9G1J3K5M7P9R2S"
}

PATCH/v1/spaces/{sid}

Rename, or choose where its files are while it has none (manager)
Bearer token

Parameters · path

  • sidstringrequired
    ^spc_[0-9A-HJKMNP-TV-Z]{26}$

Request bodyPatchSpaceRequest application/json

  • namestring
  • storage_idstring
    A storage profile of mine, or empty for the server's own storage. Only while the space has no files (409).

Responses

Example request
curl -X PATCH "https://side.example.com/v1/spaces/spc_01JD7Q2M8X4V6N0R3T5W9Y1B2C" \
  -H "Authorization: Bearer $SIDESPACE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"A001_C003.mov","storage_id":"nod_01JD7Q3A5C7E9G1J3K5M7P9R2S"}'
Example response · 200
{
  "id": "id",
  "name": "A001_C003.mov",
  "role": "viewer",
  "owner_id": "nod_01JD7Q3A5C7E9G1J3K5M7P9R2S",
  "root_node_id": "nod_01JD7Q3A5C7E9G1J3K5M7P9R2S",
  "journal_seq": 1,
  "created_at": "2026-11-14T09:30:00Z",
  "storage_id": "nod_01JD7Q3A5C7E9G1J3K5M7P9R2S",
  "fork": {
    "from_space_id": "nod_01JD7Q3A5C7E9G1J3K5M7P9R2S",
    "path": "Ep01/Shots/A001_C003.mov",
    "at_seq": 1
  },
  "org_id": "nod_01JD7Q3A5C7E9G1J3K5M7P9R2S"
}

GET/v1/spaces/{sid}/members

Bearer token

Parameters · path

  • sidstringrequired
    ^spc_[0-9A-HJKMNP-TV-Z]{26}$

Responses

  • 200
    Members
    object
    › Show fields
    • itemsMember[]
      › 4 fields
      • userUserrequired
        › 4 fields
        • idstringrequired
        • emailstringrequired
          Agents have an address at agents.invalid: it finds them for invites, no mail goes there
        • display_namestringrequired
        • kindstringrequired
          humanagent
      • roleRolerequired
        viewercommentereditormanager
      • direct_roleRole | any
        Their own grant; null when they are here only through teams
      • teamsMemberTeam[]
        › 3 fields
        • idstringrequired
        • namestringrequired
        • roleRolerequired
          viewercommentereditormanager
Example request
curl "https://side.example.com/v1/spaces/spc_01JD7Q2M8X4V6N0R3T5W9Y1B2C/members" \
  -H "Authorization: Bearer $SIDESPACE_TOKEN"
Example response · 200
{
  "items": [
    {
      "user": {},
      "role": "viewer",
      "direct_role": "viewer",
      "teams": []
    }
  ]
}

POST/v1/spaces/{sid}/members

Invite by email (manager). Creates the user record if needed and sends a space.invited notification.
Bearer token

Parameters · path

  • sidstringrequired
    ^spc_[0-9A-HJKMNP-TV-Z]{26}$

Request bodyAddMemberRequest application/json

  • emailstringrequired
  • roleRolerequired
    viewercommentereditormanager

Responses

Example request
curl -X POST "https://side.example.com/v1/spaces/spc_01JD7Q2M8X4V6N0R3T5W9Y1B2C/members" \
  -H "Authorization: Bearer $SIDESPACE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","role":"viewer"}'
Example response · 201
{
  "user": {
    "id": "id",
    "email": "[email protected]",
    "display_name": "display_name",
    "kind": "human"
  },
  "role": "viewer",
  "direct_role": "viewer",
  "teams": [
    {}
  ]
}

PATCH/v1/spaces/{sid}/members/{uid}

Change role (manager). The last manager cannot be demoted.
Bearer token

Parameters · path

  • sidstringrequired
    ^spc_[0-9A-HJKMNP-TV-Z]{26}$
  • uidstringrequired

Request bodyPatchMemberRequest application/json

  • roleRolerequired
    viewercommentereditormanager

Responses

Example request
curl -X PATCH "https://side.example.com/v1/spaces/spc_01JD7Q2M8X4V6N0R3T5W9Y1B2C/members/usr_01JD7Q1Z3X5V7T9R1P3N5L7J9H" \
  -H "Authorization: Bearer $SIDESPACE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"role":"viewer"}'
Example response · 200
{
  "user": {
    "id": "id",
    "email": "[email protected]",
    "display_name": "display_name",
    "kind": "human"
  },
  "role": "viewer",
  "direct_role": "viewer",
  "teams": [
    {}
  ]
}

DELETE/v1/spaces/{sid}/members/{uid}

Remove a member (manager, or the member themself)
Bearer token

Parameters · path

  • sidstringrequired
    ^spc_[0-9A-HJKMNP-TV-Z]{26}$
  • uidstringrequired

Responses

  • 204
    Removed
  • 4xx/5xx
    Error
    Error
Example request
curl -X DELETE "https://side.example.com/v1/spaces/spc_01JD7Q2M8X4V6N0R3T5W9Y1B2C/members/usr_01JD7Q1Z3X5V7T9R1P3N5L7J9H" \
  -H "Authorization: Bearer $SIDESPACE_TOKEN"