Rendley docs

Collaboration

Get an invitation by token

GET/v1/invitations/{token}

Retrieve a single invitation using its token.

Request

curl "https://api.rendley.com/v1/invitations/TOKEN" \
  -H "Authorization: Bearer YOUR_API_KEY"
const res = await fetch("https://api.rendley.com/v1/invitations/TOKEN", {
  headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const { data } = await res.json();
import requests

res = requests.get(
    "https://api.rendley.com/v1/invitations/TOKEN",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = res.json()["data"]

Path parameters

NameTypeDescription
tokenstringInvitation token
Example response
{
  "data": {
    "created_at": "string",
    "email": "string",
    "expires_at": "string",
    "id": "string",
    "invited_by": "string",
    "inviter_name": "string",
    "project_id": "string",
    "project_name": "string",
    "role": "string"
  }
}
Response codes
StatusDescription
200OK
401Unauthorized
404Not Found

Accept an invitation

POST/v1/invitations/{token}/accept

Accept a collaboration invitation using its token.

Request

curl -X POST "https://api.rendley.com/v1/invitations/TOKEN/accept" \
  -H "Authorization: Bearer YOUR_API_KEY"
const res = await fetch("https://api.rendley.com/v1/invitations/TOKEN/accept", {
  method: "POST",
  headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const { data } = await res.json();
import requests

res = requests.post(
    "https://api.rendley.com/v1/invitations/TOKEN/accept",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = res.json()["data"]

Path parameters

NameTypeDescription
tokenstringInvitation token
Example response
{
  "data": {
    "created_at": "string",
    "id": "string",
    "role": "string",
    "user_email": "string",
    "user_id": "string",
    "user_image": "string",
    "user_name": "string"
  }
}
Response codes
StatusDescription
200OK
401Unauthorized
404Not Found

Decline an invitation

POST/v1/invitations/{token}/decline

Decline a collaboration invitation using its token.

Request

curl -X POST "https://api.rendley.com/v1/invitations/TOKEN/decline" \
  -H "Authorization: Bearer YOUR_API_KEY"
const res = await fetch("https://api.rendley.com/v1/invitations/TOKEN/decline", {
  method: "POST",
  headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const { data } = await res.json();
import requests

res = requests.post(
    "https://api.rendley.com/v1/invitations/TOKEN/decline",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = res.json()["data"]

Path parameters

NameTypeDescription
tokenstringInvitation token
Response codes
StatusDescription
200OK
401Unauthorized
404Not Found

List collaborators

GET/v1/projects/{projectId}/collaborators

Retrieve all collaborators for a project.

Request

curl "https://api.rendley.com/v1/projects/PROJECT_ID/collaborators" \
  -H "Authorization: Bearer YOUR_API_KEY"
const res = await fetch("https://api.rendley.com/v1/projects/PROJECT_ID/collaborators", {
  headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const { data } = await res.json();
import requests

res = requests.get(
    "https://api.rendley.com/v1/projects/PROJECT_ID/collaborators",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = res.json()["data"]

Path parameters

NameTypeDescription
projectIdstringProject ID
Example response
{
  "data": [
    {
      "created_at": "string",
      "id": "string",
      "role": "string",
      "user_email": "string",
      "user_id": "string",
      "user_image": "string",
      "user_name": "string"
    }
  ]
}
Response codes
StatusDescription
200OK
401Unauthorized
403Forbidden

Update a collaborator's role

PATCH/v1/projects/{projectId}/collaborators/{userId}

Update the role of a collaborator on a project.

Request

curl -X PATCH "https://api.rendley.com/v1/projects/PROJECT_ID/collaborators/USER_ID" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "role": "viewer"
  }'
const res = await fetch("https://api.rendley.com/v1/projects/PROJECT_ID/collaborators/USER_ID", {
  method: "PATCH",
  headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
    "role": "viewer"
  }),
});
const { data } = await res.json();
import requests

res = requests.patch(
    "https://api.rendley.com/v1/projects/PROJECT_ID/collaborators/USER_ID",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
      "role": "viewer"
    },
)
data = res.json()["data"]

Path parameters

NameTypeDescription
projectIdstringProject ID
userIdstringUser ID

Request body

NameTypeRequiredDescription
role"viewer" | "editor"Required
Response codes
StatusDescription
200OK
400Bad Request
401Unauthorized
403Forbidden

Remove a collaborator

DELETE/v1/projects/{projectId}/collaborators/{userId}

Remove a collaborator from a project.

Request

curl -X DELETE "https://api.rendley.com/v1/projects/PROJECT_ID/collaborators/USER_ID" \
  -H "Authorization: Bearer YOUR_API_KEY"
const res = await fetch("https://api.rendley.com/v1/projects/PROJECT_ID/collaborators/USER_ID", {
  method: "DELETE",
  headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const { data } = await res.json();
import requests

res = requests.delete(
    "https://api.rendley.com/v1/projects/PROJECT_ID/collaborators/USER_ID",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = res.json()["data"]

Path parameters

NameTypeDescription
projectIdstringProject ID
userIdstringUser ID
Response codes
StatusDescription
200OK
401Unauthorized
403Forbidden

List invitations

GET/v1/projects/{projectId}/invitations

Retrieve all invitations for a project.

Request

curl "https://api.rendley.com/v1/projects/PROJECT_ID/invitations" \
  -H "Authorization: Bearer YOUR_API_KEY"
const res = await fetch("https://api.rendley.com/v1/projects/PROJECT_ID/invitations", {
  headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const { data } = await res.json();
import requests

res = requests.get(
    "https://api.rendley.com/v1/projects/PROJECT_ID/invitations",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = res.json()["data"]

Path parameters

NameTypeDescription
projectIdstringProject ID
Example response
{
  "data": [
    {
      "created_at": "string",
      "email": "string",
      "expires_at": "string",
      "id": "string",
      "invited_by": "string",
      "inviter_name": "string",
      "project_id": "string",
      "project_name": "string",
      "role": "string"
    }
  ]
}
Response codes
StatusDescription
200OK
401Unauthorized
403Forbidden

Create an invitation

POST/v1/projects/{projectId}/invitations

Invite a user to collaborate on a project.

Request

curl -X POST "https://api.rendley.com/v1/projects/PROJECT_ID/invitations" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "<email>",
    "role": "viewer"
  }'
const res = await fetch("https://api.rendley.com/v1/projects/PROJECT_ID/invitations", {
  method: "POST",
  headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
    "email": "<email>",
    "role": "viewer"
  }),
});
const { data } = await res.json();
import requests

res = requests.post(
    "https://api.rendley.com/v1/projects/PROJECT_ID/invitations",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
      "email": "<email>",
      "role": "viewer"
    },
)
data = res.json()["data"]

Path parameters

NameTypeDescription
projectIdstringProject ID

Request body

NameTypeRequiredDescription
emailstringRequired
role"viewer" | "editor"Required
Example response
{
  "data": {
    "created_at": "string",
    "email": "string",
    "expires_at": "string",
    "id": "string",
    "invited_by": "string",
    "inviter_name": "string",
    "project_id": "string",
    "project_name": "string",
    "role": "string"
  }
}
Response codes
StatusDescription
200OK
400Bad Request
401Unauthorized
403Forbidden

Delete an invitation

DELETE/v1/projects/{projectId}/invitations/{invitationId}

Delete a pending invitation from a project.

Request

curl -X DELETE "https://api.rendley.com/v1/projects/PROJECT_ID/invitations/INVITATION_ID" \
  -H "Authorization: Bearer YOUR_API_KEY"
const res = await fetch("https://api.rendley.com/v1/projects/PROJECT_ID/invitations/INVITATION_ID", {
  method: "DELETE",
  headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const { data } = await res.json();
import requests

res = requests.delete(
    "https://api.rendley.com/v1/projects/PROJECT_ID/invitations/INVITATION_ID",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = res.json()["data"]

Path parameters

NameTypeDescription
projectIdstringProject ID
invitationIdstringInvitation ID
Response codes
StatusDescription
200OK
401Unauthorized
403Forbidden

List shared projects

GET/v1/projects/shared

Retrieve all projects shared with the authenticated user.

Request

curl "https://api.rendley.com/v1/projects/shared" \
  -H "Authorization: Bearer YOUR_API_KEY"
const res = await fetch("https://api.rendley.com/v1/projects/shared", {
  headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const { data } = await res.json();
import requests

res = requests.get(
    "https://api.rendley.com/v1/projects/shared",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = res.json()["data"]
Response codes
StatusDescription
200OK
401Unauthorized