Brandfolder OpenAPI Reference (v4)

Welcome to the OpenAPI reference documentation for Brandfolder by Smartsheet!

Download OpenAPI description
Languages
Servers
https://brandfolder.com/api/v4/

Assets

Assets are the core resource of Brandfolder. They act like containers that hold all of your digital resources and files, which we call Attachments. They belong to a Section in a Brandfolder and can also exist within many Collections.

Operations

Attachments

Attachments are the representation of digital assets in Brandfolder. Generally speaking, they are actual files but can also be colors, fonts, links to embedded/external media, etc. They belong to an Asset and contain extra metadata related to the files they represent.

Note:

If you need to list all of an organization's attachments, follow these steps:

  1. List all Brandfolders: GET /brandfolders?include=organization
  2. List all sections for each Brandfolder within the target organization: GET /brandfolders/{brandfolder_id}/sections
  3. Iteratively list assets and their attachments for each Section: GET /sections/{section_id}/assets?include=attachments
Operations

Binary upload

Brandfolder's Binary Upload service allows for authenticated users to upload locally stored files into Brandfolder via our API.

Binary Upload is a multi-step process:

  1. Get an upload URL
  2. Upload the file to the storage bucket using one of the methods below :
  3. Create an asset, telling the Brandfolder API the attachment is at that URL.

The Brandfolder Upload Request endpoint will return a response body with a signed upload_url, resumable_upload_url, storage service_type and object_url.

Each Binary Upload request_url and object_url are designed to be used one time for a singular Asset. Both the upload_url and resumable_upload_url will expire 24 hours after they're issued. Assets uploaded to the object_url will be stored for 7 days before being purged. Should any of these URLs expire, you will simply need to restart the workflow to obtain active URLs.

Tip: We recommend that you use the Resumable Upload flow if you have poor internet connection, you're uploading local files that are larger than 200MB or if you're uploading files from a server that are larger than 500MB.

Upload Request Flow

Operations

Brandfolders

Brandfolders are nested directly underneath an Organization in the overall heirarchy. They can have many Collections, Sections, and Assets.

Operations

List Brandfolders

Request

Lists all Brandfolders for a User. Unauthorized requests will return an empty list.

You can use the returned slug attribute to form a link to the desired Brandfolder like so:

https://brandfolder.com/{slug}
Query
fieldsstring

Set it to a comma-separated list (no spaces) of any of the following attributes of the Brandfolders to return as part of the Brandfolders' attributes in the response.

Allowed values:

  • asset_count
  • attachment_count
  • storage

WARNING: This parameter can slow response times.

Example: fields=asset_count,attachment_count,storage
includestring

Set it to a comma-separated list (no spaces) of any of the following record names to return those records related to the Brandfolders you're fetching. Related records are returned in an included array in the response.

Allowed values:

  • organization
  • collections
  • assets

WARNING: This parameter can slow response times.

Example: include=organizations
searchstring

Set it to any URL-encoded query to fetch only Brandfolders that match your criteria.

WARNING: This parameter can slow response times.

Example: search=extension:png
Headers
Content-Typestringrequired
Value"application/json"
Example: application/json
Acceptstringrequired
Value"application/json"
Example: application/json
Authorizationstringrequired

Bearer token for authentication

Example: Bearer BF_API_KEY
curl -i -X GET \
  'https://brandfolder.com/api/v4/brandfolders?fields=asset_count%2Cattachment_count%2Cstorage&include=organizations&search=extension%3Apng' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json'

Responses

References to all the user's Brandfolders.

Bodyapplication/json
dataArray of objects(Brandfolder)required
data[].​idstringrequired

Unique identifier for the resource instance.

Example: "oqgiju-21olts-ce9egi"
data[].​typestringrequired

The type of the resource.

Value"brandfolders"
data[].​attributesobject(Brandfolder attributes)required
data[].​attributes.​namestringrequired

The name of the brandfolder.

Example: "Brandfolder"
data[].​attributes.​privacystringrequired

The privacy setting of the brandfolder.

Example: "private"
data[].​attributes.​slugstringrequired

The URL-friendly slug of the brandfolder.

Example: "brandfolder"
data[].​attributes.​taglinestringrequired

The tagline of the brandfolder.

Default ""
Example: "You expected this - Brandfolder's Brandfolder!"
metaobject(Pagination metadata)required

Page context information.

meta.​current_pageinteger(int32)>= 1required
Default 1
Example: 1
meta.​next_pageobject or nullrequired
Default null
Example: null
meta.​prev_pageobject or nullrequired
Default null
Example: null
meta.​total_pagesnumber>= 1required
Default 1
Example: 1
meta.​total_countnumber>= 0required
Default 0
Example: 1
Response
application/json
{ "data": [ {} ], "meta": { "current_page": 1, "next_page": null, "prev_page": null, "total_pages": 1, "total_count": 1 } }

Fetch a Brandfolder

Request

You can use the returned slug attribute to form a link to the desired Brandfolder like so:

https://brandfolder.com/{slug}
Path
brandfolder_idstringrequired

Unique identifier for the resource instance.

Example: oqgiju-21olts-ce9egi
Query
fieldsstring

Set it to a comma-separated list (no spaces) of any of the following attributes of the Brandfolder to return as part of the Brandfolder's attributes in the response.

Allowed values:

  • asset_count
  • attachment_count
  • section_count

WARNING: This parameter can slow response times.

Example: fields=asset_count,attachment_count,section_count
includestring

Set it to a comma-separated list (no spaces) of any of the following record names to return those records related to the Brandfolder you're fetching. Related records are returned in an included array in the response.

Allowed values:

  • organization
  • collections
  • search_filters
  • sections

WARNING: This parameter can slow response times.

Example: include=organizations
Headers
Content-Typestringrequired
Value"application/json"
Example: application/json
Acceptstringrequired
Value"application/json"
Example: application/json
Authorizationstringrequired

Bearer token for authentication

Example: Bearer BF_API_KEY
curl -i -X GET \
  'https://brandfolder.com/api/v4/brandfolders/oqgiju-21olts-ce9egi?fields=asset_count%2Cattachment_count%2Csection_count&include=organizations' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json'

Responses

A reference to the Brandfolder.

Bodyapplication/json
dataobject(Brandfolder)required
data.​idstringrequired

Unique identifier for the resource instance.

Example: "oqgiju-21olts-ce9egi"
data.​typestringrequired

The type of the resource.

Value"brandfolders"
data.​attributesobject(Brandfolder attributes)required
data.​attributes.​namestringrequired

The name of the brandfolder.

Example: "Brandfolder"
data.​attributes.​privacystringrequired

The privacy setting of the brandfolder.

Example: "private"
data.​attributes.​slugstringrequired

The URL-friendly slug of the brandfolder.

Example: "brandfolder"
data.​attributes.​taglinestringrequired

The tagline of the brandfolder.

Default ""
Example: "You expected this - Brandfolder's Brandfolder!"
Response
application/json
{ "data": { "id": "oqgiju-21olts-ce9egi", "type": "brandfolders", "attributes": {} } }

Update a Brandfolder

Request

Updates the matching Brandfolder.

Path
brandfolder_idstringrequired

Unique identifier for the resource instance.

Example: oqgiju-21olts-ce9egi
Headers
Content-Typestringrequired
Value"application/json"
Example: application/json
Authorizationstringrequired

Bearer token for authentication

Example: Bearer BF_API_KEY
Acceptstringrequired
Value"application/json"
Example: application/json
Bodyapplication/json

Attribute updates for the Brandfolder.

dataobjectrequired
data.​attributesobjectrequired
data.​attributes.​namestring

A new name for the Brandfolder.

Example: "Updated Brandfolder"
data.​attributes.​privacystring

A new privacy setting for the Brandfolder.

Example: "public"
data.​attributes.​slugstring

A new URL-friendly slug for the Brandfolder.

Example: "updated-brandfolder"
data.​attributes.​taglinestring

A new tagline for the brandfolder.

Example: "Updated Brandfolder tagline!"
curl -i -X PUT \
  https://brandfolder.com/api/v4/brandfolders/oqgiju-21olts-ce9egi \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "data": {
      "attributes": {
        "name": "Updated Brandfolder",
        "privacy": "public",
        "slug": "updated-brandfolder",
        "tagline": "Updated Brandfolder tagline!"
      }
    }
  }'

Responses

The updated Brandfolder.

Bodyapplication/json
dataobjectrequired
data.​idstring

Unique identifier for the resource instance.

Example: "oqgkkd-fr5iv4-hh142d"
data.​typestring

The type of the resource.

Value"brandfolders"
data.​attributesobjectrequired
data.​attributes.​namestringrequired

The name of the Brandfolder.

Example: "Updated Brandfolder"
data.​attributes.​privacystringrequired

The privacy setting of the Brandfolder.

Example: "public"
data.​attributes.​slugstringrequired

The URL-friendly slug of the Brandfolder.

Example: "updated-brandfolder"
data.​attributes.​taglinestringrequired

The tagline for the brandfolder.

Example: "Updated Brandfolder tagline!"
Response
application/json
{ "data": { "id": "oqgkkd-fr5iv4-hh142d", "type": "brandfolders", "attributes": {} } }

Create a Brandfolder

Request

Creates a Brandfolder in the specified organization.

Path
organization_idstringrequired

Unique identifier for the resource instance.

Example: oqgkkd-fr5iv4-cocc75
Headers
Acceptstringrequired
Value"application/json"
Example: application/json
Authorizationstringrequired

Bearer token for authentication

Example: Bearer BF_API_KEY
Content-Typestring
Default application/json
Example: application/json
Bodyapplication/json

Attributes for the new Brandfolder.

dataobjectrequired
data.​attributesobjectrequired
data.​attributes.​namestringrequired

The name of the brandfolder.

Example: "Brandfolder"
data.​attributes.​privacystring

The privacy setting of the brandfolder.

Example: "private"
data.​attributes.​slugstring

The URL-friendly slug of the brandfolder.

Example: "brandfolder"
data.​attributes.​taglinestring

The tagline of the brandfolder.

Default ""
Example: "You expected this - Brandfolder's Brandfolder!"
curl -i -X POST \
  https://brandfolder.com/api/v4/organizations/oqgkkd-fr5iv4-cocc75/brandfolders \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "data": {
      "attributes": {
        "name": "Brandfolder",
        "privacy": "private",
        "slug": "brandfolder",
        "tagline": "You expected this - Brandfolder'\''s Brandfolder!"
      }
    }
  }'

Responses

The new Brandfolder.

Bodyapplication/json
dataobject(Brandfolder)required
data.​idstringrequired

Unique identifier for the resource instance.

Example: "oqgiju-21olts-ce9egi"
data.​typestringrequired

The type of the resource.

Value"brandfolders"
data.​attributesobject(Brandfolder attributes)required
data.​attributes.​namestringrequired

The name of the brandfolder.

Example: "Brandfolder"
data.​attributes.​privacystringrequired

The privacy setting of the brandfolder.

Example: "private"
data.​attributes.​slugstringrequired

The URL-friendly slug of the brandfolder.

Example: "brandfolder"
data.​attributes.​taglinestringrequired

The tagline of the brandfolder.

Default ""
Example: "You expected this - Brandfolder's Brandfolder!"
Response
application/json
{ "data": { "id": "oqgiju-21olts-ce9egi", "type": "brandfolders", "attributes": {} } }

List assets in a Brandfolder

Request

Lists assets in a Brandfolder.

Path
brandfolder_idstringrequired

Unique identifier for the resource instance.

Example: oqgiju-21olts-ce9egi
Query
pageinteger(int32)>= 1

Set this to a positive, non-zero integer representing the page number of the results you want.

perinteger(int32)[ 1 .. 3000 ]

Set this pagination parameter to the maximum number of results you want to receive back from your request. More records may exist (as denoted by the meta.total_count value).

Default 100
searchstring

Set it to any URL-encoded query to fetch only assets that match your criteria.

WARNING: This parameter can slow response times.

Example: search=extension:png
fieldsstring

Set it to a comma-separated list (no spaces) of any of the following attributes of the asset to return as part of the asset's attributes in the response.

Allowed values:

  • created_at
  • updated_at
  • cdn_url
  • availability

WARNING: This parameter can slow response times.

Example: fields=cdn_url
includestring

Set it to a comma-separated list (no spaces) of any of the following record names to return those records related to the asset you're fetching. Related records are returned in an included array in the response.

Allowed values:

  • attachments
  • brandfolder
  • collections
  • custom_fields
  • section
  • tags

WARNING: This parameter can slow response times.

Example: include=tags
Headers
Content-Typestringrequired
Value"application/json"
Example: application/json
Acceptstringrequired
Value"application/json"
Example: application/json
Authorizationstringrequired

Bearer token for authentication.

Example: Bearer BF_API_KEY
curl -i -X GET \
  'https://brandfolder.com/api/v4/brandfolders/oqgiju-21olts-ce9egi/assets?fields=cdn_url&include=tags&page=1&per=100&search=extension%3Apng' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json'

Responses

The matching Brandfolder assets.

Bodyapplication/json
dataArray of objects(Asset)required
data[].​idstringrequired

Unique identifier for the resource instance.

Example: "oqgkkd-fr5iv4-443db"
data[].​typestringrequired

The type of the resource.

Value"generic_files"
data[].​attributesobject(Asset attributes)required
data[].​attributes.​namestring

The name of the asset.

Example: "Brandfolder Logo"
data[].​attributes.​descriptionstring

The description of the asset.

Example: "Brandfolder's logo in print ready format"
data[].​attributes.​thumbnail_urlstring

The online location of the asset.

Example: "https://example.com/example.jpg?Expires=1624742369"
data[].​attributes.​approvedboolean

If true, this asset is approved; otherwise, it's not.

Example: true
metaobject(Pagination metadata)required

Page context information.

meta.​current_pageinteger(int32)>= 1required
Default 1
Example: 1
meta.​next_pageobject or nullrequired
Default null
Example: null
meta.​prev_pageobject or nullrequired
Default null
Example: null
meta.​total_pagesnumber>= 1required
Default 1
Example: 1
meta.​total_countnumber>= 0required
Default 0
Example: 1
Response
application/json
{ "data": [ {} ], "meta": { "current_page": 1, "next_page": null, "prev_page": null, "total_pages": 1, "total_count": 1 } }

Create assets in a Brandfolder

Request

Creates assets in the matching Brandfolder.

Any files you wish to use as an Attachment in Brandfolder must be hosted at a publicly available URL (until they have been successfully imported). If you need to upload file contents directly to a server, you can use do a binary file upload to our temporary storage bucket and then use that URL when creating Assets/Attachments.

NOTE: To create an asset from a binary upload, copy the object_url value from the Get an upload URL response into your request body's attachments.url property.

Path
brandfolder_idstringrequired

Unique identifier for the resource instance.

Example: oqgiju-21olts-ce9egi
Headers
Content-Typestringrequired
Value"application/json"
Example: application/json
Acceptstringrequired
Value"application/json"
Example: application/json
Authorizationstringrequired

Bearer token for authentication.

Example: Bearer BF_API_KEY
Bodyapplication/json
dataobjectrequired
data.​attributesArray of objects(Asset attributes request body)required
data.​attributes[].​namestringrequired

The name of the asset.

Example: "Brandfolder Logo"
data.​attributes[].​descriptionstring

The description of the asset.

Example: "Brandfolder's logo in print ready format"
data.​attributes[].​thumbnail_urlstring

The online location of the asset.

Example: "https://example.com/example.jpg?Expires=1624742369"
data.​attributes[].​approvedboolean

If true, this asset is approved; otherwise, it's not.

Example: true
data.​attributes[].​availability_startstring(date-time)

This represents the publish/availability date in Brandfolder, the label draft will show.

Example: "2024-02-23T18:22:49.771Z"
data.​attributes[].​availability_endstring(date-time)

This represents the expiration date in brandfolder, the label expired will show.

Example: "2025-02-23T18:22:49.771Z"
data.​attributes[].​attachmentsArray of objects

An array of Attachment objects to add to the Asset (these do not overwrite exisiting Attachments).

section_keystringrequired

ID of the Section in which you want the newly created Asset(s) to live.

Example: "oqgol8-dslwxs-58b2z3"
curl -i -X POST \
  https://brandfolder.com/api/v4/brandfolders/oqgiju-21olts-ce9egi/assets \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "data": {
      "attributes": [
        {
          "name": "Brandfolder Logo",
          "description": "Brandfolder'\''s logo in print ready format",
          "thumbnail_url": "https://example.com/example.jpg?Expires=1624742369",
          "approved": true,
          "availability_start": "2024-02-23T18:22:49.771Z",
          "availability_end": "2025-02-23T18:22:49.771Z",
          "attachments": [
            {
              "url": "https://example.com/new-attachment.jpg",
              "filename": "new-attachment.jpg"
            }
          ]
        }
      ]
    },
    "section_key": "oqgol8-dslwxs-58b2z3"
  }'

Responses

The new assets.

Bodyapplication/json
dataArray of objects(Asset)required
data[].​idstringrequired

Unique identifier for the resource instance.

Example: "oqgkkd-fr5iv4-443db"
data[].​typestringrequired

The type of the resource.

Value"generic_files"
data[].​attributesobject(Asset attributes)required
data[].​attributes.​namestring

The name of the asset.

Example: "Brandfolder Logo"
data[].​attributes.​descriptionstring

The description of the asset.

Example: "Brandfolder's logo in print ready format"
data[].​attributes.​thumbnail_urlstring

The online location of the asset.

Example: "https://example.com/example.jpg?Expires=1624742369"
data[].​attributes.​approvedboolean

If true, this asset is approved; otherwise, it's not.

Example: true
metaobject(Pagination metadata)required

Page context information.

meta.​current_pageinteger(int32)>= 1required
Default 1
Example: 1
meta.​next_pageobject or nullrequired
Default null
Example: null
meta.​prev_pageobject or nullrequired
Default null
Example: null
meta.​total_pagesnumber>= 1required
Default 1
Example: 1
meta.​total_countnumber>= 0required
Default 0
Example: 1
Response
application/json
{ "data": [ {} ], "meta": { "current_page": 1, "next_page": null, "prev_page": null, "total_pages": 1, "total_count": 1 } }

List tags in a Brandfolder

Request

Lists tags in the matching Brandfolder.

Path
brandfolder_idstringrequired

Unique identifier for the resource instance.

Example: oqgiju-21olts-ce9egi
Headers
Content-Typestringrequired
Value"application/json"
Example: application/json
Acceptstringrequired
Value"application/json"
Example: application/json
Authorizationstringrequired

Bearer token for authentication.

Example: Bearer BF_API_KEY
curl -i -X GET \
  https://brandfolder.com/api/v4/brandfolders/oqgiju-21olts-ce9egi/tags \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json'

Responses

Tags in the matching Brandfolder.

Bodyapplication/json
dataArray of objects(Tag)required
data[].​idstringrequired

Unique identifier for the resource instance.

Example: "a3dlao-hd6so4-7d91d2"
data[].​typestringrequired

The type of the resource.

Value"tags"
data[].​attributesobject(Tag attributes)required
data[].​attributes.​namestringrequired

A keyword associated with exactly one asset.

For example, if you have several assets that represent products you sell, you might create a "product" tag for each one. If you modify or delete the "product" tag for any particular Asset, it doesn't affect other tags with the same value on other assets.

Example: "product"
data[].​attributes.​auto_generatedboolean

If true, this tag was generated automatically by our smart analysis of file attachments; otherwise, a user created it.

Example: true
data[].​attributes.​sourcestring or null

The tag author.

Default null
Example: "google_vision"
metaobject(Pagination metadata)required

Page context information.

meta.​current_pageinteger(int32)>= 1required
Default 1
Example: 1
meta.​next_pageobject or nullrequired
Default null
Example: null
meta.​prev_pageobject or nullrequired
Default null
Example: null
meta.​total_pagesnumber>= 1required
Default 1
Example: 1
meta.​total_countnumber>= 0required
Default 0
Example: 1
Response
application/json
{ "data": [ {} ], "meta": { "current_page": 1, "next_page": null, "prev_page": null, "total_pages": 1, "total_count": 1 } }

Collections

Collections are nested under a Brandfolder and contain many Assets. They are mainly used as an additional way to organize, manage, share, and restrict access to a subset of Assets within your Brandfolder without having to upload Assets to multiple places.

Operations

Custom fields

Custom Fields can be assigned to Assets and are generally helpful for organizing and searching Assets within a Brandfolder, as well as for understanding more details about each Asset.

Each Custom Field is essentially a key/value pair associated with exactly one Asset. Keys and values are always a string type, so use "123" instead of 123.

For example, if you have several Assets that represent products you sell in different colors, you might create a Custom Field for each of those Assets with a key of "color" and a value of "blue" or "red", etc. If you modify or delete a "color":"blue" Custom Field for any particular Asset, it will not affect other Custom Fields on other Assets, even if they have the same key and/or value.

IMPORTANT: Think carefully about whether Tags or Custom Fields are better suited to meet the needs of your particular use case.

Operations

Invitations

Invitations are exactly what they sound like and can be created to invite Users to join your Organization, Brandfolder, or Collection as a guest, collaborator, admin, or (when inviting someone to an Organization) owner.

Learn more about the permission levels you can grant Users in our Knowledge Base article on User Permissions.

Operations

Labels

Brandfolder's Labels are an enhanced organization and findability feature meant to provide the peace of mind that comes with an organization's existing folder structure. Think of Labels like your music playlists--any asset can be assigned to a label or multiple labels.

Labels are not turned on for every account. If you are unsure whether you have or need Labels, please contact brandfoldersupport@smartsheet.com.

Operations

Organizations

An Organization is the top level resource of all objects in Brandfolder. It can have many Brandfolders nested beneath it.

Operations

Sections

Sections are nested under a Brandfolder and contain many Assets. They exist to help keep Assets organized within a Brandfolder. They also determine which type of digital assets can be uploaded within them (files, external media, fonts, etc.).

Operations

Tags

Tags can be assigned to Assets and are generally helpful for organizing and searching Assets within a Brandfolder.

Each Tag is essentially a keyword associated with exactly one Asset.

For example, if you have several Assets that represent products you sell, you might create a "product" Tag for each one. If you modify or delete the "product" Tag for any particular Asset, it will not affect other Tags with the same value on other Assets.

Tags have a read-only attribute called auto_generated which indicates if the Tag was created automatically by our smart analysis of the file Attachment(s) (true) or if a User created the Tag (false).

IMPORTANT: Think carefully about whether Tags or Custom Fields are better suited to meet the needs of your particular use case.

Operations

User permissions

User permissions describe relationships between Organizations, Brandfolders, Collections, Portals or Brandguides and the users that have access to them.

Learn more about permissioning in our Knowledge Base article on User Permissions.

Operations

Webhooks

The Brandfolder Webhooks service allows you to subscribe to event-based notifications (callbacks) when a qualifying event is triggered within Brandfolder. Asset data will then be sent to the user-provided callback_url at the time the subscribed event occurs within the specified Brandfolder.

NOTE: The callback_url must be accessible from the public internet, meaning any localhost, private network domains, or domains that require authentication will all fail.

Authentication

Utilizing Webhooks requires authentication with the resource (Brandfolder) being subscribed to. A user's unique API Key is required in a header for actions on all endpoints related to the Webhooks service.

There are two required headers in each request:

Content-Type: application/json
Authorization: Bearer <api_key>

The provided API Key is checked against any provided resource (where applicable) to confirm the appropriate permissions.


Service Details

The Brandfolder Webhooks service allows for subscriptions to events within individual Brandfolders.

NOTE: Asset data updates made at the Collection level will trigger a Brandfolder Webhook subscription. Since assets live at the Brandfolder level, any updates made at the Collection level would be reflected on the Brandfolder level as well, thus triggering a Webhook.

Due to the way Brandfolder manages assets, you will see both an "asset.create" event and an "asset.update" event upon creation of a new asset. A create event is triggered when Brandfolder recognizes the new asset and begins to process it for use. An update event is triggered when the asset is ready for use.

The following event types trigger webhooks:

  • asset.create - Asset creation. A new asset has been added to a subscribed Brandfolder.
  • asset.update - Asset update. Asset data has been updated within a subscribed Brandfolder. One or more of the following asset attributes has been updated:
    • Name
    • Description
    • Section
    • Approval status
    • Expiration status
    • Comments & Annotations
      • Adding / Updating
      • Deleting
    • Tags
      • Adding / Updating
      • Deleting
    • Custom Fields
      • Adding / Updating
      • Deleting
  • asset.delete - Asset deletion. An asset has been removed from within a subscribed Brandfolder.

Once a Webhook subscription as been created, the payload that will be sent to the user-provided callback_url after an event has been triggered will have the following structure:

{
    "data": {
        "attributes": {
            "key": "<unique_asset_identifier>",
            "event_time": "<event occurance timestamp in format YYYY-MM-DD HH:MM:SS.000000 with six decimal place microsecond precision>",
            "event_type": "<the event type that triggered the webhook>",
            "brandfolder_key": "<unique_brandfolder_identifier>",
            "organization_key": "<unique_organization_identifier>"
        },
        "webhook_id": "<webhook_id>"
    }
}

NOTE: The callback payload is a "skinny" payload -- it indicates which assets changed and the type of event that occurred, but does not contain any data from the assets themselves.

The Brandfolder Webhook service requires your application to immediately acknowledge receipt of any Webhooks by returning a 2xx HTTP status code. If Brandfolder does not receive an acknowledgement or any non 2xx HTTP status code is returned, Brandfolder will retry the Webhook up to 15 times with exponentially increasing wait times in between.

Any Webhook subscriptions that continue to fail without remedy will be made inactive.

Messages may be sent out of order to the callback_url associated with a Webhook subscription. The event_time provided in the payload can be used to order events.

If the API Key associated with a Webhook subscription loses access to the associated resource, the subscription will be deactivated within 30 minutes.

Operations

Schemas