> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getprimo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Resend one MDM control's configuration profile to one device

> Ask the MDM to deliver an MDM control's configuration profile to ONE device again — the remediation for a profile the device failed to apply, without re-applying the control to every device it targets. Take `mdmControlId` from the compliance alert, and call `getComplianceAlertDetails` first: it reports `enforcement.profile.resendable`, which is `true` only when this call would be accepted. A resend is refused when the profile is already being delivered (`pending` / `verifying` — wait for the device to check in), and when the control is enforced by a declaration instead of a profile (OS update on Apple, USB blocking on macOS, and the Android controls — those have no per-device redelivery at all). Delivery is asynchronous and needs the device to check in, so it is NOT done when this returns: re-read `getComplianceAlertDetails` with the same alert id later. Only the profile is resent — to re-run a control's script use `runDeviceScript`, to reinstall its software `installDeviceSoftware`, to re-run its enforcers `syncPrimoDevice`.

<span className="badge-write">Key: Write</span><span className="badge-company">Scope: Company</span>


## OpenAPI

````yaml https://api.getprimo.com/openapi.json post /devices/{deviceId}/mdm-controls/{mdmControlId}/resend-profile
openapi: 3.1.1
info:
  title: Public API - BETA
  description: Read docs on https://docs.getprimo.com/
  version: '1.0'
  contact: {}
servers:
  - url: https://api.getprimo.com
security:
  - apikey: []
tags: []
paths:
  /devices/{deviceId}/mdm-controls/{mdmControlId}/resend-profile:
    post:
      tags:
        - Devices
      summary: Resend one MDM control's configuration profile to one device
      description: >-
        Ask the MDM to deliver an MDM control's configuration profile to ONE
        device again — the remediation for a profile the device failed to apply,
        without re-applying the control to every device it targets. Take
        `mdmControlId` from the compliance alert, and call
        `getComplianceAlertDetails` first: it reports
        `enforcement.profile.resendable`, which is `true` only when this call
        would be accepted. A resend is refused when the profile is already being
        delivered (`pending` / `verifying` — wait for the device to check in),
        and when the control is enforced by a declaration instead of a profile
        (OS update on Apple, USB blocking on macOS, and the Android controls —
        those have no per-device redelivery at all). Delivery is asynchronous
        and needs the device to check in, so it is NOT done when this returns:
        re-read `getComplianceAlertDetails` with the same alert id later. Only
        the profile is resent — to re-run a control's script use
        `runDeviceScript`, to reinstall its software `installDeviceSoftware`, to
        re-run its enforcers `syncPrimoDevice`.
      operationId: resendDeviceProfile
      parameters:
        - name: deviceId
          required: true
          in: path
          schema:
            type: string
        - name: mdmControlId
          required: true
          in: path
          schema:
            type: string
      responses:
        '202':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResendDeviceProfileResult_Output'
components:
  schemas:
    ResendDeviceProfileResult_Output:
      type: object
      properties:
        success:
          type: boolean
          const: true
        profileFleetId:
          type: string
          description: Identifier of the configuration profile that was resent
        statusBeforeResend:
          type: string
          description: >-
            Delivery status of the profile on the device just before the resend
            was requested
          enum:
            - verified
            - verifying
            - pending
            - failed
        message:
          type: string
          description: A human-readable description of the action
      required:
        - success
        - profileFleetId
        - statusBeforeResend
        - message
      additionalProperties: false
  securitySchemes:
    apikey:
      scheme: bearer
      bearerFormat: API key
      type: http
      description: >-
        Use your Primo API key in the Authorization header as `Bearer
        <API_KEY>`.

````