---
title: "Publicv1Callsrouter.Begin Upload"
method: PUT
path: "/v1/calls/{external_call_id}/begin-upload"
tags: ["v1"]
---

# Publicv1Callsrouter.Begin Upload

`PUT /v1/calls/{external_call_id}/begin-upload`

## Request

- Base URL: `https://app.eve.legal` (the document declares no server; this is the origin it was published from)
- URL: `https://app.eve.legal/v1/calls/{external_call_id}/begin-upload`
- Auth: OAuth 2
  - Password
  - Token URL: `token`

## Path parameters

- `external_call_id` string, required

## Request body

- BeginUploadRequest
  - `fileName` string, required: Audio file name (.mp3, .wav, .ogg)
  - `startedAt` string, date-time, required: ISO 8601 timestamp for when the call started
  - `endedAt` string, date-time, required: ISO 8601 timestamp for when the call ended
  - `direction` 'INBOUND' | 'OUTBOUND', required
  - `fromNumber` string, required: Caller phone number (E.164)
  - `toNumber` string, nullable: Callee phone number (E.164)
  - `operatorName` string, nullable: Name of the operator on the call
  - `operatorEmail` string, email, nullable: Email of the operator on the call
  - `operatorId` string, nullable: Provider's internal identifier for the operator
  - `externalMatterId` string, nullable: External ID of the matter to assign the call to. Mutually exclusive with external_lead_id. If you omit both IDs, Eve matches the call to a recent matter or lead by phone number. A retry with a different ID moves the call, also after confirm-upload. A retry without an ID keeps the current assignment.
  - `externalLeadId` string, nullable: External ID of the lead to assign the call to. Mutually exclusive with external_matter_id.

## Response `200`

Successful Response

- BeginUploadResponse
  - `signedUploadUrl` string, nullable: Presigned S3 URL for uploading the audio file via HTTP PUT. The URL expires after a short period; call this endpoint again to get a fresh URL. Null once the call has been confirmed and is processing or completed.
  - `call` PublicCallSummary, required
    - `id` string, uuid, required: Eve call ID.
    - `externalCallId` string, nullable: External identifier for the call.
    - `startedAt` string, nullable: ISO timestamp when the call started.
    - `endedAt` string, nullable: ISO timestamp when the call ended.
    - `direction` string, nullable: INBOUND or OUTBOUND.
    - `fromNumber` string, nullable: Caller phone number (E.164).
    - `toNumber` string, nullable: Callee phone number (E.164).
    - `operatorName` string, nullable: Name of the operator on the call.
    - `operatorEmail` string, nullable: Email of the operator on the call.
    - `operatorId` string, nullable: Your internal operator identifier, if provided when syncing.
    - `status` 'NOT_STARTED' | 'SYNCING' | 'FAILED_SYNCING' | 'PROCESSING' | 'FAILED_PROCESSING' | 'COMPLETED' | 'NOT_APPLICABLE'
    - `createdAt` string, nullable: ISO timestamp when the call was created in Eve.
    - `caseType` string, nullable: Case type identified during the call.
    - `callerContactData` CallerContactData
      - `name` string, nullable: Full name of the caller.
      - `email` string, nullable: Email address of the caller.
      - `phone` string, nullable: Phone number of the external party: the caller on an inbound call, the callee on an outbound call.
    - `extractions` object, required: User-defined LLM-extracted values from the call. Keys and values vary by voice agent configuration.
    - `summary` string, nullable: AI-generated summary of the call.
    - `transcript` string, nullable: Full call transcript.
    - `externalMatterId` string, nullable: External ID of the matter the call is assigned to, if any.
    - `externalLeadId` string, nullable: External ID of the lead the call is assigned to, if any.

## Other responses

- `401`: Unauthorized
- `422`: Validation Error

---

[API](https://skmtc.dev/eve/apis/eve-public-api.md) - [All operations](https://skmtc.dev/eve/apis/eve-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/eve/apis/eve-public-api/revisions/1a108b551ef3?raw)
