List webhook examples
/v1/campaigns/webhook/examplesThis endpoint is deprecated but still works. Use List webhook examples (GET /v1/webhooks/examples) instead.
Example webhook payloads, the same ones its replacement serves. Not scoped to a campaign, despite its path.
Headers
AuthorizationstringRequiredBearerfollowed by a space and your API key, for exampleBearer vk_….
Response
200
examplesarray of objectsRequiredArray of example webhook payloads
Show 12 child attributesHide child attributes
eventstringRequiredEvent type
Example"prospect_response"idempotency_keystringRequiredSHA-256 hex digest (64 characters) of the sequence lead, campaign, channel and prospect message. Identical on every redelivery of the same reply; a different reply from the same prospect gets a new key
exactly 64 charactersExample"f3a1c9d2b8e7460a91d0a25f3e7b4c1d6f8a92e0b4c1d6f8a92e0b4c1d6f8a92"sequence_lead_idstring · uuidRequiredID of the sequence lead this response relates to
Example"550e8400-e29b-41d4-a716-446655440000"timestampstringRequiredWhen the delivery was built: ISO 8601, UTC, with a
+00:00offset and microsecondsExample"2025-01-14T19:30:00.123456+00:00"channelstringRequiredCommunication channel: 'email' or 'linkedin'
Example"email"senderobjectRequiredThe accounts assigned to send to this lead, keyed by channel. A channel is left out when no account is assigned, and the object is empty when the accounts can't be looked up.
Show 2 child attributesHide child attributes
emailobject or nullPresent when the lead has an email account assigned
Show 3 child attributesHide child attributes
account_idstringRequiredID of the connected email account that sent the outreach.
Example"xyz789-id"platform_usernamestringRequiredAccount username (typically the address)
Example"jane@yourcompany.com"emailstringRequiredSender email address
Example"jane@yourcompany.com"
linkedinobject or nullPresent when the lead has a LinkedIn account assigned
Show 2 child attributesHide child attributes
account_idstringRequiredID of the connected LinkedIn account that sent the outreach.
Example"abc123-id"platform_usernamestringRequiredLinkedIn username/handle
Example"jane-smith-sdr"
leadobjectRequiredThe lead's details. A field the lead has no value for is
null.Show 11 child attributesHide child attributes
annual_revenueinteger or nullExample5000000companystring or nullExample"Example Corp"custom_fieldsobjectemailstring or nullExample"john.doe@example.com"employee_countinteger or nullExample50first_namestring or nullExample"John"industrystring or nullExample"Technology"last_namestring or nullExample"Doe"linkedin_profilestring or nullThe lead's LinkedIn profile URL
Example"https://linkedin.com/in/johndoe"titlestring or nullExample"VP of Sales"websitestring or nullThe lead's company website
Example"https://example.com"
ai_responseobjectRequiredThe AI Appointment Setter's analysis of the reply. When the reply wasn't analyzed, every field except
goalisnull, andgoalgives the reason.Show 14 child attributesHide child attributes
agent_actionstring or nullWhat the agent did with the reply: 'reply', 'wait', 'nudge', 'escalate', 'close' or 'skip'
Example"reply"agent_versioninteger or nullPresent (as 2) when the Appointment Setter agent handled the reply; absent on legacy payloads. Feature-detect on this field
Example2asset_deliveredboolean or nullAsset-first campaigns only: whether the page went out
Exampletrueasset_urlstring or nullAsset-first campaigns only: the personalised page that was sent
Example"https://pages.example.com/p/abc123"completeboolean or nulltruewhen the conversation has ended or should end, whether or not its goal was reached. Whenagent_versionis2, it'strueexactly whenconversation_statusis one of theclosed_values.Examplefalseconversation_statusstring or nullThe conversation's state after this reply.
awaiting_prospect: waiting for the prospect.needs_human: the AI Appointment Setter handed the conversation to your team.human_owned: someone on your team has taken it over.closed_won,closed_lost,closed_no_responseorclosed_escalated: the conversation has ended. A lead still on the older follow-up flow can showawaiting_followup. Handle values you don't recognize without failing.Example"awaiting_prospect"escalation_reasonstring or nullWhy the agent handed the conversation to a human, when it did
first_message_modestring or nullAsset-first campaigns only: how the first message was sent
Example"asset"goalstring or nullThe campaign goal the responder is working toward, or the skip reason
Example"Schedule a demo"goal_statusstring or nullProgress toward the meeting goal: 'not_sent', 'link_sent', 'soft_commit', 'confirmed' or 'declined'
Example"link_sent"out_of_officeboolean or nullExamplefalseresponder_messagestring or nullThe reply the responder sent, or null when nothing was sent
Example"Thank you for your interest! I'd be happy to schedule a demo for you."sdr_briefstring or nullExample"Prospect expressed interest, recommend scheduling demo within 24 hours."sentimentstring or null'positive', 'neutral' or 'negative'
Example"positive"
campaignstring or nullThe campaign's name. The payload doesn't include the campaign's ID.
Example"Q1 2024 Outbound Campaign"conversation_ownerstring or nullPresent only when the conversation has an owner: 'victoria' when Victoria's responder is handling replies, 'lp_responder' when an external responder is. Receivers that reply to prospects themselves should stay out of conversations Victoria owns
Example"victoria"prospect_messagestring or nullThe prospect's reply, as received
Example"Hi, I'm interested in learning more about your product."variationstring or nullA/B arm the lead is in: 'a', 'b', or null when the lead has none
Example"a"
successbooleanDefaulttrue
Errors
Errors share one JSON body: success, error, message, optional details, and request_id.
| Status | Code | Meaning |
|---|---|---|
| 401 | UNAUTHORIZED | The |
| 401 | API_KEY_EXPIRED | The API key is past its expiry date. Create a new key in the Victoria AI app. |
| 403 | INSUFFICIENT_SCOPE | The API key doesn't have the scope this endpoint requires, such as |
| 403 | ORGANIZATION_DEACTIVATED | The organization that owns this API key has been deactivated. |
| 429 | RATE_LIMITED | Too many requests for this API key: more than 100 a minute to one endpoint, or 600 a minute in total. Retry after the number of seconds in the |
| 500 | INTERNAL_ERROR | Something failed on our side. The response never includes internal details; quote its |
| 503 | UPSTREAM_TIMEOUT | A service the API depends on timed out. The request is safe to retry. |
| 503 | AUTH_UNAVAILABLE | The API key couldn't be checked because the authentication service was unavailable. The request is safe to retry. |
Response headers
| Header | Description |
|---|---|
X-Request-ID | Correlation ID for the request, also returned as |
RateLimit-Limit | Requests allowed to this endpoint per minute. |
RateLimit-Remaining | Requests you can still send to this endpoint right now. |
RateLimit-Reset | Seconds until the endpoint's full limit is available again. |
Retry-After | On a |
Deprecation |
|
Link |
|