API documentation
Create protected contact-form links from your own tools. Each created link counts toward your monthly plan.
Authentication
Every request needs a per-account API key sent as a bearer token. Create and manage keys in your dashboard → API keys. Keys are shown once at creation — store them securely. Your email must be verified before keys will work.
Authorization: Bearer prc_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Create a contact link
POSThttps://pressreleasecontact.com/api/v1/forms
Request body (JSON)
| Field | Type | Description | |
|---|---|---|---|
| protected_email | required | string | The real inbox messages are forwarded to. Never shown publicly. |
| display_name | optional | string | Contact / person name shown on the form. Max 160 chars. |
| company | optional | string | Organization shown on the form. Max 200 chars. |
| release_title | optional | string | Press-release title shown for context. Max 300 chars. |
Response · 201 Created
{
"ok": true,
"public_id": "ddNZDcfj9v",
"url": "https://pressreleasecontact.com/c/ddNZDcfj9v"
}Put url in your press release's media-contact section. Anyone who clicks it reaches a captcha-gated form that forwards to your protected_email — your address is never exposed.
Errors
| Status | error | Meaning |
|---|---|---|
| 401 | missing_key | No Authorization bearer header. |
| 401 | invalid_key | Key not recognized or revoked. |
| 403 | email_unverified | Verify your account email before using the API. |
| 400 | invalid_body | Missing or invalid fields (e.g. a malformed protected_email). |
| 429 | limit_reached | Monthly form quota reached — upgrade. |
| 429 | rate_limited | Too many requests in a short window — slow down and retry. |
Examples
curl
curl -X POST https://pressreleasecontact.com/api/v1/forms \
-H "Authorization: Bearer prc_live_…" \
-H "Content-Type: application/json" \
-d '{"protected_email":"[email protected]","display_name":"Jane Doe","company":"Acme"}'Node.js
const res = await fetch("https://pressreleasecontact.com/api/v1/forms", {
method: "POST",
headers: {
"Authorization": "Bearer prc_live_…",
"Content-Type": "application/json",
},
body: JSON.stringify({ protected_email: "[email protected]", display_name: "Jane Doe" }),
})
const data = await res.json()
console.log(data.url) // https://pressreleasecontact.com/c/…Python
import requests
r = requests.post(
"https://pressreleasecontact.com/api/v1/forms",
headers={"Authorization": "Bearer prc_live_…"},
json={"protected_email": "[email protected]", "display_name": "Jane Doe"},
)
print(r.json()["url"])