---
title: "POST /experimental/agent-logs/presigned-url"
method: POST
path: "/experimental/agent-logs/presigned-url"
tags: ["Agent Logs"]
---

# POST /experimental/agent-logs/presigned-url

`POST /experimental/agent-logs/presigned-url`

Issues a presigned S3 URL for uploading an agent session log captured by the Tessl CLI or supported coding-agent integrations.

## Request body

- object
  - `provider` union, required
    - 'claude-code'
    - 'cursor-ide'
    - 'cursor-agent'
    - 'tessl-agent'
    - 'tessl-cli'
    - 'gemini-cli'
    - 'codex-cli'
  - `projectPath` string, required
  - `sessionId` string, required
  - `capturedAt` string, date-time, required
  - `contentType` string, required
  - `contentEncoding` string
  - `schemaVersion` number
  - `launchRunId` string, uuid
  - `metadata` object
    - `cliVersion` string
    - `platform` string
    - `arch` string
    - `osType` string
    - `osRelease` string
    - `nodeVersion` string
    - `gitRepo` string

## Response `200`

Default Response

- object
  - `presignedUrl` string, uri, required
  - `expiresIn` number, required

## Other responses

- `404` — Not Found
- `500` — Internal Server Error

---

[API](https://skmtc.net/tessl/apis/tessl-api.md) · [All operations](https://skmtc.net/tessl/apis/tessl-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tessl/tessl-api/versions/fbb186825642/schema)
