---
title: "Complete profile setup"
method: POST
path: "/v3/profiles/{profileId}/complete"
tags: ["Profiles"]
---

# Complete profile setup

`POST /v3/profiles/{profileId}/complete`

Final step in profile compliance workflow. Validates all prerequisites (general data, brand, campaigns), connects profile to Telnyx/WhatsApp, and sets status based on configuration. The process runs in the background and calls the provided webhook URL when finished.

                Prerequisites:
                - Profile must be completed
                - If inheritTcrBrand=false: Profile must have existing brand
                - If inheritTcrBrand=true: Parent must have existing brand
                - If TCR application: Must have at least one campaign (own or inherited)
                - If inheritTcrCampaign=false: Profile should have campaigns
                - If inheritTcrCampaign=true: Parent must have campaigns

                Status Logic:
                - If both SMS and WhatsApp channels are missing → SUBMITTED
                - If TCR application and not inheriting brand/campaigns → SUBMITTED
                - If non-TCR with destination country (IsMain=true) → SUBMITTED
                - Otherwise → COMPLETED

## Path parameters

- `profileId` string, uuid, required

## Headers

- `Idempotency-Key` string
- `x-profile-id` string, uuid

## Request body

- SentDmServicesEndpointsCustomerAPIv3RequestsProfilesCompleteProfileRequest — Request to complete a profile setup and connect to Telnyx/WhatsApp
  - `sandbox` boolean — Sandbox flag - when true, the operation is simulated without side effects Useful for testing integrations without actual execution
  - `webHookUrl` string, uri, required — Webhook URL to call when profile completion finishes (success or failure)

## Response `200`

Profile is already completed - returns current status

- SentDmServicesEndpointsCustomerAPIv3ResponsesApiResponseOfProfileCompletionResultResponse — Standard API response envelope for all v3 endpoints
  - `success` boolean — Indicates whether the request was successful
  - `data` SentDmServicesEndpointsCustomerAPIv3ResponsesProfileCompletionResultResponse — Response when a profile is already in the completed state and no further action is taken.
    - `status` string — Current process status of the profile (e.g., "completed", "submitted", "in_progress").
    - `message` string — Human-readable message describing the result.
  - `error` SentDmServicesEndpointsCustomerAPIv3ResponsesApiError — Error information
    - `code` string — Machine-readable error code (e.g., "RESOURCE_001")
    - `message` string — Human-readable error message
    - `details` object, nullable — Additional validation error details (field-level errors)
    - `doc_url` string, nullable — URL to documentation about this error
  - `meta` SentDmServicesEndpointsCustomerAPIv3ResponsesApiMeta — Request and response metadata
    - `request_id` string — Unique identifier for this request (for tracing and support)
    - `timestamp` string, date-time — Server timestamp when the response was generated
    - `version` string — API version used for this request

## Other responses

- `202` — Profile completion started successfully - webhook will be called when finished
- `400` — Invalid request - validation errors or prerequisites not met
- `401` — Unauthorized - Valid profile-scoped API key required
- `403` — Forbidden - API key does not have access to this profile
- `404` — Profile not found
- `500` — Internal server error occurred during validation

---

[API](https://skmtc.net/sentdm/apis/sent-dm-api-v3.md) · [All operations](https://skmtc.net/sentdm/apis/sent-dm-api-v3/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sentdm/sent-dm-api-v3/revisions/c451eca46f1b/schema)
