Create a meeting session artifact
Requests asynchronous generation of one summary or action_items artifact. Each type requires its own request. Generation requires transcript content and configured inference and currently reads at most the first 10,000 segments, so exceptionally long transcripts may produce incomplete artifacts or fail model limits.
POST
/
meeting_sessions
/
{id}
/
artifacts
Create a meeting session artifact
curl --request POST \
--url https://api.telnyx.com/v2/meeting_sessions/{id}/artifacts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"type": "summary"
}
'import requests
url = "https://api.telnyx.com/v2/meeting_sessions/{id}/artifacts"
payload = { "type": "summary" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({type: 'summary'})
};
fetch('https://api.telnyx.com/v2/meeting_sessions/{id}/artifacts', 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://api.telnyx.com/v2/meeting_sessions/{id}/artifacts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'type' => 'summary'
]),
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://api.telnyx.com/v2/meeting_sessions/{id}/artifacts"
payload := strings.NewReader("{\n \"type\": \"summary\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.telnyx.com/v2/meeting_sessions/{id}/artifacts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"summary\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.telnyx.com/v2/meeting_sessions/{id}/artifacts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"type\": \"summary\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "<string>",
"session_id": "<string>",
"content": {
"text": "<string>"
},
"model_provenance": {
"model": "<string>",
"provider": "<string>"
},
"failure_reason": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
}{
"error": {
"code": "invalid_request",
"message": "request is invalid"
}
}{
"error": {
"code": "unauthorized",
"message": "invalid or missing credentials"
}
}{
"error": {
"code": "forbidden",
"message": "credential is not permitted"
}
}{
"error": {
"code": "not_found",
"message": "meeting session not found"
}
}{
"error": {
"code": "invalid_state",
"message": "only scheduled sessions can be updated"
}
}{
"error": {
"code": "invalid_request",
"message": "request body too large"
}
}{
"error": {
"code": "auth_overloaded",
"message": "authentication temporarily overloaded"
}
}{
"error": {
"code": "internal_error",
"message": "internal server error"
}
}{
"error": {
"code": "not_configured",
"message": "artifact generation is not configured"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Unique identifier for the meeting session.
Example:
"mtgsess_a1b2c3d4-e5f6-7890-abcd-ef1234567890"
Body
application/json
Type of artifact to generate from the session.
Available options:
summary, action_items Response
Artifact creation accepted and is being processed asynchronously.
Show child attributes
Show child attributes
Examples:
{
"id": "mtgart_550e8400-e29b-41d4-a716-446655440000",
"session_id": "mtgsess_550e8400-e29b-41d4-a716-446655440001",
"type": "action_items",
"status": "pending",
"content": null,
"model_provenance": null,
"failure_reason": null,
"created_at": "2025-01-15T10:30:00Z",
"updated_at": "2025-01-15T10:30:00Z"
}
{
"id": "mtgart_550e8400-e29b-41d4-a716-446655440002",
"session_id": "mtgsess_550e8400-e29b-41d4-a716-446655440001",
"type": "summary",
"status": "completed",
"content": {
"text": "The team reviewed project goals and agreed on next steps."
},
"model_provenance": {
"model": "example-model",
"provider": "example-provider"
},
"failure_reason": null,
"created_at": "2025-01-15T10:30:00Z",
"updated_at": "2025-01-15T10:31:00Z"
}
Was this page helpful?
⌘I
Create a meeting session artifact
curl --request POST \
--url https://api.telnyx.com/v2/meeting_sessions/{id}/artifacts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"type": "summary"
}
'import requests
url = "https://api.telnyx.com/v2/meeting_sessions/{id}/artifacts"
payload = { "type": "summary" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({type: 'summary'})
};
fetch('https://api.telnyx.com/v2/meeting_sessions/{id}/artifacts', 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://api.telnyx.com/v2/meeting_sessions/{id}/artifacts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'type' => 'summary'
]),
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://api.telnyx.com/v2/meeting_sessions/{id}/artifacts"
payload := strings.NewReader("{\n \"type\": \"summary\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.telnyx.com/v2/meeting_sessions/{id}/artifacts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"summary\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.telnyx.com/v2/meeting_sessions/{id}/artifacts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"type\": \"summary\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "<string>",
"session_id": "<string>",
"content": {
"text": "<string>"
},
"model_provenance": {
"model": "<string>",
"provider": "<string>"
},
"failure_reason": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
}{
"error": {
"code": "invalid_request",
"message": "request is invalid"
}
}{
"error": {
"code": "unauthorized",
"message": "invalid or missing credentials"
}
}{
"error": {
"code": "forbidden",
"message": "credential is not permitted"
}
}{
"error": {
"code": "not_found",
"message": "meeting session not found"
}
}{
"error": {
"code": "invalid_state",
"message": "only scheduled sessions can be updated"
}
}{
"error": {
"code": "invalid_request",
"message": "request body too large"
}
}{
"error": {
"code": "auth_overloaded",
"message": "authentication temporarily overloaded"
}
}{
"error": {
"code": "internal_error",
"message": "internal server error"
}
}{
"error": {
"code": "not_configured",
"message": "artifact generation is not configured"
}
}