Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.wavynode.com/llms.txt

Use this file to discover all available pages before exploring further.

Each layer represents one level of depth in the BFS (breadth-first search) graph traversal. Layer 0 is the root address, layer 1 includes its direct counterparties, layer 2 their counterparties, and so on.

Request

curl https://api.wavynode.com/v1/analysis/{analysisId}/layers/{layer} \
  -H "x-api-key: ApiKey wavy_..."

Path parameters

ParameterTypeDescription
analysisIdstring (uuid)The analysis ID from the tracker service
layerintegerThe BFS depth level to fetch (0-based)

Response — completed layer

{
  "success": true,
  "data": {
    "analysisId": "2912b99e-ddb7-41bf-af29-fa0136361bf7",
    "layer": 1,
    "status": "completed",
    "riskScore": 46,
    "isProvisional": true,
    "totalLayers": 7,
    "detectedPatterns": [
      {
        "patternType": "high_value_transfers",
        "confidence": 0.85,
        "severity": "medium",
        "description": "Multiple high-value transfers detected"
      }
    ],
    "newPatterns": [
      {
        "patternType": "high_value_transfers",
        "confidence": 0.85,
        "severity": "medium",
        "description": "Multiple high-value transfers detected"
      }
    ],
    "removedPatterns": [],
    "cumulativeGraph": {
      "rootAddress": "0x47ac0fb4f2d84898e4d9e7b4dab3c24507a6d503",
      "nodes": { "0x47ac...": { "address": "0x47ac...", "type": "eoa" } },
      "edges": [{ "from": "0x47ac...", "to": "0xabcd...", "value": "1000000000" }],
      "metadata": { "totalNodes": 15, "totalEdges": 42 }
    },
    "newNodes": { "0xabcd...": { "address": "0xabcd...", "type": "eoa" } },
    "newEdges": [{ "from": "0x47ac...", "to": "0xabcd...", "value": "1000000000" }],
    "layerMetadata": {
      "processingTimeMs": 2340,
      "nodeCount": 15,
      "edgeCount": 42,
      "newNodeCount": 12,
      "newEdgeCount": 38,
      "errorCount": 0,
      "patternDetectionTimeMs": 180,
      "timestamp": "2026-04-29T16:22:32.000Z"
    }
  }
}

Response — pending layer

If the requested layer hasn’t been processed yet:
{
  "success": true,
  "data": {
    "analysisId": "2912b99e-ddb7-41bf-af29-fa0136361bf7",
    "layer": 5,
    "status": "pending",
    "totalLayers": 7
  }
}

Response fields

FieldTypeDescription
analysisIdstringThe analysis identifier
layerintegerThe BFS depth level
statusstringcompleted, pending, or failed
riskScorenumberProvisional risk score at this depth (0–100)
isProvisionalbooleantrue for all layers except the final one
totalLayersintegerMaximum depth (for progress calculation)
detectedPatternsarrayAll patterns detected in the cumulative graph up to this layer
newPatternsarrayPatterns first detected at this layer
removedPatternsarrayPatterns from the previous layer no longer detected
cumulativeGraphobjectFull transaction graph from root to this depth
newNodesobjectNodes added at this layer
newEdgesarrayEdges added at this layer
layerMetadataobjectProcessing statistics for this layer
The layer parameter is 0-based. Layer 0 is the root address analysis. If maxDepth is 7, valid layers are 0 through 6.

Caching

Completed layers are immutable. The API returns Cache-Control: public, max-age=3600 for completed layers, so clients can safely cache them. Pending layers return Cache-Control: no-cache.

Pattern diffing

Each layer includes newPatterns and removedPatterns relative to the previous layer. This enables incremental UI updates — you can highlight newly detected patterns without re-processing the entire list.
LayerDetectedNewRemovedInterpretation
0000Root address only, no patterns yet
1110First pattern detected at depth 1
2210Additional pattern found at depth 2
3101One pattern no longer detected with more context