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

# Signing format

> Wallet message format for signed checks.

**Default:** [Hosted Verify](../cookbook/auth-hosted-verify) or **SDK** `client.verify()` - you do not need to read this page to ship.

Use this reference when you implement **raw `POST /api/v1/verification`** or debug **`SIGNATURE_VERIFICATION_FAILED` / invalid signature** responses.

## Why

The wallet agrees to the exact request; NEUS returns a **qHash** and the complete `portableProof` envelope to the creator. The signature authenticates the request, not the later verifier outcome.

## Raw HTTP only

If you call the API without the SDK:

1. Build the verification **JSON body** you will submit.
2. **`POST /api/v1/verification/standardize`** with that body to **`signerString`** (exact bytes to sign).
3. Sign **`signerString`**.
4. **`POST /api/v1/verification`** with the **same body** + **`signature`**.

Do not hand-edit the six-line text. Only sign what **`standardize`** returns (or SDK **`standardizeVerificationRequest`**) for that exact body.

## Troubleshooting

* Re-run **`/standardize`** on the same payload and compare **`signerString`** to what the wallet signed.
* **`walletAddress`**, **`verifierIds`**, **`data`**, **`signedTimestamp`**, and chain fields must match between standardize and submit.
* Do not remove nonces or timestamps from `data` when recomputing `qHash`; every data field is bound.

## Shape

UTF-8, **LF** newlines.

```text theme={"dark"}
Portable Proof Verification Request
Wallet: <address>
Chain: <chainId or CAIP-2 chain>
Verifiers: <comma-separated-ids>
Data: <json payload>
Timestamp: <unix-ms>
```

## SDK helpers

```javascript theme={"dark"}
import {
  standardizeVerificationRequest,
  signMessage,
  verifyPortableProofEnvelope,
} from '@neus/sdk';
```

## Wallets

| Type           | Standard |
| -------------- | -------- |
| EOA            | EIP-191  |
| Contract       | EIP-1271 |
| Counterfactual | EIP-6492 |

## Related

<CardGroup cols={2}>
  <Card title="How it works" icon="shield-check" href="./how-it-works">
    Flow.
  </Card>

  <Card title="API auth" icon="key" href="../api/authentication">
    HTTP.
  </Card>

  <Card title="Verifiers" icon="list-tree" href="./verifiers">
    Ids.
  </Card>

  <Card title="CAIP-380" icon="file-signature" href="../learn/standards/caip-380">
    Envelope.
  </Card>
</CardGroup>
