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

Capabilities

Upwork Talent Marketplace

Unified workflow capability for finding, evaluating, and engaging freelancers on Upwork. Combines job search, freelancer profile access, contract management, and messaging into ...

Run with Naftiko

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

Resources

🔗
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
🔗
Talent Marketplace
NaftikoCapability
🔗
GraphQL API (Shared)
NaftikoCapability

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-productions.s3.amazonaws.com/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-03'
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
  - 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: 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: NaftikoCapability
    url: capabilities/talent-marketplace.yaml
    title: Talent Marketplace
  - type: NaftikoCapability
    url: capabilities/shared/graphql-api.yaml
    title: GraphQL API (Shared)
  - 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: [email protected]