# Query the user status (/en/api-reference/api-ref/rtc/query-user-status)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

Retrieves the status of a specified user in a channel.

- OpenAPI: /openapi/rtc/channel-management.en.yaml
- Operation ID: cma-query-user-status
- Method: GET
- Path: /dev/v1/channel/user/property/{appid}/{uid}/{channelName}
- Endpoint: https://api.agora.io/dev/v1/channel/user/property/{appid}/{uid}/{channelName}

## Servers

- https://api.agora.io

Use this endpoint to get the status of a specified user. It checks whether the user is in the specified channel and, if present, returns the user's role and the time they joined.


## Authorization

This endpoint requires authentication.

- `basicAuth`

## Parameters

- `appid` (path, required, string) - The App ID of the project. You can get it through one of the following methods:
- Copy from the [Agora Console](https://console.agora.io)
- Call the Get all projects API, and read the value of the `vendor_key`
  field in the response body.
- `uid` (path, required, number) - The user ID. This parameter does not support string user accounts; use the integer user ID only.
- `channelName` (path, required, string) - The channel name.

### Request

- The request URL and request body is case-sensitive. All requests must use HTTPS.

- `Content-Type`: `application/json`

- The request header must contain the `Authorization` field. For details, see [RESTful authentication](/en/api-reference/api-ref/rtc/authentication).


## Request body

No request body.

## Request examples

### curl

```bash
curl --request GET \
  --url https://api.sd-rtn.com/dev/v1/channel/user/property/<appid>/<uid>/<channelName> \
  --header 'Accept: application/json' \
  --header 'Authorization: Basic <your_base64_encoded_credentials>'
```

### Node.js

```javascript
const https = require('https');

const options = {
  method: 'GET',
  hostname: 'api.sd-rtn.com',
  port: null,
  path: '/dev/v1/channel/user/property/<appid>/<uid>/<channelName>',
  headers: {
    Authorization: 'Basic <your_base64_encoded_credentials>',
    Accept: 'application/json'
  }
};

const req = https.request(options, function (res) {
  const chunks = [];

  res.on('data', function (chunk) {
    chunks.push(chunk);
  });

  res.on('end', function () {
    const body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();
```

### Python

```python
import http.client

conn = http.client.HTTPSConnection("api.sd-rtn.com")

headers = {
    'Authorization': "Basic <your_base64_encoded_credentials>",
    'Accept': "application/json"
}

conn.request("GET", "/dev/v1/channel/user/property/<appid>/<uid>/<channelName>", headers=headers)

res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
```


### Response

- A `200` status code indicates success. The response body contains the following parameters:

- If the status code is not `200`, the request fails. See the `message` field in the response body for the reason for this failure. Refer to [Response status codes](/en/api-reference/api-ref/rtc/response-status-codes) for details.


## Responses

### 200

A `200` status code indicates success. The response body contains the result of the request.

- `success` (boolean) - The state of this request:
- `true`: Success.
- `false`: Reserved for future use.
- `data` (object) - User statistics.
  - `data.in_channel` (boolean) - Whether the user is in the channel. When `false`, no other fields are returned.
  - `data.uid` (number) - The user ID.
  - `data.join` (number) - The Unix timestamp (in seconds) of when the user joined the channel.
  - `data.role` (number) - The role of the user in the channel:
- `0`: Unknown user role.
- `1`: User, in a communication channel.
- `2`: Host, in a live broadcast channel.
- `3`: Audience, in a live broadcast channel.
  - `data.platform` (number) - The platform of the user's device. Common values: `1`: Android, `2`: iOS, `5`: Windows, `6`: Linux, `7`: Web, `8`: macOS, `0`: Others.
### default

The request failed. See the `message` field in the response body for the reason. Refer to Response status codes for details.

No schema.

## Response examples

### 200

```json
{
  "success": true,
  "data": {
    "join": 1640330382,
    "uid": 2845863044,
    "in_channel": true,
    "platform": 7,
    "role": 2
  }
}
```
