Skip to main content
POST
/
api
/
v1
/
verification
Phase 2: submit a verification request
curl --request POST \
  --url https://api.neus.network/api/v1/verification \
  --header 'Content-Type: application/json' \
  --data '
{
  "verifierIds": [],
  "data": {
    "content": "<string>",
    "owner": "<string>",
    "contentHash": "<string>",
    "contentType": "<string>",
    "provenance": {
      "aiContext": {
        "provider": "<string>",
        "model": "<string>",
        "runId": "<string>"
      }
    }
  },
  "walletAddress": "<string>",
  "subjectWallet": "<string>",
  "signature": "<string>",
  "signedTimestamp": 123,
  "chainId": 123,
  "chain": "<string>",
  "signatureMethod": "<string>",
  "options": {},
  "meta": {}
}
'
{
  "status": "<string>",
  "message": "<string>",
  "data": {},
  "creditInfo": {}
}

Body

application/json

Phase 2 of the raw HTTP verification handshake. For raw HTTP callers, first call POST /api/v1/verification/standardize with this same body (minus signature), sign the returned signerString, then submit this body with signature. Treat this as a continuation of the standardized request, not as an independent one-step POST.

verifierIds
enum<string>[]
required
Minimum array length: 1
Available options:
ownership-basic,
ownership-social,
ownership-pseudonym,
ownership-dns-txt,
ownership-org-oauth,
contract-ownership,
proof-of-human,
nft-ownership,
token-holding,
wallet-risk,
wallet-link,
ai-content-moderation,
agent-identity,
agent-delegation
data
required

Ownership proofs require owner plus at least one durable anchor: content, contentHash, or reference.id. Use reference and provenance to keep proof receipts linkable and explain origin without storing unnecessary raw content.

walletAddress
string
required

Signer wallet address (who authenticates the request). For raw HTTP, this must match the walletAddress used during POST /api/v1/verification/standardize and the wallet that produced signature.

subjectWallet
string

Optional: Wallet being verified (delegated subject). Must match signed payload for verifiers that support delegated subjects (allowsDelegatedSubject: true). Defaults to walletAddress if omitted. Only valid when all verifiers in verifierIds support allowsDelegatedSubject: true.

signature
string

Required unless authenticated session is present. For raw HTTP, sign the exact signerString returned by POST /api/v1/verification/standardize for this same request body.

signedTimestamp
number

Required unless authenticated session is present. For raw HTTP, this must exactly match the signedTimestamp used during POST /api/v1/verification/standardize.

chainId
integer

Advanced/optional. EVM signing-context hint; auto-resolved to the protocol hub chain when omitted. Not required for standard integrations. For non-EVM, use chain (CAIP-2) instead. For chain-specific asset claims (NFT, token, contract), set chainId inside verifier data, not here.

chain
string

CAIP-2 chain identifier for non-EVM wallets (e.g. solana:mainnet). EVM wallets do not need this field; the protocol resolves hub context automatically.

signatureMethod
string
options
object
meta
object

Response

OK

success
enum<boolean>
required
Available options:
true
status
string
required
message
string
required
data
object
required
creditInfo
object
Last modified on May 27, 2026