Asana API

Integrate Asana with your product—along with any other
Ticketing
 application

Connect your product to all the applications your customers use via Merge's

Ticketing

 

Unified API to close more deals, retain customers, and expand to new markets

Your Product
Merge
Your customers' data
Accounts
Async Passthroughs
Attachments
Audit Trails
Collections
Comments
Contacts
Field Mappings
Projects
Roles
Scopes
Tags
Teams

Top integration use cases for Asana

Sync Asana Data

FAQ on integrating with Asana’s API

How frequently does Merge sync data with Asana?

Merge synchronizes data from Asana at intervals determined by your selected sync plan and the Common Model you use. The available sync frequencies are:

  • Manual: Syncs are initiated manually by the user
  • Daily: Syncs occur once every 24 hours
  • Standard: Syncs take place every 1, 3, or 6 hours
  • High: Syncs happen either every 10 minutes or every 3 hours
  • Highest: Syncs occur every 1-5 minutes, hour, or 3 hours

Learn more about Merge’s sync frequencies for Asana.

Which Asana API endpoints does Merge interact with?

Some of the key endpoints include:

  • POST /1.0/tasks/{task_id}/attachments: Accesses attachment information for a specific task
  • POST /1.0/tasks/{task_gid}/stories: Retrieves comments associated with a task
  • PUT /1.0/tasks/{task_gid}: Updates information for a specific task
  • GET /1.0/tasks: Retrieves a list of tasks with associated details
  • GET /1.0/users: Accesses user information within Asana
  • GET /1.0/projects: Retrieves project information

See the full list of endpoints Merge supports.

Can I use Merge to sync custom fields in Asana?

Yes, Merge offers advanced features to access and sync custom data from Asana:

  1. Field Mapping: Map custom Asana fields to Merge’s Common Models in Merge’s Dashboard
  2. Remote Data: Access raw Asana data in its original format 
  3. Authenticated Passthrough Requests: Make direct API requests to Asana for data beyond the Common Models

Learn more about each of these features by visiting Merge’s Docs.

How does Merge handle rate limits when syncing data with Asana?

Merge manages API rate limits by implementing efficient data synchronization strategies. These include:

  • Incremental syncs: Only fetching data that has changed since the last sync to minimize API calls
  • Rate limit handling: Monitoring and adjusting request rates to comply with Asana's API rate limits

What should I do if I need more frequent data updates from Asana?

If you require more frequent data updates than your current sync plan provides, you can:

  • Contact your dedicated customer success manager or—if you’re on the Launch Plan—schedule a demo with one of Merge’s integration experts
  • Manually trigger a data sync by using the Force Resync endpoint
  • Set up Automatic Webhooks to receive real-time data updates

What companies use Merge’s integration with Asana?

A wide range of companies use it, including Avenue, Drata, Neo.Tax, and Thoropass.

Are there any days you’ll be closed for the holidays in 2024?
Trusted to power integrations globally
Build Smarter

Make integrations your competitive advantage

More sales, less code, fewer headaches

Focus on your core product

Stop diverting your engineers to yet another integration and let them get back to work.

Give customer success a break

Manage your simplified integration issues in a single pane. No therapist required.

Stop losing sales due to integrations

Launch integrations in days, not quarters. Your sales team will thank you.

APIs Made Simple

The toolkit for all your integration needs

We make integrations painless with accessible API design, dead-simple SDKs, and beautiful documentation that we agonize over.

View docs
Get Employee Data
import merge
from merge.client import Merge
merge_client = Merge(api_key="<YOUR_API_KEY>", account_token="<YOUR_ACCOUNT_TOKEN>")
employee = merge_client.hris.employees.list()
import { MergeClient, Merge } from '@mergeapi/merge-node-client';
const merge = new MergeClient({
  apiKey: 'YOUR_API_KEY',
  accountToken: 'YOUR_ACCOUNT_TOKEN',
});
employee = await merge.hris.employees.list()
ApiClient.instance.authentications.tokenAuth = {
  type: 'bearer',
  accessToken: 'API_KEY',
};
new EmployeesApi().employeesList('ACCOUNT_TOKEN', {}, (data) => {
  console.log(data);
});
import (
  "context"
  "fmt"
  merge "github.com/fern-api/merge-go"
  mergeclient "github.com/fern-api/merge-go/client"
  "github.com/fern-api/merge-go/hris"
)

client := mergeclient.NewClient(
  mergeclient.ClientWithAuthApiKey("<YOUR_API_KEY>"),
  mergeclient.ClientWithHeaderAccountToken("<YOUR_ACCOUNT_TOKEN>"),
)
employee, err := client.Hris().Employees().List(
  context.TODO(),
  &hris.EmployeesRetrieveRequest{
    IncludeRemoteData: merge.Bool(true),
  },
)
if err != nil {
  return err
}
fmt.Printf("Retrieved employee with ID %q\n", *employee.Id)
ApiClient client = Configuration.getDefaultApiClient();
client.setBasePath('https://api.merge.dev/api/ats/v1');
ApiKeyAuth tokenAuth = client.getAuthentication('tokenAuth');
tokenAuth.setApiKey('API_KEY');
CandidatesApi apiInstance = new CandidatesApi(client);
apiInstance.candidatesList('ACCOUNT_TOKEN');
import com.merge.api.MergeApiClient;
import com.merge.api.resources.hris.employees.requests.EmployeesRetrieveRequest;
import com.merge.api.resources.hris.types.Employee;
MergeApiClient mergeClient = MergeApiClient.builder()
    .accountToken("ACCOUNT_TOKEN")
    .apiKey("API_KEY")
    .build();
Employee employee = mergeClient.hris().employees().list(
    EmployeesRetrieveRequest.builder()
        .includeRemoteData(true)
        .build());
{
"id": "0958cbc6-6040-430a-848e-aafacbadf4ae",
"remote_id": "19202938",
"employee_number": "2",
"company": "8d9fd929-436c-4fd4-a48b-0c61f68d6178",
"first_name": "Dirna",
"last_name": "Emanuel",
"display_full_name": "Dirna Emanuel",
"username": "dirnaemanuel",
"groups": [
  "21a54124-397f-494d-985e-3c5b330b8a68"
],
"work_email": "dirna@merge.dev",
"personal_email": "dirnaemanuel@gmail.com",
"mobile_phone_number": "+1234567890",
"employments": [
  "17a54124-287f-494d-965e-3c5b330c9a68"
Meta Endpoint

Programmatically access required schemas

Third-party providers require specific (and often different) fields to write data to their APIs, making your code a mess.

Dynamically fetch required data schemas from Merge’s /meta endpoint to make POST or PATCH requests that just work.

View Docs
Beyond Building

Rely on the best integration observability system

Let our logs, issue detection, and automated alerts save your customer success team time, money, and headaches.

Forget maintenance - let your developers focus on building!

Start for free

How Drata helps thousands streamline their SOC 2 with Merge

Read case study

​​”Working with Merge’s Unified API and beautiful React component took less than a sprint to integrate, test, and release.”

Daniel Marashlian of profile photo
Daniel Marashlian
Co-Founder & CTO

Read more about building and maintaining multiple integrations

A guide to maintaining your product integrations
A guide to maintaining your product integrations
Blog
Blog Posts
10/27/2023
A guide to integrating multiple APIs
A guide to integrating multiple APIs
Blog
Blog Posts
11/13/2023
The top challenges of normalizing multiple API integrations
The top challenges of normalizing multiple API integrations
Blog
Blog Posts
11/20/2023
One Step Ahead

We're the cheat code to your integrations strategy

Revolutionize your integrations strategy for HR, payroll, directory, ATS, project management, ticketing, accounting and CRM platforms.

Start for free or talk to our sales team and learn how Merge makes it easy to add all your integrations in days – not years.
Read more