Account Abstraction
SDK
User Operation
Submit User Operation

Submit User Operation

Overview

This SDK method allows you to submit a signed user operation to the network for execution. The user operation must be created and signed before submission.

Method

xellar.accountAbstraction.create.submitUserOp({
  signature: string,
  userOpId: string,
  hash: string,
  isSponsored: boolean,
});

Parameters

  • signature (required): The signature of the user operation hash.
  • userOpId (required): The unique identifier of the user operation.
  • hash (required): The hash of the user operation.
  • isSponsored (optional): Whether the user operation is sponsored (gas paid by the organization).

Response

The response will include a JSON object with the following properties:

  • status (number): The HTTP status code of the response (e.g., 200 for success).
  • message (string): A message providing additional information about the operation.
  • data (object): An object containing the operation details:
    • id (string): Unique identifier for the user operation.
    • createdAt (string): Timestamp when the operation was created.
    • updatedAt (string): Timestamp when the operation was last updated.
    • accountId (string): ID of the account associated with the operation.
    • ownerId (string): ID of the owner of the account.
    • clientId (string): Client ID associated with the operation.
    • appId (string): Your application ID.
    • signature (string): Operation signature.
    • userOpHash (string): Hash of the user operation.
    • status (string): Current status of the operation (e.g., "on_process").
    • type (string): Type of operation (e.g., "send_token").
    • network (string): Network where the operation was executed.
    • chainId (number): Chain ID of the network.
    • payer (string): Who pays for the operation (owner, organization, none).
    • validUntil (string): Timestamp until when the operation is valid.
    • failedReason (string|null): Reason for failure if the operation failed.
    • bundlerVersion (string): Version of the bundler used.
    • successAt (string|null): Timestamp when the operation succeeded.
    • failedAt (string|null): Timestamp when the operation failed.
    • sentAt (string): Timestamp when the operation was sent.

Example Response

{
  "status": 200,
  "message": "success",
  "data": {
    "id": "6832c79298edc14f4928b5f8",
    "createdAt": "2025-05-25T07:32:34.132Z",
    "updatedAt": "2025-05-25T07:33:10.854430702Z",
    "accountId": "6831d4f51579da4b4499155a",
    "ownerId": "6831d4f51579da4b44991558",
    "clientId": "ca1f7181-d647-42c5-bd4b-aa50706d227b",
    "appId": "8bff7124-2b2e-491d-9baa-cce89bd196af",
    "signature": "***",
    "userOpHash": "***",
    "status": "on_process",
    "type": "send_coin",
    "network": "ethereum-holesky",
    "chainId": 17000,
    "payer": "organization",
    "validUntil": "2025-05-25T08:02:34.132Z",
    "failedReason": null,
    "bundlerVersion": "0.7",
    "successAt": null,
    "failedAt": null,
    "sentAt": "2025-05-25T07:33:10.889091085Z"
  }
}
⚠️

The user operation must be submitted before the validUntil timestamp expires.