The Files API allows you to upload, list, retrieve, download, and delete files. Uploaded files can be referenced in messages using document content blocks with file source type.
Note: The Files API requires the beta header files-api-2025-04-14. Set this in the AnthropicOptions.BetaHeaders property.
Anthropic := TsgcHTTP_API_Anthropic.Create(nil);
Anthropic.AnthropicOptions.ApiKey := 'API_KEY';
Anthropic.AnthropicOptions.BetaHeaders := 'files-api-2025-04-14';
oFile := Anthropic.UploadFile('C:\documents\report.pdf');
Try
WriteLn('File ID: ' + oFile.Id);
WriteLn('Filename: ' + oFile.Filename);
WriteLn('Size: ' + IntToStr(oFile.SizeBytes) + ' bytes');
WriteLn('MIME Type: ' + oFile.MimeType);
Finally
oFile.Free;
End;
oList := Anthropic.ListFiles(50);
Try
for i := 0 to Length(oList.Data) - 1 do
WriteLn(Format('%s - %s (%d bytes)',
[oList.Data[i].Id, oList.Data[i].Filename, oList.Data[i].SizeBytes]));
WriteLn('Has more: ' + BoolToStr(oList.HasMore, True));
Finally
oList.Free;
End;
Reference uploaded files using the document content block with SourceType set to 'file'.
oDocBlock := TsgcAnthropicClass_Request_Content_Block.Create;
oDocBlock.ContentType := 'document';
oDocBlock.SourceType := 'file';
oDocBlock.FileId := 'file_abc123'; // ID from UploadFile
oTextBlock := TsgcAnthropicClass_Request_Content_Block.Create;
oTextBlock.ContentType := 'text';
oTextBlock.Text := 'Summarize this document.';
oDeleted := Anthropic.DeleteFile('file_abc123');
Try
WriteLn('Deleted: ' + oDeleted.Id);
Finally
oDeleted.Free;
End;