Rendley docs

Brand Kit

Get the workspace brand kit

GET/v1/brandkit/{id}

Retrieve the brand kit profile (website, summary, tone, onboarded) for a workspace.

Request

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

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

Path parameters

NameTypeDescription
idstringWorkspace ID
Example response
{
  "data": {
    "brand_voice": {
      "audience": "string",
      "energy": "string",
      "name": "string",
      "notes": "string",
      "tone": "string"
    },
    "branding": {},
    "id": "string",
    "onboarded": true,
    "summary": "string",
    "tone": "string",
    "website_url": "string",
    "workspace_id": "string"
  }
}
Response codes
StatusDescription
200OK
401Unauthorized

Update the workspace brand kit profile

PUT/v1/brandkit/{id}

Update website, summary, tone, and/or the onboarded flag.

Request

curl -X PUT "https://api.rendley.com/v1/brandkit/ID" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "onboarded": true,
    "summary": "<summary>",
    "tone": "<tone>"
  }'
const res = await fetch("https://api.rendley.com/v1/brandkit/ID", {
  method: "PUT",
  headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
    "onboarded": true,
    "summary": "<summary>",
    "tone": "<tone>"
  }),
});
const { data } = await res.json();
import requests

res = requests.put(
    "https://api.rendley.com/v1/brandkit/ID",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
      "onboarded": True,
      "summary": "<summary>",
      "tone": "<tone>"
    },
)
data = res.json()["data"]

Path parameters

NameTypeDescription
idstringWorkspace ID

Request body

NameTypeRequiredDescription
onboardedbooleanOptional
summarystringOptional
tonestringOptional
website_urlstringOptional
Example response
{
  "data": {
    "brand_voice": {
      "audience": "string",
      "energy": "string",
      "name": "string",
      "notes": "string",
      "tone": "string"
    },
    "branding": {},
    "id": "string",
    "onboarded": true,
    "summary": "string",
    "tone": "string",
    "website_url": "string",
    "workspace_id": "string"
  }
}
Response codes
StatusDescription
200OK
400Bad Request
401Unauthorized

Update the structured brand voice

PUT/v1/brandkit/{id}/brand-voice

Replace the machine-readable brand voice (adjectives, audience, messaging, vocabulary, do/don'ts) the AI agent uses. Free for all plans.

Request

curl -X PUT "https://api.rendley.com/v1/brandkit/ID/brand-voice" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "brand_voice": {
      "audience": "string",
      "energy": "string",
      "name": "string",
      "notes": "string",
      "tone": "string"
    }
  }'
const res = await fetch("https://api.rendley.com/v1/brandkit/ID/brand-voice", {
  method: "PUT",
  headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
    "brand_voice": {
      "audience": "string",
      "energy": "string",
      "name": "string",
      "notes": "string",
      "tone": "string"
    }
  }),
});
const { data } = await res.json();
import requests

res = requests.put(
    "https://api.rendley.com/v1/brandkit/ID/brand-voice",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
      "brand_voice": {
        "audience": "string",
        "energy": "string",
        "name": "string",
        "notes": "string",
        "tone": "string"
      }
    },
)
data = res.json()["data"]

Path parameters

NameTypeDescription
idstringWorkspace ID

Request body

NameTypeRequiredDescription
brand_voiceobjectOptional
brand_voice.audiencestringOptional
brand_voice.energystringOptional
brand_voice.namestringOptionalName is the editable brand display name. Seeded once from the import's extracted name (metadata.branding.name stays the immutable onboarding artifact); like Notes, a user's value is never overwritten by a re-import.
brand_voice.notesstringOptionalfree-form extra direction, read verbatim by the agent
brand_voice.tonestringOptional
Example response
{
  "data": {
    "brand_voice": {
      "audience": "string",
      "energy": "string",
      "name": "string",
      "notes": "string",
      "tone": "string"
    },
    "branding": {},
    "id": "string",
    "onboarded": true,
    "summary": "string",
    "tone": "string",
    "website_url": "string",
    "workspace_id": "string"
  }
}
Response codes
StatusDescription
200OK

Get the brand kit caption style

GET/v1/brandkit/{id}/caption-style

Returns the SDK-compatible caption style config (empty object when unset). Free for all plans.

Request

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

res = requests.get(
    "https://api.rendley.com/v1/brandkit/ID/caption-style",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = res.json()["data"]

Path parameters

NameTypeDescription
idstringWorkspace ID
Example response
{
  "data": {
    "config": {}
  }
}
Response codes
StatusDescription
200OK

Set the brand kit caption style

PUT/v1/brandkit/{id}/caption-style

Store the SDK-compatible caption style config (main + highlight text styles, animation, mode, scale). Free for all plans.

Request

curl -X PUT "https://api.rendley.com/v1/brandkit/ID/caption-style" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "config": {}
  }'
const res = await fetch("https://api.rendley.com/v1/brandkit/ID/caption-style", {
  method: "PUT",
  headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
    "config": {}
  }),
});
const { data } = await res.json();
import requests

res = requests.put(
    "https://api.rendley.com/v1/brandkit/ID/caption-style",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
      "config": {}
    },
)
data = res.json()["data"]

Path parameters

NameTypeDescription
idstringWorkspace ID

Request body

NameTypeRequiredDescription
configobjectRequired
Example response
{
  "data": {
    "config": {}
  }
}
Response codes
StatusDescription
200OK

List brand kit colors

GET/v1/brandkit/{id}/colors

Retrieve the colors of a workspace brand kit.

Request

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

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

Path parameters

NameTypeDescription
idstringWorkspace ID
Example response
{
  "data": [
    {
      "id": "string",
      "name": "string",
      "role": "string",
      "value": "string"
    }
  ]
}
Response codes
StatusDescription
200OK
401Unauthorized

Add a brand kit color

POST/v1/brandkit/{id}/colors

Add a color to a workspace brand kit.

Request

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

res = requests.post(
    "https://api.rendley.com/v1/brandkit/ID/colors",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
      "color": "<color>"
    },
)
data = res.json()["data"]

Path parameters

NameTypeDescription
idstringWorkspace ID

Request body

NameTypeRequiredDescription
colorstringRequired
namestringOptional
rolestringOptional
Example response
{
  "data": {
    "id": "string",
    "name": "string",
    "role": "string",
    "value": "string"
  }
}
Response codes
StatusDescription
200OK
400Bad Request
401Unauthorized
403Forbidden

Delete a brand kit color

DELETE/v1/brandkit/{id}/colors

Remove a color from a workspace brand kit.

Request

curl -X DELETE "https://api.rendley.com/v1/brandkit/ID/colors" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "color_id": "<color_id>"
  }'
const res = await fetch("https://api.rendley.com/v1/brandkit/ID/colors", {
  method: "DELETE",
  headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
    "color_id": "<color_id>"
  }),
});
const { data } = await res.json();
import requests

res = requests.delete(
    "https://api.rendley.com/v1/brandkit/ID/colors",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
      "color_id": "<color_id>"
    },
)
data = res.json()["data"]

Path parameters

NameTypeDescription
idstringWorkspace ID

Request body

NameTypeRequiredDescription
color_idstringRequired
Response codes
StatusDescription
200OK
400Bad Request
401Unauthorized
403Forbidden

Fill the brand kit with Rendley defaults

POST/v1/brandkit/{id}/defaults

Fills any empty brand kit field (colors, fonts, text styles, captions) with the Rendley defaults. Used by the "start from scratch" path; set fields are kept.

Request

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

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

Path parameters

NameTypeDescription
idstringWorkspace ID
Response codes
StatusDescription
200OK
401Unauthorized

List brand kit fonts

GET/v1/brandkit/{id}/fonts

Request

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

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

Path parameters

NameTypeDescription
idstringWorkspace ID
Example response
{
  "data": [
    {
      "font_id": "string",
      "id": "string",
      "is_pro": true,
      "name": "string",
      "order": 0,
      "role": "string",
      "source": "string",
      "source_url": "string",
      "styles": {},
      "weights": {}
    }
  ]
}
Response codes
StatusDescription
200OK

Add a font to the brand kit

POST/v1/brandkit/{id}/fonts

Reference a catalog font in the brand fonts collection. Catalog fonts whose source is "brandkit" (custom) require the Pro font-upload entitlement.

Request

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

res = requests.post(
    "https://api.rendley.com/v1/brandkit/ID/fonts",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
      "font_id": "<font_id>"
    },
)
data = res.json()["data"]

Path parameters

NameTypeDescription
idstringWorkspace ID

Request body

NameTypeRequiredDescription
font_idstringRequired
orderintegerOptional
rolestringOptional
Example response
{
  "data": {
    "font_id": "string",
    "id": "string",
    "is_pro": true,
    "name": "string",
    "order": 0,
    "role": "string",
    "source": "string",
    "source_url": "string",
    "styles": {},
    "weights": {}
  }
}
Response codes
StatusDescription
200OK

Remove a font from the brand kit

DELETE/v1/brandkit/{id}/fonts

Request

curl -X DELETE "https://api.rendley.com/v1/brandkit/ID/fonts" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "brandkit_font_id": "<brandkit_font_id>"
  }'
const res = await fetch("https://api.rendley.com/v1/brandkit/ID/fonts", {
  method: "DELETE",
  headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
    "brandkit_font_id": "<brandkit_font_id>"
  }),
});
const { data } = await res.json();
import requests

res = requests.delete(
    "https://api.rendley.com/v1/brandkit/ID/fonts",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
      "brandkit_font_id": "<brandkit_font_id>"
    },
)
data = res.json()["data"]

Path parameters

NameTypeDescription
idstringWorkspace ID

Request body

NameTypeRequiredDescription
brandkit_font_idstringRequired
Response codes
StatusDescription
200OK

Import brand kit from a website

POST/v1/brandkit/{id}/import

Extract a website's brand (via the Gemini-backed extractor) and populate the brand kit profile, colors and fonts.

Request

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

res = requests.post(
    "https://api.rendley.com/v1/brandkit/ID/import",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
      "website_url": "<website_url>"
    },
)
data = res.json()["data"]

Path parameters

NameTypeDescription
idstringWorkspace ID

Request body

NameTypeRequiredDescription
website_urlstringRequired
Example response
{
  "data": {
    "brand_voice": {
      "audience": "string",
      "energy": "string",
      "name": "string",
      "notes": "string",
      "tone": "string"
    },
    "branding": {},
    "id": "string",
    "onboarded": true,
    "summary": "string",
    "tone": "string",
    "website_url": "string",
    "workspace_id": "string"
  }
}
Response codes
StatusDescription
200OK
400Bad Request
401Unauthorized

Import brand kit from an uploaded PDF

POST/v1/brandkit/{id}/import-pdf

Read a brand PDF previously uploaded to storage (via the presigned URL) and populate the brand kit profile, colors and fonts. The transient PDF is deleted after.

Request

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

res = requests.post(
    "https://api.rendley.com/v1/brandkit/ID/import-pdf",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
      "storage_key": "<storage_key>"
    },
)
data = res.json()["data"]

Path parameters

NameTypeDescription
idstringWorkspace ID

Request body

NameTypeRequiredDescription
storage_keystringRequired
Example response
{
  "data": {
    "brand_voice": {
      "audience": "string",
      "energy": "string",
      "name": "string",
      "notes": "string",
      "tone": "string"
    },
    "branding": {},
    "id": "string",
    "onboarded": true,
    "summary": "string",
    "tone": "string",
    "website_url": "string",
    "workspace_id": "string"
  }
}
Response codes
StatusDescription
200OK
400Bad Request
401Unauthorized

Get a presigned URL to upload a brand PDF

POST/v1/brandkit/{id}/import-pdf/upload-url

Returns a presigned PUT URL to upload a brand PDF directly to storage, plus the storage key to pass to the import endpoint.

Request

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

res = requests.post(
    "https://api.rendley.com/v1/brandkit/ID/import-pdf/upload-url",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = res.json()["data"]

Path parameters

NameTypeDescription
idstringWorkspace ID
Example response
{
  "data": {
    "presigned_url": "string",
    "storage_key": "string"
  }
}
Response codes
StatusDescription
200OK
401Unauthorized

Get brand kit overview

GET/v1/brandkit/{id}/overview

Retrieve a brand kit overview grouped by category for a workspace.

Request

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

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

Path parameters

NameTypeDescription
idstringWorkspace ID
Example response
{
  "data": [
    {
      "assets": [
        {
          "asset_type": "string",
          "duration": 0,
          "height": 0,
          "id": "string",
          "mime_type": "string",
          "name": "string",
          "original_file_name": "string",
          "source_url": "string",
          "tags": [
            {}
          ],
          "width": 0
        }
      ],
      "category_id": "string",
      "category_name": "string"
    }
  ]
}
Response codes
StatusDescription
200OK
401Unauthorized

List brand kit text styles

GET/v1/brandkit/{id}/text-styles

Role-bound text styles (title/subtitle/heading/body/label). Free for all plans.

Request

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

res = requests.get(
    "https://api.rendley.com/v1/brandkit/ID/text-styles",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = res.json()["data"]

Path parameters

NameTypeDescription
idstringWorkspace ID
Example response
{
  "data": [
    {
      "color": "string",
      "color_role": "string",
      "font_id": "string",
      "font_name": "string",
      "font_size": 0,
      "font_source": "string",
      "font_weight": "string",
      "letter_spacing": 0,
      "line_height": 0,
      "role": "string",
      "text_align": "string",
      "text_case": "string"
    }
  ]
}
Response codes
StatusDescription
200OK

Create or update a text style

PUT/v1/brandkit/{id}/text-styles

Upsert the text style for a single role. Free for all plans.

Request

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

res = requests.put(
    "https://api.rendley.com/v1/brandkit/ID/text-styles",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
      "role": "<role>"
    },
)
data = res.json()["data"]

Path parameters

NameTypeDescription
idstringWorkspace ID

Request body

NameTypeRequiredDescription
colorstringOptional
color_rolestringOptionalsoft reference to a brand color role
font_idstringOptional
font_sizenumberOptional
font_weightstringOptional
letter_spacingnumberOptional
line_heightnumberOptional
rolestringRequired
text_alignstringOptionalleft | center | right
text_casestringOptionalnone | uppercase | lowercase | capitalize
Response codes
StatusDescription
200OK

Delete a text style

DELETE/v1/brandkit/{id}/text-styles

Request

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

res = requests.delete(
    "https://api.rendley.com/v1/brandkit/ID/text-styles",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
      "role": "<role>"
    },
)
data = res.json()["data"]

Path parameters

NameTypeDescription
idstringWorkspace ID

Request body

NameTypeRequiredDescription
rolestringRequired
Response codes
StatusDescription
200OK

List brand kit uploads

GET/v1/brandkit/{id}/uploads

Retrieve the uploaded assets of a workspace brand kit.

Request

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

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

Path parameters

NameTypeDescription
idstringWorkspace ID
Example response
{
  "data": [
    {
      "asset_type": "string",
      "duration": 0,
      "height": 0,
      "id": "string",
      "mime_type": "string",
      "name": "string",
      "original_file_name": "string",
      "source_url": "string",
      "tags": [
        "string"
      ],
      "width": 0
    }
  ]
}
Response codes
StatusDescription
200OK
401Unauthorized

Create a brand kit upload

POST/v1/brandkit/{id}/uploads

Initiate an upload of an asset to a workspace brand kit.

Request

curl -X POST "https://api.rendley.com/v1/brandkit/ID/uploads" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "asset_type": "<asset_type>",
    "file_size": 0,
    "mime_type": "<mime_type>"
  }'
const res = await fetch("https://api.rendley.com/v1/brandkit/ID/uploads", {
  method: "POST",
  headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
    "asset_type": "<asset_type>",
    "file_size": 0,
    "mime_type": "<mime_type>"
  }),
});
const { data } = await res.json();
import requests

res = requests.post(
    "https://api.rendley.com/v1/brandkit/ID/uploads",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
      "asset_type": "<asset_type>",
      "file_size": 0,
      "mime_type": "<mime_type>"
    },
)
data = res.json()["data"]

Path parameters

NameTypeDescription
idstringWorkspace ID

Request body

NameTypeRequiredDescription
asset_typestringRequired
durationnumberOptional
file_sizeintegerRequired
heightintegerOptional
mime_typestringRequired
namestringOptional
original_file_namestringOptional
tagsarray<string>Optional
widthintegerOptional
Response codes
StatusDescription
200OK
400Bad Request
401Unauthorized
403Forbidden

Rename a brand kit asset

PUT/v1/brandkit/{id}/uploads

Set a friendly display name on an uploaded asset so it's easy to find.

Request

curl -X PUT "https://api.rendley.com/v1/brandkit/ID/uploads" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "<name>",
    "upload_id": "<upload_id>"
  }'
const res = await fetch("https://api.rendley.com/v1/brandkit/ID/uploads", {
  method: "PUT",
  headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
    "name": "<name>",
    "upload_id": "<upload_id>"
  }),
});
const { data } = await res.json();
import requests

res = requests.put(
    "https://api.rendley.com/v1/brandkit/ID/uploads",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
      "name": "<name>",
      "upload_id": "<upload_id>"
    },
)
data = res.json()["data"]

Path parameters

NameTypeDescription
idstringWorkspace ID

Request body

NameTypeRequiredDescription
namestringRequired
upload_idstringRequired
Response codes
StatusDescription
200OK

Delete a brand kit upload

DELETE/v1/brandkit/{id}/uploads

Remove an uploaded asset from a workspace brand kit.

Request

curl -X DELETE "https://api.rendley.com/v1/brandkit/ID/uploads" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "upload_id": "<upload_id>"
  }'
const res = await fetch("https://api.rendley.com/v1/brandkit/ID/uploads", {
  method: "DELETE",
  headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
    "upload_id": "<upload_id>"
  }),
});
const { data } = await res.json();
import requests

res = requests.delete(
    "https://api.rendley.com/v1/brandkit/ID/uploads",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
      "upload_id": "<upload_id>"
    },
)
data = res.json()["data"]

Path parameters

NameTypeDescription
idstringWorkspace ID

Request body

NameTypeRequiredDescription
upload_idstringRequired
Response codes
StatusDescription
200OK
400Bad Request
401Unauthorized
403Forbidden

Complete a brand kit upload

POST/v1/brandkit/{id}/uploads/complete

Finalize a previously initiated brand kit upload.

Request

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

res = requests.post(
    "https://api.rendley.com/v1/brandkit/ID/uploads/complete",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
      "upload_id": "<upload_id>"
    },
)
data = res.json()["data"]

Path parameters

NameTypeDescription
idstringWorkspace ID

Request body

NameTypeRequiredDescription
upload_idstringRequired
Response codes
StatusDescription
200OK
400Bad Request
401Unauthorized
403Forbidden
GET/v1/brandkit/{id}/uploads/search

Search uploaded assets by name, filename or tag, optionally scoped to an asset type.

Request

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

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

Path parameters

NameTypeDescription
idstringWorkspace ID

Query parameters

NameTypeRequiredDescription
qstringOptionalSearch term
asset_typestringOptionalAsset type filter
Example response
{
  "data": [
    {
      "asset_type": "string",
      "duration": 0,
      "height": 0,
      "id": "string",
      "mime_type": "string",
      "name": "string",
      "original_file_name": "string",
      "source_url": "string",
      "tags": [
        "string"
      ],
      "width": 0
    }
  ]
}
Response codes
StatusDescription
200OK

Update tags on a brand asset

PUT/v1/brandkit/{id}/uploads/tags

Replace the searchable tag set on an uploaded asset.

Request

curl -X PUT "https://api.rendley.com/v1/brandkit/ID/uploads/tags" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "upload_id": "<upload_id>"
  }'
const res = await fetch("https://api.rendley.com/v1/brandkit/ID/uploads/tags", {
  method: "PUT",
  headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
    "upload_id": "<upload_id>"
  }),
});
const { data } = await res.json();
import requests

res = requests.put(
    "https://api.rendley.com/v1/brandkit/ID/uploads/tags",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
      "upload_id": "<upload_id>"
    },
)
data = res.json()["data"]

Path parameters

NameTypeDescription
idstringWorkspace ID

Request body

NameTypeRequiredDescription
tagsarray<string>Optional
upload_idstringRequired
Response codes
StatusDescription
200OK

List brand kit preferred voices

GET/v1/brandkit/{id}/voices

Request

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

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

Path parameters

NameTypeDescription
idstringWorkspace ID
Example response
{
  "data": [
    {
      "id": "string",
      "model_id": "string",
      "name": "string",
      "order": 0,
      "settings": {},
      "voice_id": "string"
    }
  ]
}
Response codes
StatusDescription
200OK

Add a preferred voice to the brand kit

POST/v1/brandkit/{id}/voices

Free plans are limited to a small number of preferred voices.

Request

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

res = requests.post(
    "https://api.rendley.com/v1/brandkit/ID/voices",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
      "model_id": "<model_id>",
      "voice_id": "<voice_id>"
    },
)
data = res.json()["data"]

Path parameters

NameTypeDescription
idstringWorkspace ID

Request body

NameTypeRequiredDescription
model_idstringRequired
namestringOptional
orderintegerOptional
settingsobjectOptional
voice_idstringRequired
Example response
{
  "data": {
    "id": "string",
    "model_id": "string",
    "name": "string",
    "order": 0,
    "settings": {},
    "voice_id": "string"
  }
}
Response codes
StatusDescription
200OK

Remove a preferred voice from the brand kit

DELETE/v1/brandkit/{id}/voices

Request

curl -X DELETE "https://api.rendley.com/v1/brandkit/ID/voices" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "brandkit_voice_id": "<brandkit_voice_id>"
  }'
const res = await fetch("https://api.rendley.com/v1/brandkit/ID/voices", {
  method: "DELETE",
  headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
    "brandkit_voice_id": "<brandkit_voice_id>"
  }),
});
const { data } = await res.json();
import requests

res = requests.delete(
    "https://api.rendley.com/v1/brandkit/ID/voices",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
      "brandkit_voice_id": "<brandkit_voice_id>"
    },
)
data = res.json()["data"]

Path parameters

NameTypeDescription
idstringWorkspace ID

Request body

NameTypeRequiredDescription
brandkit_voice_idstringRequired
Response codes
StatusDescription
200OK

List brand kit categories

GET/v1/brandkit/categories

Retrieve the fixed set of brand kit categories.

Request

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

res = requests.get(
    "https://api.rendley.com/v1/brandkit/categories",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = res.json()["data"]
Example response
{
  "data": [
    {
      "default": true,
      "group": "string",
      "id": "string",
      "name": "string"
    }
  ]
}
Response codes
StatusDescription
200OK
401Unauthorized