---
title: "Upload attachments for 10DLC campaign registration"
method: POST
path: "/v1/projects/{projectId}/uploadCampaignFile:submit"
tags: ["10DLC Campaign Registration"]
---

# Upload attachments for 10DLC campaign registration

`POST /v1/projects/{projectId}/uploadCampaignFile:submit`

## Request

- Base URL: `https://us10dlc.numbers.api.sinch.com`
- URL: `https://us10dlc.numbers.api.sinch.com/v1/projects/{projectId}/uploadCampaignFile:submit`
- Auth: one of:
  - HTTP basic
  - OAuth 2
    - Client credentials
    - Token URL: `https://auth.sinch.com/oauth2/token`

Uploads supporting documentation for 10DLC campaign registrations.

## Path parameters

- `projectId` string, required

## Request body

- V1uploadCampaignFilesRequest: Request payload to upload a file for a campaign registration. Only one file can be uploaded at a time.
  - `projectId` string: The project ID to which the campaign belongs.
  - `campaignInternalId` string, required: The campaign ID returned by the create campaign API endpoint.
  - `file` object: Files must be no larger than 10MB. For PRIVACY_POLICY, TERMS_AND_CONDITIONS, CALL_TO_ACTION, and OPT_IN file categories, the following file types are supported: jpg, jpeg, png, bmp, tiff, raw, pdf, rtf, xml, odt, docx, tml, txt For MMS file category, the following file types are supported: bmp, dib, gif, jpeg, jpg, m2a, m4a, m4b, m4p, m4r, m4v, mp1, mp2, mp3, mp4, mpa, oga, ogg, ogm, ogv, ogx, png, spx, txt, wav, webm There can be a maximum of 5 files submitted for MMS and a maximum of 5 files for the other categories.
    - `fileName` string: The name of the file you want to upload.
    - `fileContent` string: The content of the file encoded in base64.
    - `fileCategory` 1 | 2 | 3 | 4 | 5: Represents the category or intended purpose of a file and used to classify uploaded files based on their content or function.
  - `submitCampaign` boolean, required: Set this property to `false` for all uploaded files except the final one, which will allow for uploading documents across multiple requests without submitting the campaign. For the last file, set it to `true` to indicate that the upload is complete and the campaign should be submitted for review.

## Response `200`

A successful response.

- object
  - `status` string: Indicates whether the file upload was successful or not.
  - `message` string: A message providing details if the file upload was not successful. Will be an empty string if the upload was successful.

## Other responses

- `400`: INVALID_ARGUMENT: If the input parameters are not valid
- `404`: The campaign could not be found
- `429`: Over limit
- `500`: INTERNAL: Internal server error. Typically, a server bug.

## Changes

- **2026-10-05** `e8ef20787f30`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/sinch/apis/registration/changes/v1/projects/:projectId/uploadCampaignFile:submit/post.md)

---

[API](https://skmtc.dev/sinch/apis/registration.md) - [All operations](https://skmtc.dev/sinch/apis/registration/llms.txt) - [OpenAPI document](https://skmtc.dev/sinch/apis/registration/revisions/e8ef20787f30?raw)
