Skip to content

Error 400 : "POST /netbox-proxmox-webhook/ HTTP/1.1" 400 - #70

Description

@yjosier

Hello,

I cannot manage to automatically populate Proxmox from Netbox through the Flask app.
Each event rule triggers an error 400 and I'm unable to find the root cause.

Versions:

  • Python : 3.13.5
  • Flask app : 2025.11.01
  • Proxmox : 8.4.0

More info :

  • A GET to http://127.0.0.1:8002/netbox-proxmox-webhook/status/ works fine
  • The swagger is available at http://127.0.0.1:8002/
  • A change in Netbox triggers the event rule and thus the webhook.
  • All the setup scripts worked (so communication with Proxmox looks ok to me) and Netbox is populated with the data discovered from Proxmox
  • Only HTTP is used.
  • Netbox and the flask app are on the same VM.
  • Proxmox is on another VM, same network, no Firewall.
  • None of the actions that trigger an event rule work (object created, updated, deleted, etc).

The output of netbox-proxmox-webhook-listener.log :

{"event": "created", "timestamp": "2026-04-20T17:21:42.354974+00:00", "object_type": "virtualization.virtualmachine", "username": "okeur", "request_id": "9ab24456-1ba1-4542-9f9d-b109ae55329f", "data": {"id": 8, "url": "/api/virtualization/virtual-machines/8/", "display_url": "/virtualization/virtual-machines/8/", "display": "test-vm", "name": "test-vm", "status": {"value": "staged", "label": "Staged"}, "start_on_boot": {"value": "off", "label": "Off"}, "site": null, "cluster": {"id": 6, "url": "/api/virtualization/clusters/6/", "display": "pve84-cluster1", "name": "pve84-cluster1", "description": ""}, "device": {"id": 4, "url": "/api/dcim/devices/4/", "display": "pve84", "name": "pve84", "description": ""}, "serial": "", "role": null, "tenant": null, "platform": null, "primary_ip": null, "primary_ip4": null, "primary_ip6": null, "vcpus": 2.0, "memory": 2048, "disk": null, "description": "", "owner": null, "comments": "", "config_template": null, "local_context_data": null, "tags": [], "custom_fields": {"proxmox_node": "pve84", "proxmox_vm_type": "vm", "proxmox_vmid": null, "proxmox_vm_storage": "local-lvm", "proxmox_public_ssh_key": null, "proxmox_vm_templates": "8000"}, "created": "2026-04-20T17:21:42.313025Z", "last_updated": "2026-04-20T17:21:42.313041Z", "interface_count": 0, "virtual_disk_count": 0}, "snapshots": {"prechange": null, "postchange": {"created": "2026-04-20T17:21:42.313Z", "owner": null, "description": "", "comments": "", "local_context_data": null, "config_template": null, "site": null, "cluster": 6, "device": 4, "tenant": null, "platform": null, "name": "test-vm", "status": "staged", "start_on_boot": "off", "role": null, "primary_ip4": null, "primary_ip6": null, "vcpus": "2", "memory": 2048, "disk": null, "serial": "", "interface_count": 0, "virtual_disk_count": 0, "custom_fields": {"proxmox_node": "pve84", "proxmox_vm_type": "vm", "proxmox_vmid": null, "proxmox_vm_storage": "local-lvm", "proxmox_public_ssh_key": null, "proxmox_vm_templates": "8000"}, "tags": []}}, "context": {"active_branch": null}}

The output of the flask app :

(venv) okeur@debian:~/netbox-proxmox-automation/netbox-event-driven-automation-flask-app$ flask run -h 127.0.0.1 -p 8002 --debug
 * Debug mode: on
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on http://127.0.0.1:8002
Press CTRL+C to quit
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 505-015-638
127.0.0.1 - - [20/Apr/2026 19:39:27] "POST /netbox-proxmox-webhook/ HTTP/1.1" 400 -
127.0.0.1 - - [20/Apr/2026 19:39:27] "POST /netbox-proxmox-webhook/ HTTP/1.1" 400 -

Content of app_config.yml

netbox_webhook_name: "netbox-proxmox-webhook"

proxmox_api_config:
  api_host: 192.168.1.60
  api_port: 8006
  api_user: api_user@pam
  api_token_id: netbox-token
  api_token_secret: 8c2de7b4-8ed6-48bb-a2cd-.......
  verify_ssl: false
netbox_api_config:
  api_proto: http
  api_host: 127.0.0.1
  api_port: 80
  api_token: GU2iFVTscTR3xWYhp2BEw......... 
  verify_ssl: false

Thank you for your help !

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions