Skip to content

Output & Results

The output field allows you to extract values from Warp execution (smart contract returns, events, or API responses) and use them in messages, chained Warps, or logic transforms.

Basic Structure

json
{
  "output": {
    "RESULT_NAME": "resolution.path"
  }
}

Resolution Paths

Contract & Query Returns (out.N)

Extracts the Nth return value from a function call.

  • out.1: First return value.
  • out.2: Second return value.
json
{
  "output": {
    "BALANCE": "out.1"
  }
}

Event Data (event.Name.N)

Extracts arguments from emitted blockchain events.

  • Format: event.{EventName}.{ArgumentIndex}
json
{
  "output": {
    "TOKEN_ID": "event.Transfer.3",
    "FROM": "event.Transfer.1"
  }
}

API Responses (out.path)

For collect actions, traverse the JSON response object.

json
{
  "output": {
    "USER_ID": "out.data.id",
    "PRICE": "out.market_data.current_price.usd"
  }
}

Transforms

You can compute derived values using JavaScript. Transforms run in a sandboxed environment.

Syntax

transform:() => { ... }

Accessing Previous Results

The result object contains all previously resolved outputs.

json
{
  "output": {
    "RAW_BALANCE": "out.1",
    "FORMATTED": "transform:() => { return (result.RAW_BALANCE / 1e18).toFixed(2) }",
    "IS_ELIGIBLE": "transform:() => { return result.RAW_BALANCE > 100 ? 'Yes' : 'No' }"
  }
}

Transform Rules

  • Order Matters: Transforms execute sequentially. You can rely on values defined earlier in the object.
  • Synchronous: Functions must be synchronous.
  • Sandboxed: No access to window, document, or external APIs.

Using Outputs

In Messages

json
{
  "messages": {
    "success": "Balance: {{FORMATTED}} Tokens"
  }
}

In Chained Warps (Next URL)

Pass results as query parameters to the next Warp.

json
{
  "next": "view-profile?id={{USER_ID}}"
}