Upwork 数据 API:职位、提案、Connects 与合同
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 与合同记录变成可调用的开放数据。
应用截图
API 端点一览
以下端点与请求/响应示例均依据应用界面推导重构,为示意说明,并非实际抓包。
签发作用域会话令牌
POST
/v1/auth/scoped-tokenosint把移动端会话换成作用域令牌(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-matchopendata驱动找工作页最佳匹配卡片: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-recentopendata加载找工作页“最新”标签(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}/postingopendata填充职位详情页上的客户公开公司卡:国家、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/walletopenfinance返回自由职业者的提案邀请奖励 / 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/proposalsopendata分页返回提案页(进行中/已提交/已归档):每条申请的 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/invitationsopendata分页返回“邀请面试”行(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-jobsopendata返回已保存职位(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/recommendedosint返回排序后的自由职业者卡片(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/roomsosint返回精简会话室列表(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}/storiesosint打开会话后分页返回该会话室的精简消息列表。
认证方式: 登录后签发的 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-countsosint返回各组织的通知计数(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/offersopenfinance分页返回客户已发出要约:要约 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 天交付
- 验收通过后才付款
- 仅在授权范围内作业