Upwork · 15 min · reviewed 2026-09-24

How do I get Upwork API access and connect it to my CRM?

Request an Upwork API key, add your workspace callback URL to it, then click Connect Upwork under Settings → Upwork API and approve access. One connection serves the whole workspace. It powers the Upwork feed, your saved searches and the hourly job fetch. Tokens are stored on your own instance, never in the browser, and they refresh on their own.

What you will need

  • An Upwork account that owns the agency or the freelancer profiles you bid from.
  • An Upwork API key. You request it on Upwork's developer page at https://www.upwork.com/developer/keys/apply.
  • An admin seat in SalesCrew, so you can open Settings → Deployment and Settings → Upwork API.

Steps

  1. 1

    Step 1

    In SalesCrew, open Settings → Deployment and check App URL. It should be the address your team uses, such as https://<your-workspace>.

  2. 2

    Step 2

    Your callback URL is that address plus /auth/upwork/callback. For example: https://<your-workspace>/auth/upwork/callback.

  3. 3

    Step 3

    On Upwork's developer page, create a new key. Pick OAuth 2.0, name the project SalesCrew, and paste the callback URL from step 2.

  4. 4

    Step 4

    Give the key read access to jobs. Save it and copy the client id and client secret.

  5. 5

    Step 5

    Send both to your SalesCrew contact. They store them as secrets on your instance.

  6. 6

    Step 6

    Open Settings → Upwork API and click Connect Upwork. Sign in to Upwork as the workspace account and allow access.

  7. 7

    Step 7

    Upwork sends you back to the callback URL. If that page opens SalesCrew, the connection finishes by itself.

  8. 8

    Step 8

    If it does not, copy the code from the page Upwork shows. Paste it, or the whole URL, into Step 2 and click Connect.

  9. 9

    Step 9

    Next, save your first search. The guide on the Upwork job feed and gate covers it.

Common errors

redirect_uri mismatch
the callback URL on the Upwork key differs from App URL plus /auth/upwork/callback. Make them match exactly.
You connect from a second address
the workspace uses App URL for the callback, not the address in your browser bar. Register that one on the key.
invalid_client
the secret changed on Upwork. Make a new one and send it again.
Access token expired
nothing to do. It refreshes on the next fetch. If fetches keep failing, click Re-authorize Upwork.
Feed stays empty
there are no saved searches yet. Add one under Channels → Upwork → Feed.

How you know it worked

Settings → Upwork API shows Connected and the badge Upwork API token stored. Click Re-check to test it again. The Upwork feed fills with jobs once your first saved search runs.

Where this goes in SalesCrew

Settings → Upwork API shows Connected and the Upwork feed fills with jobs. In your own workspace the same how-to opens beside the field, with your callback URLs filled in.