Bloom Feedback API

Report problems and observations about Rainbrand.

Operations 1

POST /feedback Submit feedback #

Specifications

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/trybloom:trybloom-feedback-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

trybloom-feedback-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Rainbrand Feedback API
  version: 1.0.0
  description: Report problems and observations about Rainbrand.
servers:
- url: https://www.rainbrand.com/api/v1
security:
- apiKey: []
- bearer: []
- oauth: []
tags:
- name: Feedback
  description: Report problems and observations about Rainbrand.
paths:
  /feedback:
    post:
      operationId: feedback.create
      summary: Submit feedback
      description: Report a problem or observation about Rainbrand for internal review. Continue the original task after submitting.
      tags:
      - Feedback
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                message:
                  type: string
                  minLength: 1
                  maxLength: 2000
                  description: What Rainbrand did, what you expected, and the effect on the task. Omit private task content.
                category:
                  enum:
                  - bug
                  - docs_mismatch
                  - friction
                  - feature_gap
                  - quality_degradation
                  - other
                  type: string
                  default: other
                  description: Issue type. Defaults to other.
                tool_name:
                  type: string
                  minLength: 1
                  maxLength: 100
                  description: Name of the Rainbrand tool involved, if known.
                related_id:
                  type: string
                  minLength: 1
                  maxLength: 200
                  description: Rainbrand-generated ID of the affected resource or operation, if known.
              required:
              - message
              additionalProperties: false
              examples:
              - message: Acme Inc.'s Brand Skill export is missing the font files listed in its typography guidance.
                category: docs_mismatch
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      status:
                        const: received
                    required:
                    - status
                required:
                - data
              example:
                data:
                  status: received
        '400':
          description: '400'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeedbackCreate400ErrorResponse'
        '401':
          description: '401'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeedbackCreate401ErrorResponse'
        '403':
          description: '403'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeedbackCreate403ErrorResponse'
        '429':
          description: '429'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeedbackCreate429ErrorResponse'
          headers:
            Retry-After:
              description: Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.
              schema:
                type: integer
                minimum: 0
        '500':
          description: '500'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeedbackCreate500ErrorResponse'
        '503':
          description: '503'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeedbackCreate503ErrorResponse'
          headers:
            Retry-After:
              description: Seconds to wait before retrying, when supplied. Temporary billing unavailability includes this header.
              schema:
                type: integer
                minimum: 1
      x-codeSamples:
      - lang: bash
        label: cURL
        source: "curl --request POST \\\n  --url 'https://www.rainbrand.com/api/v1/feedback' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\" \\\n  --header \"Content-Type: application/json\" \\\n  --data '{\n  \"message\": \"Acme Inc.'\\''s Brand Skill export is missing the font files listed in its typography guidance.\",\n  \"category\": \"docs_mismatch\"\n}'"
components:
  schemas:
    FeedbackCreate503ErrorResponse:
      type: object
      properties:
        error:
          allOf:
          - $ref: '#/components/schemas/ApiError'
          - anyOf:
            - type: object
              properties:
                code:
                  const: SERVICE_UNAVAILABLE
                status:
                  const: 503
                message:
                  type: string
                  default: Feedback could not be submitted. Continue the original task.
                data: {}
              required:
              - code
              - status
              - message
            - type: object
              properties:
                code:
                  type: string
                status:
                  type: integer
                message:
                  type: string
                data: {}
              required:
              - code
              - status
              - message
      required:
      - error
    FeedbackCreate401ErrorResponse:
      type: object
      properties:
        error:
          allOf:
          - $ref: '#/components/schemas/ApiError'
          - anyOf:
            - type: object
              properties:
                code:
                  const: UNAUTHORIZED
                status:
                  const: 401
                message:
                  type: string
                  default: Invalid or missing API credentials
                data: {}
              required:
              - code
              - status
              - message
            - type: object
              properties:
                code:
                  type: string
                status:
                  type: integer
                message:
                  type: string
                data: {}
              required:
              - code
              - status
              - message
      required:
      - error
    FeedbackCreate400ErrorResponse:
      type: object
      properties:
        error:
          allOf:
          - $ref: '#/components/schemas/ApiError'
          - anyOf:
            - type: object
              properties:
                code:
                  const: BAD_REQUEST
                status:
                  const: 400
                message:
                  type: string
                  default: Input validation failed
                data: {}
              required:
              - code
              - status
              - message
            - type: object
              properties:
                code:
                  type: string
                status:
                  type: integer
                message:
                  type: string
                data: {}
              required:
              - code
              - status
              - message
      required:
      - error
    ApiError:
      type: object
      properties:
        code:
          type: string
        status:
          type: integer
        message:
          type: string
        data: {}
      required:
      - code
      - status
      - message
    FeedbackCreate500ErrorResponse:
      type: object
      properties:
        error:
          allOf:
          - $ref: '#/components/schemas/ApiError'
          - anyOf:
            - type: object
              properties:
                code:
                  const: INTERNAL_ERROR
                status:
                  const: 500
                message:
                  type: string
                  default: Feedback could not be submitted. Continue the original task.
                data: {}
              required:
              - code
              - status
              - message
            - type: object
              properties:
                code:
                  type: string
                status:
                  type: integer
                message:
                  type: string
                data: {}
              required:
              - code
              - status
              - message
      required:
      - error
    FeedbackCreate403ErrorResponse:
      type: object
      properties:
        error:
          allOf:
          - $ref: '#/components/schemas/ApiError'
          - anyOf:
            - type: object
              properties:
                code:
                  const: ACCOUNT_BANNED
                status:
                  const: 403
                message:
                  type: string
                  default: This account has been suspended.
                data: {}
              required:
              - code
              - status
              - message
            - type: object
              properties:
                code:
                  const: FORBIDDEN
                status:
                  const: 403
                message:
                  type: string
                  default: Plan upgrade required
                data: {}
              required:
              - code
              - status
              - message
            - type: object
              properties:
                code:
                  const: FEATURE_NOT_AVAILABLE
                status:
                  const: 403
                message:
                  type: string
                  default: This operation isn't available for this integration.
                data: {}
              required:
              - code
              - status
              - message
            - type: object
              properties:
                code:
                  type: string
                status:
                  type: integer
                message:
                  type: string
                data: {}
              required:
              - code
              - status
              - message
      required:
      - error
    FeedbackCreate429ErrorResponse:
      type: object
      properties:
        error:
          allOf:
          - $ref: '#/components/schemas/ApiError'
          - anyOf:
            - type: object
              properties:
                code:
                  const: TOO_MANY_REQUESTS
                status:
                  const: 429
                message:
                  type: string
                  default: Rate limit exceeded
                data: {}
              required:
              - code
              - status
              - message
            - type: object
              properties:
                code:
                  type: string
                status:
                  type: integer
                message:
                  type: string
                data: {}
              required:
              - code
              - status
              - message
      required:
      - error
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: 'Rainbrand API key, for example `x-api-key: bloom_sk_...`.'
    bearer:
      type: http
      scheme: bearer
      description: Rainbrand API key (`Bearer bloom_sk_...`) or Rainbrand OAuth access token.
    oauth:
      type: oauth2
      description: Authorization Code with PKCE S256. See [Authentication](https://docs.rainbrand.com/api/authentication).
      flows:
        authorizationCode:
          authorizationUrl: https://www.rainbrand.com/api/auth/oauth2/authorize
          tokenUrl: https://www.rainbrand.com/api/auth/oauth2/token
          scopes:
            openid: Authenticate the user's identity with OpenID Connect.
            offline_access: Request a refresh token for access when the user is offline.