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
Publishedvalue isPublishedandIs currentvalue isIs current. - Supports optional filtering by organisation.
- Sorts events by start date, earliest first.
- Returns all matching records in a single response.
Usage:
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
Filter by Organisation
curl --get \
--data-urlencode "org=Adventures + Wisdom Institute" \
"https://api.dabbble.app/v1/events"
Equivalent request URL:
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.
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:
- The first available event banner attachment.
- The first available provider image.
nullif 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
onlinecheckbox 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.
Unable to Retrieve Events
If the API cannot retrieve events from DABBBLE, it returns HTTP 500.
Configuration Error
If the API is missing its configured access token or required server support, it returns HTTP 500.
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.