PHPackages                             forward-force/workiz - 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. forward-force/workiz

ActiveLibrary[API Development](/categories/api)

forward-force/workiz
====================

PHP Wrapper around Workiz API

1.0.1(5y ago)13MITPHPPHP ^7.4

Since Oct 28Pushed 5y ago1 watchersCompare

[ Source](https://github.com/forward-force/workiz)[ Packagist](https://packagist.org/packages/forward-force/workiz)[ RSS](/packages/forward-force-workiz/feed)WikiDiscussions master Synced 5d ago

READMEChangelog (2)Dependencies (5)Versions (3)Used By (0)

Workiz API - PHP SDK
====================

[](#workiz-api---php-sdk)

This is a wrapper around [Workiz API](https://workiz.com/). The API is very minimal, so this implementation is fairly simple.

Authentication
--------------

[](#authentication)

In order to authenticate you need a token from Workiz. Head over to the developer portal to read updated procesure as how to obtain one:

Workiz is likely to give you a toke and a secret, the API requires the token only.

Jobs API
--------

[](#jobs-api)

You can get all jobs via paginated list or a single job.

#### How to get all jobs:

[](#how-to-get-all-jobs)

```
$workiz = new \ForwardForce\Workiz\Workiz('your-token');

try {
    $jobs = $workiz->jobs()->getAll();
    var_dump($jobs);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
    var_dump($e->getMessage());
}
```

The example above will give you the first N number of jobs. N is the size of the page, set to 10 by default.

#### How to change the page size or paginate:

[](#how-to-change-the-page-size-or-paginate)

```
$workiz = new \ForwardForce\Workiz\Workiz('your-token');

try {
    $jobs = $workiz->jobs()->take(25)->skip(10)->getAll();
    var_dump($jobs);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
    var_dump($e->getMessage());
}
```

The example above illustrate how to change the page size (by using `take()`) and how to change the offset (by using `skip()`). Therefore, the example above will take `25` records starting from the `10th` record (skipping the first 10).

#### How to get a single job:

[](#how-to-get-a-single-job)

```
$workiz = new \ForwardForce\Workiz\Workiz('your-token');

try {
    $jobs = $workiz->jobs()->getById('your-job-uuid');
    var_dump($jobs);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
    var_dump($e->getMessage());
}
```

The example above illustrates how to get a single job by its uuid.

#### How to pass additional query parameters to the API:

[](#how-to-pass-additional-query-parameters-to-the-api)

```
$workiz = new \ForwardForce\Workiz\Workiz('your-token');

try {
    $jobs = $workiz->jobs()->addQueryParameter('status', 'Pending')->getAll();
    var_dump($jobs);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
    var_dump($e->getMessage());
}
```

The example above illustrates how to get only `pending` jobs. There are other helper methods as well such as `getQueryString`, `resetQueryParameters`, `removeQueryParameter`, which may nor may not be useful.

Leads API
---------

[](#leads-api)

You can get all leads via paginated list or a single lead.

#### How to get all leads:

[](#how-to-get-all-leads)

```
$workiz = new \ForwardForce\Workiz\Workiz('your-token');

try {
    $leads = $workiz->leads()->getAll();
    var_dump($leads);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
    var_dump($e->getMessage());
}
```

The example above will give you the first N number of leads. N is the size of the page, set to 10 by default.

#### How to change the page size or paginate:

[](#how-to-change-the-page-size-or-paginate-1)

```
$workiz = new \ForwardForce\Workiz\Workiz('your-token');

try {
    $leads = $workiz->leads()->take(25)->skip(10)->getAll();
    var_dump($leads);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
    var_dump($e->getMessage());
}
```

The example above illustrate how to change the page size (by using `take()`) and how to change the offset (by using `skip()`). Therefore, the example above will take `25` records starting from the `10th` record (skipping the first 10).

#### How to get a single lead:

[](#how-to-get-a-single-lead)

```
$workiz = new \ForwardForce\Workiz\Workiz('your-token');

try {
    $leads = $workiz->leads()->getById('your-lead-uuid');
    var_dump($leads);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
    var_dump($e->getMessage());
}
```

The example above illustrates how to get a single lead by its uuid.

Time Off API
------------

[](#time-off-api)

You can get all timeOffs via paginated list or a single timeOff.

#### How to get all timeOffs:

[](#how-to-get-all-timeoffs)

```
$workiz = new \ForwardForce\Workiz\Workiz('your-token');

try {
    $timeOffs = $workiz->timeOffs()->getAll();
    var_dump($timeOffs);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
    var_dump($e->getMessage());
}
```

The example above will give you the first N number of timeOffs. N is the size of the page, set to 10 by default.

#### How to change the page size or paginate:

[](#how-to-change-the-page-size-or-paginate-2)

```
$workiz = new \ForwardForce\Workiz\Workiz('your-token');

try {
    $timeOffs = $workiz->timeOffs()->take(25)->skip(10)->getAll();
    var_dump($timeOffs);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
    var_dump($e->getMessage());
}
```

The example above illustrate how to change the page size (by using `take()`) and how to change the offset (by using `skip()`). Therefore, the example above will take `25` records starting from the `10th` record (skipping the first 10).

#### How to get a single timeOff:

[](#how-to-get-a-single-timeoff)

```
$workiz = new \ForwardForce\Workiz\Workiz('your-token');

try {
    $timeOffs = $workiz->timeOffs()->getById('your-timeOff-uuid');
    var_dump($timeOffs);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
    var_dump($e->getMessage());
}
```

The example above illustrates how to get a single timeOff by its uuid.

Contributions
-------------

[](#contributions)

To run locally, you can use the docker container provided here. You can run it like so:

```
docker-compose up

```

Then you can ssh into the `php-fpm` container. Please note, you need to set your WORKIZ API key and SECRET as environmental variables `$WORKIZ_TOKEN` and `$WORKIZ_SECRET` respectively. However, the secret is not needed at this time you could set it to anything.

`xdebug` is fully configured to work as cli, hookup your favorite IDE to it and debug away!

There is auto-generated documentation as to how to run this library on local, please take a look at [phpdocker/README.md](phpdocker/README.md)

*If you find an issue, have a question, or a suggestion, please don't hesitate to open a github issue.*

### Acknowledgments

[](#acknowledgments)

Thank you to [phpdocker.io](https://phpdocker.io) for making getting PHP environments effortless!

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity55

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

2027d ago

PHP version history (2 changes)1.0.0PHP ^7.1

1.0.1PHP ^7.4

### Community

Maintainers

![](https://www.gravatar.com/avatar/c43db68a7e04c12abb3642479297b5080f47c3b436875c059ec278ec1655e78f?d=identicon)[teodortalov](/maintainers/teodortalov)

---

Top Contributors

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

---

Tags

forwardforceworkiz

###  Code Quality

TestsPHPUnit

Static AnalysisPsalm

Code StylePHP\_CodeSniffer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/forward-force-workiz/health.svg)

```
[![Health](https://phpackages.com/badges/forward-force-workiz/health.svg)](https://phpackages.com/packages/forward-force-workiz)
```

###  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)
