Cannot find what you need? - Click here to contact us


Is there a REST API or WebHooks?

Yes we offer a REST API to allow access to the data in your online account. In addition we have Webhooks that can send information to other services based on actions that happen in your account.

We also partner with Zapier to make integration with our API even quicker and easier. Connect to 1000+ of your favorite tools with our Zapier app. Get our Zapier app here.

Within our API we use Hypermedia to allow you to explore the API and its calls. You can use many API browsers to see and interact with the API for your account like Postman. Once you are logged into your account simply start your API browser and point it to

API calls are made via the HTTP methods GET, POST, and DELETE. The responses return status codes indicating success or failure, along with any applicable headers, and JSON representing the affected fields (or nothing) in the message-body.

Security & Access

Authentication to the API is normally done using HTTP Basic Authentication where your account login (account number_login name) and password are required. The most compelling aspect about HTTP Basic Authentication is that it's simple, and you should of course always use HTTPS when submitting HTTP Basic Authentication credentials.

Although the connection between you and our servers is encrypted and protected by the SSL layer it is advised not to put your login details as URL parameters where possible. These could be stored in the clear in our server logs as well as being visible to snooping if your SSL connection is not secure.

$ch = curl_init('');
curl_setopt($curl, CURLOPT_USERPWD, 'accountnum_username:password');
$output = curl_exec($ch);

$ch = curl_init('');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization:Basic '.base64_encode('accountnum_username:password').''));
$output = curl_exec($ch);

Base64 Encoding Tools

Retrieving User Information

Data is request via the URL path and additional parameters.


$ch = curl_init('');
curl_setopt($ch, CURLOPT_HEADER, 0);
$output = curl_exec($ch);


The root path for all API calls is


HTTP GET requests are used to retrieve data without directly modifying it, in json format.

  • /api/data set name (returns a simple summery of the top 10 records if no additional query parameters are sent)





    Unless specific fields are specified only a summary is returned. You must specify the fields if you need additional record information.

    Get the ID and Name fields from all your Groups


    Get the id, name and email addresses from all your Resources


    Get the ID, Start and Title from all your Events within the default date range


  • /api/data set name/data record id (returns ALL the available fields of the requested record)

    Get ALL fields from Event where the Event ID is 1234


    Get the title of your Events where the Event ID is 123456


    Search the data sets for multiple records.

    Event search:
  • search_id=search id
  • search_title=search text
  • search_name=search text
  • search_completed=search completed
  • search_date_start=search date
  • search_date_end=search date
  • search_owner=search with tagged resource using resource id
  • search_date_modified=(>,<,!) search date (e.g. search_date_modified=>2022-01-31)
  • date_range_from=search date
  • date_range_to=search date
  • search_istask=search for tasks (1 or 0)
  • search_isnodate=search for events with no date (1 or 0)

    Resource search:
  • search_id=search id
  • search_name=search name
  • search_owner=(,!) search within a Group using group id
  • search_data1=search details 1
  • search_data10=search details 10
  • search_date_modified=(>,<,!) search date (e.g. search_date_modified=>2022-01-31)

    Group search:
  • search_id=search id
  • search_name=search name
  • search_date_modified=(>,<,!) search date (e.g. search_date_modified=>2022-01-31)

    Get any Events linked to a resource with the ID 123, 123 OR 456, and 123 AND 456




    Get Events for 2018


    Get Events where the start date is from 2016-01-01, and where the title contains the word 'test'


    Get Groups where the ID is greater than 10 but less than 200


    Polling is when you request a set of records on a repeating time bases. Where possible you should allow our Webhooks to inform your server that a change was made and send you the changes, or use it to trigger an API call for the new data.

    Whilst polling is not yet banned, it should be used with great caution and must used correctly to ensure continued API access.

    Polling for all records should never be used and will cause access to your API to be limited or blocked. Occasional polling is sometimes allowed to find new or recently updates records. If you are polling ensure your polling time is no more than every 20 minutes depending on the size of the data set returned.

    When polling you must query for changed records since your last poll or date, and never repeat requests the same data set. Use search_date_modified to find changed events since your last check. Updating your last check date each time.

    Get data that was added or updated after a date, on date, before date, and not on date...

    /api/events?search_date_modified=>2022-01-01 (after date)

    /api/resources?search_date_modified=>2022-01-01 (after date)

    /api/groups?search_date_modified=>2022-01-01 (after date)

    Other queries

    ?search_date_modified=2022-01-01 (on date)

    ?search_date_modified=>2022-01-01 (after date)

    ?search_date_modified=>2022-01-01 14:00 (after date and time)

    ?search_date_modified=<2022-01-01 (before date)

    ?search_date_modified=!2022-01-01 (not on date)

    Sort the returned records with the specified fields.

  • sort=field names

    Get the Name of your Groups and sort by the Name then descending by ID


    Get the ID of the last modified Event


    Return up to the specified number of records.

  • limit=search value

    Get the Name of the first 5 records from your Groups


    Get the Name and the first 500 records from your Resources



    HTTP POST requests are used to add or update data to your account. Returned response is in json format.

  • POST /api/data set name

    Create a new event by posting to...


    Create a new group by posting to...


    Update an existing event with the ID of 1234


    Add a new Event

    $ch = curl_init();
    $fields = array(
    'title' => 'the title',
    'owner' => '220',
    'date_start' => urlencode('2016-09-29 09:00:00'),
    'date_end' => urlencode('2016-09-29 17:00:00'),
    'notes' => 'the notes',
    'custom1' => 'custom 1',
    'custom2' => 'custom 2',
    'custom3' => 'custom 3',
    'custom4' => 'custom 4',
    'custom7' => 'custom 7',
    'custom8' => 'custom 8',
    'custom9' => 'custom 9',
    'starticon' => '1',
    'color_text' => '#66FF66',
    'color_back' => '#FFFFFF',
    'priority' => '7',
    'completed' => '75'
    $post_data = '';
    foreach($fields as $key => $value) {
    $post_data .= $key.'='.$value.'&';;
    rtrim($post_data, '&');
    curl_setopt($ch, CURLOPT_URL, '');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

    Add a new Resource

    $ch = curl_init();
    $fields = array(
    'name' => 'the resource name',
    'owner' => '10,456,789',
    'email' => '',
    'color_back' => '#A9f5A9',
    'color_text' => '#66FF66',
    'color_event_back' => '#FF0000',
    'data1' => 'Manager',
    'data2' => '',
    'data3' => '',
    'data4' => '',
    'data5' => '',
    'data6' => '',
    'data7' => '',
    'data8' => '',
    'data9' => '',
    'data10' => '',
    'skills' => '123,456,678',
    'geonav' => ''
    $post_data = '';
    foreach($fields as $key => $value) {
    $post_data .= $key.'='.$value.'&';
    rtrim($post_data, '&');
    curl_setopt($ch, CURLOPT_URL, '');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

    Add a new Group

    $ch = curl_init();
    $fields = array(
    'name' => 'the group name',
    'color_back' => '#66FF66',
    'positionv' => '5',
    'min_resources' => '0',
    'max_resources' => '0',
    'hide_from_main' => '0',
    'hide_from_event' => '0'
    $post_data = '';
    foreach($fields as $key => $value) {
    $post_data .= $key.'='.$value.'&';
    rtrim($post_data, '&');
    curl_setopt($ch, CURLOPT_URL, '');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);


    HTTP DELETE requests are used to delete data from your account. Returned response is in json format.

  • DELETE /api/data set name/record id

    $ch = curl_init('accountnum_loginname:password@');
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
    curl_setopt($ch, CURLOPT_POSTFIELDS);

    api documentation notes spec webhook

  • Last updated, 5 April 2023, 12:01

    8 February 2022, 15:52
    Is there a way to query the custom fields we have created in the custom tab?

    19 February 2022, 10:44
    Yes, include in your query &search_custom1=ABC

    For faster live support please message our support team directly.

    22 July 2022, 13:48
    Is there a possibility to query the result or a custom report?

    22 July 2022, 14:13
    You can use the API to query your database and return data by posting a Search query. Some examples...

    search_id=search id
    search_title=search text
    search_name=search text
    search_date_start=search date
    search_date_end=search date
    search_owner=search resource id
    search_date_modified=(search type) search date
    date_range_from=search date
    date_range_to=search date

    For faster live support you can message our support team directly.

    Leave a public comment (Login required) or click here to contact us for support

    Schedule it Ltd

    Subscribe to our newsletter and receive our free scheduling tips and articles to help you improve the planning in your business. Unsubscribe anytime.

    Login Support and Help
    Register Blog
    Features Privacy Policy
    Online Pricing Terms and Conditions
    On-Prem Pricing Industry Sectors
    Latest Version Reviews and Feedback
    Live Webinar Status
    Web App Team Scheduling
    iOS App Employee Planning
    Android App Customer Scheduling
    Zapier App Engineer Scheduling

    Start Your Free Trial Today

    Copyright © 2003-2023 Schedule it Ltd. All rights reserved.
    Schedule it on LinkedIn   Schedule it on Twitter   Schedule it on YouTube   Schedule it on Facebook
    Join Us - Live Webinar
    Help Topics
    Contact Us