Records: Create

Description

Create a new record.

POST /api/v1/records is not idempotent — every successful call creates a new row, so a blind retry after a timeout or network error can produce a duplicate. See Best practices for retry and rate-limit guidance.

See the Get Records API to learn more about records.

Request

HTTP Method: POST

Query parameter Description
resolve_artifacts Optional Set to the string "false" to have Artifacts (large text) fields in the response return a reference object containing the artifact ID instead of the full contents. Defaults to inlining the contents. See the Get Records API for the reference-object shape.
Body parameter Description
record_type_id Specifies the id of the record type for which the record is being created.
field_values An array of { field_id, value } objects. Each object must include a field_id, which identifies the record field, and a value, specifying the data to be assigned to that field for the newly created record.
case_ids Optional An array of case IDs to link to this record. At most 5 per request.
parent_record_id Optional The ID of the record to link as this record's parent.
test_mode Optional Set to true (JSON boolean) or "true" (string) to create the record in test mode. Defaults to false.

Timestamps. TIMESTAMP field values are stored in UTC, and any timezone offset you send is dropped without being converted — for example 2026-08-13T19:08:15-04:00 is stored as 2026-08-13 19:08:15, not the equivalent UTC instant 2026-08-13 23:08:15. Convert timestamps to UTC before sending them (send 2026-08-13T23:08:15Z). See Best practices for more on record timestamps.

curl -X POST \
  "https://<tenant-domain>/api/v1/records?resolve_artifacts=false" \
  -H 'content-type: application/json' \
  -H 'Authorization: Bearer <<CREDENTIAL.tines_api_key>>' \
  -d '{
      "record_type_id": "1",
      "field_values": [{ "field_id": "1", "value": "Test" }],
      "case_ids": ["14","19"]
    }'

Response

A successful request will return a JSON object representing the created record.

Field description

Parameter Description
id The record ID.
record_type The record type.
test_mode Boolean indicator of whether the record was created in test mode.
records The captured data for the given instance of the record type.
created_at ISO 8601 timestamp representing when the record was created.
updated_at ISO 8601 timestamp representing when the record was last updated.
case_ids The case IDs linked to this record.
parent_record { "id": <parent_record_id> } when the record has a parent, otherwise null.
result The captured data in key-value format.

Sample response

The records and result collections always include the built-in default fields alongside any user fields you set, even if you didn't pass a value for them.

{
  "id": 1973,
  "created_at": "2024-06-25T14:41:23Z",
  "updated_at": "2024-06-25T14:41:23Z",
  "record_type": {
    "id": 1097,
    "name": "Tines Sample Alert"
  },
  "test_mode": false,
  "records": [
    {
      "field_id": "5999",
      "name": "Affected user email",
      "value": "john@example.com"
    },
    { "field_id": "5998", "name": "Source", "value": "Login alerts" },
    { "field_id": "5997", "name": "Description", "value": "Suspicious login" },
    { "field_id": "5996", "name": "Severity", "value": "High" },
    { "field_id": "5995", "name": "Record ID", "value": 1973 },
    { "field_id": "5994", "name": "Story name", "value": null },
    { "field_id": "5991", "name": "Timestamp", "value": "2024-06-25 15:41:23" },
    { "field_id": "5990", "name": "Updated at", "value": "2024-06-25 15:41:23" }
  ],
  "case_ids": [14, 19],
  "parent_record": null,
  "result": {
    "id": 1973,
    "updated_at": "2024-06-25T14:41:23Z",
    "case_ids": [14, 19],
    "Affected user email": "john@example.com",
    "Source": "Login alerts",
    "Description": "Suspicious login",
    "Severity": "High",
    "Record ID": 1973,
    "Story name": null,
    "Timestamp": "2024-06-25 15:41:23",
    "Updated at": "2024-06-25 15:41:23"
  }
}
Was this helpful?