**Source URL:** https://limited.veevavault.dev/commercial/vault-api/api-reference/22.1/vault-objects/delete-object-records.md

# Delete Object Records



Delete Object Records in bulk. Admins can also define special deletion rules for objects, which affects how Vault behaves when you attempt to delete an object record. Learn more about [limitations on object record deletion in Vault Help](https://platform.veevavault.help/en/lr/18769).

If you need to delete a parent record along with all of its children and grandchildren, use the [Cascade Delete](/vault-api/api-reference/22.1/vault-objects/cascade-delete-object-record) endpoint.

Note that you cannot use this API to delete `user__sys` records. Use the [Update Object Records](#Update_Object_Records) endpoint to set the `status__v` field to `inactive`.

* The maximum input file size is 1GB.

* The values in the input must be UTF-8 encoded.

* CSVs must follow the standard RFC 4180 format, with some [exceptions](/vault-api/references/csv-rfc-deviations).

* The maximum batch size is 500.

<Endpoint path="/api/{version}/vobjects/{object_name}" method="DELETE"></Endpoint>

## Headers {#headers}

<FieldTable>
| Name | Description |
| --- | --- |
| `Content-Type` | `text/csv` or `application/json` |
| `Accept` | `application/json` (default) or `text/csv` |
</FieldTable>

## URI Path Parameters {#uri-path-parameters}

<FieldTable>
| Name | Description |
| --- | --- |
| `{object_name}` | The name of the object, for example, `product__v`. |
</FieldTable>

## Body Parameters {#body-parameters}

Upload parameters as a JSON or CSV file.

<Aside>Some HTTP clients do not support `DELETE` requests with a
body. As a workaround for these cases, you can simulate this request using the
`POST` method with the `_method=DELETE` query parameter.

</Aside>
<FieldTable>
| Name | Description |
| --- | --- |
| `id` | The system-assigned object record ID to delete. |
| `external_id__v` | Optional: Instead of `id`, you can use this user-defined document external ID. |
</FieldTable>

## Query Parameters {#query-parameters}

<FieldTable>
| Name | Description |
| --- | --- |
| `idParam` | If you're identifying objects in your input by a unique field, add `idParam={fieldname}` to the request endpoint. You can use any object field which has `unique` set to `true` in the object metadata, with the exception of picklists. For example, `idParam=external_id__v`. |
</FieldTable>
Admin may set other standard or custom object fields to required. Use the Object Metadata API to retrieve all fields configured on objects. You can update any object field with `editable: true`.

## Request {#request}

<CodeExample title="">
```
curl -X DELETE -H "Authorization: {SESSION_ID}" \
-H "Content-Type: text/csv" \
-H "Accept: text/csv" \
--data-binary @"C:\Vault\Object Records\delete_object_records.csv" \
https://myvault.veevavault.com/api/v14.0/vobjects/product__v

```
</CodeExample>

## Response {#response}

<CodeExample title="">
```
{
    "responseStatus": "SUCCESS",
    "data": [
        {
            "responseStatus": "SUCCESS"
        },
        {
            "responseStatus": "SUCCESS"
        },
        {
            "responseStatus": "FAILURE",
            "errors": [
                {
                    "type": "INVALID_DATA",
                    "message": "Error message describing why this object record was not deleted."
                }
            ]
        }
    ]
}

```
</CodeExample>

---

**Previous:** [Update Object Records](/commercial/vault-api/api-reference/22.1/vault-objects/update-object-records)  
**Next:** [Cascade Delete Object Record](/commercial/vault-api/api-reference/22.1/vault-objects/cascade-delete-object-record)