NAV Navbar
Logo
cURL

Introduction

Welcome to the Upwave API!

This API will give you the means to integrate Upwave into your projects. Typical use cases would be to list/find resources or create Cards/Comments in Upwave programatically.

If you have any problems or requests please file an issue in the Upwave API GitHub repo.

API Endpoints

Workspaces

https://api.upwave.io/workspaces/

This is the most likely the endpoint you are looking for. It will list all the Workspaces you have access to. Digging deeper into its structure, it will allow listing, modifying and creating entities such as Cards.

Notifications

https://api.upwave.io/notifications/

Personal notifications are listed by this endpoint. It only supports the GET method.

Auth

https://api.upwave.io/auth/

The auth endpoint can be used to check your authentication. It only support the GET method, and will return your account data.

Authentication

# Authenticate to any API ENDPOINT by adding the Authorization header
curl "https://api.upwave.io/auth/"
  -H 'Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b'

Make sure to replace the API Token with your own.

For clients to authenticate, the token key should be included in the Authorization HTTP header. The key should be prefixed by the string literal “Token”, with whitespace separating the two strings. For example:

Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b

The token can be obtained by visiting your account settings. Click your profile image, select “Settings” and find your API-Key in the “Account” tab.

Restrictions

If a Workspace is linked to a social account (e.g. Google Workspace, Microsoft 365), your API requests may be rejected if you have not proven that you have successfully authenticated using that social provider.

Pagination

GET requests that return multiple items always comes paginated. The max pagination size is 100. Follow the “next” and “previous” URLs to turn the pages. The actual list of items are kept within the results block.

For most of the requests, a page_size parameter can be issued to control the size.

Throttling

All API requests are throttled. This means you will receive a status code of 429 “Too Many Requests” if you exceed our limits. We have two quotas to control this; one per hour (for bursts) and one per day.

Access and permissions

Most entities in this API comes with an access property that describes the permissions you have on the specific object. The permissions are determined by what role you have in your membership.

The access property can have up to 5 permissions:

Permission can_admin

The can_admin permission determines if you have the privileges of editing/administrating the object.

Permission can_modify

The can_modify permission tells if you have the privileges to create sub objects on the object. For example if the object is a Board entity you will be able to create Cards or change the Board structure objects like Colors, Columns or Rows.

Permission can_comment

The can_comment permission is only present at certain objects where commenting is available and tells whether or not the user is allowed to create comments.

Permission can_invite

The can_invite permission decides if the user is allowed to invite new users to the object. New users will become member of the object and any parent object.

Permission can_invite_existing

The can_invite_existing permission tells if the user is allowed to invite existing Workspace members to the object.

Workspaces

A Workspace is the highest entity in Upwave. All data that is not directly tied to a users personal account is stored here.

View a Workspace

GET https://api.upwave.io/workspaces/1337/

curl "https://api.upwave.io/workspaces/1337/"
  -H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"

The above command returns JSON structured like this:

{
    "id": 1,
    "title": "Acme Corporation",
    "logo": "https://path/to/image",
    "access":{
        "can_admin": true,
        "can_modify": true,
        "can_invite": true,
        "can_invite_existing": true
    },
    "logo": "https://path/to/image",
    "features": {
        ...
    }
}

List Workspaces

GET https://api.upwave.io/workspaces/

curl "https://api.upwave.io/workspaces/"
  -H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"

The above command returns JSON structured like this:

{
    "count": 1,
    "next": None,
    "previous": None,
    "results": [
        {
            "id": 1337,
            "title": "Acme Corporation",
            "access":{
                "can_admin": true,
                "can_modify": true,
                "can_invite": true,
                "can_invite_existing": true
            },
            "logo": "https://path/to/image",
            "features": {
                ...
            }
        }
    ]
}

Teams

A Team in Upwave is a container for Boards.

View a Team

GET https://api.upwave.io/workspaces/1337/teams/482/

curl "https://api.upwave.io/workspaces/1337/teams/482/"
  -H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"

The above command returns JSON structured like this:

{
    "id": 482,
    "title": "R & D",
    "hex_color": "#00796b",
    "hex_text_color": "#ffffff",
    "access":{
        "can_admin": true,
        "can_modify": true,
        "can_invite": true,
        "can_invite_existing": true
    }
}

List Teams

GET https://api.upwave.io/workspaces/1337/teams/

curl "https://api.upwave.io/workspaces/1337/teams/"
  -H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"

The above command returns JSON structured like this:

{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 482,
            "title": "R & D",
            "access":{
                "can_admin": true,
                "can_modify": true,
                "can_invite": true,
                "can_invite_existing": true
            }
        }
    ]
}

Boards

A Board is a container for Cards and will hold some type of structure where the Cards can be positioned. The structure-types includes; columns, rows, colors and boxes

View a Board

GET https://api.upwave.io/workspaces/1337/boards/65323/

curl "https://api.upwave.io/workspaces/1337/boards/65323/"
  -H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"

The above command returns JSON structured like this:

{
    "id": 65323,
    "title": "Rocket driven hoverboard",
    "purpose": "Development of the new rocket driven hoverboard",
    "background_image_url": "https://path/to/image",
    "background_image_thumb_url": "https://path/to/image",
    "created_dt": "2019-04-13T10:33:20.581Z",
    "rows_enabled": false,
    "plugin_type": "classic",
    "team": {
        "id": 482,
        "title": "R & D",
        "hex_color": "#00796b",
        "hex_text_color": "#ffffff"
    },
    "created_by_user": {
        "id": 263345,
        "email": "coyote@example.com",
        "fullname": "Wile E.",
        "firstname": "Coyote",
        "avatar": "https://path/to/image",
    },
    "columns": [
        {
            "id": 52431,
            "name": "Todo",
            "state": 1
        },
        {
            "id": 52432,
            "name": "In progress",
            "state": 2
        },
        {
            "id": 52433,
            "name": "Completed",
            "state": 3
        },
    ],
    "rows": [
        {
            "id": 23534,
            "name": "Row-1"
        }
    ],
    "colors": [
        {
            "id": 34511,
            "name": "High risk"
        },
        {
            "id": 34512,
            "name": "Low risk"
        }
    ]
}

List Boards

GET https://api.upwave.io/workspaces/1337/boards/

curl "https://api.upwave.io/workspaces/1337/boards/"
  -H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"

The above command returns JSON structured like this:

{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 65323,
            "title": "Rocket driven hoverboard",
            "purpose": "Development of the new rocket driven rollerblades",
            "background_image_url": "https://path/to/image",
            "background_image_thumb_url": "https://path/to/image",
            "created_dt": "2019-04-13T10:33:20.581Z",
            "rows_enabled": false,
            "plugin_type": "classic",
            "team": {
                "id": 482,
                "title": "Development",
                "hex_color": "#00796b",
                "hex_text_color": "#ffffff"
            },
            "created_by_user": {
                "id": 263345,
                "email": "coyote@example.com",
                "fullname": "Wile E.",
                "firstname": "Coyote",
                "avatar": "https://path/to/image",
            }
        }
    ]
}

This endpoint retrieves all the Boards you can access in a paginated fashion. They are ordered by creation date (created_dt) with the newest Board listed first.

Filters

Parameter Format Description
q string Search for Board title matching string
ordering field Order result-set by field (default “title”)
page_size integer Size of result-set per page

Members

Workspace, Team and Board objects, the hierarchical access levels, can have members. A membership describes a users relation to an object using the role property. The role property in turn, gives a set of permissions to a user on an object.

List Members

GET https://api.upwave.io/workspaces/1337/members/

curl "https://api.upwave.io/workspaces/1337/members/"
  -H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"

The above command returns JSON structured like this:

{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 263345,
            "email": "coyote@example.com",
            "role": "admin",
            "is_disabled": false,
            "is_active": true,
            "lastname": "Coyote",
            "firstname": "Wile E.",
            "fullname": "Wile E. Coyote",
            "avatar": "https://path/to/image",
            "last_seen": "2019-05-21T11:37:41.870358Z",
            "created_dt": "2019-01-5T18:09:12.332Z"
        }
    ]
}

Listing members is always related to an object of type Workspace, Team or Board.

Listing Team members

Listing members on team with id 482:

GET https://api.upwave.io/workspaces/1337/teams/482/members/

Listing Board members

Listing members on board with id 65323:

GET https://api.upwave.io/workspaces/1337/boards/65323/members/

Filters

Parameter Format Description
disabled boolean Include or exclude disabled members (only for Workspace members)
role string Show only members with this role
q string Search for member (email/name) matching string
page_size integer Size of result-set per page

Cards

Upwave Cards are information carriers that can hold a description, comments, files and more.

View a Card

GET https://api.upwave.io/workspaces/1337/cards/611785/

This endpoint retrieves a specific Card.

# View card with id 611785
curl "https://api.upwave.io/workspaces/1337/cards/611785/"
  -H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"

The cardlocation block will differ depending on what kind of Board we are dealing with (plugin_type classic vs. plugin_type canvas). For “classic” boards, the cardlocation will hold column/row information. For “canvas” boards, the cardlocation will hold container information and offset values.

The above command returns JSON structured like this:

{
    "id": 611785,
    "title": "Designing the engine",
    "description": "<h1>Designing the engine</h1><p>Since the engine will run on Thorium, we need to ...</p>",
    "cover_image_url": "https://path/to/image",
    "state": 1,
    "created_by_user": 263345,
    "created_dt": "2019-03-18T14:13:44.921Z",
    "finished_by_user": 263345,
    "finished_dt": "2019-05-04T08:53:24.921Z",
    "due_dt": "2019-05-05T12:00:00.921Z",
    "archived_dt": null,
    "watched": true,
    "num_comments": 2,
    "num_attachments": 1,
    "board": {
        "id": 65323,
        "title": "Rocket driven hoverboard"
    }
    "progress": {
        "completed": 0,
        "total": 0
    },
    "color": {
        "id": 52778,
        "name": "High risk",
        "hex_color": "#f080a2"
    },
    "assigned": [
        {
            "id": 263345,
            "email": "coyote@example.com",
            "fullname": "Wile E.",
            "firstname": "Coyote",
            "avatar": "https://path/to/image",
        }
    ],
    "cardlocation": {
        "column": {
            "id": 52433,
            "name": "Completed"
        },
        "row": {
            "id": 23534,
            "name": "Row-1"
        }
    }
}

List Cards

GET https://api.upwave.io/workspaces/1337/cards/

curl "https://api.upwave.io/workspaces/1337/cards/"
  -H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"

The above command returns JSON structured like this:

{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 611785,
            "title": "Designing the engine",
            "description": "<h1>Designing the engine</h1><p>Since the engine will run on Thorium, we need to ...</p>",
            "cover_image_url": "https://path/to/image",
            "state": 3,
            "created_by_user": 263345,
            "created_dt": "2019-03-18T14:13:44.921Z",
            "finished_by_user": 263345,
            "finished_dt": "2019-05-04T08:53:24.921Z",
            "due_dt": "2019-05-05T12:00:00.921Z",
            "archived_dt": null,
            "watched": true,
            "num_comments": 2,
            "num_attachments": 1,
            "board": {
                "id": 65323,
                "title": "Rocket driven hoverboard"
            }
            "progress": {
                "completed": 0,
                "total": 0
            },
            "color": {
                "id": 52778,
                "name": "High risk",
                "hex_color": "#f080a2"
            },
            "access":{
                "can_admin": true,
                "can_modify": true,
                "can_invite": true,
                "can_invite_existing": true
            }
            "assigned": [
                {
                    "id": 263345,
                    "email": "coyote@example.com",
                    "fullname": "Wile E.",
                    "firstname": "Coyote",
                    "avatar": "https://path/to/image",
                }
            ]
        }
    ]
}

This endpoint retrieves all the Cards you can access in a paginated fashion. They are ordered by creation date (created_dt) with the newest Card listed first.

Filters

Parameter Format Description
created_by_user integer Filter Cards on what user created them
created_start YYYY-MM-DD Filter Cards that were created on or after this date
created_end YYYY-MM-DD Filter Cards that were created on or before this date
due_start YYYY-MM-DD Filter Cards that have due_dt on or after this date
due_end YYYY-MM-DD Filter Cards that have due_dt on or before this date
finished_start YYYY-MM-DD Filter Cards that were completed on or after this date
finished_end YYYY-MM-DD Filter Cards that were completed on or before this date
finished boolean Filter Cards on whether they are completed or not
state integer Filter Cards based on their column state
board integer Filter Cards based on their parent Board
assigned 1,2,3 Filter Cards based on who are assigned
q string Search for string in Card title and description
ordering field Order result-set by field (default “-created”)
page_size integer Size of result-set per page

The assigned parameter supports comma separated list which will be OR'ed. For example, to filter Cards that are assigned to either of user-account 1 or 2 you can pass in: ?assigned=1,2

The ordering parameter will order the result-set on the field given. Acceptable fields are: “created”, “finished”, “due”. To specify a descending ordering direction set a minus in front e.g. ?ordering=-created

When filters are combined they will be AND'ed together. For example to list all Cards that were completed in month May 2019, combine filters like so: ?finished_start=2019-05-1&finished_end=2019-05-31

Updating a Card

PATCH https://api.upwave.io/workspaces/1337/cards/611785/

# Updates Card 611785
curl https://api.upwave.io/workspaces/1337/cards/611785/
  -H 'Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b'
  -H "Content-Type: application/json"
  -X PATCH
  -d '{"finished": null}'

The above command will uncomplete card 611785

Field Format Description
description string Plain-text or HTML allowed
due_dt YYYY-MM-DD Updates the cards due_dt. Pass null to remove due_dt
color color-id Updates the color for this Card. Pass null to remove color
archive boolean If true the Card will be moved to the archive
finished boolean Toggle the completed state of a Card
assigned id-list Will assign this Card to those user accounts
sort_before integer Sorts this Card before given Card id (0 will sort last)
watch boolean Watch/Unwatch youself for commment notifications on this Card

To update a Card you patch in a JSON object with the fields you’d like to update. For date fields, use UTC.

Watching a Card

When watching a Card a User will be subscribed to notifications for that Card. There are multiple ways to subscribe:

  1. click the “Watch card” function in the UI
  2. update the Card via API with {“watch”: true}
  3. create a Card and you are automatically subscribed
  4. create a Comment and you are automatically subscribed
  5. edit a Comment and you are automatically subscribed
  6. mentioning someone in a Comment will subscribe them
  7. assigning someone to a Card will subscribe them
  8. assigning someone to a TaskListItem will subscribe them

The only way to unwatch a Card is to update the Card with {“watch”: false} or use the UI function"Unwatch card".

Creating a new Card

POST https://api.upwave.io/workspaces/1337/cards/

# Creates a new Card on Board 65323
curl https://api.upwave.io/workspaces/1337/cards/
  -H 'Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b'
  -H "Content-Type: application/json"
  -X POST
  -d '{"description": "<h1>Order titanium rims</h1>", "board": 65323}'

The new Card will be inserted last in the first column with state 1 (use update to change it). If no column with state 1 is found, it will be inserted in the first column.

Field Format Description
description* string The content of the Card. May be HTML formatted
board* integer The id of the parent Board
color integer The id of the Color
due_dt YYYY-MM-DD Will set the due_dt of this card
column integer Will position the card in this Column (defaults to left-most Column with state 1 if exists else left-most Column)
row integer Will position the card in this Row (defaults to first Row)

* required field

Deleting a Card

DELETE https://api.upwave.io/workspaces/1337/cards/611798/

# Deletes Card with id 611798
curl "https://api.upwave.io/workspaces/1337/cards/611798/"
  -X DELETE
  -H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"

TaskListItems

TaskListItems is Upwaves way of handling sub-tasks.

List TaskListItems

GET https://api.upwave.io/workspaces/1337/tasklistitems/

# List TaskListItems on card 417445
curl "https://api.upwave.io/workspaces/1337/tasklistitems/?card=417445"
  -H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"

The above command returns JSON structured like this:

{
    "count": 2,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 3654331,
            "description": "Book demo meeting",
            "finished_dt": null,
            "due_dt": null,
            "sort_index": 0,
            "card": {
              "id": 611785,
              "title": "Designing the engine"
            },
            "assigned": {
              "id": 263345,
              "email": "coyote@example.com",
              "fullname": "Wile E.",
              "firstname": "Coyote",
              "avatar": "https://path/to/image",
            }
        },
        {
            "id": 3654332,
            "description": "Make purchasing order",
            "finished_dt": "2019-05-18T11:53:41.402858Z",
            "due_dt": "2020-09-17T06:41:57Z",
            "sort_index": 1,
            "card": {
              "id": 611785,
              "title": "Designing the engine"
            },
            "assigned": null
        }
    ]
}

This endpoint lists the TaskListItems belonging to the Workspace 1337.

Filters

Parameter Format Description
finished boolean Filter TaskListItems on whether they are completed or not
card integer Filter TaskListItems based on their parent Card
board integer Filter TaskListItems based on their parent Board
assigned integer Filter TaskListItems on assigned user being yourself
due_start YYYY-MM-DD Filter TaskListItems that have due_dt on or after this date
due_end YYYY-MM-DD Filter TaskListItems that have due_dt on or before this date

Creating a new TaskListItem

POST https://api.upwave.io/workspaces/1337/tasklistitems/

# Creates a new TaskListItem on Card 417445
curl https://api.upwave.io/workspaces/1337/tasklistitems/
  -H 'Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b'
  -H "Content-Type: application/json"
  -X POST
  -d '{"description": "Send item to assembler", "card": 417445}'

The new TaskListItem will be sorted last automatically (use update to change it).

Field Format Description
description* string The description
card* integer Id of the parent Card
assigned integer Id of User to assign this TaskListItem
finished boolean Toggle the completed state
due_dt YYYY-MM-DD Sets the due_dt

* required field

Updating a TaskListItem

PATCH https://api.upwave.io/workspaces/1337/tasklistitems/553113/

# Updates TaskListItem 553113
curl https://api.upwave.io/workspaces/1337/tasklistitems/553113/
  -H 'Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b'
  -H "Content-Type: application/json"
  -X PATCH
  -d '{"finished": true}'

The above command will update the TaskListItem 553113, marking it as completed

Field Type Description
description string Plain-text description
assigned integer Id of User to assign this TaskListItem. Pass null to remove
finished boolean Toggle the completed state of a TaskListItem
due_dt YYYY-MM-DD Updates the due_dt. Pass null to remove
sort_before integer Sorts this TaskListItem before given TaskListItem id. (0 will sort last)

Deleting a TaskListItem

DELETE https://api.upwave.io/workspaces/1337/tasklistitems/553113/

# Deletes TaskListItem with id 553113
curl "https://api.upwave.io/workspaces/1337/tasklistitems/553113/"
  -X DELETE
  -H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"

Comments

Comments are posted onto Cards by users. A Comment holds a text message and optionally a list of Attachments.

Mentioning

The content of a Comment may include mentions. If a user is mentioned in a Comment, that user will receive a notification and will also be added to the watch list for the Card.

Mention type Format Description
User @{263346} Mentions the user with id 263346
Group @{board} Will notify all members on the parent Board

View a Comment

GET https://api.upwave.io/workspaces/1337/comments/687137/

# View comment with id 687137
curl "https://api.upwave.io/workspaces/1337/comments/687137/"
  -H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"

The above command returns JSON structured like this:

{
    "id": 687137,
    "card": 611785,
    "text": "Hi @{263346}, do you need any help on this task?",
    "last_edited_dt": null,
    "last_edited_by_user": null,
    "created_dt": "2019-05-18T11:37:55.938664Z",
    "created_by_user": {
        "id": 263345,
        "email": "coyote@example.com",
        "fullname": "Wile E.",
        "firstname": "Coyote",
        "avatar": "https://path/to/image",
    },
    "attachments": [
        {
            "id": 2529,
            "comment": 687137,
            "card": 611785,
            "name": "Thorim Engine Specs",
            "source": "link",
            "url": "https://path/to/resource",
            "preview_url": null,
            "cover_url": null,
            "file_size": 0,
        }
    ],
    "mentions": [
        {
            "id": 263346,
            "email": "rascal@example.com",
            "fullname": "Rascal",
            "firstname": "Coyote",
            "avatar": "https://path/to/image"
        }
    ]
}

List Comments

GET https://api.upwave.io/workspaces/1337/comments/?card=611785

# List Comments on card with id 611785
curl "https://api.upwave.io/workspaces/1337/comments/?card=611785"
  -H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"

The above command returns JSON structured like this:

  {
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 687137,
            "card": 611785,
            "text": "Hi @{263346}, do you need any help on this task?",
            "last_edited_dt": null,
            "last_edited_by_user": null,
            "created_dt": "2019-05-18T11:37:55.938664Z",
            "created_by_user": {
                "id": 263345,
                "email": "coyote@example.com",
                "fullname": "Wile E.",
                "firstname": "Coyote",
                "avatar": "https://path/to/image",
            },
            "attachments": [
                {
                    "id": 2529,
                    "comment": 687137,
                    "card": 611785,
                    "name": "Thorim Engine Specs",
                    "source": "link",
                    "url": "https://path/to/resource",
                    "preview_url": null,
                    "cover_url": null,
                    "file_size": 0,
                }
            ],
            "mentions": [
                {
                    "id": 263346,
                    "email": "rascal@example.com",
                    "fullname": "Rascal",
                    "firstname": "Coyote",
                    "avatar": "https://path/to/image"
                }
            ]
        }
    ]
}

Lists Comments you can access in a paginated fashion. They are ordered by creation date (created_dt) with the newest Comment listed first.

Filters

Parameter Format Description
created_by_user integer Filter Comments on what user created them
card integer Filter Comments based on their parent Card
board integer Filter Comments based on their parent Board
q string Search for string in Comment text

When filters are combined they will be AND'ed together. For example to list all Comments created by user 263345 and which contains the word “specs”, simply combine the filters like so: ?created_by_user=263345&q=specs

Updating a Comment

PATCH https://api.upwave.io/workspaces/1337/comments/687137/

# Update Comment with id 687137
curl "https://api.upwave.io/workspaces/1337/comments/687137/"
  -H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
  -X PATCH
  -d '{"text": "..."}'

You are allowed to edit the text in a Comment. Doing so will also update the “last_edited_dt” and “last_edited_by_user”.

Field format Description
text string The content of the Comment in plain text format

Creating a new Comment

POST https://api.upwave.io/workspaces/1337/comments/

Create new Comments by passing in a text and which Card it should be attached to. A Comment may also carry Attachments.

# Creates a new Comment on Card with id 611785
curl "https://api.upwave.io/workspaces/1337/comments/"
  -H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
  -H "Content-Type: application/json"
  -X POST
  -d '{
        "text": "Well done!",
        "card": 611785
      }'

# Creates a new Comment with both text and Attachment on Card with id 611785
curl "https://api.upwave.io/workspaces/1337/comments/"
  -H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
  -H "Content-Type: application/json"
  -X POST
  -d '{
        "text": "See attached url",
        "attachments": [
          {
            "url": "https://example.com",
            "name": "Example"
          }
        ]
        "card": 611785
      }'

Currently the public API only support adding URL-Attachments to a Comment. To make the URL appear as a clickable image, you may set the “preview_url” attribute pointing to an image of your choice. The image URL needs to be behind HTTPS protocol and the image should be 200x200 pixels in size.

Argument Description
card* The parent Card
text The content of the Comment in plain text format
attachments A list of Attachments

* required field

Deleting a Comment

DELETE https://api.upwave.io/workspaces/1337/comments/446119/

# Deletes Comment with id 10
curl "https://api.upwave.io/workspaces/1337/comments/446119/"
  -X DELETE
  -H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"

Attachments

Attachments may accompany a Comment. An attachment can be either an uploaded file, a web page resource or a cloud hosted file.

Source Description
uploadedfile Indicates that the file was uploaded
link Indicates that the attachment is a web page or web resource
gdrive Indicates that the file is a Google Drive file
dropbox Indicates that the file is a Dropbox file
onedrive Indicates that the file is a Microsoft OneDrive file

List Attachments

GET https://api.upwave.io/workspaces/1337/attachments/?card=611785

curl "https://api.upwave.io/workspaces/1337/attachments/?card=611785"
  -H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"

The above command returns JSON structured like this:

  {
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
      {
        "id": 265422,
        "comment": 446119,
        "card": 611785,
        "name": "Example",
        "source": "link",
        "url": "https://example.com",
        "preview_url": null,
        "cover_url": null,
        "file_size": 0,
      },
    ]
  }

Filtering options:

Parameter Format Description
source string Filter Attachments on source (see table above)
*comment integer Filter Attachments on their parent Comment
*card integer Filter Attachment based on their parent Card
*board integer Filter Attachment based on their parent Board

* You must provide either a comment, card or board to filter on

File sizes will only be listed for files that are either uploaded directly (source is “uploadedfile”) or for Google Drive files that has a file size.

Deleting an Attachment

DELETE https://api.upwave.io/workspaces/1337/attachments/265422/

# Deletes attachment with id 265422
curl "https://api.upwave.io/workspaces/1337/attachments/3/"
  -X DELETE
  -H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"

Although you will have to create Attachments using the Comment API, deletion of attachments is done using the Attachment API. When deleting an Attachment, the comment will be set as edited by you.

Errors

The Upwave API uses the following error codes:

Error Code Meaning
401 Unauthorized – Your API key is wrong or you are restricted due to social linking
404 Not Found – The specified resource could not be found
429 Too Many Requests – You’re asking for too much, Slow down!
500 Internal Server Error – We had a problem with our server. Try again later.
503 Service Unavailable – We’re temporarily offline for maintenance. Please try again later.