Sending form value to API


From a form ("My Custom Doctype") I want to get the field value ("field_one"), sending them to server side which will then send them via requests to a remote site ("") to add the document in a doctype there ("Target Doctype").

In the js I use button to trigger the action and use frm.doc to get local values:

        function() {
                method: "customapp.api.my_trigger",  
                args: {
                    "doctype": "My Custom Doctype",
                    "name": frm.doc.title_field,
                    "fields": {
                        "field_one": "Name Of Field",
                callback: function(r) {
                    if (!r.exc) {
                        frappe.show_alert("action done")
            .fail(fail => console.log("failure", fail))
            .done(success => console.log("success", success.message));

and in server side py:

def my_trigger(doctype, name=None, fields=None):
        url = " Doctype"
        headers = {
            'Authorization': 'token key:secret',
            'Accept': 'application/json',
            'Content-Type': 'application/json',
        data = json.dumps({
            "field_one_remote": fields.field_one,

        r =, headers=headers, data=data)

But I get this error in the browser console and no document is created on the remote site:

Failed to load resource: the server responded with a status of 500 (INTERNAL SERVER ERROR) #pointing to the url of server side method

#also see that 
responseText: "{}"

But if I use explicit value on the requests’ data the document is created on the remote site with field_one_remote filled with value from requests data (instead of source form → from js):

data = json.dumps({
    "field_one_remote": "Value One",

So I don’t think it is the issue with my requests code, but on the variable and/or passing data from form → js → py.

Can anyone please tell me how to do this?
Thank you.

As I see you send a dictionary to python so instead of


maybe this


should work?


Yes thank you @johnwick for your pointer. It works.

And thanks a lot for @neerajvkn for the patient leading me to the solution.

Just a follow up question.
Isn’t this the normal structure for the args?