Devise Registration controller, every parameter seems to be removed

trying to override Devise Registration controller, following a couple examples online, but for some reason every parameter passed in seems to be removed. this is the controller.

class RegistrationsController < Devise::RegistrationsController

  skip_before_action :verify_authenticity_token, :only => :create

  def create

    p sign_up_params

    sign_up(resource_name, resource) if resource.persisted?

    render json: resource

this is the request

curl --location --request POST 'localhost:3000/buyer_users' \
--data-raw '{
    "buyer_users": {
        "account_id": "f362189f-a843-4c19-927a-845ce2cb0ad0"

we seems to be picking up params, but everything is removed

21:16:05 web.1         | Started POST "/buyer_users" for ::1 at 2022-05-06 21:16:05 -0700
21:16:05 web.1         | Processing by RegistrationsController#create as JSON
21:16:05 web.1         |   Parameters: {"{\n    \"buyer_users\": {\n        \"email\":\"\",\n        \"password\":\"123123123\",\n        \"site_id\":\"103eb514-8185-4820-8f16-3a9d082c5f60\",\n        \"account_id\": \"f362189f-a843-4c19-927a-845ce2cb0ad0\"\n    }\n}"=>"[FILTERED]"}
21:16:05 web.1         | {}
21:16:05 web.1         | Completed 200 OK in 7ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 1155)

routes are set up like this

  devise_for :buyer_users, defaults: { format: :json },
             controllers: {
               registrations: 'registrations'

EDIT: after debugging some more it seems that the entire parameter is taken in as 1 string.

How many English words
do you know?
Test your English vocabulary size, and measure
how many words do you know
Online Test
Powered by Examplum