Bonjoro API V2

REST API for the Bonjoro personal-video platform. Create and assign greets (video tasks) for one or many recipients, manage recipient profiles and campaigns/workspaces, upload recordings to presigned S3 URLs, apply message templates and branding, read engagement results, event streams and transmission/deliverability records, manage teams, users, invites, custom sending domains and verified email signatures, and build trigger/action automations against connected CRM and email services. OAuth 2.0 bearer tokens issued from /api/v2/oauth/2/token.

Documentation

Specifications

Other Resources

OpenAPI Specification

bonjoro-api-v2-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Bonjoro API V2
  description: Bonjoro API definitions
  version: 1.0.0
servers:
- url: https://www.bonjoro.com/
paths:
  /api/v2/oauth/2/token:
    post:
      tags:
      - Authentications
      summary: Authenticate
      operationId: authenticate
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/authenticationPayload'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/accessToken'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
  /api/v2/attributes:
    get:
      tags:
      - Profile Attributes
      summary: Get the profile information related to the specified greet_id and profile_id
      operationId: getAttributes
      parameters:
      - name: profile_id
        in: query
        required: true
        schema:
          type: string
          format: uuid
      - name: greet_id
        in: query
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/profileAttributes'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
      security:
      - OAuth: []
  /api/v2/attribute-types:
    get:
      tags:
      - Profile Attributes
      summary: Get all profile attribute types
      operationId: getAttributeTypes
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                type: array
                items:
                  anyOf:
                  - $ref: '#/components/schemas/profileAttributeType1'
                  - $ref: '#/components/schemas/profileAttributeType2'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
      security:
      - OAuth: []
  /api/v2/automations:
    get:
      tags:
      - Automations
      summary: Get paginated automations
      operationId: getAutomations
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/automations'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
      security:
      - OAuth: []
  /api/v2/automations/{automation_id}:
    get:
      tags:
      - Automations
      summary: Update an automation
      operationId: getAutomation
      parameters:
      - name: automation_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/automation'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
        '404':
          description: 404 Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/notFound'
      security:
      - OAuth: []
    put:
      tags:
      - Automations
      summary: Update the name or enabled status of an automation
      operationId: putAutomation
      parameters:
      - name: automation_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  type: string
                  example: New name
                enabled:
                  type: boolean
                  example: true
              type: object
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/automation'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
        '404':
          description: 404 Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/notFound'
      security:
      - OAuth: []
    delete:
      tags:
      - Automations
      summary: Delete an automation
      operationId: deleteAutomation
      parameters:
      - name: automation_id
        in: path
        required: true
      responses:
        '203':
          description: ok
          content:
            application/json:
              schema:
                allOf:
                - properties:
                    message:
                      type: string
                      example: Deleted
                  type: object
                - properties:
                    data:
                      $ref: '#/components/schemas/automationNoAction'
                  type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
        '404':
          description: 404 Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/notFound'
      security:
      - OAuth: []
  /api/v2/campaigns:
    get:
      tags:
      - Campaigns
      summary: Get paginated campaigns
      operationId: getCampaigns
      parameters:
      - name: limit
        in: query
        required: false
        schema:
          type: number
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/campaigns'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
      security:
      - OAuth: []
  /api/v2/campaigns/segmented:
    get:
      tags:
      - Campaigns
      summary: Get segmented campaigns
      operationId: getSegmentedCampaigns
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/campaignsSegmented'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
      security:
      - OAuth: []
  /api/v2/campaigns/{campaign_id}:
    get:
      tags:
      - Campaigns
      summary: Get a campaign
      operationId: getCampaign
      parameters:
      - name: campaign_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/campaign'
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
        '404':
          description: 404 Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/notFound'
      security:
      - OAuth: []
    put:
      tags:
      - Campaigns
      summary: Update a campaign
      operationId: putCampaign
      parameters:
      - name: campaign_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/campaignUpdatePayload'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: Updated
                  data:
                    $ref: '#/components/schemas/campaignWithUsers'
                type: object
        '400':
          description: 400 Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/badRequest'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
        '404':
          description: 404 Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/notFound'
      security:
      - OAuth: []
    delete:
      tags:
      - Campaigns
      summary: Delete a campaign
      operationId: deleteCampaign
      parameters:
      - name: campaign_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: Deleted
                  data:
                    $ref: '#/components/schemas/campaignWithUsers'
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
        '404':
          description: 404 Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/notFound'
      security:
      - OAuth: []
  /api/v2/checklist:
    get:
      tags:
      - Checklist
      summary: Get paginated checklists
      operationId: getChecklist
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/checklists'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
      security:
      - OAuth: []
  /api/v2/users/me/devices:
    post:
      tags:
      - Devices
      summary: Add user devices
      operationId: postUserDevices
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/devices'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: Created
                  data:
                    $ref: '#/components/schemas/devices'
                type: object
        '400':
          description: 400 Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/badRequest'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
      security:
      - OAuth: []
  /api/v2/domain-availabilities/{domain_name}:
    get:
      tags:
      - Domains
      summary: Returns the availability of the specified domain
      operationId: getDomain
      parameters:
      - name: domain_name
        in: path
        required: true
        example: bonjoro.com
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                properties:
                  status:
                    type: string
                    enum:
                    - domain_available
                    - domain_not_available
                    example: domain_available
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
      security:
      - OAuth: []
  /api/v2/domains:
    get:
      tags:
      - Domains
      summary: Returns paginated domains
      operationId: getDomains
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/domains'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
      security:
      - OAuth: []
    post:
      tags:
      - Domains
      summary: Add a domain
      operationId: postDomain
      requestBody:
        content:
          application/json:
            schema:
              properties:
                domain:
                  type: string
              type: object
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: Created
                  data:
                    $ref: '#/components/schemas/domain'
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
      security:
      - OAuth: []
  /api/v2/domains/{domain_id}:
    delete:
      tags:
      - Domains
      summary: Delete a domain
      operationId: deleteDomain
      parameters:
      - name: domain_id
        in: path
        required: true
        example: '10'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: Domain deleted
                  data:
                    $ref: '#/components/schemas/domain'
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
        '404':
          description: 404 Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/notFound'
      security:
      - OAuth: []
  /api/v2/domains/{domain_id}/verify:
    put:
      tags:
      - Domains
      summary: Verify a domain
      operationId: putVerifyDomain
      parameters:
      - name: domain_id
        in: path
        required: true
        example: '10'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: Congrats, your domain is now verified
                  data:
                    properties:
                      is_verified:
                        type: boolean
                        example: true
                    type: object
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
        '404':
          description: 404 Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/notFound'
      security:
      - OAuth: []
  /api/v2/events:
    get:
      tags:
      - Events
      summary: Get paginated events
      operationId: getEvents
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/events'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
      security:
      - OAuth: []
  /api/v2/feedback:
    post:
      tags:
      - Feedback
      summary: Add a feedback
      operationId: postFeedback
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/feedbackPayload'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: Created
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
      security:
      - OAuth: []
  /api/v2/greets:
    get:
      tags:
      - Greets
      summary: Get paginated greets
      operationId: getGreets
      parameters:
      - name: profile_id
        in: query
        schema:
          type: string
          format: uuid
        example: 7b9d182a-a687-472b-8212-2c817a7ae088
      - name: assignee_id
        in: query
        schema:
          type: string
          format: uuid
        example: 7b9d182a-a687-472b-8212-2c817a7ae088
      - name: status
        in: query
        schema:
          type: string
          enum:
          - open
          - closed
          - sent
        example: open
      - name: simple
        in: query
        schema:
          type: boolean
        example: true
      - name: search
        in: query
        description: Search for profiles where email, firstname and lastname matches the search term
        schema:
          type: string
      - name: sort
        in: query
        schema:
          type: string
          enum:
          - created_at
          - updated_at
          - uploaded_at
          - awaiting_reply
          - last_modified
          - last_replied_at
        example: created_at
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/greets'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
        '404':
          description: 404 Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/notFound'
      security:
      - OAuth: []
    post:
      tags:
      - Greets
      summary: Add a greet
      operationId: postGreet
      requestBody:
        content:
          application/json:
            schema:
              properties:
                profiles:
                  description: An array of profiles
                  type: array
                  items:
                    type: string
                    format: email | uuid
                  maxItems: 200
                assignee_id:
                  description: The assignee of the created task
                  type: string
                  format: uuid
                  example: 7b9d182a-a687-472b-8212-2c817a7ae088
                  nullable: true
                note:
                  description: A note to add to the task
                  type: string
                  example: New signup
                  nullable: true
                campaign_id:
                  description: The workspace in which to create the task
                  type: string
                  format: uuid
                  example: 7b9d182a-a687-472b-8212-2c817a7ae088
                  nullable: true
                template_id:
                  description: A message template to set for the task
                  type: string
                  format: uuid
                  example: 7b9d182a-a687-472b-8212-2c817a7ae088
                  nullable: true
                custom_attributes:
                  description: Key/value pairs describing custom attributes for the task
                  type: object
                  nullable: true
              type: object
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: Created
                  data:
                    $ref: '#/components/schemas/greetFull'
                type: object
        '400':
          description: 400 Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/badRequest'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
        '404':
          description: 404 Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/notFound'
      security:
      - OAuth: []
    delete:
      tags:
      - Greets
      summary: Delete multiple greets
      operationId: delete multipleGreets
      parameters:
      - name: greets[]
        in: query
        schema:
          type: array
          items:
            type: string
            format: uuid
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: Deleted
                  data:
                    $ref: '#/components/schemas/greetFull'
                type: object
        '400':
          description: 400 Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/badRequest'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
        '404':
          description: 404 Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/notFound'
      security:
      - OAuth: []
    patch:
      tags:
      - Greets
      summary: Updates assignee_id and/or campaign_id of the specified greets
      operationId: updateManyGreets
      requestBody:
        content:
          application/json:
            schema:
              properties:
                assignee_id:
                  type: string
                  format: uuid
                  example: 7b9d182a-a687-472b-8212-2c817a7ae088
                campaign_id:
                  type: integer
                  example: 5
                greets:
                  description: An array of greet uuids
                  type: array
                  items:
                    type: string
              type: object
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/greets'
        '400':
          description: 400 Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/badRequest'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
        '404':
          description: 404 Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/notFound'
      security:
      - OAuth: []
  /api/v2/greets/{greet_id}:
    put:
      tags:
      - Greets
      summary: Update the assignee for a greet
      operationId: putGreet
      parameters:
      - name: greet_id
        in: path
        schema:
          type: string
          format: uuid
        example: 7b9d182a-a687-472b-8212-2c817a7ae088
      requestBody:
        content:
          application/json:
            schema:
              properties:
                assignee_id:
                  type: string
                  format: uuid
                  example: 7b9d182a-a687-472b-8212-2c817a7ae088
              type: object
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: Updated
                  data:
                    $ref: '#/components/schemas/greetFull'
                type: object
        '400':
          description: 400 Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/badRequest'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
        '404':
          description: 404 Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/notFound'
      security:
      - OAuth: []
    delete:
      tags:
      - Greets
      summary: Delete a greet
      operationId: deleteGreet
      parameters:
      - name: greet_id
        in: path
        schema:
          type: string
          format: uuid
        example: 7b9d182a-a687-472b-8212-2c817a7ae088
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: Deleted
                  data:
                    $ref: '#/components/schemas/greetFull'
                type: object
        '400':
          description: 400 Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/badRequest'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
        '404':
          description: 404 Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/notFound'
      security:
      - OAuth: []
  /api/v2/greets/create:
    post:
      tags:
      - Greets
      summary: Create greets in bulk
      operationId: bulkCreateGreets
      requestBody:
        content:
          application/json:
            schema:
              properties:
                assignee_id:
                  type: string
                  format: uuid
                  example: a9c34499-8573-4ae5-b596-56aaf4d83b29
                campaign_id:
                  type: string
                  format: uuid
                  example: a9c34499-8573-4ae5-b596-56aaf4d83b29
                  nullable: true
                sync:
                  type: integer
                  enum:
                  - 1
                  - 0
                  example: 0
                  nullable: true
                reason:
                  type: string
                  format: string
                  example: New Sign Up
                  nullable: true
                lines:
                  type: array
                  items:
                    properties:
                      email:
                        type: string
                        format: email
                        example: mail@gmail.com
                      first_name:
                        type: string
                        format: string
                        example: Joe
                        nullable: true
                      last_name:
                        type: string
                        format: string
                        example: Bloggs
                        nullable: true
                      reason:
                        type: string
                        format: string
                        example: New Sign Up
                        nullable: true
                    type: object
              type: object
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: Created
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
      security:
      - OAuth: []
  /api/v2/greets/{greet_id}/notifications:
    post:
      tags:
      - Greets
      summary: Mark greet as complete
      operationId: sendNotification
      parameters:
      - name: greet_id
        in: path
        schema:
          type: string
          format: uuid
        example: e885c1ff-0d2e-4b45-a4bb-ea8b09a30a19
      requestBody:
        content:
          application/json:
            schema:
              properties:
                via:
                  type: array
                  items:
                    type: string
                    enum:
                    - email
              type: object
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: Sent
                  data:
                    $ref: '#/components/schemas/greetFull'
                type: object
        '400':
          description: 400 Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/badRequest'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
        '404':
          description: 404 Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/notFound'
      security:
      - OAuth: []
  /api/v2/greets/rollup:
    post:
      tags:
      - Greets
      summary: Rollup and delete greets
      operationId: rollupGreets
      requestBody:
        content:
          application/json:
            schema:
              properties:
                type:
                  type: string
                  example: no_name
                campaign_id:
                  type: integer
                  example: 5
              type: object
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: Complete
                  data:
                    properties:
                      count:
                        type: integer
                        example: 1
                    type: object
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
      security:
      - OAuth: []
  /api/v2/greets/{greet_id}/{profile_id}/update:
    post:
      tags:
      - Greets
      summary: Update a greet profile and event message
      operationId: updateGreetsProfile
      parameters:
  

# --- truncated at 32 KB (193 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/bonjoro/refs/heads/main/openapi/bonjoro-api-v2-openapi.yml