Skip to content

API

Stillio API (version 3)

You can use the Stillio API for interacting with the webpages and screenshots stored on the Stillio platform. This reference outlines version 3 of the API.

Contents

About the API

  • The API uses pragmatic REST as its architectural style
  • Requests use JSON-LD 1.0 as method for serializing data
  • The API uses shared, established vocabularies for modelling data: Hydra for collections and errors and Schema.org for webpages and screenshots. For specific properties Stillio uses its own vocabulary
  • The API may change. For example, new properties may be added to the headers or body of endpoints

Authentication

The API uses a Bearer token for authentication. You can create your token in the Stillio app. Do not share the token with untrusted parties or use it directly in your browser client.

Errors

The API uses common HTTP status codes: 2xx for success, 4xx for errors caused by the caller and 5xx for server errors. The table underneath lists the most common errors that can occur:

StatusDescription
400The request is invalid
401The Bearer token is invalid
404The resource does not exist
415The content type is not supported
422The resource cannot be processed
500A server error has occurred
503The server is under maintenance

Response

Headers
NameValue
StatusHTTP status, e.g. 400 Bad Request, 404 Not Found, 500 Internal Server Error
Content-Typeapplication/json
Link<https://api.stillio.com/v3/contexts>; rel="http://www.w3.org/ns/json-ld#context"; type="application/ld+json"
Example body
{
"type": "Error",
"title": "Bad Request",
"description": "..."
}

Endpoints

Webpages

Get webpages

Request

GET https://api.stillio.com/v3/webpages?page={page}&limit={limit}&sort={sort}&order={order}

Headers
NameValue
AuthorizationBearer: {token}
Acceptapplication/json
Query string parameters
PropertyData typeRequiredDescription
pageNumberNoPage index. Default: 1
limitNumber between 1 and 100NoNumber of items per page. Default: 50
sortText: dateCreated, isPartOf.name, name, urlNoField to sort the items by. Default: isPartOf.name
orderText: asc, descNoSorting direction of the items: ascending or descending. Default: asc
Example requests

GET https://api.stillio.com/v3/webpages

GET https://api.stillio.com/v3/webpages?page=2

GET https://api.stillio.com/v3/webpages?page=2&limit=5

GET https://api.stillio.com/v3/webpages?sort=dateCreated&order=desc

Response

Headers
NameValue
Status200 OK
Content-Typeapplication/json
Link<https://api.stillio.com/v3/contexts>; rel="http://www.w3.org/ns/json-ld#context"; type="application/ld+json"
Body
PropertyData typeDescription
typeTextType of the collection: Collection
idURIURL of the collection
totalItemsNumberNumber of webpage records in the collection
membersListList of webpage records
members[].typeTextType of the webpage record: WebPage
members[].idURIURL of the webpage record
members[].identifierTextUnique identifier of the webpage record
members[].nameTextName of the webpage record
members[].urlURIURL of the webpage
members[].keywordsListList of keywords or tags to describe the webpage record
members[].dateCreatedDate, in ISO 8601 date formatDate and time at which the webpage record was created (UTC)
members[].dateModifiedDate, in ISO 8601 date formatDate and time at which the webpage record was modified (UTC)
members[].subjectOfResourceReference to the collection of screenshots of this webpage record
members[].subjectOf.typeTextType of the screenshot collection: Collection
members[].subjectOf.idURIURL of the screenshot collection
members[].isPartOfResourceThe webpage group the webpage record belongs to
members[].isPartOf.typeTextType of the webpage group record: WebPageGroup
members[].isPartOf.nameTextName of the webpage group record. This name is derived from the URL of the webpage
viewResourceControls for paginating the collection
view.typeTextType of the resource: PartialCollectionView
view.idURIURL of the current page in the collection
view.firstURIURL of the first page in the collection. Not set if there is no first page
view.previousURIURL of the previous page in the collection. Not set if there is no previous page
view.nextURIURL of the next page in the collection. Not set if there is no next page
view.lastURIURL of the last page in the collection. Not set if there is no last page
Example body
{
"type": "Collection",
"id": "https://api.stillio.com/v3/webpages",
"totalItems": 123,
"members": [
{
"type": "WebPage",
"id": "https://api.stillio.com/v3/webpages/{webpageId}",
"identifier": "{webpageId}",
"name": "Some page",
"url": "http://www.example.org/somePage.html?q=a",
"keywords": ["Example1", "Example2"],
"dateCreated": "2019-01-29T11:24:58.743Z",
"dateModified": "2019-01-29T11:24:58.743Z",
"subjectOf": {
"type": "Collection",
"id": "https://api.stillio.com/v3/webpages/{webpageId}/screenshots"
},
"isPartOf": {
"type": "WebPageGroup",
"name": "example.org"
}
},
// ...
],
"view": {
"type": "PartialCollectionView",
"id": "https://api.stillio.com/v3/webpages?page=3",
"first": "https://api.stillio.com/v3/webpages?page=1",
"previous": "https://api.stillio.com/v3/webpages?page=2",
"next": "https://api.stillio.com/v3/webpages?page=4",
"last": "https://api.stillio.com/v3/webpages?page=15"
}
}

Get a webpage

Request

GET https://api.stillio.com/v3/webpages/{webpageId}

Headers
NameValue
AuthorizationBearer: {token}
Acceptapplication/json

Response

Headers
NameValue
Status200 OK
Content-Typeapplication/json
Link<https://api.stillio.com/v3/contexts>; rel="http://www.w3.org/ns/json-ld#context"; type="application/ld+json"
Body
PropertyData typeDescription
typeTextType of the webpage record: WebPage
idURIURL of the webpage record
identifierTextUnique identifier of the webpage record
nameTextName of the webpage record
urlURIURL of the webpage
keywordsListList of keywords or tags to describe the webpage record
dateCreatedDate, in ISO 8601 date formatDate and time at which the webpage record was created (UTC)
dateModifiedDate, in ISO 8601 date formatDate and time at which the webpage record was modified (UTC)
subjectOfResourceReference to the collection of screenshots of this webpage record
subjectOf.typeTextType of the screenshot collection: Collection
subjectOf.idURIURL of the screenshot collection
isPartOfResourceThe webpage group the webpage record belongs to
isPartOf.typeTextType of the webpage group record: WebPageGroup
isPartOf.nameTextName of the webpage group record. This name is derived from the URL of the webpage
collectionURIURL of the collection to which this webpage record belongs
Example body
{
"type": "WebPage",
"id": "https://api.stillio.com/v3/webpages/{webpageId}",
"identifier": "{webpageId}",
"name": "Some page",
"url": "http://www.example.org/somePage.html?q=a",
"keywords": ["Example1", "Example2"],
"dateCreated": "2019-01-29T11:24:58.743Z",
"dateModified": "2019-01-29T11:24:58.743Z",
"subjectOf": {
"type": "Collection",
"id": "https://api.stillio.com/v3/webpages/{webpageId}/screenshots"
},
"isPartOf": {
"type": "WebPageGroup",
"name": "example.org"
},
"collection": "https://api.stillio.com/v3/webpages"
}

Delete a webpage

Note: Deleting a webpage also deletes all the screenshots associated with it.

Request

DELETE https://api.stillio.com/v3/webpages/{webpageId}

Headers
NameValue
AuthorizationBearer: {token}
Acceptapplication/json

Response

Headers
NameValue
Status204 No Content
Link<https://api.stillio.com/v3/contexts>; rel="http://www.w3.org/ns/json-ld#context"; type="application/ld+json"
Body

No body

Screenshots

Get screenshots of a webpage

Request

GET https://api.stillio.com/v3/webpages/{webpageId}/screenshots?page={page}&limit={limit}&sort={sort}&order={order}

Headers
NameValue
AuthorizationBearer: {token}
Acceptapplication/json
Query string parameters
PropertyData typeRequiredDescription
pageNumberNoPage index. Default: 1
limitNumber between 1 and 100NoNumber of items per page. Default: 50
sortText: dateCreatedNoField to sort the items by. Default: dateCreated
orderText: asc, descNoSorting direction of the items: ascending or descending. Default: desc
isFavoriteBoolean: true, falseNoFlag indicating whether only items must be returned that have been marked as favorite (true) or not (false)
Example requests

GET https://api.stillio.com/v3/webpages/{webpageId}/screenshots

GET https://api.stillio.com/v3/webpages/{webpageId}/screenshots?page=2

GET https://api.stillio.com/v3/webpages/{webpageId}/screenshots?page=2&limit=5

GET https://api.stillio.com/v3/webpages/{webpageId}/screenshots?sort=dateCreated&order=desc

GET https://api.stillio.com/v3/webpages/{webpageId}/screenshots?isFavorite=true

Response

Headers
NameValue
Status200 OK
Content-Typeapplication/json
Link<https://api.stillio.com/v3/contexts>; rel="http://www.w3.org/ns/json-ld#context"; type="application/ld+json"
Body
PropertyData typeDescription
typeTextType of the collection: Collection
idURIURL of the collection
totalItemsNumberNumber of screenshot records in the collection
membersListList of screenshot records
members[].typeTextType of the screenshot record: ImageObject
members[].idURIURL of the screenshot record
members[].identifierTextUnique identifier of the screenshot record
members[].isFavoriteBooleanFlag indicating whether the screenshot record has been marked as favorite (true) or not (false)
members[].dateCreatedDate, in ISO 8601 date formatDate and time at which the screenshot record was created (UTC)
members[].dateModifiedDate, in ISO 8601 date formatDate and time at which the screenshot record was modified (UTC)
members[].contentUrlURIURL of the screenshot image
members[].encodingFormatText, in MIME formatMedia type of the screenshot image, e.g. image/png
members[].thumbnailResourceThe thumbnail version of the screenshot image
members[].thumbnail.typeTextType of the thumbnail image: ImageObject
members[].thumbnail.contentUrlURIURL of the thumbnail image
members[].thumbnail.encodingFormatText, in MIME formatMedia type of the thumbnail image, e.g. image/png
members[].aboutResourceThe webpage record the screenshot record is about
members[].about.typeTextType of the webpage record: WebPage
members[].about.idURIURL of the webpage record
viewResourceControls for paginating the collection
view.typeTextType of the resource: PartialCollectionView
view.idURIURL of the current page in the collection
view.firstURIURL of the first page in the collection. Not set if there is no first page
view.previousURIURL of the previous page in the collection. Not set if there is no previous page
view.nextURIURL of the next page in the collection. Not set if there is no next page
view.lastURIURL of the last page in the collection. Not set if there is no last page
Example body
{
"type": "Collection",
"id": "https://api.stillio.com/v3/webpages/{webpageId}/screenshots",
"totalItems": 123,
"members": [
{
"type": "ImageObject",
"id": "https://api.stillio.com/v3/webpages/{webpageId}/screenshots/{screenshotId}",
"identifier": "{screenshotId}",
"isFavorite": true,
"dateCreated": "2019-01-29T11:23:58.624Z",
"dateModified": "2019-01-29T11:24:58.743Z",
"contentUrl": "https://stillio-hosting/path/to/image.png",
"encodingFormat": "image/png",
"thumbnail": {
"type": "ImageObject",
"contentUrl": "https://stillio-hosting/path/to/thumbnail.png",
"encodingFormat": "image/png"
},
"about": {
"type": "WebPage",
"id": "https://api.stillio.com/v3/webpages/{webpageId}"
}
},
// ...
],
"view": {
"type": "PartialCollectionView",
"id": "https://api.stillio.com/v3/webpages/{webpageId}/screenshots?page=3",
"first": "https://api.stillio.com/v3/webpages/{webpageId}/screenshots?page=1",
"previous": "https://api.stillio.com/v3/webpages/{webpageId}/screenshots?page=2",
"next": "https://api.stillio.com/v3/webpages/{webpageId}/screenshots?page=4",
"last": "https://api.stillio.com/v3/webpages/{webpageId}/screenshots?page=15"
}
}

Get a screenshot

Request

GET https://api.stillio.com/v3/webpages/{webpageId}/screenshots/{screenshotId}

Headers
NameValue
AuthorizationBearer: {token}
Acceptapplication/json

Response

Headers
NameValue
Status200 OK
Content-Typeapplication/json
Link<https://api.stillio.com/v3/contexts>; rel="http://www.w3.org/ns/json-ld#context"; type="application/ld+json"
Body
PropertyData typeDescription
typeTextType of the screenshot record: ImageObject
idURIURL of the screenshot record
identifierTextUnique identifier of the screenshot record
isFavoriteBooleanFlag indicating whether the screenshot record has been marked as favorite (true) or not (false)
dateCreatedDate, in ISO 8601 date formatDate and time at which the screenshot record was created (UTC)
dateModifiedDate, in ISO 8601 date formatDate and time at which the screenshot record was modified (UTC)
contentUrlURIURL of the screenshot image
encodingFormatText, in MIME formatMedia type of the screenshot image, e.g. image/png
thumbnailResourceThe thumbnail version of the screenshot image
thumbnail.typeTextType of the thumbnail image: ImageObject
thumbnail.contentUrlURIURL of the thumbnail image
thumbnail.encodingFormatText, in MIME formatMedia type of the thumbnail image, e.g. image/png
aboutResourceThe webpage record the screenshot record is about
about.typeTextType of the webpage record: WebPage
about.idURIURL of the webpage record
collectionURIURL of the collection to which this screenshot record belongs
Example body
{
"type": "ImageObject",
"id": "https://api.stillio.com/v3/webpages/{webpageId}/screenshots/{screenshotId}",
"identifier": "{screenshotId}",
"isFavorite": true,
"dateCreated": "2019-01-29T11:23:58.624Z",
"dateModified": "2019-01-29T11:24:58.743Z",
"contentUrl": "https://stillio-hosting/path/to/image.png",
"encodingFormat": "image/png",
"thumbnail": {
"type": "ImageObject",
"contentUrl": "https://stillio-hosting/path/to/thumbnail.png",
"encodingFormat": "image/png"
},
"about": {
"type": "WebPage",
"id": "https://api.stillio.com/v3/webpages/{webpageId}"
},
"collection": "https://api.stillio.com/v3/webpages/{webpageId}/screenshots"
}

General information

Get API context information

This endpoint returns contextual information about the API and does not require authentication. You usually only need this information if your application uses Linked Data.

Request

GET https://api.stillio.com/v3/contexts

Headers
NameValue
Acceptapplication/json

Response

Headers
NameValue
Status200 OK
Content-Typeapplication/ld+json
Example body
{
"@context": {
"type": "@type",
"id": "@id",
"as": "https://www.w3.org/ns/activitystreams#",
"hydra": "http://www.w3.org/ns/hydra/core#",
"schema": "https://schema.org/",
"stillio": "https://api.stillio.com/v3/vocab#",
"ImageObject": "schema:ImageObject",
"WebPage": "schema:WebPage",
"WebPageGroup": "stillio:WebPageGroup",
"IpAddress": "stillio:IpAddress",
"Collection": "hydra:Collection",
"PartialCollectionView": "hydra:PartialCollectionView",
"Error": "hydra:Error",
"Create": "as:Create",
"Reject": "as:Reject",
"summary": {
"@id": "as:summary"
},
"actor": {
"@id": "as:actor",
"@type": "@id"
},
"object": {
"@id": "as:object"
},
"published": {
"@id": "as:published",
"@type": "http://www.w3.org/2001/XMLSchema#dateTime"
},
"title": {
"@id": "hydra:title"
},
"description": {
"@id": "hydra:description"
},
"collection": {
"@id": "hydra:collection",
"@type": "@id"
},
"totalItems": {
"@id": "hydra:totalItems"
},
"members": {
"@id": "hydra:member"
},
"view": {
"@id": "hydra:view",
"@type": "@id"
},
"first": {
"@id": "hydra:first",
"@type": "@id"
},
"previous": {
"@id": "hydra:previous",
"@type": "@id"
},
"next": {
"@id": "hydra:next",
"@type": "@id"
},
"last": {
"@id": "hydra:last",
"@type": "@id"
},
"dateCreated": {
"@id": "schema:dateCreated",
"@type": "http://www.w3.org/2001/XMLSchema#dateTime"
},
"dateModified": {
"@id": "schema:dateModified",
"@type": "http://www.w3.org/2001/XMLSchema#dateTime"
},
"datePublished": {
"@id": "schema:datePublished",
"@type": "http://www.w3.org/2001/XMLSchema#dateTime"
},
"identifier": {
"@id": "schema:identifier"
},
"isFavorite": {
"@id": "stillio:isFavorite"
},
"name": {
"@id": "schema:name"
},
"about": {
"@id": "schema:about"
},
"subjectOf": {
"@id": "schema:subjectOf"
},
"isPartOf": {
"@id": "schema:isPartOf"
},
"contentUrl": {
"@id": "schema:contentUrl",
"@type": "@id"
},
"encodingFormat": {
"@id": "schema:encodingFormat"
},
"url": {
"@id": "schema:url",
"@type": "@id"
},
"thumbnail": {
"@id": "schema:thumbnail"
},
"isBasedOn": {
"@id": "schema:isBasedOn",
"@type": "@id"
}
}
}