BizKitHub
DocsAPI ReferenceSupport/api/v1/support/contact-form
postSupportPublic API v1

/api/v1/support/contact-form

Creates a support ticket from a contact form submission. Includes anti-spam geolocation check. Optionally registers the customer as a contact. When called through a trusted proxy (e.g. support.bizkithub.com), pass the end-user IP via ?customerRealIp=… so the geolocation resolves to the real reporter, not the proxy host.

supportpostApiV1SupportContact-form

Parameters

2 query · JSON body

Query parameters

· 2
apiKeystringRequired

Your BizKitHub API key (passed as GET parameter).

Key format: A 32-character string matching: ^(PROD|DEV_|ROOT)[A-Za-z0-9]{28}$
Prefixes: PROD (production key), DEV_ (individual developer), ROOT (system key with no limits). Learn more

ExamplePRODPGrFxpGEtrOZfuWhnoJohUYBXuOE
customerRealIpstringOptional

User IP address used for GEO/IP intelligence.
Accepted formats: IPv4 (e.g. 1.1.1.1), IPv6 (e.g. 2001:4860:4860::8888)
Normalization:

  • ::1, 0.0.0.0, localhost (or empty value) is normalized to 127.0.0.1
  • Invalid values are rejected (the API expects a valid IP string).

If provided, the system can resolve additional context (reverse DNS, geolocation, ASN, proxy/hosting flags) via our internal VikiTron GEO/IP resolver. Learn more

Example1.1.1.1

Request body

application/json
messagestringRequired

Message body from the customer. Must be at least 10 characters (rejects one-word noise) and at most 5000 characters (a full report fits, spam floods do not).

Length: 105000
ExampleHello, how are you?
subjectstringOptional

Subject line for the support ticket.

ExampleRequest from Jan
noticestringOptional

Internal note (not visible to customer).

ExampleInternal notice
sendToEmailstringOptional

Contact email address.

The system validates the input as a standard email address and automatically applies normalization and canonicalization.

All API responses return the normalized form, and each email address is unique per organisation within the system.

Phone-only contacts: Since 2026-06-10 a contact may exist without an e-mail when it was registered only by phone (e.g. imports of phone-only records). Responses that expose such contacts use API_EMAIL_NULLABLE instead, where this field can be null. Endpoints that accept e-mail as input still require a valid value here — phone-only creation goes through admin-only import / BFF flows.

Examplejan@barasek.com
categorySlugstringOptional

Category slug for routing the ticket.

Exampleoffer
customerEmailstringOptional

Contact email address.

The system validates the input as a standard email address and automatically applies normalization and canonicalization.

All API responses return the normalized form, and each email address is unique per organisation within the system.

Phone-only contacts: Since 2026-06-10 a contact may exist without an e-mail when it was registered only by phone (e.g. imports of phone-only records). Responses that expose such contacts use API_EMAIL_NULLABLE instead, where this field can be null. Endpoints that accept e-mail as input still require a valid value here — phone-only creation goes through admin-only import / BFF flows.

Examplejan@barasek.com
customerPhonestringOptional

Contact phone number in international (national) format.

Preferred format: +<country_code> <local_number>

  • Leading plus sign (+) is required
  • Followed by the country calling code (e.g. 420)
  • One space after the country code
  • Full local number without spaces

Example: +420 777123456
This format ensures unambiguous storage, validation, and compatibility with SMS, calling, and third-party integrations (e.g. Twilio, WhatsApp, CRM systems).

Example+420 777123456
customerFirstNamestringOptional
ExampleJan
customerLastNamestringOptional
ExampleBarášek

Response schema

1 status code documented

200Success
object | object
One of 2:
Variant 1
success"true"Required
Variant 2
success"false"Required
error"SUBMISSION_FAILED"Required
messagestringRequired

Human-readable, deliberately generic explanation (anti-spam rejection and infrastructure failure are indistinguishable from the outside). Show this verbatim in the UI.

Response example

application/json
{
  "success": true
}

Request example

POST /api/v1/support/contact-form

post
curl -X POST "https://api.bizkithub.com/api/v1/support/contact-form?apiKey=PRODPGrFxpGEtrOZfuWhnoJohUYBXuOE&customerRealIp=1.1.1.1" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
  "message": "Hello, how are you?",
  "subject": "Request from Jan",
  "notice": "Internal notice",
  "sendToEmail": "jan@barasek.com",
  "categorySlug": "offer",
  "customerEmail": "jan@barasek.com",
  "customerPhone": "+420 777123456",
  "customerFirstName": "Jan",
  "customerLastName": "Barášek"
}'

Need an API key?

All BizKitHub public API endpoints require authentication via API key.

Get API Key