Upwork logo

Upwork

Upwork is a global freelancing platform that connects businesses with independent professionals through a talent marketplace. The Upwork API enables developers to integrate Upwork features into their applications, including job search, contract management, messaging, profile access, and webhook event subscriptions. The API is primarily GraphQL-based at api.upwork.com/graphql, with OAuth 2.0 authentication. Key resources include job postings, contracts, user profiles, messages, and freelancer search. The platform serves over 800,000 clients and 18 million freelancers across 180+ countries.

2 APIs 8 Features
FreelancingJobsTalentMarketplaceContractsHiring

APIs

Upwork GraphQL API

The primary Upwork API surface, providing GraphQL queries and mutations for job search, profile access, contract management, and messaging. Authentication uses OAuth 2.0 authori...

Upwork REST API

The legacy REST API surface for Upwork, covering job search, contracts, reporting, organization management, and freelancer profiles. OAuth 2.0 authentication is required. Many e...

Features

Job Search

Search and filter job postings using marketplaceJobPostingsSearch GraphQL query with full-text and faceted search.

Contract Management

Access active and completed contracts, contract terms, milestones, and time entries.

Messaging

Read and send messages within active contracts using GraphQL mutations.

Profile Access

Query freelancer and client profiles, skills, portfolios, and ratings.

Webhook Subscriptions

Subscribe to events for real-time notifications when contracts, jobs, or messages change.

OAuth 2.0 Authentication

Secure API access using OAuth 2.0 authorization code grant flow with refresh token support.

Multi-Language SDKs

Official SDKs for Python, Node.js, Java, Go, Ruby, PHP, and Perl with OAuth2 support.

GraphQL Explorer

Interactive GraphQL API explorer at upwork.com/developer/explorer for testing queries.

Use Cases

Freelancer Management

Agencies and businesses managing a distributed freelancer workforce through programmatic contract and message access.

Job Monitoring

Applications tracking new job postings matching specific criteria using scheduled search queries.

Talent Analytics

Platforms building talent scoring, profile analysis, and market intelligence on freelancers.

CRM Integration

Connecting Upwork client and contract data to CRM systems for unified client management.

Automated Reporting

Building custom dashboards and reports from Upwork contract, billing, and engagement data.

Integrations

PowerBI Connector

Official Power BI connector for importing Upwork data into business intelligence dashboards.

OAuth 2.0 Providers

Standard OAuth 2.0 integration with any identity provider supporting authorization code flow.

Webhook Integration

Real-time event streaming to external systems via Upwork subscription webhooks.

Semantic Vocabularies

Upwork Context

24 classes · 61 properties

JSON-LD

API Governance Rules

Upwork API Rules

21 rules · 13 errors 8 warnings

SPECTRAL

JSON Structure

Graphql Budget Structure

2 properties

JSON STRUCTURE

Graphql Client Structure

4 properties

JSON STRUCTURE

Graphql Contract List Response Structure

2 properties

JSON STRUCTURE

Graphql Contract Structure

10 properties

JSON STRUCTURE

Graphql Freelancer Profile Structure

11 properties

JSON STRUCTURE

Graphql Freelancer Search Response Structure

2 properties

JSON STRUCTURE

Graphql Graph Ql Error Structure

3 properties

JSON STRUCTURE

Graphql Graph Ql Request Structure

3 properties

JSON STRUCTURE

Graphql Graph Ql Response Structure

2 properties

JSON STRUCTURE

Graphql Job Search Response Structure

3 properties

JSON STRUCTURE

Graphql Job Structure

11 properties

JSON STRUCTURE

Graphql Message Create Structure

1 properties

JSON STRUCTURE

Graphql Message List Response Structure

2 properties

JSON STRUCTURE

Graphql Message Structure

6 properties

JSON STRUCTURE

Graphql O Auth Token Structure

4 properties

JSON STRUCTURE

Graphql Paging Structure

3 properties

JSON STRUCTURE

Graphql Skill Structure

2 properties

JSON STRUCTURE

Rest Engagement List Response Structure

1 properties

JSON STRUCTURE

Rest Engagement Structure

5 properties

JSON STRUCTURE

Rest Report Response Structure

1 properties

JSON STRUCTURE

Rest Team List Response Structure

1 properties

JSON STRUCTURE

Rest Team Structure

4 properties

JSON STRUCTURE

Example Payloads

Graphql Budget Example

2 fields

EXAMPLE

Graphql Client Example

4 fields

EXAMPLE

Graphql Contract Example

10 fields

EXAMPLE

Graphql Job Example

11 fields

EXAMPLE

Graphql Message Example

6 fields

EXAMPLE

Graphql O Auth Token Example

4 fields

EXAMPLE

Graphql Paging Example

3 fields

EXAMPLE

Graphql Skill Example

2 fields

EXAMPLE

Rest Engagement Example

5 fields

EXAMPLE

Rest Report Response Example

1 fields

EXAMPLE

Rest Team Example

4 fields

EXAMPLE

Resources

🔗
LinkedIn
LinkedIn
🔗
Website
Website
🔗
Documentation
Documentation
🌐
Portal
Portal
💬
Support
Support
🔑
Authentication
Authentication
👥
GitHubOrganization
GitHubOrganization
👥
Python SDK (OAuth2)
GitHubRepository
👥
Node.js SDK (OAuth2)
GitHubRepository
👥
Java SDK (OAuth2)
GitHubRepository
👥
Go SDK (OAuth2)
GitHubRepository
👥
Ruby SDK (OAuth2)
GitHubRepository
👥
PHP SDK (OAuth2)
GitHubRepository
👥
Perl SDK (OAuth2)
GitHubRepository
🔗
JSONLD
JSONLD
🔗
SpectralRules
SpectralRules
🔗
Vocabulary
Vocabulary

Sources

Raw ↑
aid: upwork
name: Upwork
description: >-
  Upwork is a global freelancing platform that connects businesses with independent professionals through a talent
  marketplace. The Upwork API enables developers to integrate Upwork features into their applications, including job
  search, contract management, messaging, profile access, and webhook event subscriptions. The API is primarily
  GraphQL-based at api.upwork.com/graphql, with OAuth 2.0 authentication. Key resources include job postings, contracts,
  user profiles, messages, and freelancer search. The platform serves over 800,000 clients and 18 million freelancers
  across 180+ countries.
type: Index
position: Consumer
access: 3rd-Party
image: https://kinlane-images.s3.amazonaws.com/shared/apis-json/apis-json-logo.jpg
tags:
- Freelancing
- Jobs
- Talent
- Marketplace
- Contracts
- Hiring
url: https://raw.githubusercontent.com/api-evangelist/upwork/refs/heads/main/apis.yml
created: '2026-03-16'
modified: '2026-05-19'
specificationVersion: '0.19'
apis:
- aid: upwork:graphql-api
  name: Upwork GraphQL API
  description: >-
    The primary Upwork API surface, providing GraphQL queries and mutations for job search, profile access, contract
    management, and messaging. Authentication uses OAuth 2.0 authorization code flow. The API supports subscriptions
    for real-time event notifications via webhooks.
  humanURL: https://www.upwork.com/developer/documentation/graphql/api/docs/index.html
  baseURL: https://api.upwork.com/graphql
  tags:
  - GraphQL
  - Jobs
  - Contracts
  - Profiles
  - Messages
  - Freelancing
  properties:
  - type: Documentation
    url: https://www.upwork.com/developer/documentation/graphql/api/docs/index.html
  - type: OpenAPI
    url: openapi/upwork-graphql-api-openapi.yml
  - type: JSONSchema
    url: json-schema/graphql-api-job-schema.json
  - type: JSONSchema
    url: json-schema/graphql-api-contract-schema.json
  - type: JSONSchema
    url: json-schema/graphql-api-freelancer-profile-schema.json
  - type: JSONSchema
    url: json-schema/graphql-api-message-schema.json
  - url: graphql/upwork-graphql.md
    type: GraphQL
- aid: upwork:rest-api
  name: Upwork REST API
  description: >-
    The legacy REST API surface for Upwork, covering job search, contracts, reporting, organization management, and
    freelancer profiles. OAuth 2.0 authentication is required. Many endpoints have been migrated to GraphQL.
  humanURL: https://developers.upwork.com/
  baseURL: https://www.upwork.com/api
  tags:
  - REST
  - Jobs
  - Contracts
  - Profiles
  - Reports
  properties:
  - type: Documentation
    url: https://developers.upwork.com/
  - type: GettingStarted
    url: https://developers.upwork.com/#get-started
  - type: OpenAPI
    url: openapi/upwork-rest-api-openapi.yml
  - type: JSONSchema
    url: json-schema/rest-api-report-response-schema.json
  - type: JSONSchema
    url: json-schema/rest-api-engagement-schema.json
common:
- type: LinkedIn
  url: https://www.linkedin.com/company/upwork
- type: Website
  url: https://www.upwork.com/
- type: Documentation
  url: https://www.upwork.com/developer/documentation/graphql/api/docs/index.html
- type: Portal
  url: https://www.upwork.com/developer
- type: Support
  url: https://support.upwork.com/hc/en-us/sections/17976982721555-Upwork-API
- type: Authentication
  url: https://support.upwork.com/hc/en-us/articles/115015933448-API-authentication-and-security
- type: GitHubOrganization
  url: https://github.com/upwork
- type: GitHubRepository
  url: https://github.com/upwork/python-upwork-oauth2
  title: Python SDK (OAuth2)
- type: GitHubRepository
  url: https://github.com/upwork/node-upwork-oauth2
  title: Node.js SDK (OAuth2)
- type: GitHubRepository
  url: https://github.com/upwork/java-upwork-oauth2
  title: Java SDK (OAuth2)
- type: GitHubRepository
  url: https://github.com/upwork/golang-upwork-oauth2
  title: Go SDK (OAuth2)
- type: GitHubRepository
  url: https://github.com/upwork/ruby-upwork-oauth2
  title: Ruby SDK (OAuth2)
- type: GitHubRepository
  url: https://github.com/upwork/php-upwork-oauth2
  title: PHP SDK (OAuth2)
- type: GitHubRepository
  url: https://github.com/upwork/perl-upwork-oauth2
  title: Perl SDK (OAuth2)
- type: JSONLD
  url: json-ld/upwork-context.jsonld
- type: SpectralRules
  url: rules/upwork-spectral-rules.yml
- type: Vocabulary
  url: vocabulary/upwork-vocabulary.yaml
- type: Features
  data:
  - name: Job Search
    description: >-
      Search and filter job postings using marketplaceJobPostingsSearch GraphQL query with full-text and faceted
      search.
  - name: Contract Management
    description: Access active and completed contracts, contract terms, milestones, and time entries.
  - name: Messaging
    description: Read and send messages within active contracts using GraphQL mutations.
  - name: Profile Access
    description: Query freelancer and client profiles, skills, portfolios, and ratings.
  - name: Webhook Subscriptions
    description: Subscribe to events for real-time notifications when contracts, jobs, or messages change.
  - name: OAuth 2.0 Authentication
    description: Secure API access using OAuth 2.0 authorization code grant flow with refresh token support.
  - name: Multi-Language SDKs
    description: Official SDKs for Python, Node.js, Java, Go, Ruby, PHP, and Perl with OAuth2 support.
  - name: GraphQL Explorer
    description: Interactive GraphQL API explorer at upwork.com/developer/explorer for testing queries.
- type: UseCases
  data:
  - name: Freelancer Management
    description: >-
      Agencies and businesses managing a distributed freelancer workforce through programmatic contract and message
      access.
  - name: Job Monitoring
    description: Applications tracking new job postings matching specific criteria using scheduled search queries.
  - name: Talent Analytics
    description: Platforms building talent scoring, profile analysis, and market intelligence on freelancers.
  - name: CRM Integration
    description: Connecting Upwork client and contract data to CRM systems for unified client management.
  - name: Automated Reporting
    description: Building custom dashboards and reports from Upwork contract, billing, and engagement data.
- type: Integrations
  data:
  - name: PowerBI Connector
    description: Official Power BI connector for importing Upwork data into business intelligence dashboards.
  - name: OAuth 2.0 Providers
    description: Standard OAuth 2.0 integration with any identity provider supporting authorization code flow.
  - name: Webhook Integration
    description: Real-time event streaming to external systems via Upwork subscription webhooks.
maintainers:
- FN: Kin Lane
  email: kin@apievangelist.com