---
title: "Upvote (\"like\") a project"
method: POST
path: "/api/v1/projects/{id}/upvote"
tags: ["social"]
---

# Upvote ("like") a project

`POST /api/v1/projects/{id}/upvote`

## Request

- Base URL: `https://goshipyard.app`
- URL: `https://goshipyard.app/api/v1/projects/{id}/upvote`
- Auth: HTTP bearer

Idempotent — upvoting an already-upvoted project is a no-op, not a toggle.

## Response `200`

The fresh count and the caller’s vote state.

- VoteResult
  - `id` string, required: The project id.
  - `upvotes` integer, required: The project’s fresh upvote count.
  - `voted` boolean, required: Whether the caller now has an active upvote.

## Other responses

- `401`: Missing or invalid API key.
- `404`: Resource not found.
- `429`: Too many requests — slow down.

---

[API](https://skmtc.dev/goshipyard/apis/shipyard-api.md) · [All operations](https://skmtc.dev/goshipyard/apis/shipyard-api/llms.txt) · [OpenAPI document](https://skmtc.dev/goshipyard/apis/shipyard-api/revisions/8f12372f1065?raw)
