1. Go to this page and download the library: Download marceloeatworld/falai-php library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
marceloeatworld / falai-php example snippets
use MarceloEatWorld\FalAI\FalAI;
$fal = new FalAI('your-api-key');
// Synchronous execution
$result = $fal->run('fal-ai/flux/schnell', [
'prompt' => 'a sunset over mountains',
'image_size' => 'landscape_16_9',
]);
$images = $result->json('images');
// Submit a job
$job = $fal->queue->submit('fal-ai/flux/schnell', [
'prompt' => 'a sunset over mountains',
]);
echo $job->requestId;
// Check status
$status = $fal->queue->status('fal-ai/flux/schnell', $job->requestId);
echo $status->status->value; // IN_QUEUE, IN_PROGRESS, COMPLETED
echo $status->queuePosition; // position in queue (if queued)
// Get result when completed
$result = $fal->queue->result('fal-ai/flux/schnell', $job->requestId);
$images = $result->json('images');
// Cancel a job
$fal->queue->cancel('fal-ai/flux/schnell', $job->requestId);
use MarceloEatWorld\FalAI\Data\QueueStatus;
$result = $fal->queue->subscribe('fal-ai/flux/schnell', [
'prompt' => 'a sunset over mountains',
], pollInterval: 500, timeout: 300, requestTimeout: 120, onStatus: function (QueueStatus $status) {
echo "Status: {$status->status->value}\n";
foreach ($status->logs as $log) {
echo " {$log['message']}\n";
}
});
$images = $result->json('images');
$job = $fal->queue->submit('fal-ai/flux/schnell', [
'prompt' => 'a sunset over mountains',
], webhook: 'https://your.app/webhook');
// Laravel controller
public function webhook(Request $request, FalAI $fal)
{
if (! $fal->webhooks()->isValid($request->getContent(), $request->headers->all())) {
abort(401);
}
$payload = $request->json()->all();
// $payload['status'] is "OK" or "ERROR", $payload['payload'] holds the result
}
// Native PHP
use MarceloEatWorld\FalAI\Webhooks\WebhookVerifier;
use MarceloEatWorld\FalAI\Exceptions\WebhookVerificationException;
$verifier = new WebhookVerifier();
try {
$verifier->verify(file_get_contents('php://input'), getallheaders());
} catch (WebhookVerificationException $e) {
http_response_code(401);
exit;
}
$this->app->singleton(\MarceloEatWorld\FalAI\FalAI::class, function () {
return new \MarceloEatWorld\FalAI\FalAI(config('services.falai.api_key'));
});
use MarceloEatWorld\FalAI\FalAI;
public function generate(FalAI $fal)
{
$result = $fal->queue->subscribe('fal-ai/flux/schnell', [
'prompt' => 'A mountain landscape',
]);
return $result->json('images');
}
use MarceloEatWorld\FalAI\Exceptions\QueueFailedException;
use MarceloEatWorld\FalAI\Exceptions\QueueTimeoutException;
use Saloon\Exceptions\Request\RequestException;
try {
$result = $fal->run('fal-ai/flux/schnell', ['prompt' => 'test']);
} catch (RequestException $e) {
echo $e->getResponse()->status();
echo $e->getResponse()->body();
}
try {
$result = $fal->queue->subscribe('fal-ai/flux/schnell', ['prompt' => 'test']);
} catch (QueueTimeoutException $e) {
echo "Timed out: {$e->requestId}"; // the job may still complete server-side
} catch (QueueFailedException $e) {
echo "Failed: {$e->getMessage()}";
}
bash
composer
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.