Account

Add a member to the account

Create a new person as a member of the account with a role (admin or member) and a required grants list (may be empty).

  • Each grant is a company_id plus level (view or operate); returns 201 with Location.
  • The credential scope must cover every tax ID (403 forbidden_action).
  • A registered email returns 422 business_rule_violation. Requires the members:write scope, which * does not cover: the API key must list it explicitly.
post/accounts/{account}/members

Request

  • Base URL: https://api.factuarea.com/v1
  • URL: https://api.factuarea.com/v1/accounts/{account}/members
  • Auth: one of:
    • HTTP bearer
    • API key in header X-API-Key

Path parameters

accountstring uuid required

Public identifier (UUID v7) of your account. Get it from GET /v1/me (data.account.id).

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 required

Full name of the person.

emailstring email required

Email address of the person; the verification email is sent there.

passwordstring required

Initial password, with the same policy as the web application.

role'admin' | 'member' required

Account role of the new member: admin or member. Ownership is never assigned, it is transferred.

Response

Member created. The Location header contains the canonical URL of the new account member.

Example response

{
  "data": {
    "id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8b10",
    "name": "Marta Ibáñez",
    "email": "marta@acme.example",
    "grants": [
      {
        "company_id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a01"
      }
    ],
    "permissions": {
      "can_change_role": true,
      "assignable_roles": [
        "admin",
        "member"
      ],
      "can_remove": true,
      "can_edit_grants": true
    },
    "joined_at": "2026-03-02T10:00:00Z",
    "last_access_at": "2026-10-08T07:45:00Z"
  }
}

Changes

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