Authorization: Token <your-api-token>). CAPTCHA is not required: the token is the trust signal. The contact form on the public directory website is a separate flow for anonymous visitors; it requires a valid captcha and an API token does not replace it there.GET /api/directory/public/v1alpha/directories/{directoryId}/forms/contact-request/) for the field IDs, internal labels, types and which fields are required. Send one answer per field in form.answers, identified by fieldId or internalLabel. First name, last name, email and company name are always required; the directory's form can require more. Property names are accepted in camelCase (as in the examples) or snake_case (as in the schema).utmQueryParams stores attribution data with the request. routingSource is a free-text label of up to 100 characters that records where your integration routed the request from (for example the partner pool it picked from); it is returned wherever the request is read back and can be filtered and reported on.curl --location 'https://v1.api.partnerpage.io/api/directory/private/v1alpha/directories//entries/partners//contact-requests/' \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"form": {
"answers": [
{
"fieldId": "0165c5e6-e562-4ad9-adce-efc9844a95fc",
"answer": "John"
},
{
"internalLabel": "partnerpage-last_name",
"answer": "Doe"
},
{
"internalLabel": "partnerpage-email",
"answer": "john.doe@mycompany.io"
},
{
"internalLabel": "partnerpage-company_name",
"answer": "MyCompany"
}
]
},
"utmQueryParams": {
"utmSource": "api",
"utmMedium": "server-to-server"
},
"routingSource": "AMER, Commercial, 101-750 employees",
"holdReason": null
}'{
"id": "219a7d94-b934-4ccf-880f-d24b55e7e03e",
"created": "2024-08-23T13:40:00+00:00",
"answers": [],
"utmQueryParams": {},
"routingSource": "AMER, Commercial, 101-750 employees",
"holdReason": null
}