PartnerClientTicketReply
Plan or send a response to one permitted Partner client ticket under the Partner storefront identity.
Endpoint: https://sive.host/modules/addons/shapi/sh-api.php
Method: POST using application/x-www-form-urlencoded.
Changes account or service state. Access is limited to directly owned records or explicitly assigned Partner-managed client services after both relationships are verified.
Important behavior
- The send is rejected if the ticket thread, status, or message changed after planning.
- A successful reply is posted under the Partner identity and the ticket is set to Answered.
- Only the visible ticket number is accepted; no internal database identifier is accepted from the caller.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | Exact SHAPI action name shown in this article. |
api_key | string | Yes | Client API key generated in the Sive.Host SHAPI page. |
api_secret | string | Yes | Secret paired with the API key. Send it only in the POST body. |
partner_clientid | positive integer | Yes | Active client ID returned by ListPartnerClients. |
ticketnumber | numeric string | Yes | Visible WHMCS ticket number returned by ListPartnerClientTickets; internal database IDs are not accepted. |
operation | plan|send | No | Plan returns confirmation without sending; send requires every confirmation field. |
message | string 3-20000 bytes | Yes | Exact Partner reply body. |
expected_state_fingerprint | 64-character SHA-256 | No | Required for send; exact state_fingerprint from a fresh plan. |
confirmation | string | No | Required for send; exact confirmation from a fresh plan. |
confirm_send | boolean | No | Required and true for send after explicit Partner approval. |
Example request
Set the four environment variables from the authenticated SHAPI page. Do not put credentials in source control or URLs.
curl --request POST 'https://sive.host/modules/addons/shapi/sh-api.php' \
--user "${SHAPI_HTTP_USER}:${SHAPI_HTTP_PASSWORD}" \
--header 'Accept: application/json' \
--data-urlencode "action=PartnerClientTicketReply" \
--data-urlencode "api_key=${SHAPI_API_KEY}" \
--data-urlencode "api_secret=${SHAPI_API_SECRET}" \
--data-urlencode "partner_clientid=1606" \
--data-urlencode "ticketnumber=629963" \
--data-urlencode "operation=plan" \
--data-urlencode "message=Hello, we have resolved the issue and verified the service." \
--data-urlencode "confirm_send=true"Response
SHAPI always returns JSON. Check result; panel responses can vary by the server module and DirectAdmin version.
{
"result": "success",
"message": {
"action": "PartnerClientTicketReply",
"data": "Panel- or action-specific response"
}
}Common errors
Unauthorized access!: source IP or HTTP Basic authentication failed.Invalid API Key or secret.: the customer key is wrong, disabled, or deleted.Unable to retrieve an active service owned by this client.: the service is inactive or belongs to another client.Missing required parameters.: one or more required fields were omitted.
SHAPI documentation version 2.0 — generated from the current endpoint contract.

