Upwork 图标

Upwork 数据 API:职位、提案、Connects 与合同

Upwork Global Inc. · 招聘求职

Upwork 是 Upwork Global Inc.(纳斯达克上市公司 Upwork Inc. 旗下)推出的自由职业市场 Android 应用,平台源自 2013 年 Elance 与 oDesk 的合并,并于 2015 年更名为 Upwork;同一个账户即可走完雇佣双方的流程。自由职业者在分为 Best Matches 与 Most Recent 两个标签的 Find Work 信息流里浏览并收藏职位,打开职位详情查看客户的付款验证标识、所在地与雇佣记录,再用 Connects——平台的投标点数,在 Membership & Connects 页面管理——提交提案。Invitations 标签汇总面试邀请,Proposals 标签按进行中、已提交、已归档跟踪每份申请;拿下的项目进入合同房间,可以是带每周工时上限的按小时合同,也可以是一口价合同,并配有收入报表。客户在同一应用里浏览推荐人才、在 Hires 页面发出录用邀约、在 Messages 标签跟进沟通;Alerts 铃铛则跨用户所属的各个组织提示职位动态、面试邀请和新消息。其用户主要集中在美国、印度和巴基斯坦,企业与独立专业人士在这里达成按小时或一口价的合作,与 Fiverr、Freelancer.com 直接竞争全球远程独立人才。

按 Connects 计价的提案是这组记录的核心:每份申请带有 applicationUID、所投职位的 openingUID、自由职业者报出的 chargeRate,以及提交时花掉的 connectsBid,并与钱包里的 availableConnects、currentPrice 和 consumedConnectFraction 相对应。上游的职位卡片含 hourlyBudget 最低/最高预算、prefLabel 技能标签与 connectPrice,客户的公开公司卡再补充 paymentVerified、totalContracts、totalJobsWithHires 和累计 totalCharges。面试邀请把 jobPostingUid 与 contractorUid、clientUid 串在一起;合同以 referenceContractRid 为键,沉淀为 charge_rate、weekly_limit 和 combinedTotalEarnings;雇佣一侧的推荐人才卡带有 hourlyRateAmount 与 occupationTitle,已发出的录用邀约记录其 state 及自由职业者所在的 countryName。消息房间与提醒则补上 unreadMessageCount 和按组织汇总的 counters。

招聘 CRM 把提案和面试邀请与客户在 totalCharges 中的花费关联,看清哪些客户真正雇人;自由职业者财务机器人依据 connectsBid 与钱包定价,在会员续期前预估每周的 Connects 消耗;机构账本用客户已发出的录用邀约交叉核对合同费率与 combinedTotalEarnings;招聘台按报价筛选推荐人才,并直接接上消息房间里已有的对话。openData Studio 把 Upwork 的职位、提案、Connects 与合同记录变成可调用的开放数据。

应用截图

  • Upwork 应用截图 1
  • Upwork 应用截图 2
  • Upwork 应用截图 3
  • Upwork 应用截图 4
  • Upwork 应用截图 5
  • Upwork 应用截图 6

API 端点一览

以下端点与请求/响应示例均依据应用界面推导重构,为示意说明,并非实际抓包。

  • 签发作用域会话令牌

    POST /v1/auth/scoped-token osint

    把移动端会话换成作用域令牌(accessToken、refreshToken、expiresInSecs、tenantId),供动态、提案与会话室调用使用。

    认证方式: 已登录 AccessToken 加会话 cookie。缺少作用域会话换发时,纯移动端 Bearer 会被拒绝。

    • accessToken
    • refreshToken
    • expiresInSecs
    • tenantId
    • grant_type
    • scope
    POST /v1/auth/scoped-token HTTP/1.1
    Authorization: Bearer <accessToken>
    X-Upwork-Authentication: <accessToken>
    X-Upwork-API-TenantId: <tenantId>
    Content-Type: application/json
    
    {
      "grant_type": "client_credentials",
      "scope": "workspace"
    }
    {
      "accessToken": "eyJhbGciOiJSUzI1NiJ9...",
      "refreshToken": "rt_7c2e91ab",
      "expiresInSecs": 3600,
      "tenantId": "1513535512629587969"
    }
  • 最佳匹配职位推荐动态

    POST /v1/feeds/best-match opendata

    驱动找工作页最佳匹配卡片:uid、ciphertext、title、hourlyBudget 上下限、skills.prefLabel、connectPrice,以及客户的 totalSpent / paymentVerificationStatus。

    认证方式: 登录后签发的 OAuth2 Bearer AccessToken;另附 X-Upwork-Authentication 与 X-Upwork-API-TenantId。数据调用还需要一次作用域会话换发——缺少该作用域时纯移动端 Bearer 会被拒绝。

    • results
    • uid
    • title
    • ciphertext
    • description
    • type
    • recno
    • hourlyBudget
    • min
    • max
    • skills
    • prefLabel
    • connectPrice
    • client
    • totalHires
    • totalSpent
    • paymentVerificationStatus
    • publishedOn
    • paging
    • total
    • count
    POST /v1/feeds/best-match HTTP/1.1
    Authorization: Bearer <accessToken>
    X-Upwork-Authentication: <accessToken>
    X-Upwork-API-TenantId: <tenantId>
    Content-Type: application/json
    
    {
      "limit": 10,
      "offset": 0
    }
    {
      "results": [
        {
          "uid": "1784869486235123712",
          "title": "Staff Product Manager",
          "ciphertext": "~015c7cd346853e24fd",
          "description": "Own the freelancer home feed.",
          "type": "HOURLY",
          "recno": 4123456789,
          "connectPrice": 16,
          "hourlyBudget": {
            "type": "RANGE",
            "min": 60,
            "max": 90
          },
          "skills": [
            {
              "id": "1017484851352698921",
              "prefLabel": "Product Management"
            }
          ],
          "client": {
            "totalHires": 12,
            "totalSpent": 71401.96,
            "paymentVerificationStatus": "VERIFIED"
          },
          "publishedOn": "2026-09-20T12:00:00.000Z"
        }
      ],
      "paging": {
        "total": 248,
        "count": 10
      }
    }
  • 最新职位推荐动态

    POST /v1/feeds/most-recent opendata

    加载找工作页“最新”标签(id、ciphertext、publishedDateTime、title、type、recno、hourlyBudget),供关闭最佳匹配排序时使用。

    认证方式: 登录后签发的 OAuth2 Bearer AccessToken;另附 X-Upwork-Authentication 与 X-Upwork-API-TenantId。数据调用还需要一次作用域会话换发——缺少该作用域时纯移动端 Bearer 会被拒绝。

    • results
    • id
    • uid
    • ciphertext
    • publishedOn
    • title
    • type
    • recno
    • hourlyBudget
    • attrs
    • skills
    • prefLabel
    • paging
    POST /v1/feeds/most-recent HTTP/1.1
    Authorization: Bearer <accessToken>
    X-Upwork-Authentication: <accessToken>
    X-Upwork-API-TenantId: <tenantId>
    Content-Type: application/json
    
    {
      "limit": 10
    }
    {
      "results": [
        {
          "id": "1784869486235123712",
          "uid": "1784869486235123712",
          "ciphertext": "~015c7cd346853e24fd",
          "publishedOn": "2026-09-21T08:15:00.000Z",
          "title": "Android contractor for wallet SDK",
          "type": "FIXED",
          "recno": 4123456790,
          "hourlyBudget": {
            "type": "RANGE",
            "min": 45,
            "max": 70
          },
          "attrs": [
            {
              "id": "1017484851352698921",
              "prefLabel": "Android"
            }
          ]
        }
      ],
      "paging": {
        "total": 248,
        "count": 10
      }
    }
  • 填充市场职位详情

    GET /v1/jobs/{jobId}/posting opendata

    填充职位详情页上的客户公开公司卡:国家、paymentVerified、totalContracts、totalJobsWithHires 与 totalCharges。

    认证方式: 登录后签发的 OAuth2 Bearer AccessToken;另附 X-Upwork-Authentication 与 X-Upwork-API-TenantId。数据调用还需要一次作用域会话换发——缺少该作用域时纯移动端 Bearer 会被拒绝。

    • id
    • clientCompanyPublic
    • country
    • twoLetterAbbreviation
    • timezone
    • memberSinceDateTime
    • paymentVerification
    • paymentVerified
    • workHistoryStats
    • totalContracts
    • totalJobsWithHires
    • totalCharges
    • currency
    • displayValue
    GET /v1/jobs/1802671287393773389/posting HTTP/1.1
    Authorization: Bearer <accessToken>
    X-Upwork-Authentication: <accessToken>
    X-Upwork-API-TenantId: <tenantId>
    {
      "id": "1802671287393773389",
      "clientCompanyPublic": {
        "id": "1009763084",
        "country": {
          "id": "922824128549781504",
          "name": "United States",
          "twoLetterAbbreviation": "US"
        },
        "timezone": "America/Los_Angeles",
        "memberSinceDateTime": "2022-08-18T00:00:00.000Z",
        "paymentVerification": {
          "paymentVerified": true
        },
        "workHistoryStats": {
          "totalContracts": 12,
          "totalJobsWithHires": 9,
          "totalCharges": {
            "currency": "USD",
            "displayValue": "71401.96"
          }
        }
      }
    }
  • 读取 Connects / 邀请奖励余额

    GET /v1/connects/wallet openfinance

    返回自由职业者的提案邀请奖励 / Connects 钱包(pibStatus.availableConnects、currentPrice、maxPrice、consumedConnectFraction),供会员与 Connects 页使用。

    认证方式: 登录后签发的 OAuth2 Bearer AccessToken;另附 X-Upwork-Authentication 与 X-Upwork-API-TenantId。数据调用还需要一次作用域会话换发——缺少该作用域时纯移动端 Bearer 会被拒绝。

    • pibStatus
    • personId
    • active
    • currentPrice
    • maxPrice
    • consumedConnectFraction
    • availableConnects
    • connectsBalance
    • connectsBalanceFree
    • connectsBalancePaid
    • visibilityLevel
    GET /v1/connects/wallet HTTP/1.1
    Authorization: Bearer <accessToken>
    X-Upwork-Authentication: <accessToken>
    X-Upwork-API-TenantId: <tenantId>
    {
      "pibStatus": {
        "personId": "1513535512629587968",
        "active": true,
        "currentPrice": 8,
        "maxPrice": 37,
        "consumedConnectFraction": 0.01,
        "availableConnects": 163
      },
      "user": {
        "freelancerProfile": {
          "userPreferences": {
            "visibilityLevel": 1
          }
        }
      }
    }
  • 按类型列出提案

    POST /v1/proposals opendata

    分页返回提案页(进行中/已提交/已归档):每条申请的 applicationUID、openingUID、chargeRate、connectsBid、coverLetter 与 occupationTitle。

    认证方式: 登录后签发的 OAuth2 Bearer AccessToken;另附 X-Upwork-Authentication 与 X-Upwork-API-TenantId。数据调用还需要一次作用域会话换发——缺少该作用域时纯移动端 Bearer 会被拒绝。

    • paging
    • total
    • offset
    • applications
    • applicationUID
    • vendorUID
    • openingUID
    • title
    • status
    • coverLetter
    • terms
    • chargeRate
    • amount
    • currency
    • connectsBid
    • duration
    • occupationTitle
    POST /v1/proposals HTTP/1.1
    Authorization: Bearer <accessToken>
    X-Upwork-Authentication: <accessToken>
    X-Upwork-API-TenantId: <tenantId>
    Content-Type: application/json
    
    {
      "type": "ACTIVE",
      "limit": 10
    }
    {
      "paging": {
        "total": 42,
        "offset": "eyJBY3RpdmUiOiIxMCJ9",
        "count": 10
      },
      "applications": [
        {
          "applicationUID": "1784936978461474817",
          "vendorUID": "1513535512629587968",
          "openingUID": "1784869486235123712",
          "title": "Lead Paradigm Representative",
          "status": 7,
          "coverLetter": "I can start this week.",
          "terms": {
            "chargeRate": {
              "amount": "85",
              "currency": "USD"
            },
            "connectsBid": 17,
            "duration": 0
          },
          "occupationTitle": "Product Management"
        }
      ]
    }
  • 列出面试邀请

    POST /v1/invitations opendata

    分页返回“邀请面试”行(uid、jobPostingUid、status、invitationLetter、contractorUid、clientUid),供邀请页使用。

    认证方式: 登录后签发的 OAuth2 Bearer AccessToken;另附 X-Upwork-Authentication 与 X-Upwork-API-TenantId。数据调用还需要一次作用域会话换发——缺少该作用域时纯移动端 Bearer 会被拒绝。

    • totalCount
    • count
    • invitations
    • uid
    • jobPostingUid
    • title
    • status
    • statusId
    • invitationLetter
    • contractorUid
    • clientUid
    • ctime
    POST /v1/invitations HTTP/1.1
    Authorization: Bearer <accessToken>
    X-Upwork-Authentication: <accessToken>
    X-Upwork-API-TenantId: <tenantId>
    Content-Type: application/json
    
    {
      "status": "PENDING",
      "pagination": {
        "offset": 0,
        "count": 10
      }
    }
    {
      "totalCount": 826,
      "count": 10,
      "invitations": [
        {
          "uid": "1784872122316197888",
          "jobPostingUid": "1784872118568779776",
          "title": "Legacy Division Technician",
          "status": "Pending",
          "statusId": 0,
          "invitationLetter": "We would like to interview you this week.",
          "contractorUid": "1441159363691524096",
          "clientUid": "1783553054015062016",
          "ctime": "2026-04-29T09:07:29.000Z"
        }
      ]
    }
  • 列出已保存职位

    GET /v1/saved-jobs opendata

    返回已保存职位(followed、jobRid)以及职位标题、hourlyBudgetMin/Max 与客户的 paymentVerified / totalCharges 卡片。

    认证方式: 登录后签发的 OAuth2 Bearer AccessToken;另附 X-Upwork-Authentication 与 X-Upwork-API-TenantId。数据调用还需要一次作用域会话换发——缺少该作用域时纯移动端 Bearer 会被拒绝。

    • personSavedJobs
    • followed
    • jobRid
    • job
    • id
    • content
    • title
    • description
    • contractTerms
    • hourlyContractTerms
    • hourlyBudgetType
    • hourlyBudgetMin
    • hourlyBudgetMax
    • clientCompanyPublic
    • paymentVerified
    • workHistoryStats
    • totalCharges
    • rawValue
    GET /v1/saved-jobs?limit=20&offset=0&followed=true HTTP/1.1
    Authorization: Bearer <accessToken>
    X-Upwork-Authentication: <accessToken>
    X-Upwork-API-TenantId: <tenantId>
    {
      "personSavedJobs": [
        {
          "followed": true,
          "jobRid": "4123456789",
          "job": {
            "id": "1784869486235123712",
            "content": {
              "title": "Staff Product Manager",
              "description": "Own the freelancer home feed."
            },
            "contractTerms": {
              "hourlyContractTerms": {
                "hourlyBudgetType": "RANGE",
                "hourlyBudgetMin": 60,
                "hourlyBudgetMax": 90
              }
            },
            "clientCompanyPublic": {
              "paymentVerification": {
                "paymentVerified": true
              },
              "workHistoryStats": {
                "totalCharges": {
                  "rawValue": 71401.96,
                  "currency": "USD",
                  "displayValue": "71401.96"
                },
                "totalContracts": 12
              }
            }
          }
        }
      ]
    }
  • 推荐自由职业者(人才搜索)

    GET /v1/talent/recommended osint

    返回排序后的自由职业者卡片(id、ciphertext、hourlyRateAmount、occupationTitle、portraitUrl),供客户人才搜索 / 推荐人才条使用。

    认证方式: 登录后签发的 OAuth2 Bearer AccessToken;另附 X-Upwork-Authentication 与 X-Upwork-API-TenantId。数据调用还需要一次作用域会话换发——缺少该作用域时纯移动端 Bearer 会被拒绝。

    • freelancers
    • id
    • name
    • photoUrl
    • profileUrl
    • ciphertext
    • hourlyRateAmount
    • occupationTitle
    • portraitUrl
    GET /v1/talent/recommended?openingId=1784869486235123712&limit=10 HTTP/1.1
    Authorization: Bearer <accessToken>
    X-Upwork-Authentication: <accessToken>
    X-Upwork-API-TenantId: <tenantId>
    {
      "freelancers": [
        {
          "id": "1939570823820670781",
          "name": "Ruthie L.",
          "photoUrl": "https://cdn.example.com/portraits/c1example",
          "profileUrl": "/freelancers/~01a4efc20a2cd41f48",
          "ciphertext": "~01a4efc20a2cd41f48",
          "hourlyRateAmount": 75,
          "occupationTitle": "Product Manager",
          "portraitUrl": "https://cdn.example.com/portraits/c1example"
        }
      ]
    }
  • 列出消息会话室(精简)

    GET /v1/inbox/rooms osint

    返回精简会话室列表(id、unreadStoriesCount、unreadMessageCount),在拉取完整会话前填充消息页。

    认证方式: 登录后签发的 OAuth2 Bearer AccessToken;另附 X-Upwork-Authentication 与 X-Upwork-API-TenantId。数据调用还需要一次作用域会话换发——缺少该作用域时纯移动端 Bearer 会被拒绝。

    • rooms
    • id
    • roomId
    • title
    • unreadStoriesCount
    • unreadMessageCount
    • unreadStories
    • userId
    GET /v1/inbox/rooms?userId=1513535512629587968 HTTP/1.1
    Authorization: Bearer <accessToken>
    X-Upwork-Authentication: <accessToken>
    X-Upwork-API-TenantId: <tenantId>
    {
      "rooms": [
        {
          "id": "room_5a82d4931d5f5aea3817fd0a14fcbbba",
          "roomId": "room_5a82d4931d5f5aea3817fd0a14fcbbba",
          "title": "Staff Product Manager",
          "unreadStoriesCount": 2,
          "unreadMessageCount": 2,
          "unreadStories": true,
          "userId": "1513535512629587968"
        }
      ]
    }
  • 列出会话室消息(精简)

    GET /v1/inbox/rooms/{roomId}/stories osint

    打开会话后分页返回该会话室的精简消息列表。

    认证方式: 登录后签发的 OAuth2 Bearer AccessToken;另附 X-Upwork-Authentication 与 X-Upwork-API-TenantId。数据调用还需要一次作用域会话换发——缺少该作用域时纯移动端 Bearer 会被拒绝。

    • stories
    • storyId
    • roomId
    • unreadStoriesCount
    GET /v1/inbox/rooms/room_5a82d4931d5f5aea3817fd0a14fcbbba/stories HTTP/1.1
    Authorization: Bearer <accessToken>
    X-Upwork-Authentication: <accessToken>
    X-Upwork-API-TenantId: <tenantId>
    {
      "stories": [
        {
          "storyId": "story_9f3a1c",
          "roomId": "room_5a82d4931d5f5aea3817fd0a14fcbbba",
          "unreadStoriesCount": 1
        }
      ]
    }
  • 列出用户通知

    GET /v1/alerts/{userId} osint

    分页返回提醒铃铛:职位动态、邀请与会话事件的 notificationId、未读标志与 title。

    认证方式: 登录后签发的 OAuth2 Bearer AccessToken;另附 X-Upwork-Authentication 与 X-Upwork-API-TenantId。数据调用还需要一次作用域会话换发——缺少该作用域时纯移动端 Bearer 会被拒绝。

    • notifications
    • notificationId
    • unread
    • notification_unread
    • title
    • userId
    GET /v1/alerts/1513535512629587968 HTTP/1.1
    Authorization: Bearer <accessToken>
    X-Upwork-Authentication: <accessToken>
    X-Upwork-API-TenantId: <tenantId>
    {
      "notifications": [
        {
          "notificationId": "n_9f3a1c",
          "unread": true,
          "notification_unread": true,
          "title": "Invitation to interview",
          "userId": "1513535512629587968"
        }
      ]
    }
  • 读取组织通知计数

    GET /v1/alerts/org-counts osint

    返回各组织的通知计数(organizations[].counters),驱动提醒与消息角标。

    认证方式: 登录后签发的 OAuth2 Bearer AccessToken;另附 X-Upwork-Authentication 与 X-Upwork-API-TenantId。数据调用还需要一次作用域会话换发——缺少该作用域时纯移动端 Bearer 会被拒绝。

    • organizations
    • id
    • orgUid
    • counters
    • count
    GET /v1/alerts/org-counts HTTP/1.1
    Authorization: Bearer <accessToken>
    X-Upwork-Authentication: <accessToken>
    X-Upwork-API-TenantId: <tenantId>
    {
      "organizations": [
        {
          "id": "1513535512629587969",
          "orgUid": "1513535512629587969",
          "counters": [
            {
              "id": "messages",
              "count": 2
            }
          ]
        }
      ]
    }
  • 读取合同详情

    GET /v1/contracts/{contractId} openfinance

    加载合同会话:uid、referenceContractRid、时薪 charge_rate 与 weekly_limit,以及报表 / 收入历史使用的 combinedTotalEarnings。

    认证方式: 登录后签发的 OAuth2 Bearer AccessToken;另附 X-Upwork-Authentication 与 X-Upwork-API-TenantId。数据调用还需要一次作用域会话换发——缺少该作用域时纯移动端 Bearer 会被拒绝。

    • uid
    • referenceContractRid
    • state
    • clientOrgUid
    • clientTeamUid
    • freelancerUid
    • offerDetails
    • title
    • hourly
    • charge_rate
    • weekly_limit
    • start_date
    • fixedPrice
    • combinedTotalEarnings
    • currency
    • displayValue
    GET /v1/contracts/1669484061874712576 HTTP/1.1
    Authorization: Bearer <accessToken>
    X-Upwork-Authentication: <accessToken>
    X-Upwork-API-TenantId: <tenantId>
    {
      "uid": "1669484061874712576",
      "referenceContractRid": "20799532",
      "state": 1,
      "clientOrgUid": "1638232740248182785",
      "clientTeamUid": "1638232740248182785",
      "freelancerUid": "1663144681572958208",
      "offerDetails": {
        "title": "Staff Product Manager",
        "description": "Hourly product contract",
        "hourly": {
          "charge_rate": "85",
          "weekly_limit": "40",
          "start_date": "2026-09-17T00:00:00.000Z"
        },
        "fixedPrice": null
      },
      "combinedTotalEarnings": {
        "currency": "USD",
        "displayValue": "12840.00"
      }
    }
  • 列出客户合同要约

    POST /v1/hires/offers openfinance

    分页返回客户已发出要约:要约 id、title、state、type、contract.rid 与 freelancer.location.countryName,供雇佣 / 要约页使用。

    认证方式: 登录后签发的 OAuth2 Bearer AccessToken;另附 X-Upwork-Authentication 与 X-Upwork-API-TenantId。数据调用还需要一次作用域会话换发——缺少该作用域时纯移动端 Bearer 会被拒绝。

    • totalCount
    • edges
    • node
    • id
    • startDateTime
    • endDateTime
    • title
    • state
    • type
    • contract
    • rid
    • agency
    • name
    • freelancer
    • location
    • countryName
    POST /v1/hires/offers HTTP/1.1
    Authorization: Bearer <accessToken>
    X-Upwork-Authentication: <accessToken>
    X-Upwork-API-TenantId: <tenantId>
    Content-Type: application/json
    
    {
      "pagination": {
        "offset": 0,
        "count": 10
      }
    }
    {
      "totalCount": 3,
      "edges": [
        {
          "node": {
            "id": "101694088",
            "startDateTime": "2026-09-17T00:00:00.000Z",
            "endDateTime": null,
            "title": "Staff Product Manager",
            "state": "ACCEPTED",
            "type": "HOURLY",
            "contract": {
              "rid": "20799532"
            },
            "agency": {
              "name": "Northwind Studio"
            },
            "freelancer": {
              "location": {
                "countryName": "United States"
              }
            }
          }
        }
      ]
    }

数据类别

  • 职位发布
  • 投标提案
  • 面试邀请
  • Connects 余额
  • 合同
  • 客户公司统计
  • 消息会话
  • 通知
  • 自由职业者档案

数据使用场景与案例

  • 从职位与提案字段构建自由职业人才 CRM

    招聘 CRM 可轮询 POST /v1/proposals 与 POST /v1/invitations,获取 applicationUID、openingUID、chargeRate、connectsBid 与邀请状态,再关联 GET /v1/jobs/{jobId}/posting(paymentVerified、totalCharges、country),让招聘方看出哪些客户真正有花费。

  • Connects 钱包与出价成本跟踪

    自由职业者财务机器人可读取 GET /v1/connects/wallet 的 pibStatus(availableConnects、currentPrice、maxPrice、consumedConnectFraction)以及每份已提交提案的 connectsBid,在会员与 Connects 页续费前预估每周 Connects 消耗。

  • 合同费率与收入对账

    机构账本可拉取 GET /v1/contracts/{contractId} 的时薪 charge_rate、weekly_limit 与 combinedTotalEarnings,以 uid / referenceContractRid 为键,再与客户雇佣页 POST /v1/hires/offers 交叉核对。

  • 客户侧推荐人才短名单

    招聘台可调用 GET /v1/talent/recommended 获取 ciphertext、hourlyRateAmount、occupationTitle 与 portraitUrl,若已有会话则在 GET /v1/inbox/rooms 打开对应精简会话室。

常见问题

Upwork Android 应用如何鉴权数据调用?

登录得到 OAuth2 AccessToken(accessToken、refreshToken、expiresInSecs、tenantId)。后续请求发送 Authorization: Bearer,以及 X-Upwork-Authentication 与 X-Upwork-API-TenantId。动态、提案与会话室还需要 POST /v1/auth/scoped-token 换发的作用域令牌——缺少该作用域时纯移动端 Bearer 会被拒绝。

找工作卡片由哪些数据驱动?

POST /v1/feeds/best-match 与 POST /v1/feeds/most-recent 返回 uid、ciphertext、title、hourlyBudget 与 skills.prefLabel。打开卡片会用 GET /v1/jobs/{jobId}/posting 填充客户公开公司卡上的 paymentVerified 与 workHistoryStats.totalCharges。

Connects / 邀请奖励余额在哪里?

会员与 Connects 页读取 GET /v1/connects/wallet:pibStatus.availableConnects、currentPrice、maxPrice 与 consumedConnectFraction。已提交提案还带 terms.connectsBid。

除了职位,能否读取合同与消息会话室?

可以。GET /v1/contracts/{contractId} 返回 uid、时薪 charge_rate、weekly_limit 与 combinedTotalEarnings。GET /v1/inbox/rooms 列出含 unreadStoriesCount 的会话室,GET /v1/alerts/{userId} 分页提醒铃铛。

与 Upwork 相似的应用

  • Fiverr — Fiverr 是以色列的线上自由职业市场,买家按套餐(gig)购买服务,而不是发布开放式岗位说明。
  • Freelancer — Freelancer 是澳大利亚的自由职业市场,客户可发布项目和竞赛,用户主要来自印度、美国、菲律宾、巴基斯坦和英国。
  • Toptal — Toptal 是远程人才网络,先筛选自由职业开发者和设计师,再把他们匹配给企业。
  • Guru — Guru.com 是总部位于匹兹堡的自由职业市场,支持一口价、按小时、按任务和周期性合同。
  • PeoplePerHour — PeoplePerHour 是总部位于伦敦的自由职业市场,把客户和独立专业人士对接起来。
  • LinkedIn: Community & Network — LinkedIn 是带职位信息的职业社交网络,并通过 Open for Business 资料让自由职业者被客户发现。
  • 99designs — 99designs 是面向平面设计师的自由职业平台,通过竞赛和直接雇佣把设计师与客户对接。

相关主题

  • Upwork 数据 api
  • Upwork 职位动态
  • Upwork 最佳匹配
  • Upwork Connects 钱包
  • Upwork 提案列表
  • Upwork 面试邀请
  • Upwork 合同收入
  • Upwork 收件箱
  • Upwork 人才搜索
  • Upwork AccessToken

需要集成这个 App 的数据 API?

我们可为任意指定 App 交付定制集成——源码交付 USD 500 起,或托管 API 按调用计费。告诉我们您需要的数据即可。

  • 每个项目均签 NDA 与 SOW
  • 3–7 天交付
  • 验收通过后才付款
  • 仅在授权范围内作业

获取报价