Skip to content

API reference

This page covers the server-side REST API used to upload your catalog and content. For frontend integration, see the SDK reference and the React / Vue component docs.

Add your Dialog private API key to the Authorization header on every request.

Authorization: MY_PRIVATE_KEY

Your private key is visible in the Dialog dashboard after creating an API Integration organization. Keep it server-side — it must not be shipped to the browser.

Dialog uses pre-signed S3 URLs for catalog and content uploads.

POST https://rtbzcxkmwj.execute-api.eu-west-1.amazonaws.com/organization/catalog-upload-url

Response:

{
"catalogUploadUrl": {
"url": "your-upload-url",
"fields": {
"bucket": "dialog-bucket-name",
"X-Amz-Algorithm": "",
"key": "fileKey",
"Policy": "",
"X-Amz-Credential": "",
"X-Amz-Date": "",
"X-Amz-Signature": "",
"X-Amz-Security-Token": ""
}
},
"pageUploadUrl": { /* same shape */ },
"blogPostUploadUrl": { /* same shape */ }
}

For each file, use the URL and fields to upload to Dialog’s S3 bucket. See AWS S3 pre-signed URL docs for the full flow.

Upload a JSON file matching the catalog schema. See Catalog schema for the full JSON Schema.

If your site has a blog, upload an array of { title, content }:

{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"title": { "type": "string" },
"content": { "type": "string" }
},
"required": ["title", "content"]
}
}

For FAQ, delivery info, and other static pages, upload an array of { title, content } (same schema as blog).

StatusLikely causeSolution
401Missing auth headerAdd Authorization: YOUR_KEY
403Invalid or expired keyRegenerate the key in dashboard
400Payload schema mismatchValidate against the schema
500Server errorEmail support with request ID