---
title: "Assign request to ops team member (S2S only)"
method: PATCH
path: "/v1/internal/requests/{id}/assign"
tags: ["internal-requests"]
---

# Assign request to ops team member (S2S only)

`PATCH /v1/internal/requests/{id}/assign`

Assigns or reassigns a single request or multiple requests to an ops team member. Transitions request status to under_review and records assigned_at timestamp. For internal use (admin dashboards, etc.) - skips account ID validation.

## Path parameters

- `id` string, required

## Request body

- UpdateRequestAssigneeReqDTO
  - `accountID` string
  - `assignee_email` string, required
  - `id` string — For single assignment (backward compatible via URI)
  - `note` string — Note is an optional human-readable note explaining the assignment change
  - `request_ids` string[], required — For batch assignment (takes precedence if provided)

## Response `200`

OK

- object — Standard response containing data and its metadata if any
  - `data` RequestResDTO
    - `account_id` string — AccountID is required only for Client auth mode, it can be empty for S2S mode
    - `assigned_at` string
    - `assignee_email` string
    - `audit_history` RequestAuditLogResDTO[] — Audit trail - populated when fetching single request details
      - `action_type` string — assigned, unassigned, reassigned, status_changed, field_updated
      - `actor` string — Who performed the action (from JWT admin_id)
      - `created_at` string
      - `field_name` string — Which field was changed
      - `id` string
      - `new_value` string — Value after change (empty for removal)
      - `note` string — Optional human-readable note
      - `previous_value` string — Value before change (empty for initial)
      - `request_id` string
    - `cancelled_at` string
    - `changes` object — Changes gives an old/new view per submitted kyb_data field for account_update requests: old is the organization's current value (fetched live from Core API), new is the submitted value. Populated on the internal detail endpoint only.
    - `completed_at` string
    - `created_at` string
    - `declined_at` string
    - `id` string
    - `internal_note` string
    - `kam_ids` string[]
    - `kyb_data` integer[]
    - `organization_data` integer[]
    - `pending_clarification_at` string
    - `processed_at` string
    - `product_code` string
    - `request_type` string, required
    - `requester_id` string, required
    - `status` string
    - `submitted_at` string
    - `updated_at` string
  - `has_more` boolean

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `404` — Not Found
- `500` — Internal Server Error

---

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