Case templates: Create
Description
Create a case template in a team. Template names must be unique within the team.
See the Get Cases API to learn more about cases.
Request
HTTP Method: POST
| Parameter | Description |
|---|---|
| team_id | The ID of the team to create the case template in. |
| name | The case template name. |
| emoji | Optional The emoji associated with the case template, as a shortcode such as :mag:. A random emoji is assigned when omitted. |
| options | Optional The case template configuration. See Options fields below. |
Options fields
The options object describes the case that gets created from this template.
Formulas are stored as written and evaluated when a case is created from the template, against the event that triggered the case creation. Pass them as raw formula strings wrapped in quotes rather than pill values. Use the Preview case template API to check the resolved shape of a template - it returns formulas unevaluated, since there is no triggering event to evaluate them against.
| Parameter | Description |
|---|---|
| name | Optional The name given to cases created from this template. Supports formulas and field mentions. |
| description | Optional The description given to cases created from this template. Supports markdown, formulas and field mentions. |
| status | Optional The status given to cases created from this template - open or closed. |
| priority | Optional The priority given to cases created from this template - critical, high, medium, low or info. |
| sub_status_id | Optional The ID of the case sub-status given to cases created from this template. |
| assignee_emails | Optional An array of user email addresses to assign. Emails that do not match a user on the team are dropped. |
| tag_names | Optional An array of tag name strings. Tags are found or created on the team. |
| team_case_buttons | Optional An array of case action objects for downstream actions associated with the case. Each object has button_type (one of webhook, page, chat, story, or app), url, label (tooltip), and button_text (text shown on the button). |
| tasks | Optional An array of task objects. Each object has a description and an optional assignee_emails array. |
| closure_conditions | Optional An array of closure requirements in the form of a set of formula rules that need to evaluate to true to enable the closing of a case. Each entry has a name and a formula. N.B. The formula key should be passed as a raw formula wrapped in strings as opposed to a pill value. |
| blocks | Optional An array of block objects. See block parameters below. |
| field_values | Optional An object containing a key-value pair of field IDs and the values those fields are pre-filled with. Field IDs provided must exist within the team. |
| metadata | Optional Case related metadata represented as key-value pairs. |
Block parameters
Each object in the blocks array accepts:
| Parameter | Description |
|---|---|
| title | The title of the block. |
| block_type | The type of block to create - options: note, file, linked_cases, metadata, closure_conditions, case_action, block_group and html. |
| elements | An array of elements to add to the block. Required but may be empty for block types that do not support elements. |
| hidden | Optional A boolean (true or false). |
| guid | Optional A client-generated identifier for the block, used for referencing in parent_block_guid. |
| parent_block_guid | Optional The guid of a block_group block within the same request to nest this block inside. |
Note element parameters
| Parameter | Description |
|---|---|
| content | The content of the note. |
| note_type | The type of note - "html" for html blocks and "text" for any others. |
| color | Optional The color of the note - options: white, gold, magenta, green, blue, red, mint, indigo. |
| sensitive | Optional A boolean (true or false) indicating whether the element holds sensitive content. |
Sample request
curl -X POST \
https://<tenant-domain>/api/v1/case_templates \
-H 'content-type: application/json' \
-H 'Authorization: Bearer <<CREDENTIAL.tines_api_key>>' \
-d '{
"team_id": 2,
"name": "Phishing investigation",
"emoji": ":fishing_pole_and_fish:",
"options": {
"name": "Phishing report for <<recipient>>",
"description": "Investigate the reported email",
"priority": "high",
"tag_names": ["phishing", "email"],
"assignee_emails": ["analyst@example.com"],
"tasks": [
{
"description": "Review headers and attachments",
"assignee_emails": ["analyst@example.com"]
}
],
"closure_conditions": [
{
"name": "has at least 1 assignee",
"formula": "=SIZE(team_case.assignees) > 0"
}
],
"metadata": {
"source": "user_report"
}
}
}'
Response
A successful request will return a JSON object representing the created case template.
Field description
| Parameter | Description |
|---|---|
| id | The case template ID. |
| name | The case template name. |
| emoji | The emoji associated with the case template. |
| team | The team the case template belongs to - ID and name. |
| created_at | ISO 8601 timestamp representing the date and time the case template was created. |
| updated_at | ISO 8601 timestamp representing the date and time the case template was updated. |
Sample response
{
"id": 12,
"name": "Phishing investigation",
"emoji": ":fishing_pole_and_fish:",
"team": {
"id": 2,
"name": "Security"
},
"created_at": "2026-05-25T10:00:00Z",
"updated_at": "2026-05-25T10:00:00Z"
}