# Create sender for project

Creates a sender for a project.

Endpoint: POST /v1/projects/{projectId}/kakaotalk/senders
Version: 1.2.91
Security: BasicAuth, BearerAuth, OAuth2Production

## Path parameters:

  - `projectId` (string, required)
    The unique ID of the project. You can find this on the Sinch Dashboard.

## Request fields (application/json):

  - `plusFriendId` (string, required)
    PlusFriend ID

  - `details` (object, required)
    Sender details and information. Not required for draft.

  - `details.adminPhoneNo` (string, required)
    Admin phone  Not required for draft.

  - `details.name` (string, required)
    Sender name Not required for draft.

  - `details.topLevelCategoryCode` (string, required)
    Top level category code, must consist of 3 digits (e.g. 001). Not required for draft.

  - `details.midLevelCategoryCode` (string, required)
    Mid level category code, must consist of 4 digits (e.g. 0001). Not required for draft.

  - `details.subLevelCategoryCode` (string, required)
    Sub level category code, must consist of 4 digits (e.g. 0001). Not required for draft.

  - `details.logoImage` (string)
    Sender logo
- Supported mime types: image/jpeg or image/png.
- Maximum file size: 5MB.

  - `status` (string)
    Create as draft or submit. Defaults to submit.
    Enum: "DRAFT", "SUBMIT"

  - `saveDraftOnFailure` (boolean)
    Flag to save template as draft if submission fails. Defaults to false.

## Response 201 fields (application/json):

  - `plusFriendId` (string, required)
    PlusFriend ID

  - `id` (string)
    The unique ID of the sender.

  - `state` (string)
    The current state of the sender.
    Enum: "ACTIVE", "BLOCKED", "INACTIVE", "SUSPENDED", "VERIFYING"

  - `changes` (object)
    Any pending changes to the sender.

  - `changes.status` (string, required)
    Current status of the pending changes.
    Enum: "DRAFT", "IN_PROGRESS", "REJECTED"

  - `changes.details` (array, required) — one of:
    Sender details and information.
    - KakaotalkSenderDetailsDto:
      - `adminPhoneNo` (string, required)
        Admin phone
      - `name` (string, required)
        Sender name
      - `topLevelCategoryCode` (string, required)
        Top level category code, must consist of 3 digits (e.g. 001).
      - `midLevelCategoryCode` (string, required)
        Mid level category code, must consist of 4 digits (e.g. 0001).
      - `subLevelCategoryCode` (string, required)
        Sub level category code, must consist of 4 digits (e.g. 0001).
      - `logoImage` (string)
        Sender logo
    - KakaotalkSenderChangesDetailsDto:
      - `adminPhoneNo` (string)
        Admin phone
      - `name` (string)
        Sender name
      - `logoImage` (string)
        Sender logo
      - `topLevelCategoryCode` (string)
        Top level category code, must consist of 3 digits (e.g. 001).
      - `midLevelCategoryCode` (string)
        Mid level category code, must consist of 4 digits (e.g. 0001).
      - `subLevelCategoryCode` (string)
        Sub level category code, must consist of 4 digits (e.g. 0001).

  - `details` (object)
    Sender details and information.

  - `details.adminPhoneNo` (string, required)
    Admin phone

  - `details.name` (string, required)
    Sender name

  - `details.topLevelCategoryCode` (string, required)
    Top level category code, must consist of 3 digits (e.g. 001).

  - `details.midLevelCategoryCode` (string, required)
    Mid level category code, must consist of 4 digits (e.g. 0001).

  - `details.subLevelCategoryCode` (string, required)
    Sub level category code, must consist of 4 digits (e.g. 0001).

  - `details.logoImage` (string)
    Sender logo

  - `created` (string)
    The UTC Date Time in ISO 8601 for when the sender was created.

  - `modified` (string)
    The UTC Date Time in ISO 8601 for when the sender was last modified.

## Response 400 fields (application/json):

  - `body` (FileInvalidMimeTypeErrorTitle (object) or SenderInvalidCategoryCodeErrorTitle (object) or InvalidInputErrorTitle (object)) — one of:
    - FileInvalidMimeTypeErrorTitle:
      - `errorCode` (string)
        Error code allows to programmatically handle errors.
        Example: "file_invalid_mime_type"
      - `message` (string)
        Human readable message.
        Example: "details.logoImage: invalid file mime type."
      - `resolution` (string)
        Human readable message with an explanation of how to solve the error.
        Example: "Try again with supported mime types: image/jpeg, image/png."
    - SenderInvalidCategoryCodeErrorTitle:
      - `errorCode` (string)
        Error code allows to programmatically handle errors.
        Example: "sender_invalid_category_code"
      - `message` (string)
        Human readable message.
        Example: "Invalid sender category code(s)."
      - `resolution` (string)
        Human readable message with an explanation of how to solve the error.
        Example: "Verify that the sender category code(s) used is supported."
    - InvalidInputErrorTitle:
      - `errorCode` (string)
        Error code allows to programmatically handle errors.
        Example: "invalid_input"
      - `message` (string)
        Human readable message.
        Example: "Invalid input."
      - `resolution` (string)
        Human readable message with an explanation of how to solve the error.
        Example: "Correct the validation errors and submit again."
      - `additionalInformation` (object)
        Additional information for error.
        Example: {"validationErrors":["plusFriendId must be longer than or equal to 1 characters"]}

## Response 401 fields (application/json):

  - `errorCode` (string)
    Error code allows to programmatically handle errors.
    Example: "unauthorized_error"

  - `message` (string)
    Human readable message.
    Example: "Unauthorized error."

  - `resolution` (string)
    Human readable message with an explanation of how to solve the error.
    Example: "Verify that projectId is correct."

## Response 404 fields (application/json):

  - `errorCode` (string)
    Error code allows to programmatically handle errors.
    Example: "project_not_found"

  - `message` (string)
    Human readable message.
    Example: "Project not found."

  - `resolution` (string)
    Human readable message with an explanation of how to solve the error.
    Example: "Verify that the projectId is correct."

## Response 409 fields (application/json):

  - `body` (AccountExistsErrorTitle (object) or AccountNotUpdatableErrorTitle (object) or AccountDataIsCorruptErrorTitle (object) or FileNotFoundErrorTitle (object) or FileUnexpectedErrorErrorTitle (object) or FileSizeTooLargeErrorTitle (object) or PlusFriendIdUsedErrorTitle (object)) — one of:
    - AccountExistsErrorTitle:
      - `errorCode` (string)
        Error code allows to programmatically handle errors.
        Example: "account_exists"
      - `message` (string)
        Human readable message.
        Example: "Account already exists."
      - `resolution` (string)
        Human readable message with an explanation of how to solve the error.
        Example: "There can only be one KakaoTalk account for each project."
    - AccountNotUpdatableErrorTitle:
      - `errorCode` (string)
        Error code allows to programmatically handle errors.
        Example: "account_not_updatable"
      - `message` (string)
        Human readable message.
        Example: "Account is not updatable."
      - `resolution` (string)
        Human readable message with an explanation of how to solve the error.
        Example: "Please contact support."
    - AccountDataIsCorruptErrorTitle:
      - `errorCode` (string)
        Error code allows to programmatically handle errors.
        Example: "account_data_is_corrupt"
      - `message` (string)
        Human readable message.
        Example: "Account data is corrupt."
      - `resolution` (string)
        Human readable message with an explanation of how to solve the error.
        Example: "Please contact support."
    - FileNotFoundErrorTitle:
      - `errorCode` (string)
        Error code allows to programmatically handle errors.
        Example: "file_not_found"
      - `message` (string)
        Human readable message.
        Example: "details.logoImage: file not found."
      - `resolution` (string)
        Human readable message with an explanation of how to solve the error.
        Example: "Verify that the url is correct."
    - FileUnexpectedErrorErrorTitle:
      - `errorCode` (string)
        Error code allows to programmatically handle errors.
        Example: "file_unexpected_error"
      - `message` (string)
        Human readable message.
        Example: "details.logoImage: file unexpected error."
      - `resolution` (string)
        Human readable message with an explanation of how to solve the error.
        Example: "The file cannot be handled properly. Please try with another one."
    - FileSizeTooLargeErrorTitle:
      - `errorCode` (string)
        Error code allows to programmatically handle errors.
        Example: "file_size_too_large"
      - `message` (string)
        Human readable message.
        Example: "details.logoImage: file size is too large."
      - `resolution` (string)
        Human readable message with an explanation of how to solve the error.
        Example: "Try again with a smaller file. Max size for `image/jpeg` is 5MB."
    - PlusFriendIdUsedErrorTitle:
      - `errorCode` (string)
        Error code allows to programmatically handle errors.
        Example: "plus_friend_id_used"
      - `message` (string)
        Human readable message.
        Example: "plusFriendId is already used."
      - `resolution` (string)
        Human readable message with an explanation of how to solve the error.
        Example: "plusFriendId is already used by another Sender, verify that the parameters are correct."

## Response 412 fields (application/json):

  - `errorCode` (string)
    Error code allows to programmatically handle errors.
    Example: "account_is_in_progress"

  - `message` (string)
    Human readable message.
    Example: "Account creation is in progress."

  - `resolution` (string)
    Human readable message with an explanation of how to solve the error.
    Example: "Please contact support."

## Response 500 fields (application/json):

  - `errorCode` (string)
    Error code allows to programmatically handle errors.
    Example: "internal_error"

  - `message` (string)
    Human readable message.
    Example: "Internal server error."

  - `resolution` (string)
    Human readable message with an explanation of how to solve the error.
    Example: "Please wait and try again, if the error persist please contact support."


