AutomationFlowsWeb Scraping › Thesis Arena · Retry Execution

Thesis Arena · Retry Execution

Thesis Arena · Retry Execution. Uses httpRequest. Webhook trigger; 7 nodes.

Webhook trigger★★★★☆ complexity7 nodesHTTP Request
Web Scraping Trigger: Webhook Nodes: 7 Complexity: ★★★★☆ Added:

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "Thesis Arena \u00b7 Retry Execution",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "thesis-arena-retry",
        "authentication": "none",
        "responseMode": "responseNode",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [
        -650,
        0
      ],
      "id": "8408871b-8684-4a1d-9146-7771e42478b0",
      "name": "Retry Webhook"
    },
    {
      "parameters": {
        "jsCode": "const payload = $json.body ?? $json;\nconst headers = $json.headers ?? {};\nconst executionId = String(payload.execution_id ?? \"\").trim();\nconst accountUsername = String(headers[\"x-thesis-arena-user\"] ?? headers[\"X-Thesis-Arena-User\"] ?? \"\").trim().toLowerCase();\nif (!/^\\d+$/.test(executionId)) throw new Error(\"A numeric execution_id is required.\");\nif (!/^[a-z0-9_-]{1,64}$/.test(accountUsername)) throw new Error(\"A trusted account identity is required.\");\nreturn [{ json: { execution_id: executionId, account_username: accountUsername } }];"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        -390,
        0
      ],
      "id": "817db05f-3157-45ee-acab-0e53fc9bd805",
      "name": "Validate Retry Request"
    },
    {
      "parameters": {
        "method": "GET",
        "url": "={{ \"http://127.0.0.1:5678/api/v1/executions/\" + $json.execution_id + \"?includeData=true\" }}",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "n8nApi",
        "options": {
          "response": {
            "response": {
              "neverError": true,
              "responseFormat": "json"
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        -120,
        0
      ],
      "id": "ba1c7047-bf96-4e65-8c97-90cf972ec4d8",
      "name": "Get Saved Execution",
      "retryOnFail": true,
      "maxTries": 3,
      "waitBetweenTries": 1000
    },
    {
      "parameters": {
        "jsCode": "const execution = $json;\nconst request = $(\"Validate Retry Request\").first().json;\nconst runData = execution.data?.resultData?.runData ?? {};\nconst nodeJson = (name) => {\n  const runs = runData[name] ?? [];\n  for (let index = runs.length - 1; index >= 0; index -= 1) {\n    const value = runs[index]?.data?.main?.[0]?.[0]?.json;\n    if (value && typeof value === \"object\") return value;\n  }\n  return null;\n};\nconst access = nodeJson(\"Attach Access\") ?? {};\nconst owner = String(access.access?.username ?? access.account_username ?? nodeJson(\"Prepare Request\")?.account_username ?? \"\");\nconst allowed = Boolean(execution.id) && String(execution.workflowId) === \"REPLACE_WITH_ANALYSIS_WORKFLOW_ID\" && owner === request.account_username;\nreturn [{\n  json: {\n    execution_id: request.execution_id,\n    account_username: request.account_username,\n    allowed,\n    reason: allowed ? \"allowed\" : \"not_found\"\n  }\n}];"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        150,
        0
      ],
      "id": "47f22750-6094-4fe0-9e98-56b5f506e661",
      "name": "Authorize Retry"
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ $json.allowed ? { state: \"retrying\", retry_of: $json.execution_id, poll_after_ms: 2500 } : { state: \"denied\", code: \"access_denied\", error: \"This execution is not available to the current account.\" } }}",
        "options": {
          "responseCode": "={{ $json.allowed ? 202 : 403 }}",
          "responseHeaders": {
            "entries": [
              {
                "name": "Cache-Control",
                "value": "no-store"
              },
              {
                "name": "X-Content-Type-Options",
                "value": "nosniff"
              }
            ]
          }
        }
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.5,
      "position": [
        420,
        0
      ],
      "id": "bf330466-f13a-49e8-9c8c-e535a4ed34ff",
      "name": "Acknowledge Retry"
    },
    {
      "parameters": {
        "jsCode": "if (!$json.allowed) return [];\nreturn $input.all();"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        690,
        0
      ],
      "id": "40c329f0-7cd1-4bf6-a63e-0db4d3ef4f03",
      "name": "Continue If Retry Authorized"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "={{ \"http://127.0.0.1:5678/api/v1/executions/\" + $(\"Validate Retry Request\").first().json.execution_id + \"/retry\" }}",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "n8nApi",
        "options": {
          "response": {
            "response": {
              "neverError": true,
              "responseFormat": "json"
            }
          }
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify({ loadWorkflow: true }) }}"
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        960,
        0
      ],
      "id": "6e608646-ab3e-4d6b-9ea0-b37719ed3d95",
      "name": "Retry Saved Execution",
      "retryOnFail": true,
      "maxTries": 3,
      "waitBetweenTries": 1000
    }
  ],
  "connections": {
    "Retry Webhook": {
      "main": [
        [
          {
            "node": "Validate Retry Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validate Retry Request": {
      "main": [
        [
          {
            "node": "Get Saved Execution",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Saved Execution": {
      "main": [
        [
          {
            "node": "Authorize Retry",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Authorize Retry": {
      "main": [
        [
          {
            "node": "Acknowledge Retry",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Acknowledge Retry": {
      "main": [
        [
          {
            "node": "Continue If Retry Authorized",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Continue If Retry Authorized": {
      "main": [
        [
          {
            "node": "Retry Saved Execution",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1",
    "saveManualExecutions": true,
    "saveExecutionProgress": true,
    "saveDataErrorExecution": "all",
    "saveDataSuccessExecution": "all"
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Thesis Arena · Retry Execution. Uses httpRequest. Webhook trigger; 7 nodes.

Source: https://github.com/PMaxus/thesis-arena/blob/main/n8n/thesis-arena-retry-workflow.json — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Web Scraping

This n8n template provides enterprise-level version control for your workflows using GitHub integration. Stop losing hours to broken workflows and manual exports – get proper commit history, visual di

n8n, Execute Workflow Trigger, HTTP Request +1
Web Scraping

This flow creates dummy files for every item added in your *Arrs (Radarr/Sonarr) with the tag .

HTTP Request, Ssh
Web Scraping

eek-Go v2 (Batch-Then-Review). Uses httpRequest. Webhook trigger; 75 nodes.

HTTP Request
Web Scraping

This workflow receives webhook requests from a content calendar and uses the X API v2 to publish text posts, threads, image/video posts, and polls, as well as delete existing posts and run a credentia

HTTP Request
Web Scraping

This workflow acts as a central API gateway for all technical indicator agents in the Binance Spot Market Quant AI system. It listens for incoming webhook requests and dynamically routes them to the c

HTTP Request