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.

Upwork publishes 7 APIs on the APIs.io network, including Authentication API, Contracts API, Jobs API, and 4 more. Tagged areas include Freelancing, Jobs, Talent, Marketplace, and Contracts.

The Upwork catalog on APIs.io includes 1 JSON-LD context and 2 Spectral governance rulesets.

Upwork’s developer surface includes authentication, documentation, developer portal, support, and 17 more developer resources.

52.0/100 developing ▼ -7.7 Agent 44/100 agent ready Full breakdown ↓
scored 2026-07-28 · rubric v0.6
AccessFreemiumSelf serve⚡ Free to try
7 APIs 8 Features 5 Use Cases
FreelancingJobsTalentMarketplaceContractsHiring

Kin Score

Kin Score Kin Score How this is scored →
scored 2026-07-28 · rubric v0.6
Composite quality — 52.0/100 · developing
Contract Quality 17.2 / 25
Developer Ergonomics 6.5 / 20
Commercial Clarity 7.9 / 20
Operational Transparency 4.8 / 13
Governance 8.3 / 12
Discoverability 7.4 / 10
Agent readiness — 44/100 · agent ready
Machine-Readable Contract 18 / 18
Agentic Access Contract 10 / 10
MCP Server 0 / 12
Machine-Readable Auth 10 / 10
Idempotency 0 / 9
Stable Error Semantics 8 / 8
Request/Response Examples 7 / 7
Rate-Limit Signaling 7 / 7
Typed Event Surface 0 / 6
Agent Skills 0 / 5
Well-Known Catalog 0 / 4
Consent & Bot Identity 0 / 3
A2A Agent Card 0 / 8
Dry-Run / Simulate Mode 0 / 4
Improve this rating by publishing the missing artifacts — every area above can be raised, and the full rubric is at apis.io/rating/. This rating is computed from github.com/api-evangelist/upwork: open an issue to ask a question, or submit a pull request to add artifacts. Want it done for you? Prioritized profiling — $2,500 →

APIs 7

Individual APIs this provider publishes, each with its own machine-readable definition.

Upwork Authentication API

OAuth 2.0 token management for API access.

Upwork Contracts API

Access and manage freelance contracts including terms, milestones, and time entries.

Upwork Jobs API

Search and retrieve job postings on the Upwork marketplace.

Upwork Messages API

Read and send messages within active contracts.

Upwork Organizations API

Team and organization management.

Upwork Profiles API

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

Upwork Reports API

Financial and engagement reports for teams and organizations.

Scroll for all 7

Open Collections 2

Open, tool-agnostic API collections (OpenAPI-derived and Bruno).

Upwork GraphQL API

OPEN COLLECTION

Upwork REST API

OPEN COLLECTION

GraphQL 1

GraphQL schemas published by this provider.

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 1

Published pricing tiers and plan structures.

Upwork Plans Pricing

3 plans

PLANS

Rate Limits 1

Documented rate limits and quota policies.

Upwork Rate Limits

5 limits

RATE LIMITS

FinOps 1

Cost, billing, and metering signals for API financial operations.

Features 8

Notable capabilities this provider offers.

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.

Scroll for all 8

Semantic Vocabularies 1

JSON-LD contexts and semantic vocabularies used across these APIs.

Upwork Context

24 classes · 61 properties

JSON-LD

Spectral Rules 2

Spectral governance rulesets for linting and validating these APIs.

Upwork API Rules

5 rules · 3 warnings 2 info

SPECTRAL

Upwork API Rules

27 rules · 13 errors 13 warnings 1 info

SPECTRAL

JSON Schema 22

Standalone JSON Schema definitions for this provider's data models.

Budget

2 properties

JSON SCHEMA

Client

4 properties

JSON SCHEMA

ContractListResponse

2 properties

JSON SCHEMA

Contract

10 properties

JSON SCHEMA

FreelancerProfile

11 properties

JSON SCHEMA

FreelancerSearchResponse

2 properties

JSON SCHEMA

GraphQLError

3 properties

JSON SCHEMA

GraphQLRequest

3 properties

JSON SCHEMA

GraphQLResponse

2 properties

JSON SCHEMA

Job

11 properties

JSON SCHEMA

JobSearchResponse

3 properties

JSON SCHEMA

MessageCreate

1 properties

JSON SCHEMA

MessageListResponse

2 properties

JSON SCHEMA

Message

6 properties

JSON SCHEMA

OAuthToken

4 properties

JSON SCHEMA

Paging

3 properties

JSON SCHEMA

Skill

2 properties

JSON SCHEMA

EngagementListResponse

1 properties

JSON SCHEMA

Engagement

5 properties

JSON SCHEMA

ReportResponse

1 properties

JSON SCHEMA

TeamListResponse

1 properties

JSON SCHEMA

Team

4 properties

JSON SCHEMA

Scroll for all 22

JSON Structure 22

JSON Structure definitions describing this provider's data shapes.

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

Scroll for all 22

Examples 22

Example request and response payloads for these APIs.

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 Paging Example

3 fields

EXAMPLE

Graphql Skill Example

2 fields

EXAMPLE

Rest Engagement Example

5 fields

EXAMPLE

Rest Team Example

4 fields

EXAMPLE

Scroll for all 22

Security Posture 2

Authentication, domain security, vulnerability disclosure, and trust-center signals.

Upwork Authentication

oauth2 · 1 scheme

SECURITY

Upwork Domain Security

TLSv1.3 · HSTS · DMARC

SECURITY

Scopes 1

OAuth scopes governing access to this provider's APIs.

Upwork Scopes

9 scopes · authorizationCode

9 scopes

SCOPES

Agentic Access 1

Recommended x-agentic-access execution contracts for AI agents.

Upwork Agentic Access

13 operations · 3 acting

13 operations · 3 acting

AGENTIC

Use Cases 5

What developers build with this provider.

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 3

Pre-built integrations with other platforms and tools.

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.

Resources

Get Started 1

Portal, sign-up, and the first successful call

Documentation 1

Reference material describing how the API behaves

Agent Surfaces 1

MCP servers, agent skills, and machine-readable catalogs

Design & Contract 3

Pagination, idempotency, versioning, errors, and events

Build 8

SDKs, sample code, and the tooling you integrate with

Scroll for all 8

Access & Security 4

Authentication, authorization, and security posture

Operate 1

Status, limits, changes, and where to get help

Company 2

The organization behind the API

Source (apis.yml)

apis.yml 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
accessModel:
  pricing: freemium
  onboarding: self-serve
  trial: false
  try_now: true
  public: false
  label: Freemium · Self-serve signup
  confidence: high
  source:
  - plans
  - authentication
  generated: '2026-07-22'
  method: derived
position: Consumer
access: 3rd-Party
image: https://kinlane-images.s3.amazonaws.com/shared/apis-json/icons/upwork.png
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:upwork-authentication-api
  name: Upwork Authentication API
  description: OAuth 2.0 token management for API access.
  humanURL: https://www.upwork.com/developer/documentation/graphql/api/docs/index.html
  baseURL: https://api.upwork.com/graphql
  tags:
  - Authentication
  properties:
  - type: OpenAPI
    url: openapi/upwork-authentication-api-openapi.yml
  - type: Documentation
    url: https://www.upwork.com/developer/documentation/graphql/api/docs/index.html
  - 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
  - type: GraphQL
    url: graphql/upwork-graphql.md
  - type: Documentation
    url: https://developers.upwork.com/
  - type: GettingStarted
    url: https://developers.upwork.com/#get-started
  - type: JSONSchema
    url: json-schema/rest-api-report-response-schema.json
  - type: JSONSchema
    url: json-schema/rest-api-engagement-schema.json
- aid: upwork:upwork-contracts-api
  name: Upwork Contracts API
  description: Access and manage freelance contracts including terms, milestones, and time entries.
  humanURL: https://www.upwork.com/developer/documentation/graphql/api/docs/index.html
  baseURL: https://api.upwork.com/graphql
  tags:
  - Contracts
  properties:
  - type: OpenAPI
    url: openapi/upwork-contracts-api-openapi.yml
  - type: Documentation
    url: https://www.upwork.com/developer/documentation/graphql/api/docs/index.html
  - 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
  - type: GraphQL
    url: graphql/upwork-graphql.md
  - type: Documentation
    url: https://developers.upwork.com/
  - type: GettingStarted
    url: https://developers.upwork.com/#get-started
  - type: JSONSchema
    url: json-schema/rest-api-report-response-schema.json
  - type: JSONSchema
    url: json-schema/rest-api-engagement-schema.json
- aid: upwork:upwork-jobs-api
  name: Upwork Jobs API
  description: Search and retrieve job postings on the Upwork marketplace.
  humanURL: https://www.upwork.com/developer/documentation/graphql/api/docs/index.html
  baseURL: https://api.upwork.com/graphql
  tags:
  - Jobs
  properties:
  - type: OpenAPI
    url: openapi/upwork-jobs-api-openapi.yml
  - type: Documentation
    url: https://www.upwork.com/developer/documentation/graphql/api/docs/index.html
  - 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
  - type: GraphQL
    url: graphql/upwork-graphql.md
  - type: Documentation
    url: https://developers.upwork.com/
  - type: GettingStarted
    url: https://developers.upwork.com/#get-started
  - type: JSONSchema
    url: json-schema/rest-api-report-response-schema.json
  - type: JSONSchema
    url: json-schema/rest-api-engagement-schema.json
- aid: upwork:upwork-messages-api
  name: Upwork Messages API
  description: Read and send messages within active contracts.
  humanURL: https://www.upwork.com/developer/documentation/graphql/api/docs/index.html
  baseURL: https://api.upwork.com/graphql
  tags:
  - Messages
  properties:
  - type: OpenAPI
    url: openapi/upwork-messages-api-openapi.yml
  - type: Documentation
    url: https://www.upwork.com/developer/documentation/graphql/api/docs/index.html
  - 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
  - type: GraphQL
    url: graphql/upwork-graphql.md
  - type: Documentation
    url: https://developers.upwork.com/
  - type: GettingStarted
    url: https://developers.upwork.com/#get-started
  - type: JSONSchema
    url: json-schema/rest-api-report-response-schema.json
  - type: JSONSchema
    url: json-schema/rest-api-engagement-schema.json
- aid: upwork:upwork-organizations-api
  name: Upwork Organizations API
  description: Team and organization management.
  humanURL: https://www.upwork.com/developer/documentation/graphql/api/docs/index.html
  baseURL: https://api.upwork.com/graphql
  tags:
  - Organizations
  properties:
  - type: OpenAPI
    url: openapi/upwork-organizations-api-openapi.yml
  - type: Documentation
    url: https://www.upwork.com/developer/documentation/graphql/api/docs/index.html
  - 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
  - type: GraphQL
    url: graphql/upwork-graphql.md
  - type: Documentation
    url: https://developers.upwork.com/
  - type: GettingStarted
    url: https://developers.upwork.com/#get-started
  - type: JSONSchema
    url: json-schema/rest-api-report-response-schema.json
  - type: JSONSchema
    url: json-schema/rest-api-engagement-schema.json
- aid: upwork:upwork-profiles-api
  name: Upwork Profiles API
  description: Query freelancer and client user profiles, skills, and ratings.
  humanURL: https://www.upwork.com/developer/documentation/graphql/api/docs/index.html
  baseURL: https://api.upwork.com/graphql
  tags:
  - Profiles
  properties:
  - type: OpenAPI
    url: openapi/upwork-profiles-api-openapi.yml
  - type: Documentation
    url: https://www.upwork.com/developer/documentation/graphql/api/docs/index.html
  - 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
  - type: GraphQL
    url: graphql/upwork-graphql.md
  - type: Documentation
    url: https://developers.upwork.com/
  - type: GettingStarted
    url: https://developers.upwork.com/#get-started
  - type: JSONSchema
    url: json-schema/rest-api-report-response-schema.json
  - type: JSONSchema
    url: json-schema/rest-api-engagement-schema.json
- aid: upwork:upwork-reports-api
  name: Upwork Reports API
  description: Financial and engagement reports for teams and organizations.
  humanURL: https://www.upwork.com/developer/documentation/graphql/api/docs/index.html
  baseURL: https://api.upwork.com/graphql
  tags:
  - Reports
  properties:
  - type: OpenAPI
    url: openapi/upwork-reports-api-openapi.yml
  - type: Documentation
    url: https://www.upwork.com/developer/documentation/graphql/api/docs/index.html
  - 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
  - type: GraphQL
    url: graphql/upwork-graphql.md
  - type: Documentation
    url: https://developers.upwork.com/
  - type: GettingStarted
    url: https://developers.upwork.com/#get-started
  - type: JSONSchema
    url: json-schema/rest-api-report-response-schema.json
  - type: JSONSchema
    url: json-schema/rest-api-engagement-schema.json
common:
- type: AgenticAccess
  url: agentic-access/upwork-agentic-access.yml
- type: DomainSecurity
  url: security/upwork-domain-security.yml
- type: Authentication
  url: authentication/upwork-authentication.yml
- type: OAuthScopes
  url: scopes/upwork-scopes.yml
- 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