---
title: "Notify selected members to submit their own bound fact (data collection)"
method: POST
path: "/v1/skill-installations/{installation_id}/fact-solicitations"
tags: ["skill-hub"]
---

# Notify selected members to submit their own bound fact (data collection)

`POST /v1/skill-installations/{installation_id}/fact-solicitations`

## Request

- Base URL: `https://api.patricia.app` (the document declares no server; this is the origin it was published from)
- URL: `https://api.patricia.app/v1/skill-installations/{installation_id}/fact-solicitations`
- Auth: HTTP bearer

The employee data-collection mode (the solicit_fact action). Admin-triggered (skills:edit), selected-members-only: pass an EXPLICIT list of subject actor ids. There is no notify-everyone path and an empty list is a no-op (never an unsolicited blast). The fact must be bound by the installation and accept self-submission. A real DM is attempted for every eligible target on the chat platform they use; if the tenant has no usable installation for that platform, the target is 'would_notify' (nothing sent).

## Path parameters

- `installation_id` string, uuid, required

## Headers

- `X-Tenant-Id` string, nullable

## Request body

- SolicitFactRequest: Notify SELECTED members to submit their OWN bound fact (the ``solicit_fact`` action). Admin-triggered, selected-members-only: ``entity_ids`` is an EXPLICIT list of subject actor ids. There is no "notify everyone" path, and an empty list is a no-op (never an unsolicited blast). The fact must be bound by the installation and accept ``self`` submission (fail-closed otherwise).
  - `domain_key` string, required: The bound canonical fact to solicit, e.g. person.birthday.
  - `entity_ids` string[]: The SELECTED subject actor ids to notify (explicit; empty = no-op, never a blast).

## Response `200`

Successful Response

- SolicitationResponse: The result of a fact solicitation: whether it sent live + the per-target outcomes (no PII).
  - `installation_id` string, uuid, required
  - `domain_key` string, required
  - `live_send` boolean, required
  - `targets` SolicitationTargetSummary[], required
    - `entity_id` string, uuid, required
    - `status` 'would_notify' | 'notified' | 'skipped' | 'failed' | 'unknown', required
    - `reason` string, nullable

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `403`: Forbidden. Inspect response body `code` for the specific reason (for example: PERMISSION_DENIED, EMAIL_NOT_VERIFIED, TENANT_ACCESS_REQUIRED, ROLE_UNRESOLVED)
- `409`: Conflict
- `422`: Validation error

---

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