> ## Documentation Index
> Fetch the complete documentation index at: https://developer.salesforge.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Bulk create sender profiles

> Creates up to 100 sender profiles in one call. Entries are applied independently: the response reports per-entry success or failure, and a failing entry does not prevent the others from being created.



## OpenAPI

````yaml https://multichannel-api.salesforge.ai/public/multichannel/swagger/doc.json post /multichannel/workspaces/{workspaceID}/sender-profiles/bulk
openapi: 3.1.0
info:
  description: Multichannel public endpoints consumed through salesforge-api public docs.
  title: Multichannel Public API
  version: '1.0'
servers:
  - url: https://multichannel-api.salesforge.ai/public
security:
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
  - ApiKeyAuth: []
externalDocs:
  description: ''
  url: ''
paths:
  /multichannel/workspaces/{workspaceID}/sender-profiles/bulk:
    post:
      tags:
        - multichannel
      summary: Bulk create sender profiles
      description: >-
        Creates up to 100 sender profiles in one call. Entries are applied
        independently: the response reports per-entry success or failure, and a
        failing entry does not prevent the others from being created.
      parameters:
        - description: Workspace ID
          in: path
          name: workspaceID
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                - $ref: >-
                    #/components/schemas/requests.BulkCreateSenderProfilesRequest
                  description: Bulk create sender profiles request
                  summary: request
        description: Bulk create sender profiles request
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/responses.BulkCreateSenderProfilesResponse
          description: Created
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
          description: Forbidden
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
          description: Internal Server Error
      security:
        - ApiKeyAuth: []
components:
  schemas:
    requests.BulkCreateSenderProfilesRequest:
      properties:
        profiles:
          description: >-
            Sender profiles to create. Entries are applied independently: a
            failing entry is reported in

            its own result and does not prevent the others from being created.
          items:
            $ref: '#/components/schemas/requests.CreateSenderProfileEntry'
          maxItems: 100
          minItems: 1
          type: array
          uniqueItems: false
      required:
        - profiles
      type: object
    responses.BulkCreateSenderProfilesResponse:
      properties:
        results:
          description: One result per submitted entry, in request order.
          items:
            $ref: '#/components/schemas/responses.BulkCreateSenderProfileResult'
          type: array
          uniqueItems: false
      type: object
    responses.ErrorResponse:
      properties:
        data:
          description: >-
            Optional error context. Its shape depends on the message and
            endpoint.
        message:
          description: >-
            Human-readable error text or, for documented cases, a stable
            machine-readable code that clients can branch on.
          example: Invalid request body
          type: string
      type: object
    requests.CreateSenderProfileEntry:
      properties:
        linkedinAccountId:
          description: >-
            ID of an already-connected LinkedIn account to attach. The account
            must belong to the

            workspace and must not already be attached to another sender
            profile. Connect an account

            standalone via POST /linkedin/accounts with skipSenderProfile set to
            true.
          example: 123
          type: integer
        mailboxIds:
          description: >-
            Mailbox IDs to attach to the profile. Mailboxes must already exist
            in the workspace.
          example:
            - mbox_123
            - mbox_456
          items:
            type: string
          type: array
          uniqueItems: false
        name:
          description: Display name of the sender profile.
          example: Public Sender
          type: string
      required:
        - name
      type: object
    responses.BulkCreateSenderProfileResult:
      properties:
        error:
          description: Why the entry failed. Absent when the entry succeeded.
          example: linkedin account not found
          type: string
        index:
          description: >-
            Position of the entry in the submitted profiles array, so results
            can be matched to input.
          type: integer
        profile:
          $ref: '#/components/schemas/responses.SenderProfileResponse'
      type: object
    responses.SenderProfileResponse:
      description: The created sender profile. Absent when the entry failed.
      properties:
        id:
          type: integer
        linkedinAccount:
          $ref: '#/components/schemas/responses.SenderProfileLinkedinAccountResponse'
        mailboxes:
          items:
            $ref: '#/components/schemas/responses.MailboxResponse'
          type: array
          uniqueItems: false
        name:
          type: string
        status:
          type: string
      type: object
    responses.SenderProfileLinkedinAccountResponse:
      properties:
        id:
          type: integer
        linkedinUrl:
          type: string
        name:
          type: string
        premium:
          type: boolean
        profilePictureUrl:
          type: string
        status:
          type: string
      type: object
    responses.MailboxResponse:
      properties:
        address:
          type: string
        id:
          type: string
      type: object
  securitySchemes:
    ApiKeyAuth:
      in: header
      name: Authorization
      type: apiKey

````