Skip to main content
Use MiniKit.requestPermission() to ask the user for a permission such as notifications or microphone access.

Availability

  • Works natively in World App
  • Supports a custom fallback outside World App

Basic Usage

import { MiniKit } from "@worldcoin/minikit-js";
import {
  Permission,
  type CommandResultByVia,
  type MiniAppRequestPermissionSuccessPayload,
  type MiniKitRequestPermissionOptions,
} from "@worldcoin/minikit-js/commands";

export async function requestNotifications() {
  const input = {
    permission: Permission.Notifications,
  } satisfies MiniKitRequestPermissionOptions;

  const result: CommandResultByVia<
    MiniAppRequestPermissionSuccessPayload,
    MiniAppRequestPermissionSuccessPayload,
    "minikit"
  > = await MiniKit.requestPermission(input);

  console.log(result.data.permission);
}

Result

type RequestPermissionResponse =
  | {
      executedWith: "minikit";
      data: {
        status: "success";
        version: number;
        permission: "notifications" | "contacts" | "microphone";
        timestamp: string;
      };
    }
  | {
      executedWith: "fallback";
      data: unknown;
    };

Fallback Behavior

Use a custom fallback if you want equivalent permission behavior outside World App.

Error Codes

CodeMeaning
user_rejectedThe user rejected the request
generic_errorUnexpected failure
already_requestedThe permission prompt was already shown and rejected
permission_disabledThe permission is disabled
already_grantedThe permission is already granted
unsupported_permissionThe permission is not supported

Preview