PHP bindings for Upwork API

v1.4.0 2020-09-09 00:00 UTC


License Latest Stable Version Package version Build status Monthly downloads


This project provides a set of resources of Upwork API from http://developers.upwork.com based on OAuth 1.0a.


These are the supported API resources:

  • My Info
  • Custom Payments
  • Hiring
  • Job and Freelancer Profile
  • Search Jobs and Freelancers
  • Organization
  • Messages
  • Time and Financial Reporting
  • Metadata
  • Snapshot
  • Team
  • Work Diary
  • Activities


Copyright 2015 Upwork Corporation. All Rights Reserved.

php-upwork is licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at


Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.


The usage of this API is ruled by the Terms of Use at:


Application Integration

To integrate this library you need to have:

  • PHP >= 5.3.0
  • OAuth Extension installed (optional), we recommend using official pecl extension, but in case you want to use your own library, you need to drop line 'ext-oauth' from composer json, or do not use composer, which is also optional. In that case, you need to setup the 'authType' parameter in your configuration options. The source contains an oauth-php library that can be used as alternative. See more in the AuthTypes directory if you want to create an authentication layer for your own client library.
  • Composer installed (optional)


In addition to this, a full example is available in the example directory. This includes console.php that gets an access token and requests the data for applications that are not web-based, and web.php for web-based applications. You can also find the console-own-auth-lib.php file to use your own php client together with this Upwork library.

There is also a composer.json included to use with Composer.


In order to easily integrate with your application we recommend using Composer to install the dependencies.

Below is a simple example of the composer.json file you can use:

    "name": "upwork/my-oauth-app",
    "require": {
        "upwork/php-upwork": "dev-master"

Installation using Composer

Add upwork/php-upwork to your composer.json, simple example:

    "name": "my/my-oauth-app",
    "require": {
        "upwork/php-upwork": "v1.1.0" // note: the latest release is recommended

run the following command /usr/local/bin/composer.phar update

the output should look similar to

Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing upwork/php-upwork (v1.1.0)
    Downloading: 100%         

Writing lock file
Generating autoload files

IMPORTANT: The library supports different OAuth clients, by default it requires PECL PHP extension (see more at http://www.php.net/oauth). Make sure it is installed. In case you don't want to use it, or you don't have the possibility to install it, you can use a preloaded php library, called oauth-php (read more in vendor-src/README).

copy vendor/upwork/php-upwork/example/console.php to the myapp.php if you have ext-oauth installed


copy vendor/upwork/php-upwork/example/console-own-auth-lib.php to myapp.php if you want to use preloaded php library as OAuth client


  • check vendor/upwork/php-upwork/src/Upwork/API/AuthTypes/ and create your own wrapper for OAuth
  • copy vendor/upwork/php-upwork/example/console-own-auth-lib.php to myapp.php
  • after that update 'authType' property in the configuration section of myapp.php and specify the name of your handler.

NOTE: use web.php example if you are creating a web-based application.

open myapp.php and type the consumerKey and consumerSecret that you previously got from the API Center. That's all. Run your app as php myapp.php and have fun.

Installation by downloading sources

Download latest release from https://github.com/upwork/php-upwork/releases, let's say it is https://github.com/upwork/php-upwork/archive/v1.1.0.tar.gz, and extract it to vendor/upwork folder, located in the root directory of your application.

Create vendor/autoload.php, a possible simple variant could be:

require_once __DIR__ . '/upwork/php-upwork-1.1.0/src/Upwork/API/constants.php';


function UpworkVendorAutoloader($_class)
    $path = __DIR__ . '/upwork/php-upwork-1.1.0/src/' . str_replace('\\', '/', $_class) . '.php';
    include_once $path;

open myapp.php and type the consumerKey and consumerSecret that you previously got from the API Center.

That's all. Run your app as php myapp.php and have fun.