# OAuth? Personal Access Token? API Key? How to get connected to Asana through our API

**URL:** <https://forum.asana.com/t/oauth-personal-access-token-api-key-how-to-get-connected-to-asana-through-our-api/814>\
**Category:** API & Developers\
**Tags:** authentication, api\
**Created:** [15 March 2017 03:48 UTC](https://forum.asana.com/t/oauth-personal-access-token-api-key-how-to-get-connected-to-asana-through-our-api/814 "2017-03-15T03:48:36Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Matt\_Bramlage](https://sea2.discourse-cdn.com/asana/user_avatar/forum.asana.com/matt_bramlage/32/145_2.png) [@Matt\_Bramlage](https://forum.asana.com/u/Matt_Bramlage)\
**Post date:** [15 March 2017 03:48 UTC](https://forum.asana.com/t/oauth-personal-access-token-api-key-how-to-get-connected-to-asana-through-our-api/814/1 "2017-03-15T03:48:36Z")

</div>

A common question we hear about [authenticating with Asana’s API](https://asana.com/developers/documentation/getting-started/auth) is that it’s not particularly clear which method to use to get access to our API. Let’s chat about that!

First things first: if you’re using an API key (our older method of authenticating) to connect to our API

[don’t. We’re shutting them off.](https://asana.com/developers/feed/api-key-deprecation) 😉 Personal Access Tokens (described below) are pretty much the direct replacement for API keys.

Now that we have that out of the way, what’s the difference between an [OAuth App](https://asana.com/developers/documentation/getting-started/auth#oauth) and a [Personal Access Token](https://asana.com/developers/documentation/getting-started/auth#personal-access-token) (or PAT)?

When first getting started with our API, it’s best to use a Personal Access Token. It’s significantly simpler to get going - you simply create the access token and use it to make requests with our client libraries or curl and off you go. PATs imply that you want the script to act “as you” and you will be the user that shows up in Asana as having taken any particular action.

_Edit: we designed PATs to be backwards-compatible with API keys, so integrations built to use API keys can be given a PAT and this should work, though we definitely recommend moving to OAuth apps for multi-user integrations! PATs are better for users, too - if you create a new one for each integration, you can revoke one without losing access to all other integrations. Thanks to @briankb for prompting this note!_

OAuth Apps are designed to be used “on behalf of” another user - they are you building a tool, and the tool is used by someone else. This means that the authentication method is much more complicated - you have to potentially involve the user granting access to your application of their Asana data.

However, you **want** that if you’re looking to build something for other users; the authentication method is designed to keep the user’s (and your integration’s) credentials secret. It’s better for users, too: if you hand out your PAT to multiple integrations, and later decide to revoke access to one, you’re stuck: you have to revoke it for all of them. OAuth apps are designed to work on a per-application basis.

Hopefully this helps you hit the ground running!

---

<div class="post-metadata">

**Author:** ![briankb](https://sea2.discourse-cdn.com/asana/user_avatar/forum.asana.com/briankb/32/1132_2.png) [@briankb](https://forum.asana.com/u/briankb)\
**Post date:** [16 March 2017 19:16 UTC](https://forum.asana.com/t/oauth-personal-access-token-api-key-how-to-get-connected-to-asana-through-our-api/814/2 "2017-03-16T19:16:07Z")

</div>

Atlassian via JIRA still tries to use your API Key. This is their problem but I thought I would mention it in case you have a relationship and can get them to update their Importer to support the Personal Access Token or OAuth like they already do for their Github importer.

 ![](https://us1.discourse-cdn.com/asana/original/2X/7/7ba709e33b586d2a1141f002a4297862914118da.png)

 ![](https://us1.discourse-cdn.com/asana/original/2X/4/47f9082c3087cb5c9eb5bcf496feab6e62da5c3d.png)

 ![](https://us1.discourse-cdn.com/asana/original/2X/2/224a490edf81cbb87e117f8dd9cc52cff721a9cf.png)

---

<div class="post-metadata">

**Author:** ![Matt\_Bramlage](https://sea2.discourse-cdn.com/asana/user_avatar/forum.asana.com/matt_bramlage/32/145_2.png) [@Matt\_Bramlage](https://forum.asana.com/u/Matt_Bramlage)\
**Post date:** [16 March 2017 22:33 UTC](https://forum.asana.com/t/oauth-personal-access-token-api-key-how-to-get-connected-to-asana-through-our-api/814/3 "2017-03-16T22:33:55Z")

</div>

Thanks @briankb! We will definitely follow up! (They’re using our older branding too, hmm…)

If anyone happens to land here from search or some other context, we built **PATs to be backwards compatible with API keys** in those integrations which have not made the change - you can issue a new PAT and use that in the field for an API key and it should work.

---

<div class="post-metadata">

**Author:** ![France\_Pastrana](https://sea2.discourse-cdn.com/asana/user_avatar/forum.asana.com/france_pastrana/32/4003_2.png) [@France\_Pastrana](https://forum.asana.com/u/France_Pastrana)\
**Post date:** [11 June 2017 06:25 UTC](https://forum.asana.com/t/oauth-personal-access-token-api-key-how-to-get-connected-to-asana-through-our-api/814/4 "2017-06-11T06:25:22Z")

</div>

Hi, I’m developing a google plugin that integrate Asana to Google Form using Google Apps Script, We are currently using Personal Access Token (PAT) to make a request to Asana but planning to change it and implement the Oauth since it is more easier for the user. I’m researching for more than a week on how to implement Oauth with Asana but no luck, there’s no detailed documentation on how to do it.

can anyone help me? really need to implement Oauth. You’re help is very much appreciated.

Thanks!!

---

<div class="post-metadata">

**Author:** ![Jeff\_Schneider](https://sea2.discourse-cdn.com/asana/user_avatar/forum.asana.com/jeff_schneider/32/146_2.png) [@Jeff\_Schneider](https://forum.asana.com/u/Jeff_Schneider)\
**Post date:** [13 June 2017 23:09 UTC](https://forum.asana.com/t/oauth-personal-access-token-api-key-how-to-get-connected-to-asana-through-our-api/814/5 "2017-06-13T23:09:47Z")

</div>

Thanks for reaching out. We have a section on authentication, including OAuth, in [our documentation](https://asana.com/developers/documentation/getting-started/auth).

We also have OAuth examples in the [Asana Client Libraries](https://asana.com/developers/documentation/getting-started/client-libraries).

Hopefully those resources are helpful. Let us know if you have specific questions.

---

<div class="post-metadata">

**Author:** ![Nick\_Ellis](https://sea2.discourse-cdn.com/asana/user_avatar/forum.asana.com/nick_ellis/32/39825_2.png) [@Nick\_Ellis](https://forum.asana.com/u/Nick_Ellis)\
**Post date:** [29 August 2019 18:00 UTC](https://forum.asana.com/t/oauth-personal-access-token-api-key-how-to-get-connected-to-asana-through-our-api/814/6 "2019-08-29T18:00:52Z")

</div>

I get the sense that the OAuth is structured on the assumption that there is somewhere a human user at the other end. I am trying to build a quick API call from Integromat, to compensate for the fact that they have not yet built an action to move a task to a project section.  
The native Integromat engine will create a section and then create a task, so can pass the IDs of both. I now need to make a call that says “put task x in project section y”. I can write the API command but I am struggling to see how to authenticate in the first place. When I try following the instructions using Postman I just get a blank response, though I know the values are correct.

---

<div class="post-metadata">

**Author:** ![KWD\_SYSOP](https://sea2.discourse-cdn.com/asana/user_avatar/forum.asana.com/kwd_sysop/32/64552_2.png) [@KWD\_SYSOP](https://forum.asana.com/u/KWD_SYSOP)\
**Post date:** [5 November 2020 13:15 UTC](https://forum.asana.com/t/oauth-personal-access-token-api-key-how-to-get-connected-to-asana-through-our-api/814/7 "2020-11-05T13:15:35Z")

</div>

A old Plugin also uses the API:

> **[Asana Task Widget](https://de.wordpress.org/plugins/asana-task-widget/)**
>
> Adds dashboard widgets for creating tasks in Asana, and for displaying tasks that are due.

---

<div class="post-metadata">

**Author:** ![Stan1](https://luna1.co/8d76cd.png) [@Stan1](https://forum.asana.com/u/Stan1)\
**Post date:** [6 May 2022 16:30 UTC](https://forum.asana.com/t/oauth-personal-access-token-api-key-how-to-get-connected-to-asana-through-our-api/814/8 "2022-05-06T16:30:56Z")

</div>

I was able to get this to work via a single page, but now I want to use ajax and I can’t figure out the flow of it. Any thoughts? I want to be on my main index page, click submit, use ajax to act like clicking the link with the code challenge, then redirect back to my processing page, and have the processing page return a response back to my main page. I tried it, but I’m not getting a response at my main page, so I think I may be misunderstanding how to do this with the redirect.

---

<div class="post-metadata">

**Author:** ![system](https://sea2.discourse-cdn.com/asana/user_avatar/forum.asana.com/system/32/276370_2.png) [@system](https://forum.asana.com/u/system)\
**Post date:** [30 May 2025 19:04 UTC](https://forum.asana.com/t/oauth-personal-access-token-api-key-how-to-get-connected-to-asana-through-our-api/814/9 "2025-05-30T19:04:14Z")

</div>


