Braze Catalogs > Catalog Management > Synchronous API

The Catalogs > Catalog Management > Synchronous API from Braze — 2 operation(s) for catalogs > catalog management > synchronous.

Operations 3

DELETE /catalogs/{catalog_name} Delete Catalog #
GET /catalogs List Catalogs #
POST /catalogs Create Catalog #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/braze-catalogs-catalog-management-synchronous-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

braze-catalogs-catalog-management-synchronous-api-openapi.yml Raw ↑
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