# Malformed action/metadata line \[1\], expected START\_OBJECT but found \[START\_ARRAY\]

**URL:** <https://discuss.elastic.co/t/malformed-action-metadata-line-1-expected-start-object-but-found-start-array/315528>\
**Category:** Elasticsearch\
**Created:** [September 30, 2022, 8:10am UTC](https://discuss.elastic.co/t/malformed-action-metadata-line-1-expected-start-object-but-found-start-array/315528 "2022-09-30T08:10:08Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Hemabh\_Ravee\_Fox](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/hemabh_ravee_fox/32/111494_2.png) [@Hemabh\_Ravee\_Fox](https://discuss.elastic.co/u/Hemabh_Ravee_Fox)\
**Post date:** [September 30, 2022, 8:10am UTC](https://discuss.elastic.co/t/malformed-action-metadata-line-1-expected-start-object-but-found-start-array/315528/1 "2022-09-30T08:10:08Z")

</div>

I've been trying to use the bulk api to insert a large number of documents to an index.  
I followed the documentation and came up with the following API call -

```auto
POST https://localhost:9200/index/_bulk
[
    {"create":{}},
    { "fileName": "filename1", "data":"massive string text data here" },
    {"create":{}},
    { "fileName": "filename2", "data":"massive string text data here" }
]

```

But I'm getting the following response -

```auto
{
    "error": {
        "root_cause": [
            {
                "type": "illegal_argument_exception",
                "reason": "Malformed action/metadata line [1], expected START_OBJECT but found [START_ARRAY]"
            }
        ],
        "type": "illegal_argument_exception",
        "reason": "Malformed action/metadata line [1], expected START_OBJECT but found [START_ARRAY]"
    },
    "status": 400
}

```

I can't seem to figure out what I'm doing wrong here.

---

<div class="post-metadata">

**Author:** ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)\
**Post date:** [September 30, 2022, 8:48am UTC](https://discuss.elastic.co/t/malformed-action-metadata-line-1-expected-start-object-but-found-start-array/315528/2 "2022-09-30T08:48:43Z")

</div>

Have a look at the docs around the bulk format. It is basically a set of lines, each holding a complete JSON object. You have array brackets at the start and end , which is incorrect. Have never used it through the Kibana dev console so am not sure if any special formatting is required.

---

<div class="post-metadata">

**Author:** ![Hemabh\_Ravee\_Fox](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/hemabh_ravee_fox/32/111494_2.png) [@Hemabh\_Ravee\_Fox](https://discuss.elastic.co/u/Hemabh_Ravee_Fox)\
**Post date:** [September 30, 2022, 9:24am UTC](https://discuss.elastic.co/t/malformed-action-metadata-line-1-expected-start-object-but-found-start-array/315528/3 "2022-09-30T09:24:13Z")

</div>

I can't seem to find any documentation for generic api calls. Only for the language specific clients.

> **[Bulk API | Elasticsearch Guide \[8.4\] | Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html)**

This link is also showcasing using array brackets to combine the multiple documents that we want to create in Elasticsearch. Also, if I remove the array brackets, the content would no longer be a valid JSON.

---

<div class="post-metadata">

**Author:** ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)\
**Post date:** [September 30, 2022, 9:36am UTC](https://discuss.elastic.co/t/malformed-action-metadata-line-1-expected-start-object-but-found-start-array/315528/4 "2022-09-30T09:36:03Z")

</div>

There are no square brackets in any of the requests in those docs. This is what it is supposed to look like.

```auto
POST _bulk
{ "index" : { "_index" : "test", "_id" : "1" } }
{ "field1" : "value1" }
{ "delete" : { "_index" : "test", "_id" : "2" } }
{ "create" : { "_index" : "test", "_id" : "3" } }
{ "field1" : "value3" }
{ "update" : {"_id" : "1", "_index" : "test"} }
{ "doc" : {"field2" : "value2"} }

```

---

<div class="post-metadata">

**Author:** ![Hemabh\_Ravee\_Fox](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/hemabh_ravee_fox/32/111494_2.png) [@Hemabh\_Ravee\_Fox](https://discuss.elastic.co/u/Hemabh_Ravee_Fox)\
**Post date:** [September 30, 2022, 10:43am UTC](https://discuss.elastic.co/t/malformed-action-metadata-line-1-expected-start-object-but-found-start-array/315528/5 "2022-09-30T10:43:55Z")

</div>

Okay so I just realised I was supposed to try this out from the kibana console. I was just making API calls using postman. This syntax worked from the kibana console. Thanks!

---

<div class="post-metadata">

**Author:** ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)\
**Post date:** [September 30, 2022, 10:56am UTC](https://discuss.elastic.co/t/malformed-action-metadata-line-1-expected-start-object-but-found-start-array/315528/6 "2022-09-30T10:56:03Z")

</div>

The same syntax applies if you send requests through Postman.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [October 28, 2022, 10:56am UTC](https://discuss.elastic.co/t/malformed-action-metadata-line-1-expected-start-object-but-found-start-array/315528/7 "2022-10-28T10:56:28Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
