openapi: 3.2.0 info: x-sinch-standards-version: standards-2026-03-31 description: 'This API describes the set of endpoints available to create customer brands. The list of endpoints allows to create, update and delete a customer brand and also get the current state.' title: Sinch Compliance API - Brands Orders API version: 1.0.0 contact: name: Support url: https://www.sinch.com email: Support@sinch.com license: name: MIT url: https://www.sinch.com/toc servers: - description: Production server. Data processed and stored within Europe. url: https://compliance.api.sinch.com tags: - description: Create and manage Customer Brand Orders name: Orders x-displayName: Orders paths: /v1/projects/{projectId}/us/orders: get: x-sinch-stability: preview description: List Brand Orders, according to the filters applied. This endpoint allows filtering over all brands. operationId: listBrandOrders parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string - in: query description: The brand Order status to filter the brand orders. name: status required: false schema: type: array items: $ref: '#/components/schemas/BrandOrderStatus' - in: query name: metadataName description: Filter brand orders by brand registration process metadata name. schema: $ref: '#/components/schemas/BrandOrderMetadata' - in: query name: sort description: 'Sorting of the results using SQL-like syntax: comma-separated field names with an optional '':desc'' or '':asc'' suffix. Fields that support sorting are ''metadataName'', ''status'', ''createTime'', ''updateTime''. Defaults to ascending order when no suffix is provided.' schema: type: string example: metadataName,status:desc - in: query name: pageSize description: Size of the page to be returned. Default is 20. Maximum is 100. schema: format: int32 type: integer minimum: 1 maximum: 100 default: 20 example: 20 - in: query name: pageToken description: Page token to request subsequent pages when using pagination. This should be the value generated by the system in a previous list request. schema: type: string responses: '200': description: OK headers: Link: description: Pagination links per RFC 8288. A `rel="next"` link is present when there are more results. Absence of a `next` link indicates the last page. schema: type: string example: ; rel="next" content: application/json: schema: $ref: '#/components/schemas/ListBrandOrderResponse' example: orders: - brandOrderId: '212421442412' brandId: b1c7ccbf-919d-462f-8587-dec95a1b11ee status: NEW metadataName: US_10DLC_TCR_PRIVATE_BRAND_REGISTRATION createTime: '2024-01-15T10:00:00Z' updateTime: '2024-01-15T10:00:00Z' links: next: https://compliance.api.sinch.com/v1/projects/proj-123/us/orders?pageToken=eyJsYXN0SWQiOiIyMTI0MjEifQ meta: totalCount: 15 '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': content: application/problem+json: schema: $ref: '#/components/schemas/RestError' description: 'NOT_FOUND: The project id introduced does not exist.' '429': $ref: '#/components/responses/TooManyRequests' '500': content: application/problem+json: schema: $ref: '#/components/schemas/RestError' description: 'INTERNAL: Internal server error. Typically, a server bug.' security: - OAuth2: - read summary: List Brand Orders according to the filters applied tags: - Orders /v1/projects/{projectId}/us/brands/{brandId}/orders: post: x-sinch-stability: preview description: 'Creates a new Brand Order for the specified brand ID and process selected. Note: The `Idempotency-Key` header is not supported in this version. Submitting the same request twice may create duplicate orders. Callers are responsible for deduplicating on their end. Idempotency-Key support will be added when this operation reaches Stable stability.' operationId: createBrandOrder parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string - in: path description: Brand ID reference name: brandId required: true schema: type: string requestBody: required: true description: Brand Order object to be created. The request body must include all the required fields for the brand order creation, as well as the optional field callbackUrl that indicates the URL that will receive callbacks with updates on the brand order status. Depending on the process selected for the brand order, different fields will be required and different validations will be applied. Please check the Brand Order object definition for more details on the required fields depending on the process. content: application/json: schema: $ref: '#/components/schemas/BrandOrderRequest' responses: '201': description: Brand Order Created content: application/json: schema: $ref: '#/components/schemas/BrandOrder' example: brandOrderId: '212421442412' brandId: b1c7ccbf-919d-462f-8587-dec95a1b11ee status: NEW metadataName: US_10DLC_TCR_PRIVATE_BRAND_REGISTRATION logs: [] channels: [] thirdPartyMetadata: [] pricing: amount: '5.00' currencyCode: USD callbackUrl: https://example.com/callback createTime: '2024-01-15T10:00:00Z' updateTime: '2024-01-15T10:00:00Z' '400': content: application/problem+json: schema: $ref: '#/components/schemas/RestError' description: 'BAD_REQUEST: Any validation error' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': content: application/problem+json: schema: $ref: '#/components/schemas/RestError' description: 'NOT_FOUND: The project id introduced does not exist.' '429': $ref: '#/components/responses/TooManyRequests' '500': content: application/problem+json: schema: $ref: '#/components/schemas/RestError' description: 'INTERNAL: Internal server error. Typically, a server bug.' security: - OAuth2: - write summary: Creates a new Brand Order for the specified process tags: - Orders get: x-sinch-stability: preview description: List Brand Orders per brand id, according to the filters applied. operationId: listBrandOrderByBrandId parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string - in: path description: Brand ID reference name: brandId required: true schema: type: string - in: query description: The brand Order status to filter the brand orders. name: status required: false schema: type: array items: $ref: '#/components/schemas/BrandOrderStatus' - in: query name: metadataName description: Filter brand orders by brand registration process metadata name. schema: $ref: '#/components/schemas/BrandOrderMetadata' - in: query name: sort description: 'Sorting of the results using SQL-like syntax: comma-separated field names with an optional '':desc'' or '':asc'' suffix. Fields that support sorting are ''metadataName'', ''status'', ''createTime'', ''updateTime''. Defaults to ascending order when no suffix is provided.' schema: type: string example: metadataName,status:desc - in: query name: pageSize description: Size of the page to be returned. Default is 20. Maximum is 100. schema: format: int32 type: integer minimum: 1 maximum: 100 default: 20 example: 20 - in: query name: pageToken description: Page token to request subsequent pages when using pagination. This should be the value generated by the system in a previous list request. schema: type: string responses: '200': description: OK headers: Link: description: Pagination links per RFC 8288. A `rel="next"` link is present when there are more results. Absence of a `next` link indicates the last page. schema: type: string example: ; rel="next" content: application/json: schema: $ref: '#/components/schemas/ListBrandOrderResponse' example: orders: - brandOrderId: '212421442412' brandId: b1c7ccbf-919d-462f-8587-dec95a1b11ee status: NEW metadataName: US_10DLC_TCR_PRIVATE_BRAND_REGISTRATION createTime: '2024-01-15T10:00:00Z' updateTime: '2024-01-15T10:00:00Z' links: next: https://compliance.api.sinch.com/v1/projects/proj-123/us/brands/b1c7ccbf-919d-462f-8587-dec95a1b11ee/orders?pageToken=eyJsYXN0SWQiOiIyMTI0MjEifQ meta: totalCount: 15 '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': content: application/problem+json: schema: $ref: '#/components/schemas/RestError' description: 'NOT_FOUND: The project id introduced does not exist.' '429': $ref: '#/components/responses/TooManyRequests' '500': content: application/problem+json: schema: $ref: '#/components/schemas/RestError' description: 'INTERNAL: Internal server error. Typically, a server bug.' security: - OAuth2: - read summary: List Brand Orders by Brand Id according to the filters applied tags: - Orders /v1/projects/{projectId}/us/brands/{brandId}/orders/{orderId}: get: x-sinch-stability: preview description: The endpoint receives as path param project id, brand id and order id. If the project and order exist, the details of the brand are returned. operationId: getBrandOrder parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string - in: path description: Brand ID reference name: brandId required: true schema: type: string - in: path description: Order id name: orderId required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/BrandOrder' example: brandOrderId: '212421442412' brandId: b1c7ccbf-919d-462f-8587-dec95a1b11ee status: PENDING metadataName: US_10DLC_TCR_PRIVATE_BRAND_REGISTRATION logs: - createTime: '2024-01-15T10:00:00Z' message: Brand order created. brandCurrentState: NEW channels: [] thirdPartyMetadata: [] pricing: amount: '5.00' currencyCode: USD callbackUrl: https://example.com/callback createTime: '2024-01-15T10:00:00Z' updateTime: '2024-01-15T10:01:00Z' description: OK '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': content: application/problem+json: schema: $ref: '#/components/schemas/RestError' description: 'NOT_FOUND: The project or order id introduced does not exist.' '429': $ref: '#/components/responses/TooManyRequests' '500': content: application/problem+json: schema: $ref: '#/components/schemas/RestError' description: 'INTERNAL: Internal server error. Typically, a server bug.' security: - OAuth2: - read summary: Get a brand order by project id, brand id and order id tags: - Orders delete: x-sinch-stability: preview description: Delete a Brand Order. operationId: deleteBrandOrder parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string - in: path description: Brand ID reference name: brandId required: true schema: type: string - in: path description: Order ID name: orderId required: true schema: type: string responses: '204': description: Resource successfully deleted. No content is returned. '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': content: application/problem+json: schema: $ref: '#/components/schemas/RestError' description: 'NOT_FOUND: Order ID not found' '429': $ref: '#/components/responses/TooManyRequests' '500': content: application/problem+json: schema: $ref: '#/components/schemas/RestError' description: 'INTERNAL: Internal server error. Typically, a server bug.' security: - OAuth2: - write summary: Delete Brand Order tags: - Orders /v1/projects/{projectId}/us/brands/{brandId}/orders/{orderId}/retry: post: x-sinch-stability: preview description: Updates a brand Order. Only INCOMPLETE or NEW orders can be retried. Retry flow will get new properties and attachments from the brand and apply the same validations as create Order. No body is needed. operationId: retryBrandOrder parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string - in: path description: Brand ID reference name: brandId required: true schema: type: string - in: path description: Order ID name: orderId required: true schema: type: string responses: '200': description: Brand Order Updated content: application/json: schema: $ref: '#/components/schemas/BrandOrder' example: brandOrderId: '212421442412' brandId: b1c7ccbf-919d-462f-8587-dec95a1b11ee status: NEW metadataName: US_10DLC_TCR_PRIVATE_BRAND_REGISTRATION logs: [] channels: [] thirdPartyMetadata: [] pricing: amount: '5.00' currencyCode: USD callbackUrl: https://example.com/callback createTime: '2024-01-15T10:00:00Z' updateTime: '2024-01-15T10:05:00Z' '400': content: application/problem+json: schema: $ref: '#/components/schemas/RestError' description: 'BAD_REQUEST: Any validation error' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': content: application/problem+json: schema: $ref: '#/components/schemas/RestError' description: 'NOT_FOUND: The project id introduced does not exist.' '429': $ref: '#/components/responses/TooManyRequests' '500': content: application/problem+json: schema: $ref: '#/components/schemas/RestError' description: 'INTERNAL: Internal server error. Typically, a server bug.' security: - OAuth2: - write summary: Updates a Brand Order tags: - Orders /v1/projects/{projectId}/us/brands/{brandId}/orders/{orderId}/resendConfirmationEmail: post: x-sinch-stability: preview description: 'Resends the brand registration confirmation email to the end-customer. Certain product verification processes require the end-customer''s approval via email to complete a brand''s registration for a specific use case. If the end-customer has lost or did not receive the original email, you can call this endpoint to trigger a resend, enabling them to finalize the registration process. This action can only be requested if the order is in a PENDING state. Furthermore, this functionality is currently available only for 10DLC/RCS (TCR) registration processes.' operationId: brandOrderResendConfirmationEmail parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string - in: path description: Brand ID reference name: brandId required: true schema: type: string - in: path description: Order ID name: orderId required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/BrandOrder' example: brandOrderId: '212421442412' brandId: b1c7ccbf-919d-462f-8587-dec95a1b11ee status: PENDING metadataName: US_10DLC_TCR_PRIVATE_BRAND_REGISTRATION logs: [] channels: [] thirdPartyMetadata: [] pricing: amount: '5.00' currencyCode: USD callbackUrl: https://example.com/callback createTime: '2024-01-15T10:00:00Z' updateTime: '2024-01-15T10:06:00Z' '400': content: application/problem+json: schema: $ref: '#/components/schemas/RestError' description: 'BAD_REQUEST: Any validation error' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': content: application/problem+json: schema: $ref: '#/components/schemas/RestError' description: 'NOT_FOUND: The project id introduced does not exist.' '429': $ref: '#/components/responses/TooManyRequests' '500': content: application/problem+json: schema: $ref: '#/components/schemas/RestError' description: 'INTERNAL: Internal server error. Typically, a server bug.' security: - OAuth2: - write summary: resendConfirmationEmail request for Brand Order tags: - Orders /v1/projects/{projectId}/us/brands/{brandId}/orders/{orderId}/verifyOtp: post: x-sinch-stability: preview description: 'Verifies the One-Time Password (OTP) received by the brand''s registered mobile phone number to complete the US_10DLC_TCR_SOLE_PROPRIETOR order. After creating the order, an OTP is automatically sent via SMS to the mobilePhoneNumber associated with the brand. Submit the OTP code using this endpoint to finalise the registration. Important Requirement: To successfully receive the OTP, the brand''s mobilePhoneNumber must be a valid United States (US) or Canadian (CA) phone number.' summary: Verify OTP code for 10DLC Sole Proprietor verification tags: - Orders security: - OAuth2: - write operationId: brandOrderVerifyOtp parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string - in: path description: Brand ID reference name: brandId required: true schema: type: string - in: path description: Order ID name: orderId required: true schema: type: string requestBody: required: true description: OTP received in the mobilePhoneNumber after creating the brand order. content: application/json: schema: $ref: '#/components/schemas/BrandOrderOtpRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/BrandOrder' example: brandOrderId: '212421442412' brandId: b1c7ccbf-919d-462f-8587-dec95a1b11ee status: COMPLETED metadataName: US_10DLC_TCR_SOLE_PROPRIETOR logs: [] channels: - TENDLC thirdPartyMetadata: - name: TCR_BRAND_ID value: B123ABC pricing: amount: '5.50' currencyCode: USD callbackUrl: https://example.com/callback createTime: '2024-01-15T10:00:00Z' updateTime: '2024-01-15T10:10:00Z' '400': content: application/problem+json: schema: $ref: '#/components/schemas/RestError' description: 'BAD_REQUEST: Any validation error' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': content: application/problem+json: schema: $ref: '#/components/schemas/RestError' description: 'NOT_FOUND: The project id introduced does not exist.' '429': $ref: '#/components/responses/TooManyRequests' '500': content: application/problem+json: schema: $ref: '#/components/schemas/RestError' description: 'INTERNAL: Internal server error. Typically, a server bug.' /v1/projects/{projectId}/us/brands/{brandId}/orders/{orderId}/resendOtp: post: x-sinch-stability: preview description: 'This endpoint triggers a resend of the One-Time Password (OTP) required for verifying US_10DLC_TCR_SOLE_PROPRIETOR orders. Use this if the initial OTP expired or was not received by the brand. The new OTP will be sent to the brand''s registered mobilePhoneNumber. Important Requirement: Just like the initial request, the brand''s mobilePhoneNumber must be a valid United States (US) or Canadian (CA) phone number.' summary: Resend OTP for 10DLC Sole Proprietor verification tags: - Orders security: - OAuth2: - write operationId: brandOrderResendOtp parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string - in: path description: Brand ID reference name: brandId required: true schema: type: string - in: path description: Order ID name: orderId required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/BrandOrder' example: brandOrderId: '212421442412' brandId: b1c7ccbf-919d-462f-8587-dec95a1b11ee status: PENDING metadataName: US_10DLC_TCR_SOLE_PROPRIETOR logs: [] channels: [] thirdPartyMetadata: [] pricing: amount: '5.50' currencyCode: USD callbackUrl: https://example.com/callback createTime: '2024-01-15T10:00:00Z' updateTime: '2024-01-15T10:07:00Z' '400': content: application/problem+json: schema: $ref: '#/components/schemas/RestError' description: 'BAD_REQUEST: Any validation error' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': content: application/problem+json: schema: $ref: '#/components/schemas/RestError' description: 'NOT_FOUND: The project id introduced does not exist.' '429': $ref: '#/components/responses/TooManyRequests' '500': content: application/problem+json: schema: $ref: '#/components/schemas/RestError' description: 'INTERNAL: Internal server error. Typically, a server bug.' components: schemas: BrandOrderRequestMetadata: description: 'These are the different processes the customers can request to add different channels to the Brand. **Note:** US_SC_REGISTRY is excluded — it is a legacy read-only process and cannot be used for new orders. It may appear in existing brand order responses.' enum: - US_SC_GCH - US_SC_GCH_CONTENT_PROVIDER - US_10DLC_TCR_PRIVATE_BRAND_REGISTRATION - US_10DLC_TCR_PUBLIC_BRAND_REGISTRATION - US_10DLC_TCR_PRIVATE_BRAND_UPDATE - US_10DLC_TCR_PUBLIC_BRAND_UPDATE - US_10DLC_TCR_PRIVATE_MOCK - US_10DLC_TCR_PUBLIC_MOCK - US_10DLC_TCR_SOLE_PROPRIETOR - US_10DLC_TCR_PRIVATE_STANDARD_BRAND_REGISTRATION - US_10DLC_TCR_PRIVATE_ENHANCED_BRAND_REGISTRATION - US_10DLC_TCR_PUBLIC_STANDARD_BRAND_REGISTRATION - US_10DLC_TCR_PUBLIC_ENHANCED_BRAND_REGISTRATION - US_RCS_TCR_PRIVATE_BRAND_REGISTRATION - US_RCS_TCR_PUBLIC_BRAND_REGISTRATION - US_RCS_TCR_UPDATE_ASSETS x-enumDescriptions: US_SC_GCH: 'Unified US Short Code verification process via the US Short Code Registry. The specific process to be applied is automatically determined by the brand''s programType field: Standard → standard process, Government → government process, Charitable Organization → charity process, Political → political process. This process is free of charge and, upon successful completion, the SHORT_CODE channel will be granted to the brand.' US_SC_GCH_CONTENT_PROVIDER: US Short Code verification process for Content Provider entities. This process internally uses the US Short Code Registry and is free of charge. Upon successful completion, the SHORT_CODE channel will be granted to the content provider. US_10DLC_TCR_SOLE_PROPRIETOR: To register as a Sole Proprietor for 10-Digit Long Code (10DLC) messaging via 10DLC, you can complete the registration process without needing an Employer Identification Number (EIN). Upon initiating the registration, a One-Time Password (OTP) will be automatically sent to the provided mobile number for identity verification, which you must subsequently submit using the endpoint /v1/projects/{projectId}/us/brands/{brandId}/orders/{orderId}/verifyOtp to successfully authorize and finalize the process. US_10DLC_TCR_PRIVATE_BRAND_REGISTRATION: 'Simple brand registration with 10DLC for private companies to obtain the 10DLC channel in the US. This process does not include vetting. You will receive a TCR ID upon completion (approx. 1 minute). Provides lower throughput and a maximum of 3 numbers. Once completed, this process can be re-requested if any data needs to be modified (there are some fields not allowed for edition: legalCompanyName, entityType, federalTaxId and taxCountry). This process can be initiated again for revetting the brand, in case that critical information needs to be updated: entityType, legalCompanyName, federalTaxId or taxCountry. In this case, the brand will go through the same process as a new registration, with the same time of completion, but keeping the same TCR ID and the history of previous registrations.' US_10DLC_TCR_PUBLIC_BRAND_REGISTRATION: 'Simple brand registration with 10DLC for public companies to obtain the 10DLC channel in the US. This process does not include vetting. You will receive a TCR ID upon completion (approx. 1 minutes). Provides lower throughput and a maximum of 3 numbers. Once completed, this process can be re-requested if any data needs to be modified (there are some fields not allowed for edition: legalCompanyName, entityType, federalTaxId and taxCountry). This process can be initiated again for revetting the brand, in case that critical information needs to be updated: entityType, legalCompanyName, federalTaxId or taxCountry. In this case, the brand will go through the same process as a new registration, with the same time of completion, but keeping the same TCR ID and the history of previous registrations.' US_10DLC_TCR_PRIVATE_BRAND_UPDATE: 'Brand data update process with 10DLC for private companies that already have the 10DLC channel. This process is used to update any brand data that needs to be modified after a successful registration, except for critical information such as entityType, legalCompanyName, federalTaxId or taxCountry. Cost: free. You will receive a confirmation of the update upon completion (approx. 1 minute). This process does not affect the TCR ID, the throughput or the number of phone numbers allowed. Update process cannot be used after standard or enhanced vetting, as the brand needs to be revetted in case of any critical information update.' US_10DLC_TCR_PUBLIC_BRAND_UPDATE: 'Brand data update process with 10DLC for public companies that already have the 10DLC channel. This process is used to update any brand data that needs to be modified after a successful registration, except for critical information such as entityType, legalCompanyName, federalTaxId or taxCountry. Cost: free. You will receive a confirmation of the update upon completion (approx. 1 minute). This process does not affect the TCR ID, the throughput or the number of phone numbers allowed. Update process cannot be used after standard or enhanced vetting, as the brand needs to be revetted in case of any critical information update.' US_10DLC_TCR_PRIVATE_MOCK: A free-of-charge mock process for private companies to test the 10DLC integration. Successfully completing this process does not grant the 10DLC channel but serves as a preliminary check to ensure that subsequent paid TCR registrations will be successful. US_10DLC_TCR_PUBLIC_MOCK: A free-of-charge mock process for public companies to test the 10DLC integration. Successfully completing this process does not grant the 10DLC channel but serves as a preliminary check to ensure that subsequent paid TCR registrations will be successful. US_10DLC_TCR_PRIVATE_STANDARD_BRAND_REGISTRATION: 'Initiates a standard brand registration with 10DLC for a private company, which involves an automated review of compliance history, employee count, and other business metrics. The process, which typically takes 5-10 days, is used to verify the brand and assign a vetting score from 0-100 that determines the brand''s throughput level with network carriers. A successful registration provides higher throughput and allows for unlimited campaigns and numbers. Once completed, this process can be re-requested if any data not included in US_TCR_PATCH_BRAND needs to be modified. Once completed, this process can be re-requested if any data needs to be modified (there are some fields not allowed for edition: legalCompanyName, entityType, federalTaxId and taxCountry)' US_10DLC_TCR_PUBLIC_STANDARD_BRAND_REGISTRATION: 'Initiates a standard brand registration with 10DLC for a public company, which involves an automated review of compliance history, employee count, and other business metrics. The process, which typically takes 5-10 days, is used to verify the brand and assign a vetting score from 0-100 that determines the brand''s throughput level with network carriers. A successful registration provides higher throughput and allows for unlimited campaigns and numbers. Once completed, this process can be re-requested if any data needs to be modified (there are some fields not allowed for edition: legalCompanyName, entityType, federalTaxId and taxCountry)' US_10DLC_TCR_PRIVATE_ENHANCED_BRAND_REGISTRATION: Initiates an enhanced brand registration for a private company, which is recommended if you are dissatisfied with your Standard vet score and believe a more thorough review could yield a higher rating. This process is designed to improve the brand's vetting score and potentially achieve better throughput. Please note that this enhanced vet can only be ordered after a STANDARD registration is complete. US_10DLC_TCR_PUBLIC_ENHANCED_BRAND_REGISTRATION: Initiates an enhanced brand registration for a public company, which is recommended if you are dissatisfied with your Standard vet score and believe a more thorough review could yield a higher rating. This process is designed to improve the brand's vetting score and potentially achieve better throughput. Please note that this enhanced vet can only be ordered after a STANDARD registration is complete. US_RCS_TCR_PRIVATE_BRAND_REGISTRATION: US RCS brand registration process with RCS for private companies. This process is used to verify a private brand for RCS in the US. Upon successful completion, the RCS channel will be granted to the brand. US_RCS_TCR_PUBLIC_BRAND_REGISTRATION: US RCS brand registration process with RCS for public companies. This process is used to verify a public brand for RCS in the US. Upon successful completion, the RCS channel will be granted to the brand. US_RCS_TCR_UPDATE_ASSETS: US RCS asset update process with RCS. This process is used to update the brand assets required for RCS, such as logos or banners, after the brand has already been registered. type: string examples: - US_SC_GCH - US_10DLC_TCR_PRIVATE_BRAND_REGISTRATION - US_RCS_TCR_PRIVATE_BRAND_REGISTRATION Money: description: Money amount with currency. properties: amount: description: The amount of money. type: string examples: - '25.00' currencyCode: description: The currency of the money amount, in ISO 4217 format. type: string examples: - USD type: object InternalRestError: description: Detailed information about a specific error that occurred during the processing of a request. This is used in the `errors` field of the `RestError` schema to provide more granular information about the error. properties: pointer: description: JSON pointer to the field that caused the error, following RFC 6901. type: string examples: - /brandName - /entityType detail: description: A human-readable explanation specific to this occurrence of the problem. Like title, this field is not intended for end users, but rather for developers to understand the details of the error that occurred. type: string examples: - Brand Name already exists for this brand type type: object Channel: description: Channel represents the different channels that can be assigned to a brand after completing a brand order. Each channel has different requirements and it is assigned after completing a specific brand order process. enum: - RCS - SHORT_CODE - TENDLC x-enumDescriptions: RCS: RCS Channel enables RCS traffic and it is provided by RCS. SHORT_CODE: The SHORT_CODE Channel enables Short Code traffic and it is provided by the US Short Code Registry. TENDLC: Ten Digit Long Code (10DLC) channel enables Long Number traffic and it is provided by 10DLC. type: string examples: - RCS - SHORT_CODE BrandOrderLog: description: A log entry for a brand order, which contains details of the brand order status update or new channel added. It can contain information provided by the agent handling the request. properties: createTime: description: Create time of this log entry. ISO date time format in UTC. examples: - '2021-11-03T14:30:03Z' type: string format: date-time readOnly: true message: description: Optional message with details of the brand status update or new channel added. It can contain information provided by the agent handling the request. examples: - Please update the attachment connected to your request. type: string brandCurrentState: description: State of the order after this entry was created $ref: '#/components/schemas/BrandOrderStatus' readOnly: true brandPreviousState: description: State of the order before this entry was created $ref: '#/components/schemas/BrandOrderStatus' readOnly: true type: object BrandOrderOtpRequest: description: Request to send an OTP for Sole Proprietor orders. type: object required: - otp properties: otp: description: OTP code received in the mobilePhoneNumber. examples: - 27FUY2 type: string BrandOrderMetadata: description: 'These are the different processes the customers can request to add different channels to the Brand. **Note:** US_SC_REGISTRY is only used to retrieve existing brand orders. It cannot be used for new ones.' enum: - US_SC_REGISTRY - US_SC_GCH - US_SC_GCH_CONTENT_PROVIDER - US_10DLC_TCR_PRIVATE_BRAND_REGISTRATION - US_10DLC_TCR_PUBLIC_BRAND_REGISTRATION - US_10DLC_TCR_PRIVATE_BRAND_UPDATE - US_10DLC_TCR_PUBLIC_BRAND_UPDATE - US_10DLC_TCR_PRIVATE_MOCK - US_10DLC_TCR_PUBLIC_MOCK - US_10DLC_TCR_SOLE_PROPRIETOR - US_10DLC_TCR_PRIVATE_STANDARD_BRAND_REGISTRATION - US_10DLC_TCR_PRIVATE_ENHANCED_BRAND_REGISTRATION - US_10DLC_TCR_PUBLIC_STANDARD_BRAND_REGISTRATION - US_10DLC_TCR_PUBLIC_ENHANCED_BRAND_REGISTRATION - US_RCS_TCR_PRIVATE_BRAND_REGISTRATION - US_RCS_TCR_PUBLIC_BRAND_REGISTRATION - US_RCS_TCR_UPDATE_ASSETS x-enumDescriptions: US_SC_REGISTRY: For US Short Code brand verification. This is a legacy manual process that is now disabled and read-only. New registrations are not possible through this process. For new Short Code registrations, please use US_SC_GCH. US_SC_GCH: 'Unified US Short Code verification process via the US Short Code Registry. The specific process to be applied is automatically determined by the brand''s programType field: Standard → standard process, Government → government process, Charitable Organization → charity process, Political → political process. This process is free of charge and, upon successful completion, the SHORT_CODE channel will be granted to the brand.' US_SC_GCH_CONTENT_PROVIDER: US Short Code verification process for Content Provider entities. This process internally uses the US Short Code Registry and is free of charge. Upon successful completion, the SHORT_CODE channel will be granted to the content provider. US_10DLC_TCR_SOLE_PROPRIETOR: To register as a Sole Proprietor for 10-Digit Long Code (10DLC) messaging via 10DLC, you can complete the registration process without needing an Employer Identification Number (EIN). Upon initiating the registration, a One-Time Password (OTP) will be automatically sent to the provided mobile number for identity verification, which you must subsequently submit using the endpoint /v1/projects/{projectId}/us/brands/{brandId}/orders/{orderId}/verifyOtp to successfully authorize and finalize the process. US_10DLC_TCR_PRIVATE_BRAND_REGISTRATION: 'Simple brand registration with 10DLC for private companies to obtain the 10DLC channel in the US. This process does not include vetting. You will receive a TCR ID upon completion (approx. 1 minute). Provides lower throughput and a maximum of 3 numbers. Once completed, this process can be re-requested if any data needs to be modified (there are some fields not allowed for edition: legalCompanyName, entityType, federalTaxId and taxCountry). This process can be initiated again for revetting the brand, in case that critical information needs to be updated: entityType, legalCompanyName, federalTaxId or taxCountry. In this case, the brand will go through the same process as a new registration, with the same time of completion, but keeping the same TCR ID and the history of previous registrations.' US_10DLC_TCR_PUBLIC_BRAND_REGISTRATION: 'Simple brand registration with 10DLC for public companies to obtain the 10DLC channel in the US. This process does not include vetting. You will receive a TCR ID upon completion (approx. 1 minutes). Provides lower throughput and a maximum of 3 numbers. Once completed, this process can be re-requested if any data needs to be modified (there are some fields not allowed for edition: legalCompanyName, entityType, federalTaxId and taxCountry). This process can be initiated again for revetting the brand, in case that critical information needs to be updated: entityType, legalCompanyName, federalTaxId or taxCountry. In this case, the brand will go through the same process as a new registration, with the same time of completion, but keeping the same TCR ID and the history of previous registrations.' US_10DLC_TCR_PRIVATE_BRAND_UPDATE: 'Brand data update process with 10DLC for private companies that already have the 10DLC channel. This process is used to update any brand data that needs to be modified after a successful registration, except for critical information such as entityType, legalCompanyName, federalTaxId or taxCountry. Cost: free. You will receive a confirmation of the update upon completion (approx. 1 minute). This process does not affect the TCR ID, the throughput or the number of phone numbers allowed. Update process cannot be used after standard or enhanced vetting, as the brand needs to be revetted in case of any critical information update.' US_10DLC_TCR_PUBLIC_BRAND_UPDATE: 'Brand data update process with 10DLC for public companies that already have the 10DLC channel. This process is used to update any brand data that needs to be modified after a successful registration, except for critical information such as entityType, legalCompanyName, federalTaxId or taxCountry. Cost: free. You will receive a confirmation of the update upon completion (approx. 1 minute). This process does not affect the TCR ID, the throughput or the number of phone numbers allowed. Update process cannot be used after standard or enhanced vetting, as the brand needs to be revetted in case of any critical information update.' US_10DLC_TCR_PRIVATE_MOCK: A free-of-charge mock process for private companies to test the 10DLC integration. Successfully completing this process does not grant the 10DLC channel but serves as a preliminary check to ensure that subsequent paid TCR registrations will be successful. US_10DLC_TCR_PUBLIC_MOCK: A free-of-charge mock process for public companies to test the 10DLC integration. Successfully completing this process does not grant the 10DLC channel but serves as a preliminary check to ensure that subsequent paid TCR registrations will be successful. US_10DLC_TCR_PRIVATE_STANDARD_BRAND_REGISTRATION: 'Initiates a standard brand registration with 10DLC for a private company, which involves an automated review of compliance history, employee count, and other business metrics. The process, which typically takes 5-10 days, is used to verify the brand and assign a vetting score from 0-100 that determines the brand''s throughput level with network carriers. A successful registration provides higher throughput and allows for unlimited campaigns and numbers. Once completed, this process can be re-requested if any data not included in US_TCR_PATCH_BRAND needs to be modified. Once completed, this process can be re-requested if any data needs to be modified (there are some fields not allowed for edition: legalCompanyName, entityType, federalTaxId and taxCountry)' US_10DLC_TCR_PUBLIC_STANDARD_BRAND_REGISTRATION: 'Initiates a standard brand registration with 10DLC for a public company, which involves an automated review of compliance history, employee count, and other business metrics. The process, which typically takes 5-10 days, is used to verify the brand and assign a vetting score from 0-100 that determines the brand''s throughput level with network carriers. A successful registration provides higher throughput and allows for unlimited campaigns and numbers. Once completed, this process can be re-requested if any data needs to be modified (there are some fields not allowed for edition: legalCompanyName, entityType, federalTaxId and taxCountry)' US_10DLC_TCR_PRIVATE_ENHANCED_BRAND_REGISTRATION: Initiates an enhanced brand registration for a private company, which is recommended if you are dissatisfied with your Standard vet score and believe a more thorough review could yield a higher rating. This process is designed to improve the brand's vetting score and potentially achieve better throughput. Please note that this enhanced vet can only be ordered after a STANDARD registration is complete. US_10DLC_TCR_PUBLIC_ENHANCED_BRAND_REGISTRATION: Initiates an enhanced brand registration for a public company, which is recommended if you are dissatisfied with your Standard vet score and believe a more thorough review could yield a higher rating. This process is designed to improve the brand's vetting score and potentially achieve better throughput. Please note that this enhanced vet can only be ordered after a STANDARD registration is complete. US_RCS_TCR_PRIVATE_BRAND_REGISTRATION: US RCS brand registration process with RCS for private companies. This process is used to verify a private brand for RCS in the US. Upon successful completion, the RCS channel will be granted to the brand. US_RCS_TCR_PUBLIC_BRAND_REGISTRATION: US RCS brand registration process with RCS for public companies. This process is used to verify a public brand for RCS in the US. Upon successful completion, the RCS channel will be granted to the brand. US_RCS_TCR_UPDATE_ASSETS: US RCS asset update process with RCS. This process is used to update the brand assets required for RCS, such as logos or banners, after the brand has already been registered. type: string examples: - US_SC_REGISTRY - US_SC_GCH - US_10DLC_TCR_PRIVATE_BRAND_REGISTRATION - US_RCS_TCR_PRIVATE_BRAND_REGISTRATION ThirdPartyElement: description: Third party metadata element. This is used to include any additional information that is required for the brand order process that is not included in the standard fields. For instance, it can be used to include the 10DLC brand ID when the import type is IMPORT_TCR_BRAND, or the US Short Code Registry brand ID when the import type is IMPORT_GCH_BRAND. properties: name: description: Third Party metadata property name. type: string examples: - TCR_BRAND_ID - gch_brand_id value: description: Third party metadata property value. type: string examples: - '324234242342' type: object BrandOrderSummary: description: Summary of a brand order, used for listing brand orders matching the search criteria. type: object properties: brandOrderId: description: The unique identifier for the brand order. examples: - '212421442412' type: string readOnly: true brandId: description: Brand ID this Order belongs to. examples: - '3242343243243' type: string readOnly: true status: description: Brand Order status. This field is useful to quickly check the status of the order without having to call the Get Brand Order endpoint. $ref: '#/components/schemas/BrandOrderStatus' readOnly: true metadataName: description: Metadata name of the brand order, which identifies the type of the order and the process it follows. This field is useful to quickly check the type of the order without having to call the Get Brand Order endpoint. $ref: '#/components/schemas/BrandOrderMetadata' readOnly: true createTime: description: Create time of the request. ISO date time format in UTC. examples: - '2021-11-03T14:30:03Z' type: string readOnly: true format: date-time updateTime: description: Update time of the request. ISO date time format in UTC. examples: - '2021-11-03T14:30:03Z' type: string readOnly: true format: date-time BrandOrderRequest: description: A brand order request. type: object required: - metadataName properties: metadataName: description: Metadata name of the brand order, which identifies the type of the order and the process it follows. This field is useful to quickly check the type of the order without having to call the Get Brand Order endpoint. $ref: '#/components/schemas/BrandOrderRequestMetadata' callbackUrl: description: The URL to receive the order status update callback. The URL must be a valid URL and must be reachable from Sinch. examples: - https://example.com/callback type: string format: uri Links: type: object description: Pagination links. properties: next: description: Link to the next page of results, following RFC 8288. Absence of this link indicates the last page. type: string examples: - https://compliance.api.sinch.com/v1/projects/{projectId}/us/brands?pageToken=abc123 PaginationMeta: type: object description: Pagination metadata for list responses. properties: totalCount: description: Total count of resources matching the provided search criteria. This field cannot be null; an empty result will return 0. format: int32 type: integer BrandOrderStatus: description: Brand order status represents the current state of the brand order in the system. When a brand order is created, it is in NEW status. After that, it can be moved to PENDING status when the validation process starts, then it can be moved to REJECTED or INCOMPLETE if the validation process fails, or to COMPLETED if the validation process is successful. When a brand order is in INCOMPLETE status, customer can update the brand/brand order. Updating the brand order moves the brand order to PENDING_REVIEW state, what means that is waiting for another review after the customer changes. Finally, a brand order can be moved to ARCHIVED status after a cancellation. enum: - NEW - PENDING - PENDING_REVIEW - REJECTED - INCOMPLETE - COMPLETED - ARCHIVED x-enumDescriptions: NEW: A new brand order created, not processed yet. PENDING: The brand order info is under review. PENDING_REVIEW: When a brand order is in incomplete status, customer can update the brand/brand order. Updating the brand order moves the brand order to PENDING_REVIEW state, what means that is waiting for another review after the customer changes. REJECTED: The brand order has been rejected. INCOMPLETE: The brand order is incomplete. The customer can update the brand/brand order to complete it. COMPLETED: The brand order validation has been completed and the brand order is approved for integration against the channel specification. ARCHIVED: The brand order is archived after a cancellation. It can not be updated or submitted for validation. type: string examples: - INCOMPLETE RestError: description: Standard error response body for the Sinch Compliance API. It follows the RFC 7807 specification for problem details. The body contains either an `errors` list with structured field-level details or a `detail` field with a plain text explanation. type: object required: - type - title properties: type: description: A URI reference that identifies the problem type. This URI reference should provide a human-readable explanation of the problem type when dereferenced. type: string format: uri examples: - https://developers.sinch.com/docs/errors/registry/validation-error title: description: A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for localization purposes. type: string examples: - Validation Error oneOf: - description: Response with a list of structured error details, each pointing to a specific field. properties: errors: description: Detailed information about the error. This field can contain multiple error details to provide more context about the error that occurred. type: array items: $ref: '#/components/schemas/InternalRestError' - description: Response with a plain text explanation of the error. properties: detail: description: A human-readable explanation of the error that occurred. type: string examples: - Project not found BrandOrder: description: A brand order created for a brand and a specific process metadata. type: object properties: brandOrderId: description: The unique identifier for the brand order. examples: - '212421442412' type: string readOnly: true brandId: description: Brand ID this Order belongs to. examples: - '3242343243243' type: string readOnly: true status: description: Brand order status represents the current state of the brand order in the system. When a brand order is created, it is in NEW status. After that, it can be moved to PENDING status when the validation process starts, then it can be moved to REJECTED or INCOMPLETE if the validation process fails, or to COMPLETED if the validation process is successful. When a brand order is in INCOMPLETE status, customer can update the brand/brand order. Updating the brand order moves the brand order to PENDING_REVIEW state, what means that is waiting for another review after the customer changes. Finally, a brand order can be moved to ARCHIVED status after a cancellation. $ref: '#/components/schemas/BrandOrderStatus' readOnly: true metadataName: description: Metadata name of the brand order, which identifies the type of the order and the process it follows. This field is useful to quickly check the type of the order without having to call the Get Brand Order endpoint. $ref: '#/components/schemas/BrandOrderMetadata' readOnly: true logs: description: Detailed history of the status changes this brand went through items: $ref: '#/components/schemas/BrandOrderLog' type: array readOnly: true channels: description: Channels available for this Brand Order items: $ref: '#/components/schemas/Channel' type: array readOnly: true thirdPartyMetadata: description: Third party metadata available for this Brand Order items: $ref: '#/components/schemas/ThirdPartyElement' type: array readOnly: true pricing: description: Includes details of the fee associated with the process to be carried out. For more information about pricing, you may consult your Account Manager or the Sinch Customer Dashboard. $ref: '#/components/schemas/Money' readOnly: true callbackUrl: description: The URL to receive the order status update callback. The URL must be a valid URL and must be reachable from Sinch. examples: - https://example.com/callback type: string format: uri createTime: description: Create time of the request. ISO date time format in UTC. examples: - '2021-11-03T14:30:03Z' type: string readOnly: true format: date-time updateTime: description: Update time of the request. ISO date time format in UTC. examples: - '2021-11-03T14:30:03Z' type: string readOnly: true format: date-time ListBrandOrderResponse: type: object description: List of Brands response properties: orders: description: List of brand orders items: $ref: '#/components/schemas/BrandOrderSummary' type: array readOnly: true links: description: Pagination links. $ref: '#/components/schemas/Links' meta: description: Pagination metadata. $ref: '#/components/schemas/PaginationMeta' responses: Forbidden: description: 'PERMISSION_DENIED: The authenticated user does not have permission to perform this operation.' content: application/problem+json: schema: $ref: '#/components/schemas/RestError' Unauthorized: description: 'UNAUTHENTICATED: Missing or invalid authentication credentials.' headers: WWW-Authenticate: description: Authentication challenge per RFC 7235. schema: type: string content: application/problem+json: schema: $ref: '#/components/schemas/RestError' TooManyRequests: description: 'RESOURCE_EXHAUSTED: Too many requests. The client has exceeded the rate limit.' content: application/problem+json: schema: $ref: '#/components/schemas/RestError' securitySchemes: OAuth2: description: The username and password are your Key ID and Key Secret from the Access keys section in the Sinch Customer Dashboard. Exchange these for a bearer token (access token). flows: clientCredentials: scopes: read: read write: write tokenUrl: https://auth.sinch.com/oauth2/token type: oauth2 hmacAuth: type: apiKey in: header name: X-Sinch-Signature description: HMAC-SHA256 signature used to authenticate webhook deliveries. The signature is computed over the request body using the project's HMAC secret and sent in the X-Sinch-Signature header. Please refer to the Brand Callback endpoints for more information. externalDocs: description: All endpoints available under this API require Bearer token authentication. Please check oauth api documentation if you need more details. url: https://developers.sinch.com/docs/numbers/api-reference/authentication/oauth/ x-explorer-enabled: false x-samples-languages: - curl - java - csharp - node - php