Public API (send data TO Pitchit)
Endpoint:
POST /api/v1/integrations/external-services/public-api/webhook
Request Payload:
{
"event_type": "add_lead",
"event_body": {
"campaign": "string",
"data": {
"email": "string",
"phone_number": "string",
"first_name": "string",
"last_name": "string",
"title": "string",
"website": "string",
"company_name": "string",
"linkedin_profile_url": "string",
"facebook_profile_url": "string",
"twitter_profile_url": "string",
"instagram_profile_url": "string"
}
}
}- Where ‘campaign’ attribute is required
- ‘Campaign’ attribute can not be empty
- At least on of two attributes ‘phone_number’ or ‘email’ can no be empty and can not be missing
Request Example:
curl -X POST https://app.pitchit.ai/api/v1/integrations/external-services/public-api/webhook \
-H "Content-Type: application/json" \
-H "Authorization: ApiKey your-api-key" \
-d '{
"event_body": {
"data": {
"email": "test@test.com",
"title": "string",
"website": "string",
"last_name": "string",
"first_name": "string",
"company_name": "string",
"phone_number": "string",
"twitter_profile_url": "string",
"facebook_profile_url": "string",
"linkedin_profile_url": "string",
"instagram_profile_url": "string"
},
"campaign": "your-pitchit-campaign-uuid"
},
"event_type": "add_lead"
}'
Response Format:
The endpoint returns a JSON object with the following structure:
{
"webhook_uuid": "f09314ce-0bc8-4af7-9299-215509534814"
}
Response Fields:
uuid
The unique identifier of the received webhook.
Webhook (receive data FROM Pitchit)
Actions: Lead Priority Update
Description:
Every time pitch recipient is (re)qualified based on his interest, Pitchit app sends pitch recipient information with updated priority. Pitch recipient is re-qualified every time he replies by AI Agent or, it can be manually qualified by an end-user.
Data:
- Pitch recipient first name
- Pitch recipient last name
- Pitch recipient full name
- Pitch recipient phone number
- Pitch recipient email
- Pitch recipient priority
- Communication channel (SMS, Email, etc.)
Webhook payload:
{
"first_name": "Alice",
"last_name": "Smith",
"full_name": "Alice Smith",
"phone_number": "+15557778888",
"email": "alice.smith@example.com",
"priority": "High",
"channel": "Email"
}
Actions: Pitch Sent
Description:
Every time when a new pitch is sent, Pitchit app triggers an action to send pitch recipient data with sent pitch text.
Data:
- Pitch recipient first name
- Pitch recipient last name
- Pitch recipient phone number
- Pitch recipient email
- Campaign name of the sent pitch
- Text of a sent pitch
- Channel where pitch was sent
Webhook Payload:
{
"first_name": "John",
"last_name": "Doe",
"phone_number": "+15551234567",
"email": "john.doe@example.com",
"campaign_name": "Summer Sales 2025",
"pitch_text": "Hi John, I'd love to tell you about our new summer collection. It's designed to help you stay cool and stylish all season long. Are you free for a quick chat sometime this week?",
"pitch_channel_name": "Email"
}
Actions: Reply Received
Description:
Every time when reply received from a pitch recipient, Pitchit app sends pitch recipient data with reply information.
Data:
- Pitch recipient first name
- Pitch recipient last name
- Pitch recipient phone number
- Pitch recipient email
- Text of a reply
Webhook Payload:
{
"first_name": "Jane",
"last_name": "Doe",
"phone_number": "+15559876543",
"email": "jane.doe@example.com",
"reply_text": "Thanks for reaching out! I'm interested in learning more. When would be a good time to connect?"
"survey_results": [survey result objects]
}
Actions: Consent Captured
Description:
Every time consent is captured during a voice conversation, Pitchit app sends consent information with details about the consent response. Consent is captured when a caller responds to consent language prompts during an inbound voice call. One webhook is fired per consent record (per department with consent capture enabled).
Data:
- Consent record ID (unique identifier for the consent record)
- Consent status (true if consented, false if declined, null if response not captured)
- Consent language information (ID, name, text, and language code)
- Pitch recipient first name
- Pitch recipient last name
- Pitch recipient phone number
- Pitch recipient email
- Campaign ID and title
- Department ID and name (the department for which consent was captured)
- Voice conversation ID (the conversation during which consent was captured)
Webhook payload:
{
"event_type": "consent_captured",
"timestamp": "2025-06-10T14:30:00Z",
"data": {
"consent_record_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"consented": true,
"consent_language": {
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"name": "Marketing Consent",
"text": "Do you consent to receive marketing communications from us?",
"language_code": "en"
},
"recipient": {
"id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"first_name": "Alice",
"last_name": "Smith",
"email": "alice.smith@example.com",
"phone_number": "+15557778888"
},
"campaign": {
"id": "d4e5f6a7-b8c9-0123-def4-234567890123",
"title": "Summer Sales 2025"
},
"department": {
"id": "e5f6a7b8-c9d0-1234-ef45-345678901234",
"name": "Sales"
},
"voice_conversation_id": "f6a7b8c9-d0e1-2345-f456-456789012345"
}
}
Actions: Meeting Booked
Description:
Every time when meeting is booked by a pitch recipient, Pitch app send booking details and pitch recipient relevant information.
Data:
- Pitch recipient first name
- Pitch recipient last name
- Pitch recipient phone number
- Pitch recipient email
- Date, time and timezone of a meeting
- Link to a meeting (MS Teams or Google Meet)
- Email of a calendar owner
Webhook payload:
{
"first_name": "Peter",
"last_name": "Jones",
"phone_number": "+15552223333",
"email": "peter.jones@example.com",
"meeting_datetime": "2025-06-10T14:30:00Z",
"meeting_link": "https://meet.example.com/peterjonesmeeting",
"calendar_owner": "sales_team@example.com"
}
Actions: Lead Insights Update
Description:
Every time pitch recipient is replying and provide more data about himself (location, profession, etc.) AI Agent identifies it and updates insights about the pitch recipient which may be helpful to win a deal. Once insights are updated - Pitchit app send pitch recipient data with updated insights information about him.
Data:
- Pitch recipient first name
- Pitch recipient last name
- Pitch recipient phone number
- Pitch recipient email
- Pitch recipient priority explanation
- Pitch recipient additional information
Webhook Payload:
{
"first_name": "Robert",
"last_name": "Brown",
"phone_number": "+15554449999",
"email": "robert.brown@example.com",
"insights_score_explanations": "High engagement with pricing page, downloaded whitepaper on advanced features.",
"insights_additional_information": "Expressed interest in enterprise-level solutions during initial call."
}Actions: Call Completed
Description:
Fired when a voice conversation completes. Carries full context.
Trigger: Once per voice-app webhook payload (inbound IVR + outbound calls)
Data:
- Pitch recipient first name
- Pitch recipient last name
- Pitch recipient phone number
- Pitch recipient email
- Date, time and timezone of a meeting
- Link to a meeting (MS Teams or Google Meet)
- Email of a calendar owner
Webhook payload:
{
"event_type": "call_completed",
"timestamp": "2025-01-01T12:00:00Z",
"data": {
"voice_conversation_id": "uuid",
"direction": "inbound" | "outbound",
"recipient": {"id": "uuid", "first_name": "", "last_name": "", "email": "", "phone_number": ""},
"campaign": {"id": "uuid", "title": ""},
"transcript": [{"role": "assistant"|"user", "content": ""}],
"transfer_to_human": true|false,
"keep_replying": true|false|null,
"lead_score": "hot"|"warm"|"cold"|"won"|null,
"meeting": {"booked": true|false, "datetime": "", "meeting_url": ""},
"survey_results": [],
"explanations": [],
"recording_id": "",
"metadata": {}
}
}Webhook Subscription Management
Description:
You can manage your webhook subscriptions through the API. This allows youto programmatically create, update, test, and delete webhook subscriptions.
- List all subscriptions: GET /api/v1/integrations/public-webhooks
- Create a subscription: POST /api/v1/integrations/public-webhooks
- Get subscription details: GET /api/v1/integrations/public-webhooks/{uuid}
- Update a subscription: PATCH /api/v1/integrations/public-webhooks/{uuid}
- Delete a subscription: DELETE /api/v1/integrations/public-webhooks/{uuid}
- Test a subscription: POST /api/v1/integrations/public-webhooks/{uuid}/test
- Enable a subscription: POST /api/v1/integrations/public-webhooks/{uuid}/turn-on
- Disable a subscription: POST /api/v1/integrations/public-webhooks/{uuid}/turn-off
You can also view and manage your webhooks through the Pitchit applicationinterface under Settings > Webhooks. In order to do so, you need to find the webhooks you are subscribed to. To find them, do the following:

Step 1: Click user-name at the bottom of the left navigation menu

Step 2: Navigate to the Webhooks tab

Step 3: Now you can see the list of created webhooks. No webhooks? Don’t worry, let’s create a new one - click "Create Webhook"

Step 4: Once clicked, you’ll find a webhook set up page. Here you can easily set up a webhook, give it a name, and select a trigger you’d like to subscribe to (see here for a full list of the available triggers).
Do not forget to mention the URL where the data will be posted every time when event is triggered.
If you’d like to authorize a POST request from the Pitch app, you can easily do it by providing an API Key, Value and where in the request it should be set (header or query params). Other Auth Types will supported in the near future.
And the last step, you need to select Pitchit campaigns you’d like to subscribe to, multiselect is supported.
Webhook Authentication Options
Description:
When Pitchit sends webhook data to your endpoint, you can configure how we authenticate those requests.
Authentication Options:
- API Key: Include an API key in the request. You can specify whether the key is sent in the HTTP header or as a query parameter.
- No Authentication: Webhook requests are sent without any authentication.
To configure authentication for a webhook subscription, specify the authentication type and provide the key name, value, and where to include it (header or query params) when creating or updating your subscription.
Integration Types
Description:
Pitchit supports multiple integration types for different use cases:
- Zapier: Connect Pitchit to Zapier workflows
- Incoming webhooks: Send lead data to Pitchit via API (documented below)
- Outgoing events: Receive webhook events from Pitchit
Event Types Reference Table
Triggered when a new pitch message is sent to a recipient
Triggered when Pitchit receives a reply from a recipient |
Triggered when a recipient books a meeting
Triggered when a recipient's priority is updated
Triggered when AI insights about a recipient are updated
Triggered when consent is captured during a voice conversation
Triggered when a voice call conversation completes