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

# usePermissions

> usePermissions is a convenience hook to access the local participant's permissions.

`usePermissions(sessionId?: string): Object`

## Parameters

<ParamField body="sessionId" type="string">
  A unique identifier for the participant
</ParamField>

## Return value

Returns an object with the following properties:

<ResponseField name="canSendAudio" type="boolean">
  `true` in case the local participant's `permissions.canSend` is `true`, or includes `'audio'`
</ResponseField>

<ResponseField name="canSendVideo" type="boolean">
  `true` in case the local participant's `permissions.canSend` is `true`, or includes `'video'`
</ResponseField>

<ResponseField name="canSendCustomAudio" type="boolean">
  `true` in case the local participant's `permissions.canSend` is `true`, or includes `'customAudio'`
</ResponseField>

<ResponseField name="canSendCustomVideo" type="boolean">
  `true` in case the local participant's `permissions.canSend` is `true`, or includes `'customVideo'`
</ResponseField>

<ResponseField name="canSendScreenAudio" type="boolean">
  `true` in case the local participant's `permissions.canSend` is `true`, or includes `'screenAudio'`
</ResponseField>

<ResponseField name="canSendScreenVideo" type="boolean">
  `true` in case the local participant's `permissions.canSend` is `true`, or includes `'screenVideo'`
</ResponseField>

<ResponseField name="hasPresence" type="boolean">
  `true` in case the local participant's `permissions.hasPresence` is `true`
</ResponseField>

<ResponseField name="canAdminParticipants" type="boolean">
  `true` in case the local participant's `permissions.canAdmin` is `true`, or includes `'participants'`
</ResponseField>

<ResponseField name="canAdminStreaming" type="boolean">
  `true` in case the local participant's `permissions.canAdmin` is `true`, or includes `'streaming'`
</ResponseField>

<ResponseField name="canAdminTranscription" type="boolean">
  `true` in case the local participant's `permissions.canAdmin` is `true`, or includes `'transcription'`
</ResponseField>

<ResponseField name="permissions" type="Object">
  The local participant's `permissions` object, as returned from [`participants()`](/reference/daily-js/instance-methods/participants)
</ResponseField>

## Example

```jsx theme={null}
import { usePermissions } from '@daily-co/daily-react';

export const usePermissionsDemo = () => {
  const { canSendAudio, canSendVideo } = usePermissions();

  return (
    <ul>
      <li>{canSendAudio ? 'can' : 'cannot'} send audio</li>
      <li>{canSendVideo ? 'can' : 'cannot'} send video</li>
    </ul>
  );
};
```

## See also

<CardGroup>
  <Card title="Hooks" icon="code" iconType="solid">
    * [useParticipant()](/reference/daily-react/use-participant)
    * [useLocalSessionId()](/reference/daily-react/use-local-session-id)
  </Card>

  <Card title="daily-js methods" icon="code" iconType="solid">
    * [participants()](/reference/daily-js/instance-methods/participants)
  </Card>
</CardGroup>
