curl --request POST \
--url https://api.promptlayer.com/api/public/v2/tables/{table_id}/sheets/{sheet_id}/imports/request-logs \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"filter_group": {
"filters": [
{
"value": "<string>",
"nested_key": "<string>"
}
],
"logic": "AND"
},
"q": "<string>",
"metadata_cost_breakdown_key": "<string>",
"operation_id": "<string>",
"request_log_ids": [
2
],
"variables_to_parse": [],
"include_fields": [
"<string>"
],
"limit": 25000
}
'import requests
url = "https://api.promptlayer.com/api/public/v2/tables/{table_id}/sheets/{sheet_id}/imports/request-logs"
payload = {
"filter_group": {
"filters": [
{
"value": "<string>",
"nested_key": "<string>"
}
],
"logic": "AND"
},
"q": "<string>",
"metadata_cost_breakdown_key": "<string>",
"operation_id": "<string>",
"request_log_ids": [2],
"variables_to_parse": [],
"include_fields": ["<string>"],
"limit": 25000
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
filter_group: {filters: [{value: '<string>', nested_key: '<string>'}], logic: 'AND'},
q: '<string>',
metadata_cost_breakdown_key: '<string>',
operation_id: '<string>',
request_log_ids: [2],
variables_to_parse: [],
include_fields: ['<string>'],
limit: 25000
})
};
fetch('https://api.promptlayer.com/api/public/v2/tables/{table_id}/sheets/{sheet_id}/imports/request-logs', 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.promptlayer.com/api/public/v2/tables/{table_id}/sheets/{sheet_id}/imports/request-logs",
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([
'filter_group' => [
'filters' => [
[
'value' => '<string>',
'nested_key' => '<string>'
]
],
'logic' => 'AND'
],
'q' => '<string>',
'metadata_cost_breakdown_key' => '<string>',
'operation_id' => '<string>',
'request_log_ids' => [
2
],
'variables_to_parse' => [
],
'include_fields' => [
'<string>'
],
'limit' => 25000
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$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.promptlayer.com/api/public/v2/tables/{table_id}/sheets/{sheet_id}/imports/request-logs"
payload := strings.NewReader("{\n \"filter_group\": {\n \"filters\": [\n {\n \"value\": \"<string>\",\n \"nested_key\": \"<string>\"\n }\n ],\n \"logic\": \"AND\"\n },\n \"q\": \"<string>\",\n \"metadata_cost_breakdown_key\": \"<string>\",\n \"operation_id\": \"<string>\",\n \"request_log_ids\": [\n 2\n ],\n \"variables_to_parse\": [],\n \"include_fields\": [\n \"<string>\"\n ],\n \"limit\": 25000\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
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.promptlayer.com/api/public/v2/tables/{table_id}/sheets/{sheet_id}/imports/request-logs")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"filter_group\": {\n \"filters\": [\n {\n \"value\": \"<string>\",\n \"nested_key\": \"<string>\"\n }\n ],\n \"logic\": \"AND\"\n },\n \"q\": \"<string>\",\n \"metadata_cost_breakdown_key\": \"<string>\",\n \"operation_id\": \"<string>\",\n \"request_log_ids\": [\n 2\n ],\n \"variables_to_parse\": [],\n \"include_fields\": [\n \"<string>\"\n ],\n \"limit\": 25000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.promptlayer.com/api/public/v2/tables/{table_id}/sheets/{sheet_id}/imports/request-logs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"filter_group\": {\n \"filters\": [\n {\n \"value\": \"<string>\",\n \"nested_key\": \"<string>\"\n }\n ],\n \"logic\": \"AND\"\n },\n \"q\": \"<string>\",\n \"metadata_cost_breakdown_key\": \"<string>\",\n \"operation_id\": \"<string>\",\n \"request_log_ids\": [\n 2\n ],\n \"variables_to_parse\": [],\n \"include_fields\": [\n \"<string>\"\n ],\n \"limit\": 25000\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>",
"operation_id": "<string>",
"operation": {
"operation_id": "<string>",
"source": "file",
"status": "pending",
"progress": 123,
"message": "<string>",
"rows_added": 123,
"row_count": 123,
"file_name": "<string>",
"error_message": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"status_url": "<string>"
}{
"success": false,
"message": "<string>",
"error": "<string>"
}{
"success": false,
"message": "<string>",
"error": "<string>"
}{
"success": false,
"message": "<string>",
"error": "<string>"
}Create Table Sheet Request Log Import
Import request history into an existing Table sheet.
curl --request POST \
--url https://api.promptlayer.com/api/public/v2/tables/{table_id}/sheets/{sheet_id}/imports/request-logs \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"filter_group": {
"filters": [
{
"value": "<string>",
"nested_key": "<string>"
}
],
"logic": "AND"
},
"q": "<string>",
"metadata_cost_breakdown_key": "<string>",
"operation_id": "<string>",
"request_log_ids": [
2
],
"variables_to_parse": [],
"include_fields": [
"<string>"
],
"limit": 25000
}
'import requests
url = "https://api.promptlayer.com/api/public/v2/tables/{table_id}/sheets/{sheet_id}/imports/request-logs"
payload = {
"filter_group": {
"filters": [
{
"value": "<string>",
"nested_key": "<string>"
}
],
"logic": "AND"
},
"q": "<string>",
"metadata_cost_breakdown_key": "<string>",
"operation_id": "<string>",
"request_log_ids": [2],
"variables_to_parse": [],
"include_fields": ["<string>"],
"limit": 25000
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
filter_group: {filters: [{value: '<string>', nested_key: '<string>'}], logic: 'AND'},
q: '<string>',
metadata_cost_breakdown_key: '<string>',
operation_id: '<string>',
request_log_ids: [2],
variables_to_parse: [],
include_fields: ['<string>'],
limit: 25000
})
};
fetch('https://api.promptlayer.com/api/public/v2/tables/{table_id}/sheets/{sheet_id}/imports/request-logs', 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.promptlayer.com/api/public/v2/tables/{table_id}/sheets/{sheet_id}/imports/request-logs",
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([
'filter_group' => [
'filters' => [
[
'value' => '<string>',
'nested_key' => '<string>'
]
],
'logic' => 'AND'
],
'q' => '<string>',
'metadata_cost_breakdown_key' => '<string>',
'operation_id' => '<string>',
'request_log_ids' => [
2
],
'variables_to_parse' => [
],
'include_fields' => [
'<string>'
],
'limit' => 25000
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$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.promptlayer.com/api/public/v2/tables/{table_id}/sheets/{sheet_id}/imports/request-logs"
payload := strings.NewReader("{\n \"filter_group\": {\n \"filters\": [\n {\n \"value\": \"<string>\",\n \"nested_key\": \"<string>\"\n }\n ],\n \"logic\": \"AND\"\n },\n \"q\": \"<string>\",\n \"metadata_cost_breakdown_key\": \"<string>\",\n \"operation_id\": \"<string>\",\n \"request_log_ids\": [\n 2\n ],\n \"variables_to_parse\": [],\n \"include_fields\": [\n \"<string>\"\n ],\n \"limit\": 25000\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
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.promptlayer.com/api/public/v2/tables/{table_id}/sheets/{sheet_id}/imports/request-logs")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"filter_group\": {\n \"filters\": [\n {\n \"value\": \"<string>\",\n \"nested_key\": \"<string>\"\n }\n ],\n \"logic\": \"AND\"\n },\n \"q\": \"<string>\",\n \"metadata_cost_breakdown_key\": \"<string>\",\n \"operation_id\": \"<string>\",\n \"request_log_ids\": [\n 2\n ],\n \"variables_to_parse\": [],\n \"include_fields\": [\n \"<string>\"\n ],\n \"limit\": 25000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.promptlayer.com/api/public/v2/tables/{table_id}/sheets/{sheet_id}/imports/request-logs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"filter_group\": {\n \"filters\": [\n {\n \"value\": \"<string>\",\n \"nested_key\": \"<string>\"\n }\n ],\n \"logic\": \"AND\"\n },\n \"q\": \"<string>\",\n \"metadata_cost_breakdown_key\": \"<string>\",\n \"operation_id\": \"<string>\",\n \"request_log_ids\": [\n 2\n ],\n \"variables_to_parse\": [],\n \"include_fields\": [\n \"<string>\"\n ],\n \"limit\": 25000\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>",
"operation_id": "<string>",
"operation": {
"operation_id": "<string>",
"source": "file",
"status": "pending",
"progress": 123,
"message": "<string>",
"rows_added": 123,
"row_count": 123,
"file_name": "<string>",
"error_message": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"status_url": "<string>"
}{
"success": false,
"message": "<string>",
"error": "<string>"
}{
"success": false,
"message": "<string>",
"error": "<string>"
}{
"success": false,
"message": "<string>",
"error": "<string>"
}request_log_ids or a request-log filter_group. You can also pass variables_to_parse, include_fields, and limit to control imported columns and rows. request_log_ids and limit support up to 50,000 rows.
Pass operation_id when you want a stable client-side identifier for polling and webhook correlation. If omitted, PromptLayer generates one.
The response returns an operation_id and status_url for polling with Get Table Sheet Import Operation.Authorizations
Headers
Your PromptLayer API key. The key's workspace scopes table resources for this request.
Body
Import request history into an existing Table sheet. Provide either request_log_ids or filter_group.
Nested filter group with AND/OR logic. Use this for complex queries.
Show child attributes
Show child attributes
Free-text request-log search query applied with filter_group.
Field to sort matching request logs before import.
request_start_time, input_tokens, output_tokens, cost, latency_ms, status Sort direction. Must be provided together with sort_by.
asc, desc Request-log query metadata key used by shared request-log query payloads.
Optional client-provided operation ID. A UUID is generated when omitted.
Specific request log IDs to import.
1 - 50000 elementsx >= 1Input variable names to parse from matching request logs.
Additional request log fields to include as columns.
Maximum number of matching request logs to import.
1 <= x <= 50000Was this page helpful?

