How to connect your Upwork API key
Register an Upwork developer app, set its permissions and redirect URI, and connect it to ProposalLift. Written steps plus a video walkthrough.
Last updated:
Prefer to read? Every step in the video is written out below.
Connecting your Upwork account is what turns on the job feed, saved filters, and alerts. It takes a few minutes, and one step causes almost every failure.
If you would rather watch, the video above covers the same ground. Everything in it is written out below, including the mistakes that are easy to make.
Before you start
You need an Upwork account you can sign in to, and access to its developer settings. You do not need a paid ProposalLift plan to register an app, and you do not need to share your Upwork password with anything.
Note what this is not: ProposalLift is not affiliated with Upwork. You are creating your own application on Upwork's platform and granting it access, exactly as you would for any other integration.
The steps
1. Open the Upwork API centre
Sign in to Upwork and find the developer or API section in your account settings. This is where Upwork lists the API applications on your account.
2. Create a new API application
Name it something you will recognize in six months. This application belongs to you. Its key and secret are your credentials, and ProposalLift stores them on your behalf rather than using its own.
3. Set the redirect URI
This is the step that goes wrong. ProposalLift shows you the exact callback URL to use on its Upwork settings page. Copy it and paste it, without editing it.
It has to match character for character: the scheme, the host, and the full path. A trailing slash where there should not be one is enough to break the connection, and the error Upwork returns does not always say so clearly.
4. Request the permissions you need
The job feed reads job postings, so job search and read access is what it depends on. Grant the narrowest set of permissions that covers what you actually intend to do.
If you plan to import agency members as personas later, note that listing an agency's staff requires owner or admin permission on the Upwork account itself. Without it you can still import your own profile.
5. Wait for approval if Upwork asks for it
Some applications are reviewed before the credentials become usable. During that window, authorization fails even though everything is configured correctly. If your details are right and the connection still will not complete, check the application's status on Upwork before changing anything.
6. Copy the key and secret into ProposalLift
Paste both into ProposalLift's Upwork settings. Watch for whitespace picked up while copying, which is a quiet and annoying cause of failure.
The secret is encrypted before it is stored and is never displayed back to you in full.
7. Authorize
Press connect. Upwork shows a consent screen, you approve it, and you return to ProposalLift with the account linked. The job feed starts working immediately after that.
If it does not work
Work down this list, most likely first:
- Redirect URI mismatch. Compare the two strings character by character rather than by eye.
- Application not approved. Check its status on Upwork.
- Permissions too narrow. Job search and read access need to be granted.
- Whitespace in the key or secret. Re-copy both.
- Wrong Upwork account. If you have more than one, confirm which one you were signed in to.
The shared app alternative
If registering an application sounds like more than you want to do, paid accounts can connect through a shared platform app instead. It works immediately with no setup.
The trade is capacity: the shared app has a per-user cooldown and a daily request budget split across everyone using it, so heavy use is better served by your own credentials. See Upwork Auth vs the Upwork API for what each connection type actually does.
Related
Frequently asked questions
Ready to win more Upwork jobs?
Start generating context-aware proposals in minutes, free for 14 days.
Start free trialPrefer to run it yourself? Get the free, open-source edition.
