Skip to content

Quickstart: make your first API call

Authenticate against the Skedulo API and run your first GraphQL query in about five minutes.

Skedulo exposes the platform's data through a GraphQL API: jobs, resources, availability, and your custom objects. This quickstart takes you from nothing to a working query in about five minutes.

Before you start

You need:

  • A Skedulo tenant (team) you can sign in to.
  • Administrator access, so you can create an API token.
  • curl or an API client such as Postman.

1. Get an API token

In the Skedulo web app, go to Settings > Developer tools > API tokens and create a token. Tokens are Base64-encoded JWTs and can be long-lived or time-limited. Treat them like passwords and store them securely.

Every API request carries the token in an Authorization header:

Authorization: Bearer $API_TOKEN

Verify the token works:

curl -X GET https://api.skedulo.com/auth/whoami \
  -H "Authorization: Bearer $API_TOKEN"

A JSON response describing your user and tenant means you're authenticated.

2. Fetch your tenant's schema

Every tenant's GraphQL schema is introspectable. It includes the standard Skedulo objects plus any custom objects and fields defined on your team:

curl -X GET https://api.skedulo.com/graphql/schema \
  -H "Authorization: Bearer $API_TOKEN"

3. Run your first query

Queries and mutations are POSTed as JSON to the GraphQL endpoint. This query fetches jobs:

query {
  jobs {
    edges {
      node {
        UID
        Name
        Description
        JobStatus
      }
    }
  }
}
curl -X POST https://api.skedulo.com/graphql/graphql \
  -H "Authorization: Bearer $API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query": "query { jobs { edges { node { UID Name Description JobStatus } } } }"}'

The response mirrors the query's shape:

{
  "data": {
    "jobs": {
      "edges": [
        {
          "node": {
            "UID": "0014a76c-dfa1-4e78-87b3-635b7d7f4897",
            "Name": "JOB-0007",
            "Description": "",
            "JobStatus": "Cancelled"
          }
        }
      ]
    }
  }
}

4. Filter results

Most query fields accept a filter parameter using Skedulo's query language: equality, comparison, LIKE, IN, and boolean logic. For example:

query {
  jobs(filter: "JobStatus == 'Queued'") {
    edges {
      node {
        UID
        Name
        JobStatus
      }
    }
  }
}

Next steps