› cavi-ai/
GitHub ↗

Verified example · TypeScript

Batch files

examples/batch-files.ts

@cavi-ai/api-clientv0.21.007f0ee45
TypeScript · complete source
import { ApiClientError, ApiClientErrorCode, ApiClientErrorType } from "@cavi-ai/api-client";
import type { CodexFilesClient } from "@cavi-ai/api-client/providers/codex/files";

export async function uploadBatchInput(files: CodexFilesClient, jsonl: string) {
  if (!jsonl.trim()) throw new ApiClientError("Batch input is required.", {
    type: ApiClientErrorType.Validation, code: ApiClientErrorCode.InvalidRequest,
  });
  const file = await files.uploadFile(jsonl, "batch", "input.jsonl");
  if (typeof file?.id !== "string" || !file.id.trim()) {
    throw new ApiClientError("Upload returned no usable file ID.", {
      code: ApiClientErrorCode.ProtocolMismatch, cause: file,
    });
  }
  return file;
}

export async function removeBatchInput(files: CodexFilesClient, fileId: string) {
  if (!fileId.trim()) throw new ApiClientError("A saved file ID is required.", {
    type: ApiClientErrorType.Validation, code: ApiClientErrorCode.InvalidRequest,
  });
  const receipt = await files.deleteFile(fileId);
  if (receipt?.id !== fileId || receipt?.deleted !== true) {
    throw new ApiClientError("Deletion was not confirmed for the saved file.", {
      code: ApiClientErrorCode.ProtocolMismatch, cause: { fileId, receipt },
    });
  }
  return { id: fileId, deleted: true as const };
}

Package imports

Referenced by

Artifact provenance
Package
@cavi-ai/api-client@0.21.0
Release
v0.21.0
Commit
07f0ee45424c267278f7b0c89a7dcea4e2492cc1
Source
examples/batch-files.ts
Tarball SHA-256
0924b5d3a7a40869bd44fedc47a9b8eb9844c2af1fd5c7ca77469d8b7c0b8558
Content SHA-256
24eff463c41582eaf5e70c58f42e5ae13bd12d02fa14ae2a886afa3abf5cdf48