Skip to content

Create a file upload session

client.File.New(ctx, body) (*FileCreateResponse, error)
POST/v1/files

Creates a new file upload session and returns an upload URL.

After uploading the file bytes to uploadUrl, call POST /v1/files/{id}/complete to finalize the upload. Optionally pass purpose to validate MIME type and size constraints at creation time. See File uploads for the full upload flow, supported purposes, and size limits. If you are uploading a meeting transcript, see Uploading meeting transcripts for the follow-up meeting attachment flow.

Required scope: files:create

Rate limit category: Write

ParametersExpand Collapse
body FileNewParams
Filename param.Field[string]

Original filename.

minLength1
maxLength255
MimeType param.Field[string]

MIME type of the file. Must be allowed for the given purpose (if specified).

SizeBytes param.Field[int64]

Expected file size in bytes. Maximum 512 MB.

minimum1
maximum536870912
Purpose param.Field[FileNewParamsPurpose]Optional

Optional validation hint. When provided, the server enforces purpose-specific MIME type and file size constraints. Use meeting_transcript for files that will be attached to a meeting as its transcript. Use knowledge_user or knowledge_workspace to add the file to the authenticated user’s or workspace’s Knowledge, making it available to the AI assistant. Not persisted or returned in responses.

const FileNewParamsPurposeMeetingTranscript FileNewParamsPurpose = "meeting_transcript"
const FileNewParamsPurposeKnowledgeUser FileNewParamsPurpose = "knowledge_user"
const FileNewParamsPurposeKnowledgeWorkspace FileNewParamsPurpose = "knowledge_workspace"
ReturnsExpand Collapse
type FileCreateResponse struct{…}
ID string

Unique identifier for the file.

CompletedAt string

When the file upload was completed.

CreatedAt string

When the file upload session was created.

ExpiresAt string

When the upload session expires. Null once completed, cancelled, or expired.

Filename string

Original filename.

MimeType string

MIME type of the file.

SizeBytes int64

File size in bytes.

minimum-9007199254740991
maximum9007199254740991
Status FileCreateResponseStatus

Current upload status of the file.

One of the following:
const FileCreateResponseStatusPending FileCreateResponseStatus = "PENDING"
const FileCreateResponseStatusCompleted FileCreateResponseStatus = "COMPLETED"
const FileCreateResponseStatusCancelled FileCreateResponseStatus = "CANCELLED"
const FileCreateResponseStatusExpired FileCreateResponseStatus = "EXPIRED"
UploadHeaders map[string, string]

Headers to include in the upload request.

UploadURL string

Upload URL. Upload the file bytes directly to this URL.

Create a file upload session

package main

import (
  "context"
  "fmt"

  "github.com/Lightfld/lightfield-go"
  "github.com/Lightfld/lightfield-go/option"
)

func main() {
  client := githubcomlightfldlightfieldgo.NewClient(
    option.WithAPIKey("My API Key"),
  )
  fileCreateResponse, err := client.File.New(context.TODO(), githubcomlightfldlightfieldgo.FileNewParams{
    Filename: "x",
    MimeType: "mimeType",
    SizeBytes: 1,
  })
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", fileCreateResponse.ID)
}
{
  "id": "id",
  "completedAt": "completedAt",
  "createdAt": "createdAt",
  "expiresAt": "expiresAt",
  "filename": "filename",
  "mimeType": "mimeType",
  "sizeBytes": -9007199254740991,
  "status": "PENDING",
  "uploadHeaders": {
    "foo": "string"
  },
  "uploadUrl": "uploadUrl"
}
Returns Examples
{
  "id": "id",
  "completedAt": "completedAt",
  "createdAt": "createdAt",
  "expiresAt": "expiresAt",
  "filename": "filename",
  "mimeType": "mimeType",
  "sizeBytes": -9007199254740991,
  "status": "PENDING",
  "uploadHeaders": {
    "foo": "string"
  },
  "uploadUrl": "uploadUrl"
}