Sign Customiser API Documentation

Postman collection → OpenAPI spec →

Introduction

This documentation aims to provide all the information you need to work with our API.

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_KEY}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

You can retrieve your token by visiting your dashboard and clicking Generate API token.

Endpoints

List all webhooks

GET
https://web.signcustomiser.com
/api/v2/webhooks
requires authentication

Get a list of all webhooks for the current organisation.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request GET \
    --get "https://web.signcustomiser.com/api/v2/webhooks" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "webhooks": [
        {
            "webhook_id": 1,
            "topic": "product:created",
            "url": "https://example.com/webhook",
            "status": "active",
            "secret": "abc123...",
            "meta": {},
            "created_at": "2024-01-01T00:00:00.000000Z",
            "updated_at": "2024-01-01T00:00:00.000000Z"
        }
    ]
}

Create a new webhook

POST
https://web.signcustomiser.com
/api/v2/webhooks
requires authentication

Register a new webhook endpoint to receive event notifications.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://web.signcustomiser.com/api/v2/webhooks" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"topic\": \"product:created\",
    \"url\": \"https:\\/\\/example.com\\/webhook\",
    \"meta\": []
}"
Example response:
{
    "webhook": {
        "webhook_id": 1,
        "topic": "product:created",
        "url": "https://example.com/webhook",
        "status": "active",
        "secret": "abc123...",
        "meta": {},
        "created_at": "2024-01-01T00:00:00.000000Z",
        "updated_at": "2024-01-01T00:00:00.000000Z"
    }
}

Get a single webhook

GET
https://web.signcustomiser.com
/api/v2/webhooks/{webhook_id}
requires authentication

Retrieve details for a specific webhook.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

webhook_id
integer
required

The ID of the webhook.

Example:
16
Example request:
curl --request GET \
    --get "https://web.signcustomiser.com/api/v2/webhooks/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "webhook": {
        "webhook_id": 1,
        "topic": "product:created",
        "url": "https://example.com/webhook",
        "status": "active",
        "secret": "abc123...",
        "meta": {},
        "created_at": "2024-01-01T00:00:00.000000Z",
        "updated_at": "2024-01-01T00:00:00.000000Z"
    }
}

Update a webhook

PUT
PATCH
https://web.signcustomiser.com
/api/v2/webhooks/{webhook_id}
requires authentication

Update an existing webhook's topic, URL, or metadata.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

webhook_id
integer
required

The ID of the webhook.

Example:
16

Body Parameters

Example request:
curl --request PUT \
    "https://web.signcustomiser.com/api/v2/webhooks/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"topic\": \"product:created\",
    \"url\": \"https:\\/\\/example.com\\/webhook\",
    \"meta\": []
}"
Example response:
{
    "webhook": {
        "webhook_id": 1,
        "topic": "order:created",
        "url": "https://example.com/webhook-updated",
        "status": "active",
        "secret": "abc123...",
        "meta": {},
        "created_at": "2024-01-01T00:00:00.000000Z",
        "updated_at": "2024-01-02T00:00:00.000000Z"
    }
}

Delete a webhook

DELETE
https://web.signcustomiser.com
/api/v2/webhooks/{webhook_id}
requires authentication

Remove a webhook subscription.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

webhook_id
integer
required

The ID of the webhook.

Example:
16
Example request:
curl --request DELETE \
    "https://web.signcustomiser.com/api/v2/webhooks/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "success": true
}

Webhook payload examples

GET
https://web.signcustomiser.com
/api/v2/webhook-examples/{topic}
requires authentication

Retrieve example webhook payloads for a specific topic. If data exists for the current organisation, real data will be used. Otherwise, example data is returned.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

topic
string
required

The webhook topic to get examples for. Must be one of: product:created, order:created, form:submitted.

Example:
product:created
Example request:
curl --request GET \
    --get "https://web.signcustomiser.com/api/v2/webhook-examples/product:created" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "product": {
        "product_id": 1,
        "title": "Custom Neon: Hello World",
        "description": "Text: Hello World\nColour: Red\nFont: Comics",
        "description_html": "<p>Text: Hello World</p>\n<p>Colour: Red</p>\n<p>Font: Comics</p>",
        "external_id": "1234",
        "external_data": {},
        "price": 10000,
        "compare_price": 15000,
        "customiser_id": 1,
        "logo_upload_id": null,
        "product_image_url": "https://d1no4rdxmwcuog.cloudfront.net/default/app-images/demonstration_image_1.jpg",
        "uploads": [
            {
                "url": "https://d1no4rdxmwcuog.cloudfront.net/default/app-images/demonstration_image_1.jpg",
                "type": "product_image"
            }
        ],
        "created_at": "2024-01-01T00:00:00.000000Z",
        "updated_at": "2024-01-01T00:00:00.000000Z"
    }
}
{
    "order": {
        "order_id": 1,
        "order_number": 4,
        "external_order_number": "SIGN-12345",
        "external_id": "12345",
        "order_total": 120000,
        "app_total": 100000,
        "currency": "USD",
        "shipping_line": "ground",
        "billing_address": {
            "first_name": "John",
            "last_name": "Doe",
            "company": "Acme",
            "address_1": "123 Fake Street",
            "address_2": "Unit 456",
            "city": "Brisbane",
            "state": "Queensland",
            "postcode": "4000",
            "country": "Australia",
            "phone": "123456789",
            "email": "john@example.com",
            "created_at": "2025-10-22T00:55:09+00:00",
            "updated_at": "2025-10-22T00:55:09+00:00"
        },
        "shipping_address": {
            "first_name": "John",
            "last_name": "Doe",
            "company": "Acme",
            "address_1": "123 Fake Street",
            "address_2": "Unit 456",
            "city": "Brisbane",
            "state": "Queensland",
            "postcode": "4000",
            "country": "Australia",
            "phone": "123456789",
            "email": "john@example.com",
            "created_at": "2025-10-22T00:55:09+00:00",
            "updated_at": "2025-10-22T00:55:09+00:00"
        },
        "customer": {
            "first_name": "John",
            "last_name": "Doe",
            "phone": "123456789",
            "email": "john@example.com",
            "external_id": "1234",
            "created_at": "2025-10-22T00:55:09+00:00",
            "updated_at": "2025-10-22T00:55:09+00:00"
        },
        "products": [
            {
                "product_image_url": "https://d1no4rdxmwcuog.cloudfront.net/default/app-images/demonstration_image_1.jpg",
                "product_id": 1,
                "title": "Custom Neon: Hello World",
                "description": "Text: Hello World\nColour: Red\nFont: Comics",
                "description_html": "<p>Text: Hello World</p>\n<p>Colour: Red</p>\n<p>Font: Comics</p>",
                "external_id": "1234",
                "external_data": [],
                "price": 10000,
                "compare_price": 15000,
                "customiser_id": 1,
                "logo_upload_id": null,
                "uploads": [
                    {
                        "url": "https://d1no4rdxmwcuog.cloudfront.net/default/app-images/demonstration_image_1.jpg",
                        "path": "app-images/demonstration_image_1.jpg",
                        "type": "product_image"
                    }
                ],
                "created_at": "2025-10-22T00:55:09+00:00",
                "updated_at": "2025-10-22T00:55:09+00:00"
            }
        ],
        "created_at": "2025-10-22T00:55:09+00:00",
        "updated_at": "2025-10-22T00:55:09+00:00"
    }
}
{
    "form_submission": {
        "submission_number": 1234,
        "type": "custom_form_submission",
        "form": {
            "form_id": 1,
            "customiser_id": 1,
            "label": "Custom Design Form",
            "description": "Lorem ipsum dolor",
            "email": "test@test.com",
            "subject": "My Custom Email Subject",
            "created_at": "2024-01-01T00:00:00.000000Z",
            "updated_at": "2024-01-01T00:00:00.000000Z"
        },
        "responses": [
            {
                "field_id": "abcd1234",
                "value": "test@test.com",
                "name": "Your Email",
                "input_type": "EMAIL"
            }
        ],
        "created_at": "2024-01-01T00:00:00.000000Z"
    }
}