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

# Attestation

> Request an attestation token using the unified MiniKit API.

Use `MiniKit.attestation()` to request an app attestation token for a request hash.

## Basic Usage

<CodeGroup>
  ```tsx title="Example" theme={null}
  import { MiniKit } from "@worldcoin/minikit-js";
  import type {
    CommandResultByVia,
    MiniAppAttestationSuccessPayload,
    MiniKitAttestationOptions,
  } from "@worldcoin/minikit-js/commands";

  export async function requestAttestation() {
    const input = {
      requestHash: "0x1234",
    } satisfies MiniKitAttestationOptions;

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

    console.log(result.data.token);
  }
  ```

  ```ts title="Type" theme={null}
  type MiniKitAttestationOptions = {
    requestHash: string;
    fallback?: () => unknown;
  };
  ```
</CodeGroup>

## Result

<CodeGroup>
  ```ts title="Type" theme={null}
  type AttestationResponse =
    | {
        executedWith: "minikit";
        data: {
          status: "success";
          version: number;
          token: string;
        };
      }
    | {
        executedWith: "fallback";
        data: unknown;
      };
  ```

  ```json title="Example" theme={null}
  {
    "executedWith": "minikit",
    "data": {
      "status": "success",
      "version": 1,
      "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.mock.payload"
    }
  }
  ```
</CodeGroup>

## Fallback Behavior

Define a custom fallback in the command payload for support outside mini apps.

## Error Codes

| Code                  | Meaning                              |
| --------------------- | ------------------------------------ |
| `unauthorized`        | The request is not authorized        |
| `attestation_failed`  | Attestation generation failed        |
| `integrity_failed`    | Integrity checks failed              |
| `invalid_input`       | The request hash is invalid          |
| `unsupported_version` | The command version is not supported |
