canonical: https://jentic.com/apis/upwork.com/upwork

# Upwork GraphQL API

Upwork's API provides access to freelancer profiles, job postings, contracts, and other marketplace data. Note: Upwork has migrated to a GraphQL API. This OpenAPI spec documents the GraphQL endpoint for compatibility purposes. The API exposes 1 endpoints secured with oauth2 authentication.

## For AI agents

Programmatically execute a graphql query. Covers 1 operations with oauth2 authentication.

## Scope

Does not handle payments, communications, or crm - use for social media only.

## Capabilities

- Execute a GraphQL query
- Manage social media data programmatically
- Integrate Upwork GraphQL API into automated workflows
- Query and filter Upwork GraphQL API records by parameters
- Monitor Upwork GraphQL API operational status and events

## Use cases

### Social Media Operations

Use the Upwork GraphQL API to perform social media operations programmatically. The API provides 1 endpoints covering core functionality including execute a graphql query.

Example prompt: Call POST /graphql to execute a graphql query

### Data Retrieval and Monitoring

Query Upwork GraphQL API resources on a schedule to track changes, generate alerts, or feed downstream dashboards. Agents poll relevant endpoints, compare against previous state, and trigger actions when thresholds are crossed.

Example prompt: Poll the primary Upwork GraphQL API endpoint, compare response to last known state, and alert if changed

### AI Agent Integration via Jentic

AI agents discover and call Upwork GraphQL API endpoints through Jentic without managing credentials directly. An agent searches for the required operation by intent, receives the matching endpoint schema, and executes the call with Jentic-managed authentication. This eliminates the need to read API documentation or handle oauth2 tokens manually.

Example prompt: Search Jentic for 'execute a graphql query', load the operation schema, and execute with Jentic-managed credentials

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/graphql` | Execute a GraphQL query |

## Key resources

- **GraphQL** — GraphQL API endpoint
- **Jobs** — Job search and posting operations
- **Freelancers** — Freelancer profile operations

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 77 / 100
- **Maturity:** AI-Ready
- **Dimensions:**
  - Foundational Compliance: 100 / 100
  - Developer Experience & Jentic Compatibility: 69 / 100
  - AI-Readiness & Agent Experience: 55 / 100
  - Agent Usability: 94 / 100
  - Security: 90 / 100
  - AI Discoverability: 100 / 100
- **View full report:** https://jentic.com/apis/upwork.com/upwork/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring the Upwork GraphQL API by hand means running its OAuth2 flow, refreshing tokens, and building GraphQL query and mutation payloads for the single /graphql endpoint yourself. Through Jentic you install once, import Upwork from the API Directory, store the credential once, and your agent calls it.
- **Permission scoping:** Upwork exposes one /graphql endpoint whose action lives in the query body, so limit the agent to the GraphQL operations it needs, such as read queries. You choose that operation set, so mutations are not included unless you add them.
- **Credential handling:** Your Upwork OAuth2 credential is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'run a GraphQL query for job data', and Jentic returns the matching Upwork operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Facebook** — Alternative social media API
- **Twitter** — Alternative social media API
- **Linkedin** — Complementary social media API

## FAQ

### What authentication does the Upwork GraphQL API use?

The Upwork GraphQL API uses OAuth 2.0 for authorization. Through Jentic, these credentials are stored encrypted in your Jentic One instance and injected at execution time, so raw secrets never enter the agent context.

### Can I execute a graphql query with the Upwork GraphQL API?

Yes. Use the POST /graphql endpoint. The API returns structured JSON responses that agents can parse and act on directly.

### What are the rate limits for the Upwork GraphQL API?

Rate limits are not specified in the OpenAPI spec. Check the vendor documentation for current limits. Through Jentic, rate limiting is handled automatically with retry logic built into the execution layer.

### How do I execute a graphql query through Jentic?

Install the Jentic SDK with pip install jentic, authenticate through Jentic One, the self-hosted execution layer, then search for 'execute a graphql query'. Jentic returns the matching Upwork GraphQL API operation with its input schema. Load the schema and execute the call - credentials are injected automatically.

### How many endpoints does the Upwork GraphQL API have?

The Upwork GraphQL API exposes 1 endpoints covering graphql, jobs, freelancers operations.

### Can I limit what my agent is allowed to do with the Upwork GraphQL API?

Yes. Because you run Jentic One yourself, your own rules decide which operations and credentials the agent may use. The Upwork GraphQL API exposes a single POST /graphql endpoint whose action lives in the query body, so you can restrict the agent to only the GraphQL operations it needs, such as read queries for job or freelancer data. You choose that operation set, so mutations are excluded unless you explicitly add them.
