Orgs
Orgs are workspace records — settings, members, invites, and workspace-level remote configuration. These routes have no dedicated SDK methods; call them through client.http, the SDK's escape hatch. It sends requests with the client's auth and base URL, converts camelCase body fields to snake_case on the wire, and converts response fields back to camelCase. To invite a teammate, jump to http.post('/orgs/{orgId}/invites').
Quick Links
| Action | Description |
|---|---|
http.get('/orgs') |
List visible workspaces. |
http.post('/orgs') |
Create a workspace. |
http.get('/orgs/{orgId}') |
Read workspace details. |
http.put('/orgs/{orgId}') |
Update workspace settings. |
http.delete('/orgs/{orgId}') |
Delete a workspace. |
http.get('/orgs/{orgId}/remote-config') |
Read workspace remote configuration. |
http.put('/orgs/{orgId}/remote-config') |
Update workspace remote configuration. |
http.get('/orgs/{orgId}/members') |
List workspace members. |
http.put('/orgs/{orgId}/members/{memberId}') |
Add or update a member. |
http.delete('/orgs/{orgId}/members/{memberId}') |
Remove a member. |
http.get('/orgs/{orgId}/invites') |
List pending invites. |
http.post('/orgs/{orgId}/invites') |
Invite a user. |
http.delete('/orgs/{orgId}/invites/{inviteId}') |
Revoke an invite. |
http.post('/invites/accept') |
Accept an invite. |
Reference
http.get('/orgs')
List visible workspaces.
const { data: orgs } = await client.http.get<{ data: Org[] }>('/orgs')
orgs = client.http.get("/orgs").data
curl "$SKOPIK_API_BASE/orgs" \
-H "Authorization: Bearer $SKOPIK_API_KEY"
Returns { data: Org[] } — see Org.
http.post('/orgs')
Create a workspace.
const { org } = await client.http.post<{ org: Org }>('/orgs', {
body: { name: 'Acme Robotics' },
})
org = client.http.post("/orgs", body={"name": "Acme Robotics"}).org
curl "$SKOPIK_API_BASE/orgs" \
-H "Authorization: Bearer $SKOPIK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Acme Robotics"
}'
Parameters
| Field | Type | Required | Notes |
|---|---|---|---|
name |
string | Yes | Workspace name. |
slug |
string | No | Custom workspace slug. |
policy |
object | No | Workspace policy settings. |
budget |
object | No | Workspace budget settings. |
metadata |
object | No | Customer metadata. |
Returns { org: Org } — see Org.
http.get('/orgs/{orgId}')
Read workspace details.
const { org } = await client.http.get<{ org: Org }>(`/orgs/${orgId}`)
org = client.http.get(f"/orgs/{org_id}").org
curl "$SKOPIK_API_BASE/orgs/$ORG_ID" \
-H "Authorization: Bearer $SKOPIK_API_KEY"
Returns { org: Org } — see Org.
http.put('/orgs/{orgId}')
Update workspace settings.
const { org } = await client.http.put<{ org: Org }>(`/orgs/${orgId}`, {
body: { name: 'Acme Robotics, Inc.' },
})
org = client.http.put(f"/orgs/{org_id}", body={"name": "Acme Robotics, Inc."}).org
curl "$SKOPIK_API_BASE/orgs/$ORG_ID" \
-X PUT \
-H "Authorization: Bearer $SKOPIK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Acme Robotics, Inc."
}'
Parameters
| Field | Type | Required | Notes |
|---|---|---|---|
name |
string | No | Workspace name. |
slug |
string | No | Workspace slug. |
policy |
object | No | Replacement policy settings. |
budget |
object | No | Replacement budget settings. |
metadata |
object | No | Replacement metadata. |
Returns { org: Org } — see Org.
http.delete('/orgs/{orgId}')
Delete a workspace.
await client.http.delete(`/orgs/${orgId}`)
client.http.delete(f"/orgs/{org_id}")
curl "$SKOPIK_API_BASE/orgs/$ORG_ID" \
-X DELETE \
-H "Authorization: Bearer $SKOPIK_API_KEY"
Returns nothing — resolves when the API confirms deletion (HTTP 204).
http.get('/orgs/{orgId}/remote-config')
Read workspace remote configuration.
const { remoteConfig } = await client.http.get<{ remoteConfig: RemoteConfig | null }>(
`/orgs/${orgId}/remote-config`,
)
remote_config = client.http.get(f"/orgs/{org_id}/remote-config").remote_config
curl "$SKOPIK_API_BASE/orgs/$ORG_ID/remote-config" \
-H "Authorization: Bearer $SKOPIK_API_KEY"
Returns { remoteConfig: RemoteConfig | null } — null when no configuration has been saved. See RemoteConfig.
http.put('/orgs/{orgId}/remote-config')
Update workspace remote configuration.
const { remoteConfig } = await client.http.put<{ remoteConfig: RemoteConfig }>(
`/orgs/${orgId}/remote-config`,
{ body: { defaultRuntimeId: remote.remoteId } },
)
remote_config = client.http.put(
f"/orgs/{org_id}/remote-config",
body={"default_runtime_id": remote.remote_id},
).remote_config
curl "$SKOPIK_API_BASE/orgs/$ORG_ID/remote-config" \
-X PUT \
-H "Authorization: Bearer $SKOPIK_API_KEY" \
-H "Content-Type: application/json" \
-d "{
\"default_runtime_id\": \"$REMOTE_ID\"
}"
Parameters
| Field | Type | Required | Notes |
|---|---|---|---|
defaultRuntimeId |
string | No | Preferred remote id. |
enabledProviders |
string[] | No | Enabled provider ids. |
defaultModelId |
string | No | Preferred model id. |
settings |
object | No | Provider or remote settings. |
Returns { remoteConfig: RemoteConfig } — see RemoteConfig.
http.get('/orgs/{orgId}/members')
List workspace members.
const { data: members } = await client.http.get<{ data: Membership[] }>(
`/orgs/${orgId}/members`,
)
members = client.http.get(f"/orgs/{org_id}/members").data
curl "$SKOPIK_API_BASE/orgs/$ORG_ID/members" \
-H "Authorization: Bearer $SKOPIK_API_KEY"
Returns { data: Membership[] } — see Membership.
http.put('/orgs/{orgId}/members/{memberId}')
Add or update a workspace member. POST to the same path behaves identically.
const { membership } = await client.http.put<{ membership: Membership }>(
`/orgs/${orgId}/members/${memberId}`,
{ body: { role: 'member' } },
)
membership = client.http.put(
f"/orgs/{org_id}/members/{member_id}",
body={"role": "member"},
).membership
curl "$SKOPIK_API_BASE/orgs/$ORG_ID/members/$MEMBER_ID" \
-X PUT \
-H "Authorization: Bearer $SKOPIK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"role": "member"
}'
Parameters
| Field | Type | Required | Notes |
|---|---|---|---|
role |
string | Yes | Workspace role. |
permissions |
string[] | No | Additional permissions. |
Returns { membership: Membership } — see Membership.
http.delete('/orgs/{orgId}/members/{memberId}')
Remove a workspace member.
await client.http.delete(`/orgs/${orgId}/members/${memberId}`)
client.http.delete(f"/orgs/{org_id}/members/{member_id}")
curl "$SKOPIK_API_BASE/orgs/$ORG_ID/members/$MEMBER_ID" \
-X DELETE \
-H "Authorization: Bearer $SKOPIK_API_KEY"
Returns nothing — resolves when the API confirms removal (HTTP 204).
http.get('/orgs/{orgId}/invites')
List workspace invites.
const { data: invites } = await client.http.get<{ data: Invite[] }>(
`/orgs/${orgId}/invites`,
)
invites = client.http.get(f"/orgs/{org_id}/invites").data
curl "$SKOPIK_API_BASE/orgs/$ORG_ID/invites" \
-H "Authorization: Bearer $SKOPIK_API_KEY"
Returns { data: Invite[] } — see Invite.
http.post('/orgs/{orgId}/invites')
Invite a user to a workspace.
const { invite } = await client.http.post<{ invite: Invite }>(`/orgs/${orgId}/invites`, {
body: { email: 'teammate@example.com', role: 'member' },
})
invite = client.http.post(
f"/orgs/{org_id}/invites",
body={"email": "teammate@example.com", "role": "member"},
).invite
curl "$SKOPIK_API_BASE/orgs/$ORG_ID/invites" \
-H "Authorization: Bearer $SKOPIK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "teammate@example.com",
"role": "member"
}'
Parameters
| Field | Type | Required | Notes |
|---|---|---|---|
email |
string | Yes | Invitee email address. |
role |
string | Yes | Workspace role. |
expiresAt |
string | No | Optional ISO expiration timestamp. |
Returns { invite: Invite } — see Invite.
http.delete('/orgs/{orgId}/invites/{inviteId}')
Revoke an invite.
await client.http.delete(`/orgs/${orgId}/invites/${inviteId}`)
client.http.delete(f"/orgs/{org_id}/invites/{invite_id}")
curl "$SKOPIK_API_BASE/orgs/$ORG_ID/invites/$INVITE_ID" \
-X DELETE \
-H "Authorization: Bearer $SKOPIK_API_KEY"
Returns nothing — resolves when the API confirms revocation (HTTP 204).
http.post('/invites/accept')
Accept an invite.
const { invite } = await client.http.post<{ invite: Invite | null }>('/invites/accept', {
body: { inviteId },
})
invite = client.http.post("/invites/accept", body={"invite_id": invite_id}).invite
curl "$SKOPIK_API_BASE/invites/accept" \
-H "Authorization: Bearer $SKOPIK_API_KEY" \
-H "Content-Type: application/json" \
-d "{
\"invite_id\": \"$INVITE_ID\"
}"
Parameters
| Field | Type | Required | Notes |
|---|---|---|---|
inviteId |
string | Yes | Invite id. |
Returns { invite: Invite | null } — see Invite.
Types
Org
| Field | Type | Notes |
|---|---|---|
orgId |
string | Workspace id. |
name |
string | Workspace name. |
slug |
string | Workspace slug. |
policy |
object | Workspace policy settings. |
budget |
object | Workspace budget settings. |
metadata |
object | Customer metadata. |
status |
string | Workspace status. |
deletedAt |
string | null | ISO timestamp when deleted. |
createdAt |
string | ISO timestamp. |
updatedAt |
string | ISO timestamp. |
Membership
| Field | Type | Notes |
|---|---|---|
target |
string | Membership target. |
member |
string | Member id. |
orgId |
string | Workspace id. |
role |
string | Workspace role. |
permissions |
string[] | Additional permissions. |
createdAt |
string | ISO timestamp. |
updatedAt |
string | ISO timestamp. |
Invite
| Field | Type | Notes |
|---|---|---|
inviteId |
string | Invite id. |
orgId |
string | Workspace id. |
email |
string | Invitee email address. |
role |
string | Invited role. |
invitedBy |
string | Inviter id. |
status |
string | Invite status. |
expiresAt |
string | null | Optional expiration timestamp. |
createdAt |
string | ISO timestamp. |
updatedAt |
string | ISO timestamp. |