Skip to main content
Logs export feature is only available on the enterprise plan. For more info reach us at support@portkey.ai
Data Service must be enabled to use the Logs Export feature for Self Hosted Enterprise customers.
At Portkey, we understand the importance of data analysis and reporting for businesses and teams. That’s why we provide a comprehensive logs export feature that allows you to download your Portkey logs data in a structured format, enabling you to gain valuable insights into your LLM usage, performance, costs, and more.

Exporting Logs In-App

You can now export logs directly from the Portkey application by following these steps:
  1. Navigate to the Exports section on the main sidebar.
  2. Click the Request Data button in the top-right corner.
  3. Configure your export parameters:
    • Time Range: Select the period for which you want to export logs
    • Logs Limits: Choose maximum number of logs or set a custom offset
    • Requested Fields: Select which data columns to include in your export
    Export logs parameters configuration screen
  4. After setting your parameters, click Request Export.

Available Export Fields

When configuring your log export, you can select from the following fields:
Field NameDescription
IDUnique identifier for the log entry
Trace IDIdentifier for tracing related requests
Created AtTimestamp of the request
RequestRequest JSON payload
ResponseResponse JSON payload
AI ProviderName of the AI provider used
AI ModelName of the AI model used
Request TokensNumber of tokens in the request
Response TokensNumber of tokens in the response
Total TokensTotal number of tokens (request + response)
CostCost of the request in cents (USD)
Cost CurrencyCurrency of the cost (USD)
Response TimeResponse time in milliseconds
Status CodeHTTP response status code
ConfigConfig ID used for the request
Prompt SlugPrompt ID used for the request
MetadataCustom metadata key-value pairs
  1. Once your export is processed, you’ll see it in the exports list with a status indicator:
    • Draft: Export job created but not yet started
    • Success: Export completed successfully
    • Failure: Export job failed. Click on the Start Again button to retry the job.
  2. Clik on the Start button the dashboard to start the logs-export job
  3. For completed exports, click the Download button to get your logs data file. You can
    List of exports with status and download options
Currently we only support exporting 50k logs per job. For more help reach out to the Portkey team at support@portkey.ai

Export File Details

Exported logs are provided in JSONL format (JSON Lines), where each line is a valid JSON object representing a single log entry. This format is ideal for data processing and analysis with tools like Python’s Pandas or other data analysis frameworks. Each export includes:
  • Up to 50,000 logs per export job (as shown in the preview panel)
  • All fields selected during the export configuration
  • A timestamp indicating when the export was created

Use Cases for Exported Logs

With your exported logs data, you can:
  • Generate custom reports for stakeholders
  • Feed data into business intelligence tools
  • Identify patterns in user behavior and model performance
You can analyze your API usage patterns, monitor performance, optimize costs, and make data-driven decisions for your business or team.

Exporting logs via API

You can programmatically export logs using the Log Export API. This follows an asynchronous workflow:
  1. Create an export job — Define your export parameters
  2. Start the export — Begin processing the export
  3. Poll for status — Check until the job completes
  4. Download the file — Retrieve the JSONL file via signed URL

Prerequisites

  • API key with logs.export scope enabled
  • For completion logs, the completion scope may also be required

Step 1: Create a log export

Create an export job by specifying the time range and fields you want to export.
from portkey_ai import Portkey

client = Portkey(api_key="YOUR_PORTKEY_API_KEY")

export = client.logs.exports.create(
    filters={
        "created_at": {
            "gte": "2024-01-01T00:00:00Z",
            "lte": "2024-01-31T23:59:59Z"
        }
    },
    requested_data=[
        "id",
        "trace_id",
        "created_at",
        "request",
        "response",
        "ai_provider",
        "ai_model",
        "request_tokens",
        "response_tokens",
        "total_tokens",
        "cost",
        "response_time",
        "status_code"
    ],
    workspace_id="YOUR_WORKSPACE_ID"  # Optional
)

export_id = export.id
print(f"Export created with ID: {export_id}")

Step 2: Start the export

Once the export job is created, start processing it.
client.logs.exports.start(export_id)
print("Export job started")

Step 3: Poll for completion

Check the export status until it returns success.
import time

while True:
    status = client.logs.exports.retrieve(export_id)
    print(f"Status: {status.status}")
    
    if status.status == "success":
        print("Export completed!")
        break
    elif status.status == "failure":
        print(f"Export failed: {status.error}")
        break
    
    time.sleep(5)  # Wait 5 seconds before polling again

Step 4: Download the export

Once the export is complete, retrieve the signed download URL.
download_response = client.logs.exports.download(export_id)
download_url = download_response.url

print(f"Download URL: {download_url}")

# Download the file
import requests

response = requests.get(download_url)
with open("logs_export.jsonl", "wb") as f:
    f.write(response.content)

print("Logs exported to logs_export.jsonl")

Complete example

Here’s a complete script that creates, starts, monitors, and downloads a log export:
import time
import requests
from portkey_ai import Portkey

client = Portkey(api_key="YOUR_PORTKEY_API_KEY")

# Step 1: Create export
export = client.logs.exports.create(
    filters={
        "created_at": {
            "gte": "2024-01-01T00:00:00Z",
            "lte": "2024-01-31T23:59:59Z"
        }
    },
    requested_data=["id", "created_at", "ai_model", "total_tokens", "cost"]
)
export_id = export.id
print(f"Created export: {export_id}")

# Step 2: Start export
client.logs.exports.start(export_id)
print("Export started")

# Step 3: Poll until complete
while True:
    status = client.logs.exports.retrieve(export_id)
    if status.status == "success":
        break
    elif status.status == "failure":
        raise Exception(f"Export failed: {status.error}")
    time.sleep(5)

# Step 4: Download
download_url = client.logs.exports.download(export_id).url
response = requests.get(download_url)
with open("logs_export.jsonl", "wb") as f:
    f.write(response.content)

print("Export complete! File saved to logs_export.jsonl")

API reference

For detailed API specifications, see the Log Exports API reference.
EndpointDescription
POST /v1/logs/exportsCreate a new export job
POST /v1/logs/exports/{id}/startStart processing an export
GET /v1/logs/exports/{id}Retrieve export status
GET /v1/logs/exports/{id}/downloadGet signed download URL
GET /v1/logs/{id}Fetch a single log entry

Support

If you have any questions or need assistance with the logs export feature, reach out to the Portkey team at support@portkey.ai or join our Discord community.

(Deprecated) Logs Export Page

Last modified on March 9, 2026