[SalesForce] Marketing Cloud REST API gives Bad Request 400 Error While Inserting record into the Data Extension

I am trying to insert the record into the data extension. I am successfully fetching access token by sending client ID and Client Secret. However, when I try to call the API to insert the record into the DE, I am receiving

400 Bad Request Error.

Below is the code I am using

     HttpRequest req = new HttpRequest();  
     JSONGenerator gen = JSON.createGenerator(true);
     req.setTimeout(120000);
     req.setMethod('POST');             
     req.setEndpoint('https://www.exacttargetapis.com/data/v1/async/dataextensions/NikhilTest_0:keys/rows');
     req.setHeader('Content-Type', 'application/json');
     req.setHeader('Host', 'https://www.exacttargetapis.com');
     req.setHeader('Authorization', 'Bearer' + ' ' + token);
     gen.writeStartObject();
     gen.writeFieldName('items');
     gen.writeStartArray();
     gen.writeStartObject();
     gen.writeStringField('FirstName','Nikhil');
     gen.writeStringField('LastName','Khandare');
     gen.writeStringField('Id','12345');
     gen.writeEndObject();
     gen.writeEndArray();
     gen.writeEndObject();        
     String requestBody = gen.getAsString();
     System.debug('Request:' + requestBody );
     req.setBody(requestBody); 
     System.debug(requestBody );
     Http http = new Http(); 
     HTTPResponse res = new  HTTPResponse(); 
     res = http.send(req); 
     System.debug('Response:' + res);

In the above code, NikhilTest_0 is the external key of DE and FirstName, LastName and ID are the fields of DE.

Below is the body of JSON request I am sending.

{
  "items" : [ {
    "FirstName" : "Nikhil",
    "LastName" : "Khandare",
    "Id" : "12345"
  } ]
}

Please let me know what is causing the error I mentioned.