# PHP Code Samples

Use the PHP code samples below to quickly get started developing with the Rev AI APIs.

## Submit a local file for transcription

This example uses the [Guzzle PHP HTTP client](https://docs.guzzlephp.org/en/stable/).

The following example demonstrates how to submit a local audio file for transcription.

To use this example, replace the `<FILEPATH>` placeholder with the path to the file you wish to transcribe and the `<REVAI_ACCESS_TOKEN>` placeholder with your Rev AI account's access token.


```php
<?php

require __DIR__ . '/vendor/autoload.php';

use GuzzleHttp\Client;

$token = '<REVAI_ACCESS_TOKEN>';
$file = '<FILEPATH>';

// create client
$client = new Client([
    'base_uri' => 'https://api.rev.ai/speechtotext/v1/',
    'headers' => ['Authorization' => "Bearer $token"]
]);

// send POST request and get response body
$response = $client->request(
    'POST',
    'jobs',
    ['multipart' => [['name' => 'media','contents' => fopen($file, 'r')]]]
)
->getBody()
->getContents();

// decode response JSON and print
print_r(json_decode($response));
```

## Submit a remote file for transcription

This example uses the [Guzzle PHP HTTP client](https://docs.guzzlephp.org/en/stable/).

The following example demonstrates how to submit a remote audio file for transcription.

To use this example, replace the `<URL>` placeholder with the public URL to the file you wish to transcribe and the `<REVAI_ACCESS_TOKEN>` placeholder with your Rev AI account's access token.


```php
<?php

require __DIR__ . '/vendor/autoload.php';

use GuzzleHttp\Client;

$token = '<REVAI_ACCESS_TOKEN>';
$fileUrl = '<URL>';

// create client
$client = new Client([
    'base_uri' => 'https://api.rev.ai/speechtotext/v1/',
    'headers' => ['Authorization' => "Bearer $token"]
]);

// send POST request and get response body
$response = $client->request(
    'POST',
    'jobs',
    ['json' => ['source_config' => ['url' => $fileUrl]]]
)
->getBody()
->getContents();

// decode response JSON and print
print_r(json_decode($response));
```

## Check transcription status

This example uses the [Guzzle PHP HTTP client](https://docs.guzzlephp.org/en/stable/).

The following example demonstrates how to check the status of an asynchronous transcription job.

To use this example, replace the `<ID>` placeholder with the job identifier and the `<REVAI_ACCESS_TOKEN>` placeholder with your Rev AI account's access token.


```php
<?php

require __DIR__ . '/vendor/autoload.php';

use GuzzleHttp\Client;

$token = '<REVAI_ACCESS_TOKEN>';
$jobId = '<ID>';

// create client
$client = new Client([
  'base_uri' => 'https://api.rev.ai/speechtotext/v1/',
  'headers' => ['Authorization' => "Bearer $token"]
]);

// send GET request and get response body
$response = $client->request(
    'GET',
    "jobs/$jobId"
)
->getBody()
->getContents();

// decode response JSON and print
print_r(json_decode($response));
```

## Retrieve a transcript

This example uses the [Guzzle PHP HTTP client](https://docs.guzzlephp.org/en/stable/).

The following example demonstrates how to retrieve the results of an asynchronous transcription job.

To use this example, replace the `<ID>` placeholder with the job identifier and the `<REVAI_ACCESS_TOKEN>` placeholder with your Rev AI account's access token.


```php
<?php

require __DIR__ . '/vendor/autoload.php';

use GuzzleHttp\Client;

$token = '<REVAI_ACCESS_TOKEN>';
$jobId = '<ID>';

// create client
$client = new Client([
    'base_uri' => 'https://api.rev.ai/speechtotext/v1/',
    'headers' => ['Authorization' => "Bearer $token"]
]);

// send GET request and get response body
$response = $client->request(
    'GET',
    "jobs/$jobId/transcript",
    ['headers' => ['Accept' => 'application/vnd.rev.transcript.v1.0+json']]
)
->getBody()
->getContents();

// decode response JSON and print
print_r(json_decode($response));
```