Intents

Create RPC intent

Changed on

Create an intent to execute an RPC method on a wallet. The intent must be authorized by either the wallet owner or signers before it can be executed.

post/v1/intents/wallets/{wallet_id}/rpc

Request

  • Base URL
    https://api.privy.io
  • URL
    https://api.privy.io/v1/intents/wallets/{wallet_id}/rpc
  • Auth
    HTTP basic

Path parameters

wallet_idstring required

ID of the wallet.

Headers

privy-app-idstring required

ID of your Privy app.

privy-request-expirystring

Request expiry. Value is a Unix timestamp in milliseconds representing the deadline by which the request must be processed.

Request body

OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR

Response

Created RPC intent.

intent_idstring required

Unique ID for the intent

created_by_display_namestring required

Display name of the user who created the intent

created_by_idstring

ID of the user who created the intent. If undefined, the intent was created using the app secret

created_atnumber required

Unix timestamp when the intent was created

resource_idstring required

ID of the resource being modified (wallet_id, policy_id, etc)

status'pending' | 'processing' | 'executed' | 'failed' | 'expired' | 'rejected' | 'dismissed' required

Current status of an intent.

custom_expiryboolean required

Whether this intent has a custom expiry time set by the client. If false, the intent expires after a default duration.

expires_atnumber required

Unix timestamp when the intent expires

rejected_atnumber

Unix timestamp when the intent was rejected, present when status is 'rejected'

dismissed_atnumber

Unix timestamp when the intent was dismissed, present when status is 'dismissed'

dismissal_reasonstring

Human-readable reason for dismissal, present when status is 'dismissed'

intent_type'RPC' required

Example response

{
  "intent_id": "clpq1234567890abcdefghij",
  "intent_type": "RPC",
  "created_by_display_name": "developer@example.com",
  "created_by_id": "did:privy:clabcd123",
  "created_at": 1741834854578,
  "resource_id": "xs76o3pi0v5syd62ui1wmijw",
  "authorization_details": [
    {
      "members": [
        {
          "type": "user",
          "user_id": "did:privy:clabcd123",
          "signed_at": null
        }
      ],
      "threshold": 1,
      "display_name": "Admin Key Quorum"
    }
  ],
  "status": "pending",
  "custom_expiry": false,
  "expires_at": 1741921254578,
  "request_details": {
    "method": "POST",
    "url": "https://api.privy.io/v1/wallets/xs76o3pi0v5syd62ui1wmijw/rpc",
    "body": {
      "method": "eth_sendTransaction",
      "caip2": "eip155:8453",
      "chain_type": "ethereum",
      "params": {
        "transaction": {
          "to": "0x0000000000000000000000000000000000000000",
          "value": 1
        }
      }
    }
  }
}

Changes

    • breaking

      removed subschema #2 from the //// request property anyOf list

    • breaking

      removed subschema #2 from the //// request property anyOf list

    • info

      removed subschema #2 from the //////// response property anyOf list for the response status

    • info

      removed subschema #2 from the /////// response property anyOf list for the response status

    • info

      removed subschema #2 from the /////// response property anyOf list for the response status

    • breaking

      added to the // response property oneOf list for the response status

    • breaking

      added to the /// response property oneOf list for the response status

    • warning

      added the new xrpl enum value to the /// response property for the response status

    • info

      added the new optional request property /

    • info

      added the new optional request property /

    • info

      added the new optional request property /

    • info

      added aptos_signTransaction xrpl_signTransaction near_signTransaction mapping keys to the request discriminator

    • info

      added to the request body oneOf list

    • info

      added the optional property /// to the response with the status

    • info

      added the optional property /// to the response with the status

    • info

      added the optional property /// to the response with the status

    • info

      added the optional property /// to the response with the status

    • info

      added the optional property //// to the response with the status

    • info

      added the optional property //// to the response with the status

    • info

      added the optional property //// to the response with the status

    • info

      added aptos_signTransaction xrpl_signTransaction near_signTransaction discriminator mapping keys to the /// response property for the response status

    • info

      added aptos_signTransaction xrpl_signTransaction near_signTransaction discriminator mapping keys to the // response property for the response status

    • info

      the /// response's property pattern ^[a-zA-Z0-9_-]+$ was added for the status