Skip to main content
This is an experimental feature and may change or be removed in future versions.
Host DiscretionThe availability and behavior of signManifest depends entirely on the host implementation. Hosts may choose to:
  • Enable manifest signing for all domains
  • Restrict signing to specific allowlisted domains
  • Disable the feature entirely
  • Implement additional validation requirements
Check with your specific host’s documentation for their manifest signing policies.
Signs a domain manifest for verification and authenticity purposes.

Usage

import { sdk } from '@farcaster/miniapp-sdk'

const result = await sdk.experimental.signManifest({
  domain: 'example.com'
})

Parameters

options

  • domain (required): The domain to sign the manifest for

Return Value

Returns an object with the following properties:
  • header: The header component of the signed manifest
  • payload: The payload component containing the domain data
  • signature: The cryptographic signature
{
  header: string
  payload: string
  signature: string
}

Errors

RejectedByUser

Thrown if a user rejects the request to sign the manifest.
try {
  await sdk.experimental.signManifest({ domain: 'example.com' })
} catch (error) {
  if (error instanceof SignManifest.RejectedByUser) {
    // Handle user rejection
  }
}

InvalidDomain

Thrown when the provided domain is invalid or malformed.
try {
  await sdk.experimental.signManifest({ domain: 'invalid-domain' })
} catch (error) {
  if (error instanceof SignManifest.InvalidDomain) {
    // Handle invalid domain
  }
}

GenericError

Thrown when manifest signing fails for various reasons including host restrictions, network issues, or other implementation-specific failures.
try {
  await sdk.experimental.signManifest({ domain: 'example.com' })
} catch (error) {
  if (error instanceof SignManifest.GenericError) {
    // Handle generic signing failures
    console.log('Signing failed:', error.message)
  }
}

Generic Error Handling

For robust error handling, you should catch all specific error types:
try {
  const result = await sdk.experimental.signManifest({ domain: 'example.com' })
  // Handle successful signing
} catch (error) {
  if (error instanceof SignManifest.RejectedByUser) {
    // User declined to sign the manifest
    console.log('User rejected manifest signing')
  } else if (error instanceof SignManifest.InvalidDomain) {
    // Domain format is invalid
    console.log('Invalid domain format')
  } else if (error instanceof SignManifest.GenericError) {
    // Generic signing failures
    console.log('Signing failed:', error.message)
    // This could include:
    // - Domain not allowlisted by host
    // - Feature disabled by host
    // - Network or connectivity issues
    // - Host-specific validation failures
  } else {
    // Other unexpected errors
    console.log('Manifest signing failed:', error.message)
    // This could include network or authentication errors
  }
}