Asana
  1. Attachments
Asana
  • Attachments
    • Delete an attachment
      DELETE
    • Get an attachment
      GET
    • Get attachments for a task
      GET
    • Upload an attachment
      POST
  • Batch API
    • Submit parallel requests
      POST
  • Custom Fields
    • Create a custom field
      POST
    • Delete a custom field
      DELETE
    • Get a custom field
      GET
    • Update a custom field
      PUT
    • Create an enum option
      POST
    • Reorder a custom field's enum
      POST
    • Update an enum option
      PUT
    • Get a workspace's custom fields
      GET
  • Events
    • Get events on a resource
      GET
  • Goals
    • Get goals
      GET
    • Create a goal
      POST
    • Delete a goal
      DELETE
    • Get a goal
      GET
    • Update a goal
      PUT
    • Add a collaborator to a goal
      POST
    • Add a subgoal to a parent goal
      POST
    • Add a project/portfolio as supporting work for a goal.
      POST
    • Get parent goals from a goal
      GET
    • Remove a collaborator from a goal
      POST
    • Remove a subgoal from a goal
      POST
    • Remove a project/portfolio as supporting work for a goal.
      POST
    • Create a goal metric
      POST
    • Update a goal metric
      POST
    • Get subgoals from a goal
      GET
    • Get supporting work from a goal
      GET
  • Jobs
    • Get a job by id
  • Organization Exports
    • Create an organization export request
    • Get details on an org export request
  • Teams
    • Get teams in an organization
    • Create a team
    • Get a team
    • Add a user to a team
    • Remove a user from a team
    • Get teams for a user
  • Portfolio Memberships
    • Get multiple portfolio memberships
    • Get a portfolio membership
    • Get memberships from a portfolio
  • Portfolios
    • Get multiple portfolios
    • Create a portfolio
    • Delete a portfolio
    • Get a portfolio
    • Update a portfolio
    • Add a custom field to a portfolio
    • Add a portfolio item
    • Add users to a portfolio
    • Get portfolio items
    • Remove a custom field from a portfolio
    • Remove a portfolio item
    • Remove users from a portfolio
  • Custom Field Settings
    • Get a portfolio's custom fields
    • Get a project's custom fields
  • Project Memberships
    • Get a project membership
    • Get memberships from a project
  • Project Statuses
    • Delete a project status
    • Get a project status
    • Get statuses from a project
    • Create a project status
  • Projects
    • Get multiple projects
    • Create a project
    • Delete a project
    • Get a project
    • Update a project
    • Add a custom field to a project
    • Add followers to a project
    • Add users to a project
    • Duplicate a project
    • Remove a custom field from a project
    • Remove followers from a project
    • Remove users from a project
    • Get task count of a project
    • Get projects a task is in
    • Get a team's projects
    • Create a project in a team
    • Get all projects in a workspace
    • Create a project in a workspace
  • Sections
    • Get sections in a project
    • Create a section in a project
    • Move or Insert sections
    • Delete a section
    • Get a section
    • Update a section
    • Add task to section
  • Tasks
    • Get tasks from a project
    • Get tasks from a section
    • Get tasks from a tag
    • Get multiple tasks
    • Create a task
    • Delete a task
    • Get a task
    • Update a task
    • Set dependencies for a task
    • Set dependents for a task
    • Add followers to a task
    • Add a project to a task
    • Add a tag to a task
    • Get dependencies from a task
    • Get dependents from a task
    • Duplicate a task
    • Unlink dependencies from a task
    • Unlink dependents from a task
    • Remove followers from a task
    • Remove a project from a task
    • Remove a tag from a task
    • Set the parent of a task
    • Get subtasks from a task
    • Create a subtask
    • Get tasks from a user task list
    • Search tasks in a workspace
  • Stories
    • Delete a story
    • Get a story
    • Update a story
    • Get stories from a task
    • Create a story on a task
  • Tags
    • Get multiple tags
    • Create a tag
    • Delete a tag
    • Get a tag
    • Update a tag
    • Get a task's tags
    • Get tags in a workspace
    • Create a tag in a workspace
  • Team Memberships
    • Get team memberships
    • Get a team membership
    • Get memberships from a team
    • Get memberships from a user
  • Users
    • Get users in a team
    • Get multiple users
    • Get a user
    • Get a user's favorites
    • Get users in a workspace or organization
  • Time Periods
    • Get time periods
    • Get a time period
  • User Task Lists
    • Get a user task list
    • Get a user's task list
  • Workspace Memberships
    • Get workspace memberships for a user
    • Get a workspace membership
    • Get the workspace memberships for a workspace
  • Webhooks
    • Get multiple webhooks
    • Establish a webhook
    • Delete a webhook
    • Get a webhook
  • Workspaces
    • Get multiple workspaces
    • Get a workspace
    • Update a workspace
    • Add a user to a workspace or organization
    • Remove a user from a workspace or organization
  • Typeahead
    • Get objects via typeahead
  1. Attachments

Upload an attachment

POST
/tasks/{task_gid}/attachments
Attachments
Upload an attachment.
This method uploads an attachment to a task and returns the compact
record for the created attachment object. It is not possible to attach
files from third party services such as Dropbox, Box & Google Drive via
the API. You must download the file content first and then upload it as
any other attachment.
The 100MB size limit on attachments in Asana is enforced on this endpoint.
This endpoint expects a multipart/form-data encoded request containing
the full contents of the file to be uploaded.
Requests made should follow the HTTP/1.1 specification that line
terminators are of the form CRLF or \r\n outlined
here
in order for the server to reliably and properly handle the request.
Request Request Example
Shell
JavaScript
Java
Swift
curl --location --request POST 'https://app.asana.com/api/1.0/tasks//attachments'
Response Response Example
200 - Example 1
{
    "data": {
        "gid": "12345",
        "resource_type": "task",
        "name": "Screenshot.png",
        "resource_subtype": null,
        "created_at": "2012-02-22T02:06:58.147Z",
        "download_url": "https://s3.amazonaws.com/assets/123/Screenshot.png",
        "host": "dropbox",
        "parent": {
            "gid": "12345",
            "resource_type": "task",
            "name": "Bug Task"
        },
        "view_url": "https://www.dropbox.com/s/123/Screenshot.png"
    }
}

Request

Path Params
task_gid
string 
required
Body Params multipart/form-data
file
file 
optional
Required for file attachments.
name
string 
optional
The name of the external resource being attached. Required for attachments of type 'external'.
resource_subtype
string 
optional
The type of the attachment. Must be one of the given values. If not specified, a file attachment of type asana_file_attachments will be assumed.
Example:
text
url
string 
optional
The URL of the external resource being attached. Required for attachments of type 'external'.

Responses

🟢200Successfully uploaded the attachment to the task.
application/json
Body
data
object (AttachmentResponse) 
optional
An attachment object represents any file attached to a task in Asana, whether it’s an uploaded file or one associated via a third-party service such as Dropbox or Google Drive.
created_at
string <date-time>
read-onlyoptional
The time at which this resource was created.
Example:
2012-02-22T02:06:58.147Z
download_url
string <uri> | null 
read-onlyoptional
The URL containing the content of the attachment.
Note: May be null if the attachment is hosted by Box. If present, this URL may only be valid for two minutes from the time of retrieval. You should avoid persisting this URL somewhere and just refresh it on demand to ensure you do not keep stale URLs.
Example:
https://s3.amazonaws.com/assets/123/Screenshot.png
host
string 
read-onlyoptional
The service hosting the attachment. Valid values are asana, dropbox, gdrive and box.
Example:
dropbox
parent
object 
read-onlyoptional
The task this attachment is attached to.
view_url
string <uri> | null 
read-onlyoptional
The URL where the attachment can be viewed, which may be friendlier to users in a browser than just directing them to a raw file. May be null if no view URL exists for the service.
Example:
https://www.dropbox.com/s/123/Screenshot.png
gid
string 
read-onlyoptional
Globally unique identifier of the resource, as a string.
Example:
12345
resource_type
string 
read-onlyoptional
The base type of this resource.
Example:
task
name
string 
read-onlyoptional
The name of the file.
Example:
Screenshot.png
resource_subtype
optional
The service hosting the attachment. Valid values are asana, dropbox, gdrive, onedrive, box, and external.
external attachments are a beta feature currently limited to specific integrations.
🟠400400
🟠401401
🟠403403
🟠404404
🔴500500
Previous
Get attachments for a task
Next
Submit parallel requests
Built with