PHPackages                             chrgriffin/wave-api - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. chrgriffin/wave-api

ActiveLibrary[API Development](/categories/api)

chrgriffin/wave-api
===================

Simple PHP client to utilize Webaim's WAVE API.

v1.0.1(7y ago)231MITPHPPHP ^7.1

Since Feb 7Pushed 7y ago1 watchersCompare

[ Source](https://github.com/ChrGriffin/wave-api)[ Packagist](https://packagist.org/packages/chrgriffin/wave-api)[ RSS](/packages/chrgriffin-wave-api/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependencies (2)Versions (3)Used By (0)

Wave Api
========

[](#wave-api)

`wave-api` is a strongly typed package for interacting with Webaim's [WAVE API](http://wave.webaim.org/api/register).

Requirements
------------

[](#requirements)

`wave-api` requires PHP 7.1 or greater. You will also need to create an account with the [WAVE API](http://wave.webaim.org/api/register) in order to use it.

Installation
------------

[](#installation)

You can install via composer:

```
composer install chrgriffin/wave-api

```

Usage
-----

[](#usage)

### Basic Usage

[](#basic-usage)

Using the client is extremely simple:

```
require_once './vendor/autoload.php';

use ChrGriffin\WaveApi\Client as WaveClient;

$wave = new WaveClient('my-api-key');
$response = $wave->analyze('my-url');
```

### Additional Parameters

[](#additional-parameters)

If you want to specify optional parameters, such as `viewportwidth`, `reporttype`, or `format`, there are multiple ways to do so.

Firstly, you can specify any additional parameters when instantiating the client:

```
$wave = new WaveClient('my-api-key', [
    'viewportwidth' => 1440,
    'reporttype'    => 2,
    'format'        => 'json'
]);
```

Secondly, you can specify any additional parameters when making the request:

```
$response = $wave->analyze('my-url', [
    'viewportwidth' => 1440,
    'reporttype'    => 2,
    'format'        => 'json'
]);
```

Or thirdly, you can chain multiple setters:

```
$wave->setViewportwidth(1440)
    ->setReporttype(2)
    ->setFormat('json')
    ->analyze('my-url);
```

### Response Format

[](#response-format)

The `format` parameter has two valid options: `json` and `xml`. Setting this parameter will change the response type:

- if format is `json`, then `$wave->analyze()` will return a `\stdClass` object
- if format is `xml`, then `$wave->analyze()` will return a `\SimpleXMLElement` object

Documentation
-------------

[](#documentation)

### Available Methods

[](#available-methods)

- `getClient() : GuzzleHttp\Client` *(by default)*
- `setClient($client) : ChrGriffin\WaveApi\Client`
    - `$client`: Replace the default GuzzleHttp client with your own.
- `getKey() : string`
- `setKey(string $key) : ChrGriffin\WaveApi\Client`
    - `$key`: Your WAVE API key.
- `getFormat() : string` *(`json` by default)*
- `setFormat(string $format) : ChrGriffin\WaveApi\Client`
    - `$format`: The desired report format. An exception will be thrown if the value is neither `json` nor `xml`.
- `getViewportwidth() : int`
- `setViewportwidth(int $viewportwidth) : ChrGriffin\WaveApi\Client`
    - `$viewportwidth`: The desired viewport width when analyzing.
- `getEvaldelay() : int`
- `setEvaldelay(int $evaldelay) : ChrGriffin\WaveApi\Client`
    - `$evaldelay`: The desired number of milliseconds to wait before analyzing.
- `getReporttype() : int`
- `setReporttype(int $reporttype) : ChrGriffin\WaveApi\Client`
    - `$reporttype`: The desired report type. An exception will be thrown if the value is none of `1`, `2`, or `3`.
- `getUsername() : string`
- `setUsername(string $username) : ChrGriffin\WaveApi\Client`
    - `$username`: The desired username for basic HTTP authentication to the given URL.
- `getPassword() : string`
- `setPassword(string $password) : ChrGriffin\WaveApi\Client`
    - `$password`: The desired password for basic HTTP authentication to the given URL.
- `getResponseContents() : null|\stdClass|\SimpleXMLElement` \_(will be null before a request is made)
- `setParams(array $params) : ChrGriffin\WaveApi\Client`
    - `$params`: An associative array of any or all paramaters. Valid paramaters:
        - `format : string` *(must be one of `json` or `xml`)*
        - `viewportwidth : int`
        - `evaldelay : int`
        - `reporttype : int` *(must be one of `1`, `2`, or `3`)*
        - `username : string`
        - `password : string`
- `analyze(string $url, array $params = []) : \stdClass|\SimpleXMLElement`
    - `$url`: The desired URL to analyze.
    - `$params`: An associative array of any or all paramaters. Valid paramaters:
        - `format : string` *(must be one of `json` or `xml`)*
        - `viewportwidth : int`
        - `evaldelay : int`
        - `reporttype : int` *(must be one of `1`, `2`, or `3`)*
        - `username : string`
        - `password : string`

### Exceptions

[](#exceptions)

- A `\TypeError` will be thrown whenever an invalidly typed parameter is passed to a method (refer to the above documentation for valid types).
- A `ChrGriffin\WaveApi\Exceptions\InvalidArgumentException` (extends `\InvalidArgumentException`)will be thrown in the following instances:
    - Trying to set `format` to an invalid value (not one of `xml` or `json`).
    - Trying to set `reporttype` to an invalid value (not one of `1`, `2`, or `3`).
    - Trying to set a parameter that doesn't exist.
- A `ChrGriffin\WaveApi\Exceptions\ResponseException` will be thrown when the WAVE API responds with an error. The error, if provided, will be the exception's message.

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

2653d ago

PHP version history (2 changes)v1.0.0PHP ^7.1.

v1.0.1PHP ^7.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/90b61f51551a66c90c131f873fb94ee87a064cb72dc178d8512e90e13dc769e6?d=identicon)[ChrGriffin](/maintainers/ChrGriffin)

---

Top Contributors

[![ChrGriffin](https://avatars.githubusercontent.com/u/10466686?v=4)](https://github.com/ChrGriffin "ChrGriffin (4 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/chrgriffin-wave-api/health.svg)

```
[![Health](https://phpackages.com/badges/chrgriffin-wave-api/health.svg)](https://phpackages.com/packages/chrgriffin-wave-api)
```

###  Alternatives

[tencentcloud/tencentcloud-sdk-php

TencentCloudApi php sdk

3731.2M42](/packages/tencentcloud-tencentcloud-sdk-php)[convertkit/convertkitapi

Kit PHP SDK for the Kit API

2167.1k1](/packages/convertkit-convertkitapi)[mapado/rest-client-sdk

Rest Client SDK for hydra API

1125.9k2](/packages/mapado-rest-client-sdk)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
