---
title: "Restore an ended client project"
method: POST
path: "/clients/{id}/restore"
tags: ["Agencies"]
---

# Restore an ended client project

`POST /clients/{id}/restore`

## Request

- Base URL: `https://api.hypamoon.com/api/v1`
- URL: `https://api.hypamoon.com/api/v1/clients/{id}/restore`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://app.hypamoon.com/oauth/authorize`, token URL `https://api.hypamoon.com/oauth/token`, scopes: `clients:write`)

Brings back a project in the building stage that your agency ended and nobody took over, also from the trash, as long as it was not deleted yet. Your agency is its temporary owner again.

## Path parameters

- `id` string, uuid, required

## Response `200`

The new relation.

- object
  - `object` 'client_relation', required
  - `id` string, uuid, required
  - `agency` object, required
    - `project_id` string, uuid, required
    - `name` string, required
  - `client` object, required
    - `project_id` string, uuid, required
    - `name` string, required
  - `status` 'pending' | 'active' | 'declined' | 'ended', required
  - `stage` 'building' | 'client_owned', required
  - `role` 'viewer' | 'builder' | 'admin', required
  - `max_mode` 'test' | 'live', required
  - `four_eyes` boolean, required
  - `payer` 'client' | 'agency', required
  - `budget_eur` number, nullable, required
  - `payer_change` object, nullable, required
    - `to` 'client' | 'agency', required
    - `proposed_by` 'client' | 'agency', required
    - `proposed_at` string, nullable, required
  - `owner_invite` object, nullable, required
    - `email` string, required
    - `expires_at` string, nullable, required
    - `agency_keeps_access` boolean, required
  - `confirmed_at` string, nullable, required
  - `ended_at` string, nullable, required
  - `created_at` string, required
  - `transfer` object
    - `direction` 'incoming' | 'outgoing', required
    - `agency` object, required
      - `project_id` string, uuid, required
      - `name` string, required
    - `relation_id` string, uuid, required
    - `expires_at` string, nullable, required
  - `ended_via` 'client' | 'agency' | 'admin' | 'handover' | 'expired' | 'cleanup'
  - `cleanup` object
    - `phase` 'notified' | 'trash' | 'deleted', required
    - `trash_on` string, required
    - `delete_on` string, required

## Other responses

- `401`: Unauthorized: unauthorized, missing_api_key, invalid_api_key, api_key_revoked, project_deleted.
- `403`: Forbidden: project_not_enabled, key_mode_mismatch, missing_scope, verification_required, forbidden.
- `404`: Not Found: not_found.
- `409`: Conflict: conflict.
- `429`: Too Many Requests: rate_limited.
- `500`: Internal Server Error: internal_error.
- `503`: Service Unavailable: service_unavailable.

---

[API](https://skmtc.dev/hypamoon/apis/hypamoon-api.md) · [All operations](https://skmtc.dev/hypamoon/apis/hypamoon-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hypamoon/apis/hypamoon-api/revisions/9f0b90004c06?raw)
