---
title: "CRUD Create | Docs"
description: "ZingGrid has a predefined set of default behavior for CRUD functionality. This CRUD functionality can be extended or overridden."
url: https://www.zinggrid.com/docs/crud/create
---
```text
experiment_id: web-retrieval-v1
fixture_id: /docs/crud/create.md
mode: provenance
representation: markdown
origin_response_id: 594d9010bdab82b3cab9b3c2c56c6905
version: 2026-10-21
version_created_at_utc: 2026-10-21T20:42:35.660Z
version_nonce: 6d0361e20bdf237811d0bf920b7e56f3
generated_at_utc: 2026-10-25T01:55:12.295Z
response_nonce: f014c9fb4710e040d32286ef1e026aa7
```
# CRUD Create
ZingGrid has default behavior for **create** actions. There are expected inputs and outputs for a **create** action. You can, of course, extend or override this default behavior.
## CRUD Defaults
The default send and return values for CRUD actions are:
CRUD Defaults
| Action | Type | Response Codes: Success | Response Codes: Error | Returns |
| --- | --- | --- | --- | --- |
| Create row | POST | 200 - 299 | \>= 400 | **Expected Return Contents**
• Entire dataset
• Single record **or** ID of record |
| Read data | GET | 200 - 299 | \>= 400 | Expects a JSON or dataset response. |
| Update row | PUT | 200 - 299 | \>= 400 | Response is not read. |
| Update cell | PATCH | 200 - 299 | \>= 400 | Response is not read. |
| Delete row | DELETE | 200 - 299 | \>= 400 | Response is not read. |
## Override Defaults
If you need to override any default **create** actions, you can use `createOptions` to adjust all actions against the initial and subsequent fetches from the grid. [You can read more about available `createOptions` values here](https://www.zinggrid.com/docs/api-zg-param#zg-param-name-createOptions).
> **Note:** Remember, since `value` is an HTML attribute, it must be in valid JSON format and stringified.
Here is a list of available `createOptions`:
```javascript
{
// to change the read method of the action to POST
"method": "POST",
// takes a JSON packet to be sent to the server in place of the action
// in this case user_id is always one.
"body": {user_id:1},
"requestType": "application/json",
"exclude": "",
"headers": {"Authorization": "Basic super-secrete-key"},
"mode": "no-cors",
"responseType": "",
"src": "",
"queryString": ""
}
```
The body value can be a static JSON, like so:
```html
```
The body value can also be a function which returns an object, like so:
```html
```
```javascript
// function returns an object
function _fncStringReference(record) {
return {
// to change the read method of the action to POST
method: 'POST',
// takes a JSON packet to be sent to the server in place of the action
// in this case user_id is always one.
body: {user_id:1},
requestType: 'application/json',
exclude: '',
headers: {"Authorization": "Basic super-secrete-key"},
mode: 'no-cors',
responseType: '',
src: '',
queryString: ''
}
}
```