[Event Follow-Up] Nathan's Five Faves: Basic APIs for the Workfront World – June 23, 2026 | Community
Skip to main content
CynthiaBoon
Adobe Employee
Adobe Employee
June 23, 2026

[Event Follow-Up] Nathan's Five Faves: Basic APIs for the Workfront World – June 23, 2026

  • June 23, 2026
  • 2 replies
  • 87 views

Curious about what the Workfront API can really do for you? Join Nathan Johnson ​@NathanJo1, Adobe Technical Support Engineer III, as he breaks down the fundamentals and brings APIs into the real world. 

In this session, Nathan walks through the basics of the Workfront API, what it is, how it works, and why it matters, before diving into his five favorite use cases that showcase its power in action. 
 
From foundational knowledge to real-world application, this session will give you a clear, approachable path into the world of Workfront APIs, guided by an expert who works with them every day. Whether you're new to APIs or looking to expand your technical toolkit, this session will help you connect the dots between concept and capability.  

Access the event resources below: 

We’d love to start a series on this topic, so let’s keep the conversation going:  

  • What questions do you still have? 
  • What are your favorite Workfront API use cases?
  • Are there any use cases you'd like to explore further? 

Drop your thoughts, follow-up questions, or takeaways below and feel free to connect with others who attended! 

Thank you for being part of the community and be sure to register for more upcoming events!  

2 replies

Level 2
June 24, 2026

Our Workfront instance serves 34 of our business sites around the world.  We would like to maintain a table of golden record customer names, which would be between 50,000 and 75, 000 records, using a daily API call to create new records or apply any changes to existing ones.  What is the best object to use to capture the following information for each customer record: name, golden record ID, city, state, country?  My first instinct is to use the Company object and then offer users a typeahead field in which to enter the customer name for each project within their portfolios. I would appreciate any feedback on best practices or recommendations.

NathanJo1
Adobe Support
Adobe Support
July 13, 2026

@ShannonRic 
Sorry for the delay here. I’m not certain on the best way to go about this, and I think I might need more info to really help, so feel free to provide more, but also it may be helpful for you to meet with our Customer Engineering team. 

That said, typeahead fields require the data to already exist somewhere, so I’m not sure they’d be the best option to use to enter customer info. For example, a USER typeahead field allows you to search and select any user from your environment (provided they meet filter criteria and you have access to view them).

If these are just records about customers, the default way to handle them would be either as individual tasks or issues in various projects/programs/portfolios, etc. These tasks could have custom fields with the data you are looking to store about each one. 

The real deciding factor on how to store this is, how do you want to use the data? Is it just to store information about each customer? Is there specific actions that need to be taken at regular intervals for each of these? If it is just for storage, then using Workfront isn’t necessarily the best way to do that, since it isn’t a database in the strict sense. If you need to take actions and assign people to work on these actions then it makes sense to use Workfront. 

Putting the customers in as users doesn’t make a lot of sense either since that would be a waste oif licenses for “users” that aren’t actually logging into the system.

If you need to have the list of customers and reference it for various issues or tasks that you are working on in Workfront, then it could make sense to store them there, but that is also one fo the reasons we built the external lookup field. It allows you to query a separate API or database and return data in Workfront. This may be what you really want to do. If that is the case, storing the data is really up to your preference, and there are various ways you can do that, but you will need to be able to reference the endpoint with an HTTP API call. Your organization may have options for you here.

Anyways, hope that helps. let me know if you have more questions.

KristenS_WF
Level 7
July 1, 2026

Great session.  I definitely want to put in a vote for a follow-up session on OAuth 2.0, and I have a use case for which I need some assistance.

 

I was able to follow the instructions in the slide link (https://developer.adobe.com/workfront-apis/guides/gaining-access/) to create API credentials and give Admin access to the Technical Account created.  I’m a little stuck on what comes next.

 

Currently I use Session ID to authenticate Workfront API calls in Power BI; side note: the session mentioned that the API Basics documentation indicates the Session ID is no longer supported, but the documentation actually still lists it as the preferred method:

 

 

I have a Fusion scenario that generates the Session ID on demand (after selecting the ‘Run’ dropdown value in a custom field I have in a report).  I treat the Session ID in Power BI as a parameter that can be updated prior to refreshing the dataset, but I’d love if the OAuth 2.0 method could allow me to skip manual steps in the refresh.

 

In Power BI I use a GetData function and a separate query that invokes the function and handles possible pagination for larger data pulls.  Here’s an example of both I use for pulling User data:

 

(index as number)=>

let

Source = Json.Document(Web.Contents("https://MYORGNAME.my.workfront.com/attask/api/",

[RelativePath = "v21.0/user/search",

Headers=[sessionID=WFSessionID],

Query =

[

//ResourceTeam not blank
#"DE:ETResourceTeam_Mod"=Text.From("notblank"),

#"$$FIRST"=Text.From(index),

#"$$LIMIT"="2000",

fields="name, scheduleID, timeZone, role:name, DE:ETResourceTeam, DE:ETResourceSubteam, DE:ETResourceTeamManager, DE:ETResourceTarget"

]

]

))
in
Source

 

let

Source = List.Generate(

()=> [Result = try GetData(0) otherwise null, Offset = 0],

each List.IsEmpty([Result][data]) <> true,

each [Result = try GetData([Offset]+2000) otherwise null, Offset = [Offset]+2000],

each [Result])

in

Source

 

Does anyone have pointers for modifying the M code for OAuth 2.0 use (and any additional settings guidance that should be followed)?

 

Thanks!

 

 

NathanJo1
Adobe Support
Adobe Support
July 13, 2026

@KristenS_WF 
Sorry for the delay in my response. I’ve been out of the office for a bit. Thanks for watching and I appreciate the sessionID. It looks like the part I was referencing was changed at some point, but a little bit further down the page it now says “Workfront no longer recommends the use of the /login endpoint or API keys. Instead, use one of the following authentication methods:” Most of our customer’s generate the sessionID through the login endpoint and I believe there was was a callout about sessionID in the past. Glad that they’ve cleared things up and I’ll be sure to make this more clear in future sessions.

When using a technical account, you would want to use the cURL command provided in the credentials page for your project in the developer console. That cURL command would allow you to run an API call that returns a Bearer Token, and then you can pass the Bearer Token as a header in your Power BI code. You should be able to run the cURL command directly in PowerBI so you don’t need to manually input anything. Let me know if you have any questions.

KristenS_WF
Level 7
July 14, 2026

Thanks for the pointers, Nathan!  I’ve got a basic user M query that’s working now; I still need to publish and check how it performs with refreshes.

Kristen