Projects

Update a project

Partially update a project: only the fields you send change.

  • Editable: name, key (old key stays as alias), icon, description, billing defaults.
  • A key already in use returns 409 project_key_in_use.
patch/companies/{company}/projects/{project}

Request

  • Base URL: https://api.factuarea.com/v1
  • URL: https://api.factuarea.com/v1/companies/{company}/projects/{project}
  • Auth: one of:
    • HTTP bearer
    • API key in header X-API-Key

Path parameters

companystring uuid required

Public identifier (UUID v7) of the company. Get it from GET /v1/me (data.scope[].id).

projectstring uuid required

Public identifier (UUID v7) of the project.

Headers

Idempotency-Keystring
Example:01928f10-7c0e-7c4a-9b7d-2f8a6e3c1d4b

Client-generated opaque key (up to 255 characters; UUID v7 recommended) that makes retries safe: the first response is cached and replayed for repeats without re-executing the mutation. Reusing a key with a different body returns 422 idempotency_key_reused; the values of secret fields (password, secret…) count as part of the body, so retrying with a corrected secret under the same key is a different request, never the replay of the earlier answer. See the Idempotency guide.

Factuarea-Versionstring date
Example:2026-06-01

Pin the API version (YYYY-MM-DD, Stripe-style date versioning) for this request; omit to use the key's pinned version, or the latest if none. Unsupported version → 400 unsupported_api_version; malformed → 400 parameter_invalid_format. The effective version is echoed in the Factuarea-Version response header. See the Versioning guide.

Request body

namestring

New name (1-120 characters); null is not accepted.

keystring

New key; null is not accepted. The previous key remains as an alias of the keys of its tasks.

icon'folder' | 'briefcase' | 'rocket' | 'code' | 'bug' | 'wrench' | 'hammer' | 'truck' | 'package' | 'shopping-cart' | 'calculator' | 'receipt' | 'file-text' | 'landmark' | 'users' | 'user' | 'building' | 'home' | 'calendar' | 'clock' | 'flag' | 'star' | 'heart' | 'lightbulb' | 'target' | 'trophy' | 'book' | 'graduation-cap' | 'megaphone' | 'palette' | 'camera' | 'music' | 'globe' | 'leaf' | 'coffee' | 'car' | 'plane' | 'shield' | 'zap' | 'layers'

Icon from the catalog; null is not accepted.

descriptionstring nullable

Description; null clears it.

billing_contact_idstring uuid nullable

id of the client contact the hours are invoiced to; null removes it.

billing_product_idstring uuid nullable

id of the product the hours are invoiced with; null removes it.

billing_hourly_ratenumber nullable

Hourly rate (decimal with up to 2 decimal places); null removes it.

Response

Example response

{
  "data": {
    "id": "0193a4f2-7c20-7a11-8b52-4d6e8f0a2c01",
    "object": "project",
    "key": "DEV",
    "name": "Desarrollo web",
    "icon": "code",
    "description": "Evolutivos y correcciones de la tienda online.",
    "billing_contact_id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a01",
    "billing_hourly_rate": "45.00",
    "stats": {
      "total_tasks": 24,
      "completed_tasks": 15,
      "completion_percentage": 63,
      "next_due_on": "2026-10-06"
    },
    "created_at": "2026-06-02T09:15:00+02:00",
    "updated_at": "2026-09-26T17:42:11+02:00"
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.