Upwork website screenshot

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...

Collections

GraphQL

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...

GRAPHQL

Pricing Plans

Upwork Plans Pricing

3 plans

PLANS

Rate Limits

Upwork Rate Limits

5 limits

RATE LIMITS

FinOps

Upwork Finops

FINOPS

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 ↑
opencollection: 1.0.0
info:
  name: Upwork REST API
  version: '3.0'
request:
  auth:
    type: oauth2
    flow: authorization_code
    authorizationUrl: https://www.upwork.com/ab/account-security/oauth2/authorize
    accessTokenUrl: https://www.upwork.com/api/v3/oauth2/token
    credentials:
      clientId: '{{clientId}}'
      clientSecret: '{{clientSecret}}'
items:
- info:
    name: Reports
    type: folder
  items:
  - info:
      name: Upwork Get Company Hours Worked Report
      type: http
    http:
      method: GET
      url: https://www.upwork.com/api/v3/reports/companies/:company_id/hours/hours_worked
      params:
      - name: company_id
        value: company-abc123
        type: path
        description: The company identifier
      - name: tq
        value: SELECT worked_on, hours WHERE worked_on >= '2025-01-01'
        type: query
        description: Table query for filtering (Upwork Query Language)
    docs: Retrieve hours worked report for a company within a date range.
- info:
    name: Organizations
    type: folder
  items:
  - info:
      name: Upwork List Teams
      type: http
    http:
      method: GET
      url: https://www.upwork.com/api/v3/hr/v2/teams
    docs: List all teams in the authenticated user's organization.
  - info:
      name: Upwork List Engagements
      type: http
    http:
      method: GET
      url: https://www.upwork.com/api/v3/hr/v2/engagements
      params:
      - name: status
        value: active
        type: query
        description: Filter by engagement status
    docs: List all engagements (contracts) for the authenticated user's account.
bundled: true