Skip to main content

Hello everybody,


I’m trying to use Airtable API for the first time with my arduino Yun and I encontered a problem with creating record.

When I use my program, I get the following error : "error":{“type”:“INVALID_REQUEST_MISSING_FIELDS”,“message”:“Could not find field “fields” in the request body”}}.`

I think it’s just a formatting problem but I can’t find where and I did find anything helpful on the internet (which make me think my problem is very idiot 😊 )


What can I do ? Thanks in advance !

You have not added the “fields” attribute to the body of your request.


Also the “body” parameter is expecting a JSON object.

Your curl request should look like


-d ‘{

“fields”: {

“gender”: “male”

}

}’


It can be adapted for any language though…


For more details, here is my code. The “GetEvent” function works great 🙂

#include <ArduinoJson.h>

#include <Process.h>

int Creer = 0;

String ApiKey = “XXX”;


void GetEvent(String IdEvent) {


Serial.println("-----");

Serial.println("‘GetEvent’ démarré");

Process r; // Create a process and call it ‘r’

r.begin(“curl”);

r.addParameter("-v");

//r.addParameter("-I");

r.addParameter(“https://api.airtable.com/v0/appfqkj7sz4JgkmZJ/Evenement/” + IdEvent + “?api_key=” + ApiKey);

r.run();

// A process output can be read with the stream methods

while (r.available() > 0) {

char c = r.read();

Serial.print©️;

}

Serial.println("‘LireEvent’ - rtour reçu");

//Ensure the last bit of data is sent.

Serial.flush();

delay(5000);

}


void CreateEvent(String NomEvnt, String TypeEvnt, int MesureHumidite)

{

Serial.println("-----");

Serial.println("‘CreateEvent’ démarré");

Process q;

q.begin(“curl”);

q.addParameter("-XPOST");

q.addParameter(“https://api.airtable.com/v0/appfqkj7sz4JgkmZJ/Evenement?api_key=” + ApiKey);

q.addParameter("-v");

q.addParameter(“Content-Type: application/json”);

q.addParameter("-d");

JsonEvenement = “{“fields”:{“Name”:”";

JsonEvenement += NomEvnt;

JsonEvenement += “”,“Type événement”:"";

JsonEvenement += TypeEvnt;

JsonEvenement += “”,“Mesure - humidité”:";

JsonEvenement += MesureHumidite;

JsonEvenement += “,“Pot”:”;

JsonEvenement += “+“recJiYcOz0lS8vOsN”]”;

JsonEvenement += “,“Sonde - Mesure”:”;

JsonEvenement += “c“rectLngEvcaZA9CR3”]”;

JsonEvenement += “,“Date / Heure”:”";

JsonEvenement += “2017-05-08T10:19:00.000Z”;

JsonEvenement += “”}";

//JsonEvenement += ““typecast”:”";

//JsonEvenement += “true”;

//JsonEvenement += “}’”;

q.addParameter(JsonEvenement);

Serial.println(JsonEvenement);

Serial.println();

q.run();

while (q.available() > 0) {


char d = q.read();

Serial.print(d);

}

Serial.println("‘CreateEvent’ - retour reçu");

//Ensure the last bit of data is sent.

Serial.flush();

delay(5000);

}


void setup() {

// Initialize Bridge

Bridge.begin();


// Initialize Serial

Serial.begin(9600);


// Wait until a Serial Monitor is connected.

while (!Serial);


// run various example processes

//runCurl();

CreateEvent(“Test646464”, “Mesure - Trop sec”, 140);

GetEvent(“recJZJ2TUM5huXBVq”);

}


void loop() {

// Do nothing here.

}


Hi everyone,

I have the similar problem, but I could not seem to figure it out. I am not using curl but I am using the npm airtable package with node.js.


Below is the error code I get from console.


Error: Request failed with status code 422

at createError (createError.js:17)

at settle (settle.js:19)

at XMLHttpRequest.handleLoad (xhr.js:78)


Airtable error: {“error”:{“type”:“INVALID_REQUEST_MISSING_FIELDS”,“message”:“Could not find field “fields” in the request body”}}


Here is my code.


Could somebody please explain me the error of my code? Thanks a lot!


var Airtable = require('airtable');
Airtable.configure({
endpointUrl: 'https://api.airtable.com',
apiKey: '####'
});
var base = Airtable.base('#####');
const axios = require('axios');
var airtable_write_endpoint = "https://api.airtable.com/v0/####v/Table%201?api_key=####";
var form = document.querySelector("#bize-ulasin");

axios.post(airtable_write_endpoint, {
"fields": {
"AdSoyad": document.getElementById("#Ad-Soyad"),
"Email": document.getElementById("#Email"),
"Telefon": document.getElementById("#Telefon"),
"Konu": document.getElementById("#Konu"),
"Mesaj": document.getElementById("#Mesaj"),
"Ortam": "Websitesi"
}
})
.then(function(response) {
console.log(response);
})
.catch(function(error) {
console.log(error);
});

<form action="https://api.airtable.com/v0/####/Table%201?api_key=####" id="bize-ulasin" method="POST">
<div className="form-group row">
<input type="text" name="AdSoyad" className="form-control" placeholder="Ad-Soyad*" id="Ad-Soyad" required/> </div>
div className="form-group row">

<input type="email" name="Email" className="form-control" placeholder="E-mail*" id="Email"

required/>

</div>
<div className="form-group row">

<input type="number" name="Telefon" className="form-control" placeholder="Telefon*" id="Telefon"
required/>

</div>
<div className="form-group row">
<label placeholder="Konu*"></label>

<select className="form-control" name="Konu" placeholder="" id="Konu">
<option>Soru</option>
<option>Öneri</option>
<option>Şikayet</option>
</select>

</div>
<div className="form-group row">

<textarea className="form-control" name="Mesaj" id="Mesaj" rows="3" placeholder="Mesaj"
required/>

</div>
<div className="form-group row">
<div className=" text-center">
<button type="submit" className="btn doggo-btn-scd doggo-color-main-bg">GÖNDER</button>
</div>
</div>
</form>

The solution to this is in the duplicate (post-with-alteryx-returning-validation-and-fields-not-found-errors):



set the header to be


Content-type: application/json


The solution to this is in the duplicate (post-with-alteryx-returning-validation-and-fields-not-found-errors):



set the header to be


Content-type: application/json


Thanks @Nathan_Harvey, I’d used ‘application-json’ instead of ‘applicaiton/json’ and was getting confused by the error message. You solved it for me!


Reply