Update profile settings

Updates a profile's configuration and settings. Requires admin role in the organization. Only provided fields will be updated (partial update).

Brand Management

Include the optional brand field to create or update the brand associated with this profile. The brand holds KYC and TCR compliance data (legal business info, contact details, messaging vertical). Once a brand has been submitted to TCR it cannot be modified. Setting inherit_tcr_brand: true and providing brand in the same request is not allowed.

Payment Details

When billing_model is "profile" or "profile_and_organization" you may include a payment_details object containing the card number, expiry (MM/YY), CVC, and billing ZIP code. Payment details are never stored on our servers and are forwarded directly to the payment processor. Providing payment_details when billing_model is "organization" is not allowed.

PATCH
/v3/profiles/{profileId}

Path Parameters

profileId*string

Header Parameters

Idempotency-Key?string

Unique key to ensure idempotent request processing. Must be 1-255 alphanumeric characters, hyphens, or underscores. Responses are cached for 24 hours per key per customer.

Match^[a-zA-Z0-9_-]+$
Lengthlength <= 255
x-profile-id?string

Profile UUID to scope the request to a child profile. Only organization API keys can use this header. The profile must belong to the calling organization.

Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X PATCH "https://api-dev.sent.dm/v3/profiles/string" \  -H "Idempotency-Key: req_abc123_retry1" \  -H "Content-Type: application/json" \  -d '{    "name": "Sales Team - Updated",    "icon": null,    "description": "Updated sales department sender profile",    "short_name": "SALES",    "allow_contact_sharing": true,    "allow_template_sharing": null,    "inherit_contacts": null,    "inherit_templates": null,    "inherit_tcr_brand": null,    "inherit_tcr_campaign": null,    "billing_model": "organization",    "billing_contact": null,    "sending_phone_number_profile_id": null,    "sending_whatsapp_number_profile_id": null,    "sending_phone_number": null,    "whatsapp_phone_number": null,    "allow_number_change_during_onboarding": null,    "brand": {      "contact": {        "name": "John Smith",        "businessName": "Acme Corp",        "role": "CEO",        "phone": "+12025551234",        "email": "john@acmecorp.com",        "phoneCountryCode": "1"      },      "business": {        "legalName": "Acme Corporation LLC",        "taxId": "12-3456789",        "taxIdType": "us_ein",        "entityType": "PRIVATE_PROFIT",        "street": "123 Main Street",        "city": "New York",        "state": "NY",        "postalCode": "10001",        "country": "US",        "url": "https://acmecorp.com",        "countryOfRegistration": "US"      },      "compliance": {        "vertical": "PROFESSIONAL",        "brandRelationship": "SMALL_ACCOUNT",        "primaryUseCase": "Customer notifications and appointment reminders",        "expectedMessagingVolume": "10000",        "isTcrApplication": true,        "phoneNumberPrefix": "+1",        "destinationCountries": [          {            "id": "US",            "isMain": false          }        ],        "notes": null      }    },    "payment_details": null,    "sandbox": false  }'
{
  "success": true,
  "data": {
    "id": "770e8400-e29b-41d4-a716-446655440002",
    "organization_id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Sales Team - Updated",
    "email": "team@acme.com",
    "icon": "https://example.com/sales-icon.png",
    "description": "Updated sales department sender profile",
    "short_name": "SALES",
    "status": "approved",
    "created_at": "2025-12-25T10:43:34.5891174+00:00",
    "updated_at": "2026-03-25T10:43:34.5891206+00:00",
    "allow_contact_sharing": true,
    "allow_template_sharing": false,
    "inherit_contacts": true,
    "inherit_templates": true,
    "inherit_tcr_brand": false,
    "inherit_tcr_campaign": false,
    "billing_model": "organization",
    "sending_phone_number_profile_id": null,
    "sending_whatsapp_number_profile_id": null,
    "sending_phone_number": null,
    "whatsapp_phone_number": null,
    "allow_number_change_during_onboarding": null,
    "waba_id": null,
    "billing_contact": null,
    "brand": {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "tcr_brand_id": null,
      "status": null,
      "identity_status": null,
      "universal_ein": null,
      "csp_id": null,
      "submitted_to_tcr": false,
      "submitted_at": null,
      "is_inherited": false,
      "created_at": "2026-03-25T10:43:34.5891231+00:00",
      "updated_at": null,
      "contact": {
        "name": "John Smith",
        "business_name": "Acme Corp",
        "role": null,
        "phone": null,
        "email": "john@acmecorp.com",
        "phone_country_code": null
      },
      "business": {
        "legal_name": "Acme Corporation LLC",
        "tax_id": null,
        "tax_id_type": null,
        "entity_type": null,
        "street": null,
        "city": null,
        "state": null,
        "postal_code": null,
        "country": "US",
        "url": null,
        "country_of_registration": null
      },
      "compliance": {
        "vertical": "PROFESSIONAL",
        "brand_relationship": "SMALL_ACCOUNT",
        "primary_use_case": null,
        "expected_messaging_volume": null,
        "is_tcr_application": true,
        "phone_number_prefix": null,
        "destination_countries": [
          {
            "id": "US",
            "isMain": false
          }
        ],
        "notes": null
      }
    }
  },
  "error": null,
  "meta": {
    "request_id": "req_7X9zKp2jDw",
    "timestamp": "2026-03-25T10:43:34.5891264+00:00",
    "version": "v3"
  }
}
{
  "success": false,
  "data": null,
  "error": {
    "code": "VALIDATION_001",
    "message": "Request validation failed",
    "details": {
      "brand": [
        "Cannot provide brand data when inherit_tcr_brand is true."
      ],
      "payment_details.expiry": [
        "payment_details.expiry must be in MM/YY format (e.g. '09/27')"
      ]
    },
    "doc_url": "https://docs.sent.dm/docs/reference/api/error-catalog"
  },
  "meta": {
    "request_id": "req_7X9zKp2jDw",
    "timestamp": "2026-03-25T10:43:34.5891349+00:00",
    "version": "v3"
  }
}
Empty
Empty
{
  "success": false,
  "data": null,
  "error": {
    "code": "RESOURCE_014",
    "message": "Profile not found",
    "details": null,
    "doc_url": "https://docs.sent.dm/docs/reference/api/error-catalog"
  },
  "meta": {
    "request_id": "req_7X9zKp2jDw",
    "timestamp": "2026-03-25T10:43:34.5891356+00:00",
    "version": "v3"
  }
}
{
  "success": false,
  "data": null,
  "error": {
    "code": "INTERNAL_001",
    "message": "Failed to update profile. Please contact support with request ID: req_7X9zKp2jDw",
    "details": null,
    "doc_url": "https://docs.sent.dm/docs/reference/api/error-catalog"
  },
  "meta": {
    "request_id": "req_7X9zKp2jDw",
    "timestamp": "2026-03-25T10:43:34.5891362+00:00",
    "version": "v3"
  }
}

Create a new profile POST

Creates a new sender profile within an organization. Profiles represent different brands, departments, or use cases, each with their own messaging configuration and settings. Requires admin role in the organization. ## WhatsApp Business Account Every profile must be linked to a WhatsApp Business Account. There are two ways to do this: **1. Inherit from organization (default)** — Omit the `whatsapp_business_account` field. The profile will share the organization's WhatsApp Business Account, which must have been set up via WhatsApp Embedded Signup. This is the recommended path for most use cases. **2. Direct credentials** — Provide a `whatsapp_business_account` object with `waba_id`, `phone_number_id`, and `access_token`. Use this when the profile needs its own independent WhatsApp Business Account. Obtain these from Meta Business Manager by creating a System User with `whatsapp_business_messaging` and `whatsapp_business_management` permissions. If the `whatsapp_business_account` field is omitted and the organization has no WhatsApp Business Account configured, the request will be rejected with HTTP 422. ## Brand Include the optional `brand` field to create the brand for this profile at the same time. Cannot be used when `inherit_tcr_brand` is `true`. ## Payment Details When `billing_model` is `"profile"` or `"profile_and_organization"` you may include a `payment_details` object containing the card number, expiry (MM/YY), CVC, and billing ZIP code. Payment details are **never stored** on our servers and are forwarded directly to the payment processor. Providing `payment_details` when `billing_model` is `"organization"` is not allowed.

Delete a profile DELETE

Soft deletes a sender profile. The profile will be marked as deleted but data is retained. Requires admin role in the organization.