La Plateforme
Files
Upload file
Upload a file that can be used across various endpoints. The size of individual files can be a maximum of 512 MB. The Fine-tuning API only supports .jsonl files.
Parameters
Client::FILE_PURPOSE_FINETUNE
Client::FILE_PURPOSE_BATCH
Client::FILE_PURPOSE_OCR
Usage
use Partitech\PhpMistral\Client;
use Partitech\PhpMistral\MistralClient;
$client = new MistralClient($apiKey);
// from https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf
$filePath = realpath("./dummy.pdf");
$result = $client->uploadFile(path: $filePath, purpose: Client::FILE_PURPOSE_OCR);
Response
Will return a \Partitech\PhpMistral\File
object
Partitech\PhpMistral\File Object
(
[id:Partitech\PhpMistral\File:private] => Ramsey\Uuid\Lazy\LazyUuidFromString Object
(
[unwrapped:Ramsey\Uuid\Lazy\LazyUuidFromString:private] =>
[uuid:Ramsey\Uuid\Lazy\LazyUuidFromString:private] => 6c9ef298-355d-4159-a95c-1ab0c31a60ed
)
[object:Partitech\PhpMistral\File:private] => file
[bytes:Partitech\PhpMistral\File:private] => 2215244
[createdAt:Partitech\PhpMistral\File:private] => DateTime Object
(
[date] => 2025-03-12 17:38:17.000000
[timezone_type] => 1
[timezone] => +00:00
)
[filename:Partitech\PhpMistral\File:private] => dummy.pdf
[purpose:Partitech\PhpMistral\File:private] => ocr
[sampleType:Partitech\PhpMistral\File:private] => ocr_input
[numLines:Partitech\PhpMistral\File:private] =>
[source:Partitech\PhpMistral\File:private] => upload
)
List files
Returns a list of files that belong to the user's organization.
Parameters
$query = [
// Client::FILE_PURPOSE_OCR
// FILE_PURPOSE_BATCH
// FILE_PURPOSE_FINETUNE
'purpose' => Client::FILE_PURPOSE_OCR,
'page' => 0, // int
'page_size' => 1 // int
'sample_type' => [], // array of strings
'source' => [], // array of strings
'search' => 'my search', // string
]
Usage
$client = new MistralClient($apiKey);
$query = [
'purpose' => Client::FILE_PURPOSE_OCR,
'page' => 0,
'page_size' => 1
];
try {
$files = $client->listFiles(query: $query);
} catch (Throwable $e) {
echo $e->getMessage();
exit(1);
}
var_dump($files);
foreach ($files as $file) {
echo $file->getId() . PHP_EOL;
}
Response
Resoponse is a \Partitech\PhpMistral\Files
wich is an Iterable class of file.
object(Partitech\PhpMistral\Files)#7 (1) {
["files":"Partitech\PhpMistral\Files":private]=>
object(ArrayObject)#16 (1) {
["storage":"ArrayObject":private]=>
array(1) {
[0]=>
object(Partitech\PhpMistral\File)#15 (9) {
["id":"Partitech\PhpMistral\File":private]=>
object(Ramsey\Uuid\Lazy\LazyUuidFromString)#19 (2) {
["unwrapped":"Ramsey\Uuid\Lazy\LazyUuidFromString":private]=>
NULL
["uuid":"Ramsey\Uuid\Lazy\LazyUuidFromString":private]=>
string(36) "6c9ef298-355d-4159-a95c-1ab0c31a60ed"
}
["object":"Partitech\PhpMistral\File":private]=>
string(4) "file"
["bytes":"Partitech\PhpMistral\File":private]=>
int(2215244)
["createdAt":"Partitech\PhpMistral\File":private]=>
object(DateTime)#22 (3) {
["date"]=>
string(26) "2025-03-12 17:38:17.000000"
["timezone_type"]=>
int(1)
["timezone"]=>
string(6) "+00:00"
}
["filename":"Partitech\PhpMistral\File":private]=>
string(9) "dummy.pdf"
["purpose":"Partitech\PhpMistral\File":private]=>
string(3) "ocr"
["sampleType":"Partitech\PhpMistral\File":private]=>
string(9) "ocr_input"
["numLines":"Partitech\PhpMistral\File":private]=>
NULL
["source":"Partitech\PhpMistral\File":private]=>
string(6) "upload"
}
}
}
}
Retrieve File
Returns information about a specific file.
Parameters
Usage
$filePath = realpath("./dummy.pdf");
$result = $client->uploadFile(path: $filePath, purpose: Client::FILE_PURPOSE_OCR);
try {
$result = $client->retrieveFile($result->getId()->toString());
} catch (Throwable $e) {
echo $e->getMessage();
exit(1);
}
print_r($result);
Response
Return a \Partitech\PhpMistral\File
object
Partitech\PhpMistral\File Object
(
[id:Partitech\PhpMistral\File:private] => Ramsey\Uuid\Lazy\LazyUuidFromString Object
(
[unwrapped:Ramsey\Uuid\Lazy\LazyUuidFromString:private] =>
[uuid:Ramsey\Uuid\Lazy\LazyUuidFromString:private] => 6c9ef298-355d-4159-a95c-1ab0c31a60ed
)
[object:Partitech\PhpMistral\File:private] => file
[bytes:Partitech\PhpMistral\File:private] => 2215244
[createdAt:Partitech\PhpMistral\File:private] => DateTime Object
(
[date] => 2025-03-12 17:38:17.000000
[timezone_type] => 1
[timezone] => +00:00
)
[filename:Partitech\PhpMistral\File:private] => dummy.pdf
[purpose:Partitech\PhpMistral\File:private] => ocr
[sampleType:Partitech\PhpMistral\File:private] => ocr_input
[numLines:Partitech\PhpMistral\File:private] =>
[source:Partitech\PhpMistral\File:private] => upload
)
Delete File
Delete a file.
Parameters
// string
$id = '6c9ef298-355d-4159-a95c-1ab0c31a60ed'
// or an \Ramsey\Uuid\UuidInterface
use Ramsey\Uuid\UuidInterface;
$id = Uuid::fromString('6c9ef298-355d-4159-a95c-1ab0c31a60ed');
Usage
// Upload a file
$filePath = realpath("./dummy.pdf");
$result = $client->uploadFile(path: $filePath, purpose: Client::FILE_PURPOSE_OCR);
$fileId = $result->getId();
echo "uploaded file : " . $fileId->toString(). PHP_EOL;
// Get uploaded file infos
$result = $client->retrieveFile($fileId->toString());
echo "retrieved file : " . $fileId->toString(). PHP_EOL;
// Delete file
$deleted = $client->deleteFile($fileId->toString());
if($deleted === true ){
echo "file deleted" . PHP_EOL;
}
try {
$result = $client->listFiles();
print_r($result);
} catch (Throwable $e) {
// file not existing anymore.
echo $e->getMessage();
exit(1);
}
Response
Return a boolean. True if scheduled for deletion.
Download File
Download a file
Parameters
// string
$id = '6c9ef298-355d-4159-a95c-1ab0c31a60ed'
// or an \Ramsey\Uuid\UuidInterface
use Ramsey\Uuid\UuidInterface;
$id = Uuid::fromString('6c9ef298-355d-4159-a95c-1ab0c31a60ed');
// Optionally a destination path string
$destination = realpath('.') . "/downloaded.pdf"
Usage
// Upload a file
$filePath = realpath("./dummy.pdf");
$result = $client->uploadFile(path: $filePath, purpose: Client::FILE_PURPOSE_OCR);
$fileId = $result->getId();
echo "uploaded file : " . $fileId->toString(). PHP_EOL;
try {
$result = $client->downloadFile(uuid:$fileId, destination: realpath('.') . "/downloaded.pdf" );
print_r($result);
} catch (Throwable $e) {
echo $e->getMessage();
exit(1);
}
Response
The file content
3002 0 obj
<< /Subtype /Form /BBox [ 33.7954 0 45.0605 -30.0405 ]
/Group 3497 0 R /Length 57 /Matrix [ 1 0 0 1 0 0 ]
/Resources << /ExtGState << /GS0 2796 0 R >> >> >>
stream
0.89 0.467 0.761 rg
/GS0 gs
33.795 0 11.265 -30.041 re
f
endstream
endobj
Get Signed Url
Get a valid temporary Url. Default expiration if not set is 24h.
Parameters
// string
$id = '6c9ef298-355d-4159-a95c-1ab0c31a60ed'
// or an \Ramsey\Uuid\UuidInterface
use Ramsey\Uuid\UuidInterface;
$id = Uuid::fromString('6c9ef298-355d-4159-a95c-1ab0c31a60ed');
// Number of hours before the url becomes invalid. Defaults to 24h
$expiry = 24
Usage
// Upload a file
$filePath = realpath("./dummy.pdf");
$result = $client->uploadFile(path: $filePath, purpose: Client::FILE_PURPOSE_OCR);
$fileId = $result->getId();
echo "uploaded file : " . $fileId->toString(). PHP_EOL;
try {
$result = $client->getSignedUrl(uuid:$fileId, expiry: 24);
print_r($result);
} catch (Throwable $e) {
echo $e->getMessage();
exit(1);
}
Response
Return a string Url
https://mistralaifilesapiprodswe.blob.core.windows.net/fine-tune/925b165a-4fa1-4561-8a5e-eff43402fd73/e3fe2c43d27d4c1e959738857c41badf.pdf?se=2025-03-14T12%3A05%3A16Z&sp=r&sv=2025-01-05&sr=b&sig=1LNiVXgLoQ5csOEi7c3KQaTnNSkyzHz9naeCwLqcjwI%3D