# PHP

composer require texa/texa-php. The Texa API for Laravel, Symfony or plain PHP.


```bash
composer require texa/texa-php
```

PHP 8.1+ with the curl and json extensions. The package is
[`texa/texa-php` on Packagist](https://packagist.org/packages/texa/texa-php).

```php
$texa = new Texa\Client(getenv('TEXA_API_KEY'));
$convo = $texa->openConversation(['channel' => 'web', 'customer_ref' => 'user-1842'],
                                 idempotencyKey: 'open-user-1842');
$out = $texa->sendMessage($convo['conversation_id'],
                          ['text' => 'Where is my transfer?', 'message_id' => 'msg-551']);
$events = $texa->runActions($convo['conversation_id'], $out, [
    'get_transfer_status' => fn (array $inputs) => ['status' => 'paid_out'],
]);
```

## Webhooks

```php
$event = Texa\Webhooks::parse(getenv('TEXA_WEBHOOK_SECRET'), getallheaders(),
                              file_get_contents('php://input'));
```

## Laravel: a widget session

```php
Route::post('/texa/session', fn () => auth()->check()
    ? $texa->widgetSession('user-' . auth()->id(), ['name' => auth()->user()->name])
    : response()->json(['error' => 'not signed in'], 401));
```

Errors throw `Texa\TexaError`, with the status, code and request id.
