Skip to content

Events API

The Events API returns current, published events in a JSON response. It includes organisation names, descriptions, images, dates, event categories and links to event pages.

You can retrieve all current events or filter them by organisation.

Endpoint

GET https://api.dabbble.app/v1/events

Authentication Methods

This endpoint is publicly accessible and does not require authentication.

Characteristics:

  • Read-only access.
  • JSON response format.
  • Returns events where DABBBLE’s Published value is Published and Is current value is Is current.
  • Supports optional filtering by organisation.
  • Sorts events by start date, earliest first.
  • Returns all matching records in a single response.

Usage:

curl "https://api.dabbble.app/v1/events"

Fetch and decode the response using file_get_contents() and json_decode().

<?php
$contents = file_get_contents(
    'https://api.dabbble.app/v1/events'
);

$data = json_decode($contents, true);
$records = $data['records'] ?? [];
?>

Query Parameters

Parameter Type Required Description
org string No Filters events by their organisation name in DABBBLE.

Omit org, or leave it empty, to return all current events.

Use the full organisation name rather than a DABBBLE record ID. Matching ignores differences in capitalisation, but does not perform a partial-name search.

Leading and trailing spaces in the query value are removed before matching.

Retrieve All Events

curl "https://api.dabbble.app/v1/events"

Filter by Organisation

curl --get \
    --data-urlencode "org=Adventures + Wisdom Institute" \
    "https://api.dabbble.app/v1/events"

Equivalent request URL:

https://api.dabbble.app/v1/events?org=Adventures%20%2B%20Wisdom%20Institute

URL-encode organisation names containing spaces or special characters. In this example, %2B represents the literal plus sign in the organisation name.

Response Format

Successful responses contain a count and a records array.

The following example illustrates the response structure. Its event details are sample values.

{
    "count": 1,
    "records": [
        {
            "organisationName": "Adventures + Wisdom Institute",
            "title": "Creative Careers Open Day",
            "description": "<p>Explore opportunities in the creative industries.</p><ul><li>Meet local organisations</li><li>Take part in practical activities</li></ul>",
            "image": "https://aw.institute/images/creative-careers.jpg",
            "startDate": "20/11/2026",
            "endDate": "20/11/2026",
            "eventType": "Open Day",
            "type": "In person",
            "url": "https://aw.institute/events/creative-careers"
        }
    ]
}

No Matching Events

When no current events match the request, the API returns an empty array and a message.

{
    "count": 0,
    "records": [],
    "message": "No current live events"
}

This is a successful response, not an API error.

Response Fields

Top-Level Fields

Field Type Description
count integer Number of events returned after any organisation filter.
records array of objects Matching events. Empty when none match.
message string Included when no matching events are available.

Event Fields

Field Type Description
organisationName string or null Organisation hosting the event.
title string or null Event title.
description string or null Description formatted as HTML, including paragraphs and bullet lists.
image string or null URL of the first available event banner, falling back to the provider image.
startDate string Start date formatted as DD/MM/YYYY, or "None" when unavailable. Date-time values include HH:MM:SS.
endDate string End date formatted as DD/MM/YYYY, or "None" when unavailable. Date-time values include HH:MM:SS.
eventType string or null Value from DABBBLE’s Event Type field.
type string or null Value from DABBBLE’s calculated Type field.
url string or null Public event page URL.

The eventType and type fields return the values stored or calculated by DABBBLE. The API does not translate them into a separate set of labels.

PHP Usage

Fetch All Events

<?php

$apiUrl = 'https://api.dabbble.app/v1/events';

$contents = @file_get_contents($apiUrl);

$data = $contents !== false
    ? json_decode($contents, true)
    : null;

if (
    !is_array($data)
    || isset($data['error'])
    || !isset($data['records'])
    || !is_array($data['records'])
) {
    echo 'Unable to load events.';
    return;
}

$records = $data['records'];

echo 'Available events: ' . count($records);
?>

Filter by Organisation

Use http_build_query() to encode the organisation name.

<?php

$organisation = 'Adventures + Wisdom Institute';

$apiUrl = 'https://api.dabbble.app/v1/events?' .
    http_build_query(
        ['org' => $organisation],
        '',
        '&',
        PHP_QUERY_RFC3986
    );

$contents = @file_get_contents($apiUrl);

$data = $contents !== false
    ? json_decode($contents, true)
    : null;

if (
    !is_array($data)
    || isset($data['error'])
    || !isset($data['records'])
    || !is_array($data['records'])
) {
    echo 'Unable to load events.';
    return;
}

$records = $data['records'];
?>

Display Event Titles and Organisations

This example uses the $records array from either fetch example.

<?php foreach ($records as $record): ?>
    <article>
        <h2>
            <?php
            echo htmlspecialchars(
                $record['title'] ?? '',
                ENT_QUOTES | ENT_SUBSTITUTE,
                'UTF-8'
            );
            ?>
        </h2>

        <?php if (!empty($record['organisationName'])): ?>
            <p>
                Hosted by
                <?php
                echo htmlspecialchars(
                    $record['organisationName'],
                    ENT_QUOTES | ENT_SUBSTITUTE,
                    'UTF-8'
                );
                ?>
            </p>
        <?php endif; ?>
    </article>
<?php endforeach; ?>

Display Event Dates

Check for "None" before displaying a date.

<?php

$startDate = $record['startDate'] ?? 'None';
$endDate = $record['endDate'] ?? 'None';
?>

<?php if ($startDate !== 'None' && $startDate !== ''): ?>
    <p>
        Start date
        <?php
        echo htmlspecialchars(
            $startDate,
            ENT_QUOTES | ENT_SUBSTITUTE,
            'UTF-8'
        );
        ?>
    </p>
<?php endif; ?>

<?php if ($endDate !== 'None' && $endDate !== ''): ?>
    <p>
        End date
        <?php
        echo htmlspecialchars(
            $endDate,
            ENT_QUOTES | ENT_SUBSTITUTE,
            'UTF-8'
        );
        ?>
    </p>
<?php endif; ?>

Handle No Matching Events

Run this after confirming that the API response loaded successfully.

<?php

if (empty($data['records'])) {
    echo htmlspecialchars(
        $data['message'] ?? 'No current live events',
        ENT_QUOTES | ENT_SUBSTITUTE,
        'UTF-8'
    );
}
?>

Dates and Sorting

  • Dates use day/month/year order.
  • Date-only values use DD/MM/YYYY.
  • Date-time values use DD/MM/YYYY HH:MM:SS.
  • Returned date-time strings do not include a timezone or UTC offset.
  • Date-time formatting preserves the supplied time without converting it to UK local time.
  • Events are requested from DABBBLE in ascending start-date order.
  • Organisation filtering preserves that order.
  • There is no query parameter for changing the sort order.

If you apply your own date sorting, parse the values before comparing them. Alphabetical sorting of DD/MM/YYYY strings does not produce chronological order.

Images

The API selects an image in this order:

  1. The first available event banner attachment.
  2. The first available provider image.
  3. null if neither is available.

Only one image URL is returned per event.

Descriptions

The description field contains HTML rather than plain text.

  • Text lines are wrapped in paragraph tags.
  • Lines beginning with -, * or •, followed by a space, are converted into bullet-list items.
  • Source text is HTML-escaped before the formatting tags are added.
  • The formatter does not reproduce every rich-text style.

For a plain-text preview, remove the formatting with strip_tags() and escape the result before inserting it into your page.

<?php

$description = strip_tags($record['description'] ?? '');

echo htmlspecialchars(
    $description,
    ENT_QUOTES | ENT_SUBSTITUTE,
    'UTF-8'
);
?>

Missing Values

The API uses both null and "None" for unavailable information.

  • Missing organisation names, titles, descriptions, images, event types and page URLs return null.
  • Missing start and end dates return "None".
  • All documented event keys remain present, even when their values are unavailable.

Available Data

The current response does not include:

  • Event record IDs.
  • An online checkbox value.
  • Location names or linked location IDs.
  • Latitude or longitude.
  • Source URLs.
  • Internal publishing or SEO fields.

Error Responses

Invalid Organisation Parameter

The org parameter must be a string. An array-style parameter, such as ?org[]=Example, returns HTTP 400.

{
    "error": "The org parameter must be an organisation name."
}

Unable to Retrieve Events

If the API cannot retrieve events from DABBBLE, it returns HTTP 500.

{
    "error": "Failed to fetch events"
}

Configuration Error

If the API is missing its configured access token or required server support, it returns HTTP 500.

{
    "error": "DABBBLE Events API is not configured."
}

HTTP Status Codes

Status Meaning
200 Request completed successfully, including requests with no matching events.
400 The org parameter has an invalid type.
500 The API could not retrieve events or is not configured correctly.

Versioning

This page documents version 1 of the Events API, available at /v1/events.