---
title: "Create a signer"
method: POST
path: "/e-signature-packages/{eSignaturePackageId}/signers"
tags: ["Signers"]
---

# Create a signer

`POST /e-signature-packages/{eSignaturePackageId}/signers`

## Request

- Base URL: `https://rest.api.pactima.com/v1`
- URL: `https://rest.api.pactima.com/v1/e-signature-packages/{eSignaturePackageId}/signers`
- Auth: HTTP bearer

Create a signer in the eSignature package, which must be in either `DRAFT` or `LIVE_EDITING` statuses.

## Request body

- ESignatureSignerENotary
  - `id` string
  - `name` string, required
  - `email` string, required
  - `phoneNumber` string
  - `participantPoolItem` ESignatureSignerParticipantPoolItem: An item in a participant pool representing a specific request or assignment
    - `id` string: Unique identifier for the participant pool item
    - `participantPoolId` string, required: ID of the participant pool this item belongs to
    - `status` 'DRAFT' | 'AWAITING_TAGGING' | 'AWAITING_PARTICIPANT_PREFERENCE' | 'REQUEST_SENT_TO_ENROLLEES' | 'MATCHED' | 'STALE' | 'CANCELLED' | 'COMPLETED', required: Current status of a participant pool item
    - `linkedObject` ParticipantPoolItemLinkedObject: Object linked to a participant pool item
      - `objectId` string, required: Identifier of the linked object
      - `kind` 'E_SIGNATURE_PACKAGE', required: Type of object linked to the participant pool item
      - `linkedParticipantId` string: ID of the linked participant in the object (e.g. signer id)
      - `displayName` string, nullable: Derived from the linked object's name (e.g. the eSignaturePackage title) at response time. Decorated by the items listEmbed/listSearch path via a batched lookup; null when the underlying object is missing/deleted. Read-only -- the write path's `sanitizeLinkedObject` strips it.
    - `scheduling` ParticipantPoolItemScheduling: Scheduling configuration for a participant pool item
      - `dateType` 'FIXED' | 'DATE_RANGE', required: Type time preference for the participant pool item
      - `schedulingMode` 'PRE_SCHEDULED' | 'ON_DEMAND', required: Matching mechanism for scheduling participants
      - `startDate` string, date-time: Earliest date of availability
      - `endDate` string, date-time: Latest possible date for the item
      - `timezone` string: Timezone for scheduling (e.g. 'America/New_York')
      - `duration` integer: Duration of the meeting in minutes
      - `scheduleSetterParticipantsIds` string[]: IDs of the participants who can set the schedule. Use ['ALL'] to designate all participants as schedule setters.
      - `scheduleSetterParticipantsMetadata` object: Per-participant metadata for schedule setters, keyed by participant ID. Each value contains metadata specific to that schedule setter.
      - `queueForTagging` boolean: Whether the item should be queued for tagging
      - `bid` ParticipantPoolItemSchedulingBid: Bidding configuration for participant pool item scheduling
        - `maxPrice` number: Maximum price willing to pay for the scheduling slot
        - `currency` string: Currency code for the price (e.g., USD, EUR)
        - `allowCounterBidding` boolean: Whether counter bidding is allowed for this scheduling bid
        - `cancellationFee` number: Fee for cancelling the scheduling bid
      - `counterBids` ParticipantPoolItemSchedulingCounterBid[]: Counter bids for this scheduling item
        - `id` string: Unique identifier for the counter bid
        - `counter` ParticipantPoolItemSchedulingBid, required: Bidding configuration for participant pool item scheduling
          - `maxPrice` number: Maximum price willing to pay for the scheduling slot
          - `currency` string: Currency code for the price (e.g., USD, EUR)
          - `allowCounterBidding` boolean: Whether counter bidding is allowed for this scheduling bid
          - `cancellationFee` number: Fee for cancelling the scheduling bid
        - `status` 'PENDING' | 'ACCEPTED' | 'REJECTED', required: Status of a counter bid for participant pool item scheduling
        - `publicId` string: Public identifier of the counter bidder
        - `name` string: Name of the counter bidder
        - `email` string: Email of the counter bidder
        - `createdAt` string, date-time: Timestamp when the counter bid was created
        - `updatedAt` string, date-time: Timestamp when the counter bid was last updated
        - `respondedAt` string, date-time: Timestamp when the counter bid was accepted or rejected
      - `availabilities` ParticipantPoolAvailability[]: Availabilities set by the schedule setter participant for this item
        - `startDate` string, date-time, required: Start date and time of the availability
        - `durationInMinutes` integer, required: Duration of the availability in minutes
      - `allowedDwellTimeMinutes` number: Dwell time window for ON_DEMAND immediate availability. This is the amount of time that an on-demand item can be collected by an enrollee after the immediate availability notification from the schedule setter
      - `stillSearchingEnabled` boolean: Per-item override of the pool's advancedOptions.stillSearchingEnabled. When omitted, the pool default is inherited.
    - `ownershipRegistry` ParticipantPoolItemOwnershipRegistryItem[]: Registry of owners for this item
      - `role` 'OWNER' | 'ADMIN' | 'ENROLLEE' | 'ASSIGNER' | 'TAGGER', required: Role of a member within the participant pool
      - `publicId` string, required: Public identifier of the owner
      - `timestamp` string, date-time: When this ownership change occurred
      - `reason` string: Optional reason for the ownership change
    - `enrolleeResponses` ParticipantPoolItemEnrolleeResponse[]: Tracked responses from enrollees to this pool item request
      - `userId` string: ID of the enrollee who responded
      - `response` 'ACCEPT' | 'REJECT' | 'IGNORE': Response from an enrollee to a pool item request
      - `date` string, date-time: Timestamp when the response was recorded
    - `assignmentRules` ParticipantPoolItemAssignmentRule[]
      - `ruleId` string
      - `metadata` unknown
    - `participantPoolName` string
  - `attachmentRequests` ESignatureSignerAttachmentRequest[]
    - `id` string
    - `name` string, required
    - `description` string
    - `isOptional` boolean: Set to true if the request is optional
    - `isConfidential` boolean: Set to true if the attachment should not be shared with other signers; only the owner
  - `specialRoles` ESignatureSignerSpecialRoleEnum[]
  - `viewRestrictions` ESignatureSignerViewRestrictionEnum[]
  - `eNotaryValidationRequest` object
    - `kba` object
      - `enforcementCriterion` 'REQUIRED' | 'OPTIONAL' | 'SKIP'
    - `idv` object
      - `enforcementCriterion` 'REQUIRED' | 'OPTIONAL' | 'SKIP'

## Response `200`

Returns the object if it was successfully created.

- ESignatureSigner
  - `id` string
  - `name` string, required
  - `email` string, required
  - `phoneNumber` string
  - `participantPoolItem` ESignatureSignerParticipantPoolItem: An item in a participant pool representing a specific request or assignment
    - `id` string: Unique identifier for the participant pool item
    - `participantPoolId` string, required: ID of the participant pool this item belongs to
    - `status` 'DRAFT' | 'AWAITING_TAGGING' | 'AWAITING_PARTICIPANT_PREFERENCE' | 'REQUEST_SENT_TO_ENROLLEES' | 'MATCHED' | 'STALE' | 'CANCELLED' | 'COMPLETED', required: Current status of a participant pool item
    - `linkedObject` ParticipantPoolItemLinkedObject: Object linked to a participant pool item
      - `objectId` string, required: Identifier of the linked object
      - `kind` 'E_SIGNATURE_PACKAGE', required: Type of object linked to the participant pool item
      - `linkedParticipantId` string: ID of the linked participant in the object (e.g. signer id)
      - `displayName` string, nullable: Derived from the linked object's name (e.g. the eSignaturePackage title) at response time. Decorated by the items listEmbed/listSearch path via a batched lookup; null when the underlying object is missing/deleted. Read-only -- the write path's `sanitizeLinkedObject` strips it.
    - `scheduling` ParticipantPoolItemScheduling: Scheduling configuration for a participant pool item
      - `dateType` 'FIXED' | 'DATE_RANGE', required: Type time preference for the participant pool item
      - `schedulingMode` 'PRE_SCHEDULED' | 'ON_DEMAND', required: Matching mechanism for scheduling participants
      - `startDate` string, date-time: Earliest date of availability
      - `endDate` string, date-time: Latest possible date for the item
      - `timezone` string: Timezone for scheduling (e.g. 'America/New_York')
      - `duration` integer: Duration of the meeting in minutes
      - `scheduleSetterParticipantsIds` string[]: IDs of the participants who can set the schedule. Use ['ALL'] to designate all participants as schedule setters.
      - `scheduleSetterParticipantsMetadata` object: Per-participant metadata for schedule setters, keyed by participant ID. Each value contains metadata specific to that schedule setter.
      - `queueForTagging` boolean: Whether the item should be queued for tagging
      - `bid` ParticipantPoolItemSchedulingBid: Bidding configuration for participant pool item scheduling
        - `maxPrice` number: Maximum price willing to pay for the scheduling slot
        - `currency` string: Currency code for the price (e.g., USD, EUR)
        - `allowCounterBidding` boolean: Whether counter bidding is allowed for this scheduling bid
        - `cancellationFee` number: Fee for cancelling the scheduling bid
      - `counterBids` ParticipantPoolItemSchedulingCounterBid[]: Counter bids for this scheduling item
        - `id` string: Unique identifier for the counter bid
        - `counter` ParticipantPoolItemSchedulingBid, required: Bidding configuration for participant pool item scheduling
          - `maxPrice` number: Maximum price willing to pay for the scheduling slot
          - `currency` string: Currency code for the price (e.g., USD, EUR)
          - `allowCounterBidding` boolean: Whether counter bidding is allowed for this scheduling bid
          - `cancellationFee` number: Fee for cancelling the scheduling bid
        - `status` 'PENDING' | 'ACCEPTED' | 'REJECTED', required: Status of a counter bid for participant pool item scheduling
        - `publicId` string: Public identifier of the counter bidder
        - `name` string: Name of the counter bidder
        - `email` string: Email of the counter bidder
        - `createdAt` string, date-time: Timestamp when the counter bid was created
        - `updatedAt` string, date-time: Timestamp when the counter bid was last updated
        - `respondedAt` string, date-time: Timestamp when the counter bid was accepted or rejected
      - `availabilities` ParticipantPoolAvailability[]: Availabilities set by the schedule setter participant for this item
        - `startDate` string, date-time, required: Start date and time of the availability
        - `durationInMinutes` integer, required: Duration of the availability in minutes
      - `allowedDwellTimeMinutes` number: Dwell time window for ON_DEMAND immediate availability. This is the amount of time that an on-demand item can be collected by an enrollee after the immediate availability notification from the schedule setter
      - `stillSearchingEnabled` boolean: Per-item override of the pool's advancedOptions.stillSearchingEnabled. When omitted, the pool default is inherited.
    - `ownershipRegistry` ParticipantPoolItemOwnershipRegistryItem[]: Registry of owners for this item
      - `role` 'OWNER' | 'ADMIN' | 'ENROLLEE' | 'ASSIGNER' | 'TAGGER', required: Role of a member within the participant pool
      - `publicId` string, required: Public identifier of the owner
      - `timestamp` string, date-time: When this ownership change occurred
      - `reason` string: Optional reason for the ownership change
    - `enrolleeResponses` ParticipantPoolItemEnrolleeResponse[]: Tracked responses from enrollees to this pool item request
      - `userId` string: ID of the enrollee who responded
      - `response` 'ACCEPT' | 'REJECT' | 'IGNORE': Response from an enrollee to a pool item request
      - `date` string, date-time: Timestamp when the response was recorded
    - `assignmentRules` ParticipantPoolItemAssignmentRule[]
      - `ruleId` string
      - `metadata` unknown
    - `participantPoolName` string
  - `attachmentRequests` ESignatureSignerAttachmentRequest[]
    - `id` string
    - `name` string, required
    - `description` string
    - `isOptional` boolean: Set to true if the request is optional
    - `isConfidential` boolean: Set to true if the attachment should not be shared with other signers; only the owner
  - `specialRoles` ESignatureSignerSpecialRoleEnum[]
  - `viewRestrictions` ESignatureSignerViewRestrictionEnum[]

## Changes

- **2026-11-03** `263938e87b8b`: 2 warning, 18 info
  - removed the request property `allOf[#/components/schemas/ESignatureSigner]/participantPoolItem/allOf[#/components/schemas/ParticipantPoolItem]/scheduling/scheduleSetterParticipantId`
  - removed the optional property `participantPoolItem/allOf[#/components/schemas/ParticipantPoolItem]/scheduling/scheduleSetterParticipantId` from the response with the `200` status
  - added the new optional request property `allOf[#/components/schemas/ESignatureSigner]/participantPoolItem/allOf[#/components/schemas/ParticipantPoolItem]/scheduling/allowedDwellTimeMinutes`
  - added the new optional request property `allOf[#/components/schemas/ESignatureSigner]/participantPoolItem/allOf[#/components/schemas/ParticipantPoolItem]/scheduling/bid/allowCounterBidding`
  - …16 more

[Operation history](https://skmtc.dev/pactima/apis/esignature-packages-api/changes/e-signature-packages/:eSignaturePackageId/signers/post.md)

---

[API](https://skmtc.dev/pactima/apis/esignature-packages-api.md) - [All operations](https://skmtc.dev/pactima/apis/esignature-packages-api/llms.txt) - [OpenAPI document](https://skmtc.dev/pactima/apis/esignature-packages-api/revisions/263938e87b8b?raw)
