Speaker Inquiry API quickstart

Mollie Plotkin Group is a keynote speaker and entertainment agency. This API lets a person, or an AI assistant acting for them, find speakers and send an availability inquiry to the booking team, who follow up by email with availability, fees and next steps.

1. Find a speaker

Search by name or topic. Use a result's id as speaker_id, or its canonical_url as speaker_url.

curl
curl 'https://mollieplotkingroup.com/wp-json/mpg-speakers/v1/search?q=kevin'
JavaScript
const res = await fetch('https://mollieplotkingroup.com/wp-json/mpg-speakers/v1/search?q=kevin');
const { items } = await res.json();
console.log(items.map(s => [s.id, s.name]));
Python
import requests

items = requests.get('https://mollieplotkingroup.com/wp-json/mpg-speakers/v1/search', params={'q': 'kevin'}).json()['items']
print([(s['id'], s['name']) for s in items])

2. Try it in the sandbox

The sandbox validates the inquiry and returns HTTP 200 with the matched speaker names. Nothing is sent. You can also send "dry_run": true to the production URL for the same result.

curl
curl -X POST https://mollieplotkingroup.com/wp-json/sandbox/mpg-inquiries/v1/submit \
  -H 'Content-Type: application/json' \
  -d '{
    "form_name": "AI Agent Inquiry",
    "inquiry_type": "speaker_inquiry",
    "submission_channel": "ai_agent",
    "agent_name": "Your assistant",
    "contact_name": "Jordan Lee",
    "contact_email": "jordan@example.com",
    "speakers": [
        {
            "speaker_url": "https://mollieplotkingroup.com/speaker/kevin-oleary/"
        }
    ],
    "event_date": "2027-04-15",
    "event_format": "in_person",
    "event_location": "Philadelphia, PA",
    "estimated_audience_size": 750,
    "speaker_budget": 25000,
    "additional_comments": "Keynote for our annual leadership summit."
}'
JavaScript
const res = await fetch('https://mollieplotkingroup.com/wp-json/sandbox/mpg-inquiries/v1/submit', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({"form_name":"AI Agent Inquiry","inquiry_type":"speaker_inquiry","submission_channel":"ai_agent","agent_name":"Your assistant","contact_name":"Jordan Lee","contact_email":"jordan@example.com","speakers":[{"speaker_url":"https://mollieplotkingroup.com/speaker/kevin-oleary/"}],"event_date":"2027-04-15","event_format":"in_person","event_location":"Philadelphia, PA","estimated_audience_size":750,"speaker_budget":25000,"additional_comments":"Keynote for our annual leadership summit."}),
});
console.log(res.status, await res.json());
Python
import requests

res = requests.post(
    'https://mollieplotkingroup.com/wp-json/sandbox/mpg-inquiries/v1/submit',
    json={"form_name":"AI Agent Inquiry","inquiry_type":"speaker_inquiry","submission_channel":"ai_agent","agent_name":"Your assistant","contact_name":"Jordan Lee","contact_email":"jordan@example.com","speakers":[{"speaker_url":"https://mollieplotkingroup.com/speaker/kevin-oleary/"}],"event_date":"2027-04-15","event_format":"in_person","event_location":"Philadelphia, PA","estimated_audience_size":750,"speaker_budget":25000,"additional_comments":"Keynote for our annual leadership summit."},
    headers={'Content-Type': 'application/json'},
)
print(res.status_code, res.json())

3. Submit the inquiry

Send the same body to production with an Idempotency-Key header, and reuse that key if you retry. HTTP 202 means the availability inquiry has been sent to the booking team, who follow up by email with availability, fees and next steps.

curl
curl -X POST https://mollieplotkingroup.com/wp-json/mpg-inquiries/v1/submit \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000' \
  -d '{
    "form_name": "AI Agent Inquiry",
    "inquiry_type": "speaker_inquiry",
    "submission_channel": "ai_agent",
    "agent_name": "Your assistant",
    "contact_name": "Jordan Lee",
    "contact_email": "jordan@example.com",
    "speakers": [
        {
            "speaker_url": "https://mollieplotkingroup.com/speaker/kevin-oleary/"
        }
    ],
    "event_date": "2027-04-15",
    "event_format": "in_person",
    "event_location": "Philadelphia, PA",
    "estimated_audience_size": 750,
    "speaker_budget": 25000,
    "additional_comments": "Keynote for our annual leadership summit."
}'
JavaScript
const res = await fetch('https://mollieplotkingroup.com/wp-json/mpg-inquiries/v1/submit', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json', 'Idempotency-Key': crypto.randomUUID() },
  body: JSON.stringify({"form_name":"AI Agent Inquiry","inquiry_type":"speaker_inquiry","submission_channel":"ai_agent","agent_name":"Your assistant","contact_name":"Jordan Lee","contact_email":"jordan@example.com","speakers":[{"speaker_url":"https://mollieplotkingroup.com/speaker/kevin-oleary/"}],"event_date":"2027-04-15","event_format":"in_person","event_location":"Philadelphia, PA","estimated_audience_size":750,"speaker_budget":25000,"additional_comments":"Keynote for our annual leadership summit."}),
});
console.log(res.status, await res.json());
Python
import uuid
import requests

res = requests.post(
    'https://mollieplotkingroup.com/wp-json/mpg-inquiries/v1/submit',
    json={"form_name":"AI Agent Inquiry","inquiry_type":"speaker_inquiry","submission_channel":"ai_agent","agent_name":"Your assistant","contact_name":"Jordan Lee","contact_email":"jordan@example.com","speakers":[{"speaker_url":"https://mollieplotkingroup.com/speaker/kevin-oleary/"}],"event_date":"2027-04-15","event_format":"in_person","event_location":"Philadelphia, PA","estimated_audience_size":750,"speaker_budget":25000,"additional_comments":"Keynote for our annual leadership summit."},
    headers={'Content-Type': 'application/json', 'Idempotency-Key': str(uuid.uuid4())},
)
print(res.status_code, res.json())

Responses

Rules for AI agents

Request fields

FieldTypeRequiredDescription
schema_versionstringnoContract version used by the client. Values: 1.0.
form_idstringnoStable machine-readable identifier for the form.
form_namestringyesHuman-readable name of the submitting form. API and agent clients can send a short label such as "AI Agent Inquiry".
inquiry_typestringnoControls conditional validation and routing. Defaults to general_inquiry. Values: general_inquiry, speaker_inquiry.
contact_namestringyesFull name of the person making the inquiry.
contact_emailstring (email)yesEmail address used for follow-up.
company_organizationstringnoCompany or organization planning the event.
event_locationstringnoVenue, city/region, or virtual location.
event_typestringnoHuman-readable event category.
estimated_audience_sizeintegernoEstimated number of attendees.
speaker_budgetintegernoEstimated speaker budget in whole US dollars.
event_datestring (date)noEvent date in ISO YYYY-MM-DD format.
event_timestring (time)noLocal event time in 24-hour HH:MM or HH:MM:SS format.
event_formatstringnoHow the speaker will participate. Values: in_person, virtual, hybrid, undecided.
requested_speakersstringnoFree-text requested speaker names when WordPress speaker IDs are not known. This does not satisfy the speakers requirement for speaker_inquiry.
speakersarraywhen speaker_inquiryPublished speakers on this site. Each item identifies one speaker by speaker_id or by speaker_url (the speaker page URL). Up to 25 items; duplicates are removed. A scalar ID or URL may also be used as an array item.
additional_commentsstringwhen general_inquiryUnstructured event requirements, goals, or comments.
additional_fieldsarraynoOptional extension fields. Up to 50 items.
submission_channelstringnoWhere the inquiry came from. Defaults to website. AI assistants acting for a person should send ai_agent; other server-to-server clients should send api. Values: website, api, ai_agent.
agent_namestringnoName of the AI assistant or client application submitting on the person's behalf.
dry_runbooleannoWhen true, validates the inquiry and returns the normalized result with HTTP 200 without delivering, counting or verifying it.
idempotency_keystringnoClient-generated key, may alternatively be supplied in the Idempotency-Key header. Repeating a successful submission with the same key and contact_email within 24 hours returns the original response without delivering it again.
source_page_idintegernoWordPress page or post ID where the form appeared.
source_page_titlestringnoTitle of the source page. A valid source_page_id takes precedence.
source_page_urlstring (URL)noCanonical URL of the source page.
referrer_urlstring (URL)noReferring page URL.
utm_sourcestringnoUTM source attribution value.
utm_mediumstringnoUTM medium attribution value.
utm_campaignstringnoUTM campaign attribution value.
utm_contentstringnoUTM content attribution value.
utm_termstringnoUTM term attribution value.
recaptcha_tokenstringnoShort-lived browser verification token, for the website's own forms. API and agent clients omit it. When verification is enabled and this token is missing or fails, valid inquiries may be accepted into the isolated unverified-inquiry route instead of normal delivery.

Updated 2026-09-28 · API version 0.4.4 · Contact the booking team