Braze Catalogs > Catalog Management > Synchronous API
The Catalogs > Catalog Management > Synchronous API from Braze — 2 operation(s) for catalogs > catalog management > synchronous.
The Catalogs > Catalog Management > Synchronous API from Braze — 2 operation(s) for catalogs > catalog management > synchronous.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/braze-catalogs-catalog-management-synchronous-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Braze Catalogs > Catalog Management > Synchronous API
description: The Braze and Radar integration allows you to access sophisticated location-based campaign triggers and user profile enrichment with rich, first-party location data.
version: 1.0.0
servers:
- url: https://rest.iad-01.braze.com
description: REST endpoint for instance US-01
- url: https://rest.iad-01.braze.com
description: REST endpoint for instance US-01
- url: https://rest.iad-02.braze.com
description: REST endpoint for instance US-02
- url: https://rest.iad-03.braze.com
description: REST endpoint for instance US-03
- url: https://rest.iad-04.braze.com
description: REST endpoint for instance US-04
- url: https://rest.iad-05.braze.com
description: REST endpoint for instance US-05
- url: https://rest.iad-06.braze.com
description: REST endpoint for instance US-06
- url: https://rest.iad-08.braze.com
description: REST endpoint for instance US-08
- url: https://rest.fra-01.braze.eu
description: REST endpoint for instance EU-01
- url: https://rest.fra-02.braze.eu
description: REST endpoint for instance EU-02
security:
- BearerAuth: []
tags:
- name: Catalogs > Catalog Management > Synchronous
paths:
/catalogs/{catalog_name}:
delete:
tags:
- Catalogs > Catalog Management > Synchronous
summary: Delete Catalog
description: '> Use this endpoint to delete a catalog.
To use this endpoint, youll need to generate an API key with the `catalogs.delete` permission.
## Rate limit
This endpoint has a shared rate limit of 5 requests per minute between all synchronous catalog endpoints, as documented in API rate limits.
## Path parameters
| Parameter | Required | Data Type | Description |
| --- | --- | --- | --- |
| `catalog_name` | Required | String | Name of the catalog. |
## Response
There are two status code responses for this endpoint: `200` and `404`.
### Example success response
The status code `200` could return the following response body.
``` json
{
"message": "success"
}
```
### Example error response
The status code `404` could return the following response body. Refer to Troubleshooting for more information about errors you may encounter.
``` json
{
"errors": [
{
"id": "catalog-not-found",
"message": "Could not find catalog",
"parameters": [
"catalog_name"
],
"parameter_values": [
"restaurants"
]
}
],
"message": "Invalid Request"
}
```
## Troubleshooting
The following table lists possible returned errors and their associated troubleshooting steps.
| Error | Troubleshooting |
| --- | --- |
| `catalog-not-found` | Check that the catalog name is valid. |'
parameters:
- name: Content-Type
in: header
schema:
type: string
example: application/json
- name: Authorization
in: header
schema:
type: string
example: Bearer {{api_key}}
- name: catalog_name
in: path
schema:
type: string
required: true
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
operationId: deleteCatalogsByCatalogName
x-operation-id-source: derived
/catalogs:
get:
tags:
- Catalogs > Catalog Management > Synchronous
summary: List Catalogs
description: '> Use this endpoint to return a list of catalogs in a workspace.
To use this endpoint, youll need to generate an API key with the `catalogs.get` permission.
## Rate limit
This endpoint has a shared rate limit of 5 requests per minute between all synchronous catalog endpoints, as documented in API rate limits.
## Path and request parameters
There are no path or request parameters for this endpoint.
## Example request
```
curl --location --request GET ''https://rest.iad-03.braze.com/catalogs'' \
--header ''Content-Type: application/json'' \
--header ''Authorization: Bearer YOUR-REST-API-KEY''
```
## Response
### Example success response
The status code `200` could return the following response body.
``` json
{
"catalogs": [
{
"description": "My Restaurants",
"fields": [
{
"name": "id",
"type": "string"
},
{
"name": "Name",
"type": "string"
},
{
"name": "City",
"type": "string"
},
{
"name": "Cuisine",
"type": "string"
},
{
"name": "Rating",
"type": "number"
},
{
"name": "Loyalty_Program",
"type": "boolean"
},
{
"name": "Created_At",
"type": "time"
}
],
"name": "restaurants",
"num_items": 10,
"updated_at": "2022-11-02T20:04:06.879+00:00"
},
{
"description": "My Catalog",
"fields": [
{
"name": "id",
"type": "string"
},
{
"name": "string_field",
"type": "string"
},
{
"name": "number_field",
"type": "number"
},
{
"name": "boolean_field",
"type": "boolean"
},
{
"name": "time_field",
"type": "time"
},
],
"name": "my_catalog",
"num_items": 3,
"updated_at": "2022-11-02T09:03:19.967+00:00"
},
],
"message": "success"
}
```'
parameters:
- name: Content-Type
in: header
schema:
type: string
example: application/json
- name: Authorization
in: header
schema:
type: string
example: Bearer {{api_key}}
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
operationId: getCatalogs
x-operation-id-source: derived
post:
tags:
- Catalogs > Catalog Management > Synchronous
summary: Create Catalog
description: '> Use this endpoint to create a catalog.
To use this endpoint, youll need to generate an API key with the `catalogs.create` permission.
## Rate limit
This endpoint has a shared rate limit of 5 requests per minute between all synchronous catalog endpoints, as documented in API rate limits.
## Request parameters
| Parameter | Required | Data Type | Description |
| --- | --- | --- | --- |
| `catalogs` | Required | Array | An array that contains catalog objects. Only one catalog object is allowed for this request. |
### Catalog object parameters
| Parameter | Required | Data Type | Description |
| --- | --- | --- | --- |
| `name` | Required | String | The name of the catalog that you want to create. |
| `description` | Required | String | The description of the catalog that you want to create. |
| `fields` | Required | Array | An array of objects where the object contains keys `name` and `type`. |
## Example request
```
curl --location --request POST ''https://rest.iad-03.braze.com/catalogs'' \
--header ''Content-Type: application/json'' \
--header ''Authorization: Bearer YOUR-REST-API-KEY'' \
--data-raw ''{
"catalogs": [
{
"name": "restaurants",
"description": "My Restaurants",
"fields": [
{
"name": "id",
"type": "string"
},
{
"name": "Name",
"type": "string"
},
{
"name": "City",
"type": "string"
},
{
"name": "Cuisine",
"type": "string"
},
{
"name": "Rating",
"type": "number"
},
{
"name": "Loyalty_Program",
"type": "boolean"
},
{
"name": "Created_At",
"type": "time"
}
]
}
]
}''
```
## Response
There are two status code responses for this endpoint: `201` and `400`.
### Example success response
The status code `201` could return the following response body.
``` json
{
"catalogs": [
{
"description": "My Restaurants",
"fields": [
{
"name": "id",
"type": "string"
},
{
"name": "Name",
"type": "string"
},
{
"name": "City",
"type": "string"
},
{
"name": "Cuisine",
"type": "string"
},
{
"name": "Rating",
"type": "number"
},
{
"name": "Loyalty_Program",
"type": "boolean"
},
{
"name": "Created_At",
"type": "time"
}
],
"name": "restaurants",
"num_items": 0,
"updated_at": "2022-11-02T20:04:06.879+00:00"
}
],
"message": "success"
}
```
### Example error response
The status code `400` could return the following response body. Refer to Troubleshooting for more information about errors you may encounter.
``` json
{
"errors": [
{
"id": "catalog-name-already-exists",
"message": "A catalog with that name already exists",
"parameters": [
"name"
],
"parameter_values": [
"restaurants"
]
}
],
"message": "Invalid Request"
}
```
## Troubleshooting
The following table lists possible returned errors and their associated troubleshooting steps.
| Error | Troubleshooting |
| --- | --- |
| `catalog-array-invalid` | `catalogs` must be an array of objects. |
| `catalog-name-already-exists` | Catalog with that name already exists. |
| `catalog-name-too-large` | Character limit for a catalog name is 250. |
| `description-too-long` | Character limit for description is 250. |
| `field-names-not-unique` | The same field name is referenced twice. |
| `field-names-too-large` | Character limit for a field name is 250. |
| `id-not-first-column` | The `id` must be the first field in the array. Check that the type is a string. |
| `invalid_catalog_name` | Catalog name can only include letters, numbers, hyphens, and underscores. |
| `invalid-field-names` | Fields can only include letters, numbers, hyphens, and underscores. |
| `invalid-field-types` | Make sure the field types are valid. |
| `invalid-fields` | `fields` is not formatted correctly. |
| `reached-company-catalogs-limit` | Maximum number of catalogs reached. Contact your Braze account manager for more information. |
| `too-many-catalog-atoms` | You can only create one catalog per request. |
| `too-many-fields` | Number of fields limit is 30. |'
requestBody:
content:
application/json:
schema:
type: object
example:
catalogs:
- name: restaurants
description: My Restaurants
fields:
- name: id
type: string
properties:
catalogs:
type: array
items:
type: object
properties:
name:
type: string
description:
type: string
fields:
type: array
items:
type: object
properties:
name:
type: string
type:
type: string
parameters:
- name: Content-Type
in: header
schema:
type: string
example: application/json
- name: Authorization
in: header
schema:
type: string
example: Bearer {{api_key}}
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'201':
description: Successful response
content:
application/json:
schema:
type: object
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
operationId: postCatalogs
x-operation-id-source: derived
components:
responses:
Unauthorized:
description: 401 Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
BadRequest:
description: 400 Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: 404 Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Forbidden:
description: 403 Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
InternalServerError:
description: 500 Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
TooManyRequests:
description: 429 Rate Limited
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
Error:
type: object
properties:
message:
type: string
errors:
type: array
items:
type: string
securitySchemes:
BearerAuth:
type: http
scheme: bearer