# Dribbble

> Show and tell for designers. Read the connected Dribbble account and its shots, publish a new shot from an image an earlier step produced, retitle or retag an existing one, and manage the projects a profile files its work under.

App · Images & Design · 10 actions. Web page: https://docs.lodol.com/docs/integrations/dribbble

## Actions

### Create a project

Create a project on the connected Dribbble account: a named group that shots can be filed under, shown as its own tab on the profile. Answers with the new project, including its id.

**Inputs**

- Name (`name`, text, required): The project's name, shown on your profile.
- Description (`description`, text): Optional. What the project is about.

**Outputs**: A Dribbble project: a named group of shots on a profile.

- `created_at` (text): ISO 8601 timestamp of when the project was created.
- `description` (text): The project's description.
- `id` (number): Unique project id.
- `name` (text): The project's name.
- `shots_count` (number): How many shots are in the project.
- `updated_at` (text): ISO 8601 timestamp of the project's last change.

**Example output**

```json
{
  "created_at": "2011-04-14T03:43:47Z",
  "description": "Visual design and art direction for this project.",
  "id": 3,
  "name": "Web Standards Sherpa",
  "shots_count": 4,
  "updated_at": "2012-04-04T22:39:53Z"
}
```

### Create a shot

Publish a new shot to the connected Dribbble account. The image must be exactly 400x300 or 800x600 pixels, no larger than 8 MB, and a GIF, JPG or PNG; all three are checked before it is sent. Dribbble processes the image in the background, so this answers with the new shot's id and page address rather than the finished shot; read it back with 'Get a shot'. Needs the 'upload' permission, which the connect step asks for.

**Inputs**

- Image (`image`, text, required): The shot image: upload a file, pick an image from an earlier step, or paste a public image URL. Must be exactly 400x300 or 800x600 pixels and a GIF, JPG or PNG.
- Title (`title`, text, required): The shot's title, shown under the image.
- Description (`description`, text): Optional. The text shown below the shot. Basic HTML is allowed.
- Tags (`tags`, list): Tags describing the shot, used by Dribbble's search and browse pages. Up to 12; blanks and repeats are dropped.
- Low profile (`low_profile`, true/false): Keep the shot off your followers' feeds and Dribbble's browse pages. It stays on your profile and anyone with the link can still see it, which is what to use for a test post.
- Publish at (`scheduled_for`, date and time): Publish the shot at this date and time instead of straight away. Leave blank to publish immediately. Scheduling is a Dribbble Pro feature.
- Rebound of (`rebound_source_id`, text): Optional. Post this as a rebound (a reply) to another shot. Paste that shot's id or the address of its page.
- Team (`team`, text): Publish the shot under one of your Dribbble teams instead of your own profile. Leave blank to post as yourself. The list holds the teams this account belongs to.

**Outputs**: The shot Dribbble accepted. Its image is still being processed, so only the fields known at upload time are returned; read the finished shot with 'Get a shot'.

- `height` (number): Height of the uploaded image in pixels.
- `html_url` (text): Address of the new shot's page.
- `id` (number): The new shot's id.
- `processing` (true/false): Always true: Dribbble renders the image after accepting it.
- `title` (text): The title that was sent.
- `width` (number): Width of the uploaded image in pixels.

**Example output**

```json
{
  "height": 300,
  "html_url": "https://dribbble.com/shots/471756",
  "id": 471756,
  "processing": true,
  "title": "Sasquatch",
  "width": 400
}
```

### Delete a project

Remove a project from the connected Dribbble account. The shots that were filed under it stay on the profile: only the grouping is removed.

**Inputs**

- Project (`project_id`, text, required): Which of your projects to act on. The list holds this account's own projects; you can also paste a project id.

**Outputs**: Confirmation that the record was removed.

- `deleted` (true/false): Always true: Dribbble answers a delete with no content.
- `id` (number): The id that was deleted.

**Example output**

```json
{
  "deleted": true,
  "id": 3
}
```

### Delete a shot

Permanently remove a shot from the connected Dribbble account. This cannot be undone, and Dribbble does not return the shot's contents on the way out, so read it with 'Get a shot' first if you need to keep a copy. Needs the 'upload' permission.

**Inputs**

- Shot (`shot_id`, text, required): Which of your shots to act on. The list holds this account's own shots, newest first; you can also paste a shot id or the address of the shot's page.

**Outputs**: Confirmation that the record was removed.

- `deleted` (true/false): Always true: Dribbble answers a delete with no content.
- `id` (number): The id that was deleted.

**Example output**

```json
{
  "deleted": true,
  "id": 471756
}
```

### Get a shot

Get one shot in full by its id: title, description, tags, dimensions, the image at each size Dribbble keeps, whether it is animated, whether it is low profile, and when it was published and last changed.

**Inputs**

- Shot (`shot_id`, text, required): The shot to read. Paste its id (471756) or the address of its page (https://dribbble.com/shots/471756-Sasquatch); the id is taken out of the address for you.

**Outputs**: A Dribbble shot.

- `animated` (true/false): Whether the highest-resolution image is animated.
- `description` (text): The shot's description, as HTML.
- `height` (number): Image height in pixels.
- `html_url` (text): Address of the shot's page.
- `id` (number): Unique shot id.
- `images` (object): The rendered image at each size Dribbble keeps.
- `low_profile` (true/false): Whether the shot is hidden from followers' feeds and browse pages.
- `published_at` (text): ISO 8601 timestamp of when the shot went live.
- `tags` (list): The shot's tags.
- `title` (text): The shot's title.
- `updated_at` (text): ISO 8601 timestamp of the shot's last change.
- `width` (number): Image width in pixels.

**Example output**

```json
{
  "animated": false,
  "description": "<p>Quick, messy, five minute sketch.</p>",
  "height": 300,
  "html_url": "https://dribbble.com/shots/471756-Sasquatch",
  "id": 471756,
  "images": {
    "hidpi": null,
    "normal": "https://cdn.dribbble.com/users/1/screenshots/471756/sasquatch.png",
    "teaser": "https://cdn.dribbble.com/users/1/screenshots/471756/sasquatch_teaser.png"
  },
  "low_profile": false,
  "published_at": "2012-03-15T01:52:33Z",
  "tags": [
    "fiction",
    "sasquatch",
    "sketch",
    "wip"
  ],
  "title": "Sasquatch",
  "updated_at": "2012-03-15T02:12:57Z",
  "width": 400
}
```

### Get my Dribbble account

Get the Dribbble account this integration is connected as: its username, display name, bio, location, profile and avatar addresses, follower count, whether it is Pro, whether it may publish a shot right now, and the teams it belongs to. Useful as a connection check, and for reading the team ids that 'Create a shot' can publish under.

**Inputs**: None.

**Outputs**: The Dribbble account the connection acts as.

- `avatar_url` (text): Avatar image URL.
- `bio` (text): Profile biography.
- `can_upload_shot` (true/false): Whether this account may publish a shot right now. False means 'Create a shot' will be refused.
- `created_at` (text): ISO 8601 timestamp of when the account joined Dribbble.
- `followers_count` (number): How many people follow the account.
- `html_url` (text): Address of the profile page.
- `id` (number): Unique account id.
- `links` (object): The links shown on the profile.
- `location` (text): Location as written on the profile.
- `login` (text): Username: the last part of the profile URL.
- `name` (text): Display name.
- `pro` (true/false): Whether the account has a Dribbble Pro subscription.
- `teams` (list): The teams this account belongs to.
- `type` (text): 'User' for a person, 'Team' for a team account.

**Example output**

```json
{
  "avatar_url": "https://cdn.dribbble.com/users/1/avatars/normal/dc.jpg",
  "bio": "Co-founder & designer of @Dribbble.",
  "can_upload_shot": true,
  "created_at": "2009-07-08T02:51:22Z",
  "followers_count": 66557,
  "html_url": "https://dribbble.com/simplebits",
  "id": 1,
  "links": {
    "twitter": "https://twitter.com/simplebits",
    "web": "http://simplebits.com"
  },
  "location": "Salem, MA",
  "login": "simplebits",
  "name": "Dan Cederholm",
  "pro": true,
  "teams": [
    {
      "avatar_url": "https://cdn.dribbble.com/users/39/avatars/normal/logo.png",
      "bio": "Show and tell for designers.",
      "created_at": "2009-08-18T18:34:31Z",
      "html_url": "https://dribbble.com/dribbble",
      "id": 39,
      "links": {
        "web": "http://dribbble.com"
      },
      "location": "Salem, MA",
      "login": "dribbble",
      "name": "Dribbble",
      "type": "Team",
      "updated_at": "2014-02-14T22:32:11Z"
    }
  ],
  "type": "User"
}
```

### List my projects

List the projects on the connected Dribbble account (the named groups a designer files shots under) with each project's id, name, description and shot count. Results are paged the same way shots are. This is how a workflow finds the id of a project to rename or delete.

**Inputs**

- Page (`page`, number): Which page of results to read. Leave blank for the first page; the result's 'next_page' tells you what to ask for next. At least 1.
- Results per page (`per_page`, number): How many records to return, from 1 to 100. Leave blank for Dribbble's default of 30. From 1 to 100.

**Outputs**: One page of projects.

- `count` (number): How many records this page holds.
- `has_more` (true/false): Whether Dribbble offered a next page.
- `next_page` (number): The page number to ask for next, or null on the last page.
- `page` (number): The page number that was read.
- `per_page` (number): The page size that was asked for.
- `projects` (list): The projects on this page.

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "next_page": null,
  "page": 1,
  "per_page": 30,
  "projects": [
    {
      "created_at": "2011-04-14T03:43:47Z",
      "description": "Visual design and art direction for this project.",
      "id": 3,
      "name": "Web Standards Sherpa",
      "shots_count": 4,
      "updated_at": "2012-04-04T22:39:53Z"
    }
  ]
}
```

### List my shots

List the shots on the connected Dribbble account, newest first, with each shot's id, title, description, tags, image addresses and publication date. Results are paged: the answer reports whether Dribbble offered another page and which page number to ask for next. This is how a workflow finds the id of a shot to read, update or delete.

**Inputs**

- Page (`page`, number): Which page of results to read. Leave blank for the first page; the result's 'next_page' tells you what to ask for next. At least 1.
- Results per page (`per_page`, number): How many records to return, from 1 to 100. Leave blank for Dribbble's default of 30. From 1 to 100.

**Outputs**: One page of shots.

- `count` (number): How many records this page holds.
- `has_more` (true/false): Whether Dribbble offered a next page.
- `next_page` (number): The page number to ask for next, or null on the last page.
- `page` (number): The page number that was read.
- `per_page` (number): The page size that was asked for.
- `shots` (list): The shots on this page.

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "next_page": null,
  "page": 1,
  "per_page": 30,
  "shots": [
    {
      "animated": false,
      "description": "<p>Quick, messy, five minute sketch.</p>",
      "height": 300,
      "html_url": "https://dribbble.com/shots/471756-Sasquatch",
      "id": 471756,
      "images": {
        "hidpi": null,
        "normal": "https://cdn.dribbble.com/users/1/screenshots/471756/sasquatch.png",
        "teaser": "https://cdn.dribbble.com/users/1/screenshots/471756/sasquatch_teaser.png"
      },
      "low_profile": false,
      "published_at": "2012-03-15T01:52:33Z",
      "tags": [
        "fiction",
        "sasquatch",
        "sketch",
        "wip"
      ],
      "title": "Sasquatch",
      "updated_at": "2012-03-15T02:12:57Z",
      "width": 400
    }
  ]
}
```

### Update a project

Rename a project on the connected Dribbble account, change its description, or both. Whichever field you leave blank is kept as it is.

**Inputs**

- Project (`project_id`, text, required): Which of your projects to act on. The list holds this account's own projects; you can also paste a project id.
- Name (`name`, text): A new name. Leave blank to keep the current one.
- Description (`description`, text): A new description. Leave blank to keep the current one.

**Outputs**: A Dribbble project: a named group of shots on a profile.

- `created_at` (text): ISO 8601 timestamp of when the project was created.
- `description` (text): The project's description.
- `id` (number): Unique project id.
- `name` (text): The project's name.
- `shots_count` (number): How many shots are in the project.
- `updated_at` (text): ISO 8601 timestamp of the project's last change.

**Example output**

```json
{
  "created_at": "2011-04-14T03:43:47Z",
  "description": "Visual design and art direction for this project.",
  "id": 3,
  "name": "Web Standards Sherpa",
  "shots_count": 4,
  "updated_at": "2012-04-04T22:39:53Z"
}
```

### Update a shot

Change a shot you own: its title, description, tags, low profile setting, scheduled publication time, or the team it is published under. Fields left blank are kept as they are. The image itself cannot be replaced: Dribbble has no endpoint for that. Needs the 'upload' permission.

**Inputs**

- Shot (`shot_id`, text, required): Which of your shots to act on. The list holds this account's own shots, newest first; you can also paste a shot id or the address of the shot's page.
- Title (`title`, text): A new title. Leave blank to keep the current one.
- Description (`description`, text): A new description. Leave blank to keep the current one. Basic HTML is allowed.
- Tags (`tags`, list): Tags describing the shot, used by Dribbble's search and browse pages. Up to 12; blanks and repeats are dropped.
- Low profile (`low_profile`, true/false): Keep the shot off your followers' feeds and Dribbble's browse pages. It stays on your profile and anyone with the link can still see it, which is what to use for a test post.
- Publish at (`scheduled_for`, date and time): Publish the shot at this date and time instead of straight away. Leave blank to publish immediately. Scheduling is a Dribbble Pro feature.
- Team (`team`, text): Publish the shot under one of your Dribbble teams instead of your own profile. Leave blank to post as yourself. The list holds the teams this account belongs to.

**Outputs**: A Dribbble shot.

- `animated` (true/false): Whether the highest-resolution image is animated.
- `description` (text): The shot's description, as HTML.
- `height` (number): Image height in pixels.
- `html_url` (text): Address of the shot's page.
- `id` (number): Unique shot id.
- `images` (object): The rendered image at each size Dribbble keeps.
- `low_profile` (true/false): Whether the shot is hidden from followers' feeds and browse pages.
- `published_at` (text): ISO 8601 timestamp of when the shot went live.
- `tags` (list): The shot's tags.
- `title` (text): The shot's title.
- `updated_at` (text): ISO 8601 timestamp of the shot's last change.
- `width` (number): Image width in pixels.

**Example output**

```json
{
  "animated": false,
  "description": "<p>Quick, messy, five minute sketch.</p>",
  "height": 300,
  "html_url": "https://dribbble.com/shots/471756-Sasquatch",
  "id": 471756,
  "images": {
    "hidpi": null,
    "normal": "https://cdn.dribbble.com/users/1/screenshots/471756/sasquatch.png",
    "teaser": "https://cdn.dribbble.com/users/1/screenshots/471756/sasquatch_teaser.png"
  },
  "low_profile": false,
  "published_at": "2012-03-15T01:52:33Z",
  "tags": [
    "fiction",
    "sasquatch",
    "sketch",
    "wip"
  ],
  "title": "Sasquatch",
  "updated_at": "2012-03-15T02:12:57Z",
  "width": 400
}
```
