Account Abstraction
API Reference
User Operation
Submit User Operation

Submit User Operation

Overview

This API endpoint allows you to submit a user operation for execution. It requires a signature and other details to process the operation.

  • HTTP Method: POST
  • Endpoint: {{BASE_URL}}/api/v1/userOp/submit

Request Body Parameters

  • signature (required): The cryptographic signature of the user operation.
  • userOpId (required): The unique identifier of the user operation.
  • hash (required): The hash of the user operation.
  • isSponsored (required): A boolean indicating whether the operation is sponsored by organization.

Example Request Body

{
  "signature": "0x.....",
  "userOpId": "67b1fc9a442f26832dadd881",
  "hash": "0x.....",
  "isSponsored": true
}

Request

Request Headers

  • X-APP-ID: (required): APP ID/Project ID obtained from dashboard.
  • X-SIGNATURE: (required): Calculated signature, please refer to Authorization section.
  • X-TIMESTAMP: (required): Request timestamp in RFC3339 format.

Example Request Syntax

curl -X POST -H "Content-Type: application/json" \
-H "x-app-id: $YOUR_APP_ID" \
-H "x-signature: $CALCULATED_SIGNATURE" \
-H "x-timestamp: $TIMESTAMP" \
-d '{
    "signature": "0x.....",
    "userOpId": "67b1fc9a442f26832dadd881",
    "hash": "0x.....",
    "isSponsored": true
}' {{BASE_URL}}/api/v1/userOp/submit

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"
    }
}