Skip to content

API reference

Self-service

A person's own profile, team, photo and data export (Me keys).

6 actions · base URL https://api.bizisy.com/v1 · generated from the same definitions as the API.

My profile#

POST/v1/org/me.getRead

Returns your own person record: profile (including private fields), current job, manager, reports and job history. Start here for anything about "me".

Who can call it
Me key anyone
MCP tool
org_me_get on My Workplace
Method
POST with a JSON body, or GET with the input as query parameters

Input

No input: send {}.

Returns

30 fields
  • idstringrequired
  • namestringrequired
  • given_namestringrequired
  • family_namestringrequired
  • preferred_namestring | nullrequired
  • work_emailstringrequired
  • titlestring | nullrequired
  • status"pre_hire" | "active" | "terminated" | "none"required
  • start_datestring | nullrequired
  • unitobject | nullrequired
    2 fields
    • idstringrequired
    • namestringrequired
  • locationobject | nullrequired
    2 fields
    • idstringrequired
    • namestringrequired
  • managerobject | nullrequired
    4 fields
    • idstringrequired
    • namestringrequired
    • titlestring | nullrequired
    • photo_urlstring | nullrequired
  • invitedbooleanrequired
  • has_loginbooleanrequired
  • photo_urlstring | nullrequired
  • pronounsstring | nullrequired
  • work_phonestring | nullrequired
  • personal_emailstring | nullrequired
  • personal_phonestring | nullrequired
  • addressobject | nullrequired
    5 fields
    • line1stringrequired
    • line2string
    • citystringrequired
    • postal_codestring
    • countrystringrequired
  • birthdaystring | nullrequired
  • emergency_contactsobject[] | nullrequired
    3 fields
    • namestringrequired
    • relationshipstringrequired
    • phonestringrequired
  • tax_idstring | nullrequired
  • social_security_numberstring | nullrequired
  • ibanstring | nullrequired
  • customobject[]required
    6 fields
    • keystringrequired
    • labelstringrequired
    • type"text" | "number" | "date" | "select" | "boolean" | "file"required
    • tier"public" | "job" | "private"required
    • valuestring | number | booleanrequired

      For type file: the document id (download it with documents_download or documents_me_download); over an API key or MCP, "attached" for someone else's file.

    • fileobject | null

      Type file only: the file, or null when none is attached.

      4 fields
      • namestring | nullrequired

        The file name; null over an API key or MCP for someone else's file.

      • sizeintegerrequired
      • content_typestringrequired
      • previewablebooleanrequired

        The web app can show it (PDF, PNG, JPEG, WebP).

  • jobobject | nullrequired
    17 fields
    • idstringrequired
    • valid_fromstringrequired
    • valid_tostring | nullrequired
    • titlestringrequired
    • unitobject | nullrequired
      2 fields
      • idstringrequired
      • namestringrequired
    • managerobject | nullrequired
      4 fields
      • idstringrequired
      • namestringrequired
      • titlestring | nullrequired
      • photo_urlstring | nullrequired
    • locationobject | nullrequired
      2 fields
      • idstringrequired
      • namestringrequired
    • legal_entityobject | nullrequired
      2 fields
      • idstringrequired
      • namestringrequired
    • employment_type"full_time" | "part_time" | "contractor" | "intern"required
    • ftenumberrequired
    • reasonstringrequired
    • end_reasonstring | nullrequired
    • contract_type"permanent" | "fixed_term" | "temporary" | "internship" | "freelance"required
    • contract_end_datestring | nullrequired
    • probation_end_datestring | nullrequired
    • weekly_hoursnumber | nullrequired
    • notice_period_daysinteger | nullrequired
  • historyobject[] | nullrequired
    17 fields
    • idstringrequired
    • valid_fromstringrequired
    • valid_tostring | nullrequired
    • titlestringrequired
    • unitobject | nullrequired
      2 fields
      • idstringrequired
      • namestringrequired
    • managerobject | nullrequired
      4 fields
      • idstringrequired
      • namestringrequired
      • titlestring | nullrequired
      • photo_urlstring | nullrequired
    • locationobject | nullrequired
      2 fields
      • idstringrequired
      • namestringrequired
    • legal_entityobject | nullrequired
      2 fields
      • idstringrequired
      • namestringrequired
    • employment_type"full_time" | "part_time" | "contractor" | "intern"required
    • ftenumberrequired
    • reasonstringrequired
    • end_reasonstring | nullrequired
    • contract_type"permanent" | "fixed_term" | "temporary" | "internship" | "freelance"required
    • contract_end_datestring | nullrequired
    • probation_end_datestring | nullrequired
    • weekly_hoursnumber | nullrequired
    • notice_period_daysinteger | nullrequired
  • reportsobject[]required
    4 fields
    • idstringrequired
    • namestringrequired
    • titlestring | nullrequired
    • photo_urlstring | nullrequired
  • visible_tiers"public" | "private" | "job" | "pay"[]required

Errors

validation_failed unauthenticated forbidden not_found rate_limited internal

curl
curl https://api.bizisy.com/v1/org/me.get \
  -H "Authorization: Bearer $BIZISY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Response
{
  "data": {
    "id": "p1",
    "name": "Ana Ferreira",
    "given_name": "Ana",
    "family_name": "Ferreira",
    "preferred_name": null,
    "work_email": "ana@acme.test",
    "title": "Engineer",
    "status": "active",
    "start_date": "2024-01-15",
    "unit": {
      "id": "u2",
      "name": "Engineering"
    },
    "location": {
      "id": "l1",
      "name": "Head office"
    },
    "manager": {
      "id": "p2",
      "name": "Rui Costa",
      "title": "CTO",
      "photo_url": "https://acme.bizisy.com/api/photos/people/p2?v=01k0000000000000000000000b"
    },
    "invited": true,
    "has_login": true,
    "photo_url": null,
    "pronouns": "she/her",
    "work_phone": "+351 210 000 000",
    "personal_email": null,
    "personal_phone": null,
    "address": {
      "line1": "Rua Augusta 100",
      "city": "Lisboa",
      "country": "PT"
    },
    "birthday": "1990-04-10",
    "emergency_contacts": [
      {
        "name": "Rui",
        "relationship": "Partner",
        "phone": "+351 911 000 000"
      }
    ],
    "tax_id": "123456789",
    "social_security_number": null,
    "iban": "PT50000201231234567890154",
    "custom": [
      {
        "key": "t_shirt_size",
        "label": "T-shirt size",
        "type": "select",
        "tier": "public",
        "value": "M"
      },
      {
        "key": "remote",
        "label": "Remote allowance",
        "type": "boolean",
        "tier": "job",
        "value": null
      },
      {
        "key": "driving_licence",
        "label": "Driving licence",
        "type": "file",
        "tier": "private",
        "value": "d5",
        "file": {
          "name": "Licence.pdf",
          "size": 182000,
          "content_type": "application/pdf",
          "previewable": true
        }
      }
    ],
    "job": {
      "id": "j1",
      "valid_from": "2024-01-15",
      "valid_to": null,
      "title": "Engineer",
      "unit": {
        "id": "u2",
        "name": "Engineering"
      },
      "manager": {
        "id": "p2",
        "name": "Rui Costa",
        "title": "CTO",
        "photo_url": "https://acme.bizisy.com/api/photos/people/p2?v=01k0000000000000000000000b"
      },
      "location": {
        "id": "l1",
        "name": "Head office"
      },
      "legal_entity": {
        "id": "e1",
        "name": "Acme Lda"
      },
      "employment_type": "full_time",
      "fte": 1,
      "reason": "hire",
      "end_reason": null,
      "contract_type": "fixed_term",
      "contract_end_date": "2026-01-14",
      "probation_end_date": "2024-07-14",
      "weekly_hours": 40,
      "notice_period_days": 30
    },
    "history": null,
    "reports": [],
    "visible_tiers": [
      "public",
      "private",
      "job",
      "pay"
    ]
  }
}

Update my profile#

POST/v1/org/me.updateWrite

Updates your own self-editable fields: preferred_name, pronouns, work_phone, personal_email, personal_phone, address ({line1, line2?, city, postal_code?, country}), birthday (YYYY-MM-DD) and emergency_contacts (up to 5 of {name, relationship, phone}; the list replaces the old one). Payroll details (tax_id, social_security_number, iban) can only be changed by signing in to Bizisy, never over MCP or an API key. Send only what changes; null clears. Names, work email and job fields are changed by HR. Use dry_run first and confirm with the user.

Who can call it
Me key anyone
Keys and apps
Payroll details (tax_id, social_security_number, iban) are refused.
MCP tool
org_me_update on My Workplace
Preview
?dry_run=true runs every check and saves nothing
Retries
An Idempotency-Key prevents a second run, but the result is never stored (it holds a secret or personal data): a retry gets a 409 that points to Activity

Input

  • preferred_namestring | null

    1–100 characters.

  • pronounsstring | null

    Up to 40 characters.

  • work_phonestring | null

    Pattern ^\+?[0-9 ().-]{3,40}$.

  • personal_emailany | null
  • personal_phonestring | null

    Pattern ^\+?[0-9 ().-]{3,40}$.

  • addressobject | null
    5 fields
    • line1stringrequired

      1–200 characters.

    • line2string

      Up to 200 characters.

    • citystringrequired

      1–100 characters.

    • postal_codestring

      Up to 20 characters.

    • countryanyrequired
  • birthdaystring | null
  • emergency_contactsobject[]

    Up to 5 items.

    3 fields
    • namestringrequired

      1–100 characters.

    • relationshipstringrequired

      1–60 characters.

    • phonestringrequired

      Pattern ^\+?[0-9 ().-]{3,40}$.

  • tax_idstring | null

    Pattern ^[A-Za-z0-9 ./-]{1,40}$.

  • social_security_numberstring | null

    Pattern ^[A-Za-z0-9 ./-]{1,40}$.

  • ibanany | null

Returns

30 fields
  • idstringrequired
  • namestringrequired
  • given_namestringrequired
  • family_namestringrequired
  • preferred_namestring | nullrequired
  • work_emailstringrequired
  • titlestring | nullrequired
  • status"pre_hire" | "active" | "terminated" | "none"required
  • start_datestring | nullrequired
  • unitobject | nullrequired
    2 fields
    • idstringrequired
    • namestringrequired
  • locationobject | nullrequired
    2 fields
    • idstringrequired
    • namestringrequired
  • managerobject | nullrequired
    4 fields
    • idstringrequired
    • namestringrequired
    • titlestring | nullrequired
    • photo_urlstring | nullrequired
  • invitedbooleanrequired
  • has_loginbooleanrequired
  • photo_urlstring | nullrequired
  • pronounsstring | nullrequired
  • work_phonestring | nullrequired
  • personal_emailstring | nullrequired
  • personal_phonestring | nullrequired
  • addressobject | nullrequired
    5 fields
    • line1stringrequired
    • line2string
    • citystringrequired
    • postal_codestring
    • countrystringrequired
  • birthdaystring | nullrequired
  • emergency_contactsobject[] | nullrequired
    3 fields
    • namestringrequired
    • relationshipstringrequired
    • phonestringrequired
  • tax_idstring | nullrequired
  • social_security_numberstring | nullrequired
  • ibanstring | nullrequired
  • customobject[]required
    6 fields
    • keystringrequired
    • labelstringrequired
    • type"text" | "number" | "date" | "select" | "boolean" | "file"required
    • tier"public" | "job" | "private"required
    • valuestring | number | booleanrequired

      For type file: the document id (download it with documents_download or documents_me_download); over an API key or MCP, "attached" for someone else's file.

    • fileobject | null

      Type file only: the file, or null when none is attached.

      4 fields
      • namestring | nullrequired

        The file name; null over an API key or MCP for someone else's file.

      • sizeintegerrequired
      • content_typestringrequired
      • previewablebooleanrequired

        The web app can show it (PDF, PNG, JPEG, WebP).

  • jobobject | nullrequired
    17 fields
    • idstringrequired
    • valid_fromstringrequired
    • valid_tostring | nullrequired
    • titlestringrequired
    • unitobject | nullrequired
      2 fields
      • idstringrequired
      • namestringrequired
    • managerobject | nullrequired
      4 fields
      • idstringrequired
      • namestringrequired
      • titlestring | nullrequired
      • photo_urlstring | nullrequired
    • locationobject | nullrequired
      2 fields
      • idstringrequired
      • namestringrequired
    • legal_entityobject | nullrequired
      2 fields
      • idstringrequired
      • namestringrequired
    • employment_type"full_time" | "part_time" | "contractor" | "intern"required
    • ftenumberrequired
    • reasonstringrequired
    • end_reasonstring | nullrequired
    • contract_type"permanent" | "fixed_term" | "temporary" | "internship" | "freelance"required
    • contract_end_datestring | nullrequired
    • probation_end_datestring | nullrequired
    • weekly_hoursnumber | nullrequired
    • notice_period_daysinteger | nullrequired
  • historyobject[] | nullrequired
    17 fields
    • idstringrequired
    • valid_fromstringrequired
    • valid_tostring | nullrequired
    • titlestringrequired
    • unitobject | nullrequired
      2 fields
      • idstringrequired
      • namestringrequired
    • managerobject | nullrequired
      4 fields
      • idstringrequired
      • namestringrequired
      • titlestring | nullrequired
      • photo_urlstring | nullrequired
    • locationobject | nullrequired
      2 fields
      • idstringrequired
      • namestringrequired
    • legal_entityobject | nullrequired
      2 fields
      • idstringrequired
      • namestringrequired
    • employment_type"full_time" | "part_time" | "contractor" | "intern"required
    • ftenumberrequired
    • reasonstringrequired
    • end_reasonstring | nullrequired
    • contract_type"permanent" | "fixed_term" | "temporary" | "internship" | "freelance"required
    • contract_end_datestring | nullrequired
    • probation_end_datestring | nullrequired
    • weekly_hoursnumber | nullrequired
    • notice_period_daysinteger | nullrequired
  • reportsobject[]required
    4 fields
    • idstringrequired
    • namestringrequired
    • titlestring | nullrequired
    • photo_urlstring | nullrequired
  • visible_tiers"public" | "private" | "job" | "pay"[]required

Errors

validation_failed unauthenticated forbidden not_found conflict rate_limited internal

curl
curl https://api.bizisy.com/v1/org/me.update \
  -H "Authorization: Bearer $BIZISY_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "preferred_name": null,
  "pronouns": "she/her",
  "work_phone": "+351 912",
  "personal_email": null,
  "personal_phone": null,
  "birthday": null,
  "address": {
    "line1": "Rua Augusta 100",
    "city": "Lisboa",
    "country": "PT"
  },
  "emergency_contacts": [
    {
      "name": "Rui",
      "relationship": "Partner",
      "phone": "+351 911"
    }
  ]
}'
Response
{
  "data": {
    "id": "p1",
    "name": "Ana Ferreira",
    "given_name": "Ana",
    "family_name": "Ferreira",
    "preferred_name": null,
    "work_email": "ana@acme.test",
    "title": "Engineer",
    "status": "active",
    "start_date": "2024-01-15",
    "unit": {
      "id": "u2",
      "name": "Engineering"
    },
    "location": {
      "id": "l1",
      "name": "Head office"
    },
    "manager": {
      "id": "p2",
      "name": "Rui Costa",
      "title": "CTO",
      "photo_url": "https://acme.bizisy.com/api/photos/people/p2?v=01k0000000000000000000000b"
    },
    "invited": true,
    "has_login": true,
    "photo_url": null,
    "pronouns": "she/her",
    "work_phone": "+351 912",
    "personal_email": null,
    "personal_phone": null,
    "address": {
      "line1": "Rua Augusta 100",
      "city": "Lisboa",
      "country": "PT"
    },
    "birthday": "1990-04-10",
    "emergency_contacts": [
      {
        "name": "Rui",
        "relationship": "Partner",
        "phone": "+351 911 000 000"
      }
    ],
    "tax_id": "123456789",
    "social_security_number": null,
    "iban": "PT50000201231234567890154",
    "custom": [
      {
        "key": "t_shirt_size",
        "label": "T-shirt size",
        "type": "select",
        "tier": "public",
        "value": "M"
      },
      {
        "key": "remote",
        "label": "Remote allowance",
        "type": "boolean",
        "tier": "job",
        "value": null
      },
      {
        "key": "driving_licence",
        "label": "Driving licence",
        "type": "file",
        "tier": "private",
        "value": "d5",
        "file": {
          "name": "Licence.pdf",
          "size": 182000,
          "content_type": "application/pdf",
          "previewable": true
        }
      }
    ],
    "job": {
      "id": "j1",
      "valid_from": "2024-01-15",
      "valid_to": null,
      "title": "Engineer",
      "unit": {
        "id": "u2",
        "name": "Engineering"
      },
      "manager": {
        "id": "p2",
        "name": "Rui Costa",
        "title": "CTO",
        "photo_url": "https://acme.bizisy.com/api/photos/people/p2?v=01k0000000000000000000000b"
      },
      "location": {
        "id": "l1",
        "name": "Head office"
      },
      "legal_entity": {
        "id": "e1",
        "name": "Acme Lda"
      },
      "employment_type": "full_time",
      "fte": 1,
      "reason": "hire",
      "end_reason": null,
      "contract_type": "fixed_term",
      "contract_end_date": "2026-01-14",
      "probation_end_date": "2024-07-14",
      "weekly_hours": 40,
      "notice_period_days": 30
    },
    "history": [
      {
        "id": "j1",
        "valid_from": "2024-01-15",
        "valid_to": null,
        "title": "Engineer",
        "unit": {
          "id": "u2",
          "name": "Engineering"
        },
        "manager": {
          "id": "p2",
          "name": "Rui Costa",
          "title": "CTO",
          "photo_url": "https://acme.bizisy.com/api/photos/people/p2?v=01k0000000000000000000000b"
        },
        "location": {
          "id": "l1",
          "name": "Head office"
        },
        "legal_entity": {
          "id": "e1",
          "name": "Acme Lda"
        },
        "employment_type": "full_time",
        "fte": 1,
        "reason": "hire",
        "end_reason": null,
        "contract_type": "fixed_term",
        "contract_end_date": "2026-01-14",
        "probation_end_date": "2024-07-14",
        "weekly_hours": 40,
        "notice_period_days": 30
      }
    ],
    "reports": [],
    "visible_tiers": [
      "public",
      "private",
      "job",
      "pay"
    ]
  }
}

My team#

POST/v1/org/me.teamRead

Returns your manager, your peers (people with the same manager) and your direct reports, as of today.

Who can call it
Me key anyone
MCP tool
org_me_team on My Workplace
Method
POST with a JSON body, or GET with the input as query parameters

Input

No input: send {}.

Returns

  • managerobject | nullrequired
    4 fields
    • idstringrequired
    • namestringrequired
    • titlestring | nullrequired
    • photo_urlstring | nullrequired
  • peersobject[]required
    4 fields
    • idstringrequired
    • namestringrequired
    • titlestring | nullrequired
    • photo_urlstring | nullrequired
  • reportsobject[]required
    4 fields
    • idstringrequired
    • namestringrequired
    • titlestring | nullrequired
    • photo_urlstring | nullrequired

Errors

validation_failed unauthenticated forbidden not_found rate_limited internal

curl
curl https://api.bizisy.com/v1/org/me.team \
  -H "Authorization: Bearer $BIZISY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Response
{
  "data": {
    "manager": null,
    "peers": [
      {
        "id": "p2",
        "name": "Rui Costa",
        "title": "CTO",
        "photo_url": "https://acme.bizisy.com/api/photos/people/p2?v=01k0000000000000000000000b"
      }
    ],
    "reports": []
  }
}

Export my data#

POST/v1/org/me.export_dataRead

Returns everything Bizisy holds about you in this organization as JSON (your right of access): profile, profile photo (base64), the documents shared with you (metadata, plus document_files: 5-minute download links), job history, pay history, invites, your logins, API keys (names and dates, never secrets), your Activity, open positions you filled or are recorded as replaced in (those you may see), decided change requests about you (approvals), your checklists (about you, tasks assigned to you, and your comments) and webhook deliveries about you in the last 30 days.

Who can call it
Me key anyone
MCP tool
org_me_export_data on My Workplace
Method
POST with a JSON body, or GET with the input as query parameters

Input

No input: send {}.

Returns

22 fields
  • format"bizisy.person-data.v1"required
  • generated_atstringrequired
  • organization_idstringrequired
  • personobjectrequired
  • photoobject | nullrequired
    3 fields
    • content_typestringrequired
    • data_base64stringrequired
    • updated_atstringrequired
  • jobsobject[]required
    17 fields
    • idstringrequired
    • valid_fromstringrequired
    • valid_tostring | nullrequired
    • titlestringrequired
    • unitobject | nullrequired
      2 fields
      • idstringrequired
      • namestringrequired
    • managerobject | nullrequired
      4 fields
      • idstringrequired
      • namestringrequired
      • titlestring | nullrequired
      • photo_urlstring | nullrequired
    • locationobject | nullrequired
      2 fields
      • idstringrequired
      • namestringrequired
    • legal_entityobject | nullrequired
      2 fields
      • idstringrequired
      • namestringrequired
    • employment_type"full_time" | "part_time" | "contractor" | "intern"required
    • ftenumberrequired
    • reasonstringrequired
    • end_reasonstring | nullrequired
    • contract_type"permanent" | "fixed_term" | "temporary" | "internship" | "freelance"required
    • contract_end_datestring | nullrequired
    • probation_end_datestring | nullrequired
    • weekly_hoursnumber | nullrequired
    • notice_period_daysinteger | nullrequired
  • payobject[]required
    8 fields
    • idstringrequired
    • valid_fromstringrequired
    • valid_tostring | nullrequired
    • amountnumberrequired
    • currencystringrequired
    • period"year" | "month" | "hour"required
    • notestring | nullrequired
    • created_atstringrequired
  • invitesobject[]required
    6 fields
    • emailstringrequired
    • rolestringrequired
    • created_atstringrequired
    • expires_atstringrequired
    • accepted_atstring | nullrequired
    • revoked_atstring | nullrequired
  • loginsobject[]required
  • api_keysobject[]required
  • connected_appsobject[]required
  • activityobject[]required
  • activity_truncatedbooleanrequired
  • notificationsobject[]required
    3 fields
    • typestringrequired
    • created_atstringrequired
    • read_atstring | nullrequired
  • remindersobject[]required
    3 fields
    • kindstringrequired
    • datestringrequired
    • sent_atstringrequired
  • positionsobject[]required
    4 fields
    • idstringrequired
    • titlestringrequired
    • statusstringrequired
    • role"filled" | "replaced"required
  • approvalsobject[]required
  • checklistsobjectrequired
    5 fields
    • about_youobject[]required
      6 fields
      • namestringrequired
      • kindstringrequired
      • statusstringrequired
      • anchor_datestringrequired
      • started_atstringrequired
      • tasksobject[]required
        6 fields
        • titlestringrequired
        • due_datestringrequired
        • statusstringrequired
        • skip_reasonstring | nullrequired
        • resolved_atstring | nullrequired
        • commentsobject[]required
          3 fields
          • textstringrequired
          • atstringrequired
          • by_youbooleanrequired
    • assigned_to_youobject[]required
      5 fields
      • checkliststringrequired
      • titlestringrequired
      • due_datestringrequired
      • statusstringrequired
      • resolved_atstring | nullrequired
    • your_commentsobject[]required
      4 fields
      • checkliststringrequired
      • taskstringrequired
      • textstringrequired
      • atstringrequired
    • resolved_by_youobject[]required
      5 fields
      • checkliststringrequired
      • taskstringrequired
      • statusstringrequired
      • skip_reasonstring | nullrequired
      • resolved_atstring | nullrequired
    • template_tasksobject[]required
      2 fields
      • templatestringrequired
      • taskstringrequired
  • webhook_deliveriesobject[]required
    4 fields
    • event_typestringrequired
    • endpoint_hoststringrequired
    • created_atstringrequired
    • statusstringrequired
  • documentsobject[]required
  • document_filesobject[]required
    2 fields
    • namestringrequired
    • urlstringrequired
  • filenamestringrequired

Errors

validation_failed unauthenticated forbidden not_found rate_limited internal

curl
curl https://api.bizisy.com/v1/org/me.export_data \
  -H "Authorization: Bearer $BIZISY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Response
{
  "data": {
    "format": "bizisy.person-data.v1",
    "generated_at": "2026-10-04T10:00:00.000Z",
    "organization_id": "o1",
    "filename": "my-data-2026-10-04.json",
    "person": {
      "id": "p1",
      "name": "Ana Ferreira"
    },
    "photo": {
      "content_type": "image/webp",
      "data_base64": "UklGRg==",
      "updated_at": "2026-10-04T10:00:00.000Z"
    },
    "jobs": [
      {
        "id": "j1",
        "valid_from": "2024-01-15",
        "valid_to": null,
        "title": "Engineer",
        "unit": {
          "id": "u2",
          "name": "Engineering"
        },
        "manager": {
          "id": "p2",
          "name": "Rui Costa",
          "title": "CTO",
          "photo_url": "https://acme.bizisy.com/api/photos/people/p2?v=01k0000000000000000000000b"
        },
        "location": {
          "id": "l1",
          "name": "Head office"
        },
        "legal_entity": {
          "id": "e1",
          "name": "Acme Lda"
        },
        "employment_type": "full_time",
        "fte": 1,
        "reason": "hire",
        "end_reason": null,
        "contract_type": "fixed_term",
        "contract_end_date": "2026-01-14",
        "probation_end_date": "2024-07-14",
        "weekly_hours": 40,
        "notice_period_days": 30
      }
    ],
    "pay": [
      {
        "id": "pay1",
        "valid_from": "2024-01-15",
        "valid_to": null,
        "amount": 42000,
        "currency": "EUR",
        "period": "year",
        "note": null,
        "created_at": "2026-10-04T10:00:00.000Z"
      }
    ],
    "invites": [
      {
        "email": "ana@acme.test",
        "role": "member",
        "created_at": "2026-10-04T10:00:00.000Z",
        "expires_at": "2026-10-18T10:00:00.000Z",
        "accepted_at": null,
        "revoked_at": null
      }
    ],
    "logins": [
      {
        "email": "ana@acme.test",
        "roles": [
          "hr"
        ]
      }
    ],
    "api_keys": [],
    "connected_apps": [
      {
        "app": "Claude",
        "access": "me"
      }
    ],
    "activity": [
      {
        "at": "2026-10-04T10:00:00.000Z",
        "summary": "Updated your profile"
      }
    ],
    "activity_truncated": false,
    "notifications": [
      {
        "type": "approval_request",
        "created_at": "2026-10-04T10:00:00.000Z",
        "read_at": null
      }
    ],
    "reminders": [
      {
        "kind": "probation_end",
        "date": "2024-07-14",
        "sent_at": "2024-06-30T06:00:00.000Z"
      }
    ],
    "positions": [
      {
        "id": "pos1",
        "title": "Engineer",
        "status": "filled",
        "role": "filled"
      }
    ],
    "approvals": [
      {
        "kind": "job_change",
        "status": "approved",
        "effective_date": "2026-11-01",
        "proposed_at": "2026-10-04T10:00:00.000Z",
        "closed_at": "2026-10-05T09:00:00.000Z",
        "change": {
          "title": "Senior Engineer"
        },
        "steps": [
          {
            "role": "hr",
            "state": "approved",
            "decided_at": "2026-10-05T09:00:00.000Z",
            "comment": null,
            "automatic": false
          }
        ]
      }
    ],
    "checklists": {
      "about_you": [
        {
          "name": "Onboarding",
          "kind": "onboarding",
          "status": "completed",
          "anchor_date": "2024-03-04",
          "started_at": "2024-02-20T10:00:00.000Z",
          "tasks": [
            {
              "title": "Complete your profile",
              "due_date": "2024-03-04",
              "status": "done",
              "skip_reason": null,
              "resolved_at": "2024-03-04T09:00:00.000Z",
              "comments": [
                {
                  "text": "Done on day one",
                  "at": "2024-03-04T09:00:00.000Z",
                  "by_you": true
                }
              ]
            }
          ]
        }
      ],
      "assigned_to_you": [
        {
          "checklist": "Onboarding",
          "title": "Plan the first week",
          "due_date": "2026-10-31",
          "status": "open",
          "resolved_at": null
        }
      ],
      "your_comments": [
        {
          "checklist": "Onboarding",
          "task": "Plan the first week",
          "text": "Agenda shared",
          "at": "2026-10-04T10:00:00.000Z"
        }
      ],
      "resolved_by_you": [
        {
          "checklist": "Onboarding",
          "task": "Plan the first week",
          "status": "done",
          "skip_reason": null,
          "resolved_at": "2026-10-04T10:00:00.000Z"
        }
      ],
      "template_tasks": [
        {
          "template": "IT onboarding",
          "task": "Laptop"
        }
      ]
    },
    "webhook_deliveries": [
      {
        "event_type": "person.hired",
        "endpoint_host": "hooks.example.com",
        "created_at": "2026-10-04T10:01:00.000Z",
        "status": "succeeded"
      }
    ],
    "documents": [
      {
        "id": "d1",
        "title": "Contract 2026",
        "category": "Contract",
        "file": "documents/people/p1/d1-Contract 2026.pdf"
      }
    ],
    "document_files": [
      {
        "name": "documents/people/p1/d1-Contract 2026.pdf",
        "url": "https://storage.googleapis.com/b/orgs/o1/files/d1?X-Goog-Signature=x"
      }
    ]
  }
}

Upload my photo#

POST/v1/org/me.photo.uploadWrite

Sets your own profile photo. The image (image_base64: the file as base64) must be a JPEG, PNG or WebP of at most 2 MB and 24 megapixels (over MCP the request is limited to 2 MiB, so about 1.5 MB; send larger files through the REST API); the server checks the bytes, centre-crops it to a square, re-encodes it as a 512×512 WebP and drops all metadata (EXIF, location). A new upload replaces the old photo. The photo is visible to everyone in the organization who can see the person (public tier, also over the API and MCP as photo_url); never outside it. Returns the new photo_url. Errors: not_found when your login is not linked to a person, validation_failed for a bad image, rate_limited when the server is busy with other images (retry in a few seconds). Use dry_run first and confirm with the user.

Who can call it
Me key anyone
MCP tool
org_me_photo_upload on My Workplace
Preview
?dry_run=true runs every check and saves nothing
Retries
An Idempotency-Key prevents a second run, but the result is never stored (it holds a secret or personal data): a retry gets a 409 that points to Activity
Body limit
3 MiB (other actions: 2 MiB)

Input

  • image_base64stringrequired

    The image file as base64 (a data: URL is accepted): JPEG, PNG or WebP, at most 2 MB. Square images work best; the server centre-crops.

    1–2900000 characters.

Returns

  • person_idstringrequired
  • photo_urlstring | nullrequired

Errors

validation_failed unauthenticated forbidden not_found conflict payload_too_large rate_limited internal

curl
curl https://api.bizisy.com/v1/org/me.photo.upload \
  -H "Authorization: Bearer $BIZISY_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"image_base64":"UklGRg=="}'
Response
{
  "data": {
    "person_id": "p1",
    "photo_url": "https://acme.bizisy.com/api/photos/people/p1?v=01k0000000000000000000000d"
  }
}

Remove my photo#

POST/v1/org/me.photo.removeDestructive

Deletes your own profile photo; your initials show instead. Succeeds when there is no photo.

Who can call it
Me key anyone
MCP tool
org_me_photo_remove on My Workplace
Preview
?dry_run=true runs every check and saves nothing
Retries
An Idempotency-Key prevents a second run, but the result is never stored (it holds a secret or personal data): a retry gets a 409 that points to Activity

Input

No input: send {}.

Returns

  • person_idstringrequired
  • photo_urlstring | nullrequired

Errors

validation_failed unauthenticated forbidden not_found conflict rate_limited internal

curl
curl https://api.bizisy.com/v1/org/me.photo.remove \
  -H "Authorization: Bearer $BIZISY_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{}'
Response
{
  "data": {
    "person_id": "p1",
    "photo_url": null
  }
}

Something missing or wrong on this page? Write to hello@bizisy.com.

Developer docs