Update an Event
curl --request PATCH \
--url https://public-api.stora.co/2025-09/timeline/events/{event_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"source": {
"id": "tsrc_126b43585fea94ad"
},
"template": {
"id": "aetpl_6b92d7693eb7e8e9"
},
"contact": {
"id": "con_9bc5a9d2d8302840"
},
"description": "Deal closed — contract signed",
"external": {
"id": "deal_98442",
"url": "https://crm.example.com/deals/98442"
},
"variables": {
"deal_name": "10x10 Unit — 12 months",
"previous_state": "Negotiation",
"new_state": "Closed Won"
}
}
'import requests
url = "https://public-api.stora.co/2025-09/timeline/events/{event_id}"
payload = {
"source": { "id": "tsrc_126b43585fea94ad" },
"template": { "id": "aetpl_6b92d7693eb7e8e9" },
"contact": { "id": "con_9bc5a9d2d8302840" },
"description": "Deal closed — contract signed",
"external": {
"id": "deal_98442",
"url": "https://crm.example.com/deals/98442"
},
"variables": {
"deal_name": "10x10 Unit — 12 months",
"previous_state": "Negotiation",
"new_state": "Closed Won"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
source: {id: 'tsrc_126b43585fea94ad'},
template: {id: 'aetpl_6b92d7693eb7e8e9'},
contact: {id: 'con_9bc5a9d2d8302840'},
description: 'Deal closed — contract signed',
external: {id: 'deal_98442', url: 'https://crm.example.com/deals/98442'},
variables: {
deal_name: '10x10 Unit — 12 months',
previous_state: 'Negotiation',
new_state: 'Closed Won'
}
})
};
fetch('https://public-api.stora.co/2025-09/timeline/events/{event_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://public-api.stora.co/2025-09/timeline/events/{event_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'source' => [
'id' => 'tsrc_126b43585fea94ad'
],
'template' => [
'id' => 'aetpl_6b92d7693eb7e8e9'
],
'contact' => [
'id' => 'con_9bc5a9d2d8302840'
],
'description' => 'Deal closed — contract signed',
'external' => [
'id' => 'deal_98442',
'url' => 'https://crm.example.com/deals/98442'
],
'variables' => [
'deal_name' => '10x10 Unit — 12 months',
'previous_state' => 'Negotiation',
'new_state' => 'Closed Won'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://public-api.stora.co/2025-09/timeline/events/{event_id}"
payload := strings.NewReader("{\n \"source\": {\n \"id\": \"tsrc_126b43585fea94ad\"\n },\n \"template\": {\n \"id\": \"aetpl_6b92d7693eb7e8e9\"\n },\n \"contact\": {\n \"id\": \"con_9bc5a9d2d8302840\"\n },\n \"description\": \"Deal closed — contract signed\",\n \"external\": {\n \"id\": \"deal_98442\",\n \"url\": \"https://crm.example.com/deals/98442\"\n },\n \"variables\": {\n \"deal_name\": \"10x10 Unit — 12 months\",\n \"previous_state\": \"Negotiation\",\n \"new_state\": \"Closed Won\"\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://public-api.stora.co/2025-09/timeline/events/{event_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"source\": {\n \"id\": \"tsrc_126b43585fea94ad\"\n },\n \"template\": {\n \"id\": \"aetpl_6b92d7693eb7e8e9\"\n },\n \"contact\": {\n \"id\": \"con_9bc5a9d2d8302840\"\n },\n \"description\": \"Deal closed — contract signed\",\n \"external\": {\n \"id\": \"deal_98442\",\n \"url\": \"https://crm.example.com/deals/98442\"\n },\n \"variables\": {\n \"deal_name\": \"10x10 Unit — 12 months\",\n \"previous_state\": \"Negotiation\",\n \"new_state\": \"Closed Won\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.stora.co/2025-09/timeline/events/{event_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"source\": {\n \"id\": \"tsrc_126b43585fea94ad\"\n },\n \"template\": {\n \"id\": \"aetpl_6b92d7693eb7e8e9\"\n },\n \"contact\": {\n \"id\": \"con_9bc5a9d2d8302840\"\n },\n \"description\": \"Deal closed — contract signed\",\n \"external\": {\n \"id\": \"deal_98442\",\n \"url\": \"https://crm.example.com/deals/98442\"\n },\n \"variables\": {\n \"deal_name\": \"10x10 Unit — 12 months\",\n \"previous_state\": \"Negotiation\",\n \"new_state\": \"Closed Won\"\n }\n}"
response = http.request(request)
puts response.read_body{
"event": {
"id": "aevt_33db60b5d4e7f7b3",
"contact": {
"id": "con_9bc5a9d2d8302840"
},
"created_at": "2025-02-22T14:41:00Z",
"creator": {
"id": "app_99b90b9d208a137b"
},
"description": "Deal closed — contract signed",
"external": {
"id": "deal_98442",
"url": "https://crm.example.com/deals/98442"
},
"invoice": null,
"site": null,
"source": {
"id": "tsrc_126b43585fea94ad"
},
"subscription": null,
"template": {
"id": "aetpl_6b92d7693eb7e8e9"
},
"tenancy": null,
"unit": null,
"unit_type": null,
"updated_at": "2025-02-22T14:41:00Z",
"variables": {
"deal_name": "10x10 Unit — 12 months",
"previous_state": "Negotiation",
"new_state": "Closed Won"
}
},
"meta": {
"request_id": "01563646-58c1-4607-8fe0-cae3e92c4477",
"curies": [
{
"name": "bo",
"href": "https://app.stora.test{rel}",
"templated": true,
"title": "Backoffice"
},
{
"name": "sf",
"href": "https://acme.stora.test{rel}",
"templated": true,
"title": "Storefront"
}
]
}
}Timeline / Events
Update an Event
Update an existing timeline event.
Required authorization scope: public.timeline_event:write
PATCH
/
2025-09
/
timeline
/
events
/
{event_id}
Update an Event
curl --request PATCH \
--url https://public-api.stora.co/2025-09/timeline/events/{event_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"source": {
"id": "tsrc_126b43585fea94ad"
},
"template": {
"id": "aetpl_6b92d7693eb7e8e9"
},
"contact": {
"id": "con_9bc5a9d2d8302840"
},
"description": "Deal closed — contract signed",
"external": {
"id": "deal_98442",
"url": "https://crm.example.com/deals/98442"
},
"variables": {
"deal_name": "10x10 Unit — 12 months",
"previous_state": "Negotiation",
"new_state": "Closed Won"
}
}
'import requests
url = "https://public-api.stora.co/2025-09/timeline/events/{event_id}"
payload = {
"source": { "id": "tsrc_126b43585fea94ad" },
"template": { "id": "aetpl_6b92d7693eb7e8e9" },
"contact": { "id": "con_9bc5a9d2d8302840" },
"description": "Deal closed — contract signed",
"external": {
"id": "deal_98442",
"url": "https://crm.example.com/deals/98442"
},
"variables": {
"deal_name": "10x10 Unit — 12 months",
"previous_state": "Negotiation",
"new_state": "Closed Won"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
source: {id: 'tsrc_126b43585fea94ad'},
template: {id: 'aetpl_6b92d7693eb7e8e9'},
contact: {id: 'con_9bc5a9d2d8302840'},
description: 'Deal closed — contract signed',
external: {id: 'deal_98442', url: 'https://crm.example.com/deals/98442'},
variables: {
deal_name: '10x10 Unit — 12 months',
previous_state: 'Negotiation',
new_state: 'Closed Won'
}
})
};
fetch('https://public-api.stora.co/2025-09/timeline/events/{event_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://public-api.stora.co/2025-09/timeline/events/{event_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'source' => [
'id' => 'tsrc_126b43585fea94ad'
],
'template' => [
'id' => 'aetpl_6b92d7693eb7e8e9'
],
'contact' => [
'id' => 'con_9bc5a9d2d8302840'
],
'description' => 'Deal closed — contract signed',
'external' => [
'id' => 'deal_98442',
'url' => 'https://crm.example.com/deals/98442'
],
'variables' => [
'deal_name' => '10x10 Unit — 12 months',
'previous_state' => 'Negotiation',
'new_state' => 'Closed Won'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://public-api.stora.co/2025-09/timeline/events/{event_id}"
payload := strings.NewReader("{\n \"source\": {\n \"id\": \"tsrc_126b43585fea94ad\"\n },\n \"template\": {\n \"id\": \"aetpl_6b92d7693eb7e8e9\"\n },\n \"contact\": {\n \"id\": \"con_9bc5a9d2d8302840\"\n },\n \"description\": \"Deal closed — contract signed\",\n \"external\": {\n \"id\": \"deal_98442\",\n \"url\": \"https://crm.example.com/deals/98442\"\n },\n \"variables\": {\n \"deal_name\": \"10x10 Unit — 12 months\",\n \"previous_state\": \"Negotiation\",\n \"new_state\": \"Closed Won\"\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://public-api.stora.co/2025-09/timeline/events/{event_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"source\": {\n \"id\": \"tsrc_126b43585fea94ad\"\n },\n \"template\": {\n \"id\": \"aetpl_6b92d7693eb7e8e9\"\n },\n \"contact\": {\n \"id\": \"con_9bc5a9d2d8302840\"\n },\n \"description\": \"Deal closed — contract signed\",\n \"external\": {\n \"id\": \"deal_98442\",\n \"url\": \"https://crm.example.com/deals/98442\"\n },\n \"variables\": {\n \"deal_name\": \"10x10 Unit — 12 months\",\n \"previous_state\": \"Negotiation\",\n \"new_state\": \"Closed Won\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.stora.co/2025-09/timeline/events/{event_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"source\": {\n \"id\": \"tsrc_126b43585fea94ad\"\n },\n \"template\": {\n \"id\": \"aetpl_6b92d7693eb7e8e9\"\n },\n \"contact\": {\n \"id\": \"con_9bc5a9d2d8302840\"\n },\n \"description\": \"Deal closed — contract signed\",\n \"external\": {\n \"id\": \"deal_98442\",\n \"url\": \"https://crm.example.com/deals/98442\"\n },\n \"variables\": {\n \"deal_name\": \"10x10 Unit — 12 months\",\n \"previous_state\": \"Negotiation\",\n \"new_state\": \"Closed Won\"\n }\n}"
response = http.request(request)
puts response.read_body{
"event": {
"id": "aevt_33db60b5d4e7f7b3",
"contact": {
"id": "con_9bc5a9d2d8302840"
},
"created_at": "2025-02-22T14:41:00Z",
"creator": {
"id": "app_99b90b9d208a137b"
},
"description": "Deal closed — contract signed",
"external": {
"id": "deal_98442",
"url": "https://crm.example.com/deals/98442"
},
"invoice": null,
"site": null,
"source": {
"id": "tsrc_126b43585fea94ad"
},
"subscription": null,
"template": {
"id": "aetpl_6b92d7693eb7e8e9"
},
"tenancy": null,
"unit": null,
"unit_type": null,
"updated_at": "2025-02-22T14:41:00Z",
"variables": {
"deal_name": "10x10 Unit — 12 months",
"previous_state": "Negotiation",
"new_state": "Closed Won"
}
},
"meta": {
"request_id": "01563646-58c1-4607-8fe0-cae3e92c4477",
"curies": [
{
"name": "bo",
"href": "https://app.stora.test{rel}",
"templated": true,
"title": "Backoffice"
},
{
"name": "sf",
"href": "https://acme.stora.test{rel}",
"templated": true,
"title": "Storefront"
}
]
}
}Authorizations
BearerOAuth2
Bearer Token necessary to use API
Path Parameters
The ID of the timeline event to retrieve
Query Parameters
This endpoint supports expandable responses. For more, see the documentation page.
Body
application/json
Update Event Request
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?
⌘I