---
title: "Update an existing project"
method: PUT
path: "/projects/{id}"
tags: ["Projects"]
---

# Update an existing project

`PUT /projects/{id}`

## Request

- Base URL: `https://viral.app/api/v1`
- URL: `https://viral.app/api/v1/projects/{id}`
- Auth: API key in header `x-api-key`

Updates project details including name, description, and associated Apple app integrations.

## Path parameters

- `id` string, required: Organization project ID with orgproj_ prefix

## Request body

- object: Request to update an existing project
  - `name` string: Project name
  - `url` union: Project URL
    - string: URL
    - ''
  - `description` string: Project description
  - `logo` string: Project logo
  - `appleAppId` string, nullable: Apple app ID
  - `visibleToCreators` boolean: Whether creators see this tag's name where it decides their pay (campaign payout conditions). When false, creators see “videos the brand selects” instead. Country and continent tags are always visible.

## Response `200`

OK

- object: Updated project with all database fields
  - `id` string, required
  - `name` string, required
  - `url` string, nullable, required
  - `description` string, nullable, required
  - `logo` string, nullable, required
  - `appleAppId` string, nullable, required
  - `visibleToCreators` boolean, required
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required
  - `actorType` 'user' | 'system' | 'api_token', required
  - `userId` string, required
  - `orgId` string, required

## Other responses

- `400`: 400
- `401`: 401
- `402`: 402
- `404`: 404
- `408`: 408
- `409`: 409
- `429`: 429
- `500`: 500

---

[API](https://skmtc.dev/viral/apis/viral-app-api.md) · [All operations](https://skmtc.dev/viral/apis/viral-app-api/llms.txt) · [OpenAPI document](https://skmtc.dev/viral/apis/viral-app-api/revisions/31e97fa79ef1?raw)
