tippiti/api-client

Official PHP client for the Tippiti API – the transcription and dictation platform for physicians, attorneys, forensic examiners and professional typing services.

Maintainers

Package info

github.com/tippiti/tippiti-php

Homepage

Documentation

pkg:composer/tippiti/api-client

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.2 2026-04-25 14:28 UTC

This package is not auto-updated.

Last update: 2026-04-25 14:48:12 UTC


README

Official PHP client for the Tippiti API – the transcription and dictation platform for physicians, attorneys, forensic examiners and professional typing services.

Framework-agnostic. Built on Guzzle and PSR-7 / PSR-18. Runs in Laravel, Symfony, Slim or plain PHP.

Installation

composer require tippiti/api-client

Requires PHP 8.1 or newer. Pulls Guzzle as its default HTTP client.

Quick start

use Tippiti\Api\Tippiti;
use Tippiti\Api\Generated\Api\DictationApi;

$config = Tippiti::configure(token: getenv('TIPPITI_TOKEN'));
$dictations = new DictationApi(config: $config);

$response = $dictations->dictationIndex(include_notes: true);

foreach ($response->getData() as $dictation) {
    echo $dictation->getId() . ': ' . $dictation->getTitle() . PHP_EOL;
}

Every endpoint, request body, parameter and response is typed, derived directly from the OpenAPI specification at apidocs.tippiti.io.

Authentication

Tippiti::configure() configures Bearer-token authentication against https://app.tippiti.io/api. Tokens are scoped to the issuing user's permissions (main user or sub-user with the relevant capabilities) and can be created in the account settings.

Resource IDs

All resource identifiers are sqid-encoded strings prefixed with aid-, for example aid-xyz12345. Model properties reflect this – IDs are typed string, never int:

$dictation = $dictations->dictationShow(dictation: 'aid-xyz12345');

Raw integer IDs are rejected with a 404 response.

Available Api classes

After installation, every API group has a dedicated class under Tippiti\Api\Generated\Api\*Api:

use Tippiti\Api\Generated\Api\DictationApi;
use Tippiti\Api\Generated\Api\AccountApi;
use Tippiti\Api\Generated\Api\FolderApi;
use Tippiti\Api\Generated\Api\InstructionSetApi;
use Tippiti\Api\Generated\Api\SubUserApi;
// ...

Method names follow the operationIds from the specification: dictationIndex, dictationStore, dictationShow, folderIndex, accountUpdate and so on. See apidocs.tippiti.io for the full operation list.

Response envelope

Successful responses expose getSuccess(): bool and getData(): mixed accessors. Failure responses throw Tippiti\Api\Generated\ApiException containing the HTTP status code, the decoded response body and the response headers. Validation failures produce ApiException with status 422 and per-field error messages. Rate-limit breaches produce ApiException with status 429 and a Retry-After header.

use Tippiti\Api\Generated\ApiException;

try {
    $response = $dictations->dictationShow(dictation: 'aid-xyz12345');
} catch (ApiException $e) {
    fwrite(STDERR, "HTTP {$e->getCode()}: {$e->getMessage()}\n");
    print_r($e->getResponseBody());
}

Custom base URL

$config = Tippiti::configure(
    token: '...',
    baseUrl: 'https://staging.app.tippiti.io/api',
);

Custom HTTP client

Pass your own Guzzle-compatible client to any Api constructor – useful for custom timeouts, proxies, HTTP/2 tuning, or middleware:

use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;

$stack = HandlerStack::create();
// add your middleware
$http = new Client(['handler' => $stack, 'timeout' => 30]);

$dictations = new DictationApi(client: $http, config: $config);

Versioning

This client follows Semantic Versioning. A release note in CHANGELOG.md accompanies every version. Breaking changes to the underlying API produce a major version bump of this package.

License

MIT. The Tippiti platform, trademarks and data are not covered by this license.