Ask a client for their content
Try itMakes a page in your brand where your client sends what the site is built from — logo (Your logo), photos (Photos), phone (Phone number), email (Email address), address (Address), hours (Opening hours), about (About your business), services (What you offer) — and answers with the link to send them (their client logins also find it in their client area). What they send goes onto the site's DRAFT the moment it arrives: details into the business settings, the logo into the header, pictures into the site's library, the about words and services into the matching sections when there is one. Never published. One waiting request per site: pass replace: true to withdraw the waiting one. email_to sends the link in your name.
/api/v1/sites/{site_id}/content-requestsAuthentication
An API key as Authorization: Bearer or x-api-key. It needs the sites:write scope — edit draft pages and sections.
Parameters
Named placeholders go in the path; the rest in a JSON body.
site_idstringPath · required- The site's id.1 to 100 characters
asksarray of stringBody · optional- What to ask for (default: everything): logo (Your logo), photos (Photos), phone (Phone number), email (Email address), address (Address), hours (Opening hours), about (About your business), services (What you offer).
notestringBody · optional- A personal note shown at the top of the client's page, plain text.At most 1500 characters
replacebooleanBody · optional- Withdraw a request that is still waiting and make this one instead.
email_tostringBody · optional- Also email the link to this address, in your brand's name (From name + reply-to are yours).At most 200 characters
Response
201 with JSON on success (schema on the right). Errors use the standard envelope; a retry with the same Idempotency-Key gets the first answer back (how retries work).
curl -X POST 'https://websites.workflowcorp.com/api/v1/sites/SITE_ID/content-requests' \
-H "Authorization: Bearer $WEBSITEBUDDY_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{}'{
"site_id": "SITE_ID"
}{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"site_id": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"OPEN",
"ANSWERED",
"WITHDRAWN"
]
},
"link": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The page to send your client (in your brand; your own address when it's connected). Null once it is closed."
},
"asks": {
"type": "array",
"items": {
"type": "string",
"enum": [
"logo",
"photos",
"phone",
"email",
"address",
"hours",
"about",
"services"
]
}
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"opened_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the client last opened the page (while it was waiting)."
},
"answered": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"at": {
"type": "string"
},
"from_client_area": {
"type": "boolean"
},
"phone": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"business_email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"address": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"hours": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"label",
"value"
],
"additionalProperties": false
}
},
{
"type": "null"
}
]
},
"about": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"services": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"price": {
"type": "string"
}
},
"required": [
"name",
"description",
"price"
],
"additionalProperties": false
}
},
{
"type": "null"
}
]
},
"logo_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"photo_urls": {
"type": "array",
"items": {
"type": "string"
}
},
"placed": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": "Where each answer went on the draft, in words; null = not placed (no section fit)."
}
},
"required": [
"name",
"email",
"at",
"from_client_area",
"phone",
"business_email",
"address",
"hours",
"about",
"services",
"logo_url",
"photo_urls",
"placed"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"sample": {
"type": "boolean"
},
"created_at": {
"type": "string"
}
},
"required": [
"id",
"site_id",
"status",
"link",
"asks",
"note",
"opened_at",
"answered",
"sample",
"created_at"
],
"additionalProperties": false
}