Skip to content

Participate Endpoint ​

The participate endpoint checks for active tests in the Splitty Test system for the given section and returns a selected variation.

Endpoint Details ​

Path: /split-test/participate
Method: POST

Payload:

  • section_id: [string] - The ID of the section to return a test for.
  • data: [object] - A plain object with details about the user. This will be added to the user session and is used when determining audience filters and user segments.
  • test_id: [string] - (Optional) The ID of a test to force upon the user.
  • variation_id: [string] - (Optional) The ID of a variation to force upon a user. This is useful when displaying a preview of the test variation.
  • ignore: [boolean] - (Optional) When forcing a test or variation, the system will ignore session logging and updates. Set this to false to log or update the session.

Return Values ​

StatusData TypeReason
204(Empty)There are no active tests for the given section
200
{
    test_id: null;
    variation: null;
    session_id: string;
}
Selecting a test was skipped or no test was selected for the given section
200
{
    test_id: null;
    variation: {
        id: string;
        data: Record<string, any>;
    };
    session_id: string;
}
A variation was forced and returned for the given section
200
{
    test_id: string;
    variation: {
        id: string;
        data: Record<string, any>;
    };
    session_id: string;
}
A test and variation were selected and returned for the given section
400
{
    statusCode: number;
    error: string;
    reason?: string;
}
There was a problem with the payload you sent to the endpoint
500
{
    statusCode: number;
    error: string;
    reason?: string;
}
There was a problem on the server or an unknown error occured

Example Request ​

js
// We will use fetch for the example
// Make the request to the participate endpoint
const response = await fetch('https://mysplittytest.com/split-test/participate', {
    method: 'POST',
    headers: {
        'Authorization': 'API-Key YOUR_API_KEY',
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        section_id: 'cta_button',
        data: {
            day_part: 'weekday'
        }
    });
});

// Parse the response
if (response.ok) {
    throw new Error('Unable to get test data!');
}
const { variation } = await response.json();

// Apply the variation data where needed...
const cta_button = document.getElementById('cta-button');
if (cta_button && variation.data.label) {
    cta_button.textContent = variation.data.label;
}