---
title: Operations
description: The Operations endpoints of the PingOne Recognize Mobile SDK Server API let you review and manage a variety of operations for  PingOne Recognize users.
component: recognize
page_id: recognize:mobile-sdk:mobile-sdk-server-api-operations
canonical_url: https://docs.pingidentity.com/recognize/mobile-sdk/mobile-sdk-server-api-operations.html
llms_txt: https://docs.pingidentity.com/recognize/llms.txt
docs_for_agents: https://developer.pingidentity.com/build-with-ai/docs-for-agents.md
revdate: May 5, 2026
section_ids:
  endpoint-user-operations-post: POST /users/{userId}/operations
  path-params-user-operations-post: Path parameters
  request-body-user-operations-post: Request body — application/json
  responses-user-operations-post: Responses
  example-user-operations-post: Example
  endpoint-user-operations-pending-get: GET /users/{userId}/operations/pending
  path-params-user-operations-pending-get: Path parameters
  responses-user-operations-pending-get: Responses
  example-user-operations-pending-get: Example
  endpoint-operation-get: GET /operations/{operationId}
  path-params-operation-get: Path parameters
  responses-operation-get: Responses
  example-operation-get: Example
---

# Operations

All endpoints require the `X-Api-Key` header for authentication, which should contain your PingOne Recognize authorization key. For help, contact Support.

## POST /users/{userId}/operations

Create a pending operation

Create a pending operation for the specified user. The operation will wait for the user to approve using the PingOne Recognize app.

### Path parameters

| Name                  | Type           | Description                                   |
| --------------------- | -------------- | --------------------------------------------- |
| `userId` **required** | `string (HEX)` | Uppercase HEX string representing the user ID |

### Request body — `application/json`

| Field                      | Type     | Description                                 |
| -------------------------- | -------- | ------------------------------------------- |
| `operationId` **required** | `string` | Unique operation identifier, client-managed |
| `externalUserId`           | `string` | Customer-meaningful user ID                 |
| `operationPayload`         | `string` | Arbitrary payload, client-managed           |

### Responses

| Status                              | Description                                       |
| ----------------------------------- | ------------------------------------------------- |
| `200`                               | Operation created — returns `{ "success": true }` |
| `400 / 401 / 404 / 406 / 409 / 415` | Standard error responses                          |
| `500`                               | Internal server error                             |

### Example

**Request**

```none
POST /v2/users/A1B2C3D4E5F6/operations
X-Api-Key: your-api-key
Content-Type: application/json

{
  "operationId": "txn-20250521-001",
  "externalUserId": "custom-name@example.com",
  "operationPayload": "Approve wire transfer of $500 to account 1234"
}
```

**Response 200**

```json
{
  "success": true
}
```

***

## GET /users/{userId}/operations/pending

List pending operations for a user

Retrieve all pending operations awaiting approval for the specified user.

### Path parameters

| Name                  | Type           | Description                                   |
| --------------------- | -------------- | --------------------------------------------- |
| `userId` **required** | `string (HEX)` | Uppercase HEX string representing the user ID |

### Responses

| Status                  | Description                                                                                                                                              |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `200`                   | Array of `PendingOperationResponse` — each has `operationId` (required), and optional `operationPayload`, `externalUserId`, `authType` (`biom` or `pin`) |
| `400 / 401 / 404 / 406` | Standard error responses                                                                                                                                 |
| `500`                   | Internal server error                                                                                                                                    |

### Example

**Request**

```none
GET /v2/users/A1B2C3D4E5F6/operations/pending
X-Api-Key: your-api-key
```

**Response 200**

```json
[
  {
    "operationId": "txn-20250521-001",
    "operationPayload": "Approve wire transfer of $500 to account 1234",
    "externalUserId": "custom-name@example.com",
    "authType": "biom"
  },
  {
    "operationId": "txn-20250521-002"
  }
]
```

***

## GET /operations/{operationId}

Get a specific operation

Retrieve details of a specific customer operation by its ID.

### Path parameters

| Name                       | Type     | Description                                 |
| -------------------------- | -------- | ------------------------------------------- |
| `operationId` **required** | `string` | Unique operation identifier, client-managed |

### Responses

| Status                  | Description                                                                                                                                                                                                          |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `200`                   | `OperationResponse` — contains `id`, `timestamp`, `nodeId`, `userId`, `apiKey`, `operationId`, `state` (`approved` or `pending`), `result` (boolean), plus optional `externalUserId`, `operationPayload`, `authType` |
| `400 / 401 / 404 / 406` | Standard error responses                                                                                                                                                                                             |
| `500`                   | Internal server error                                                                                                                                                                                                |

### Example

**Request**

```none
GET /v2/operations/txn-20250521-001
X-Api-Key: your-api-key
```

**Response 200**

```json
{
  "id": 8819,
  "timestamp": "2025-05-21T10:30:00.000",
  "nodeId": "operations-service-node-1",
  "userId": "A1B2C3D4E5F6",
  "apiKey": "CustomerApiKey123",
  "operationId": "txn-20250521-001",
  "operationPayload": "Approve wire transfer of $500 to account 1234",
  "externalUserId": "custom-name@example.com",
  "state": "approved",
  "result": true,
  "authType": "biom"
}
```
