🚀 RESTful API • GraphQL Coming Soon

Build with
Screen-Signs API

Integrate digital signage into your applications with our powerful REST API. Complete control over screens, content, and analytics with simple HTTP requests.

Free API key
Rate limit: 1000/hour
99.9% uptime SLA
api.screen-signs.com
1
2
3
4
5
6
7
8
curl -X POST "https://api.screen-signs.com/v1/screens" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Lobby Display",
    "location": "Main Lobby",
    "template_id": 123
  }'

API Overview

The Screen-Signs API is a RESTful API that allows you to programmatically manage your digital signage displays, content, and analytics. Built for developers who want to integrate digital signage capabilities into their applications.

Key Features

  • Manage screens, content, and scheduling programmatically
  • Real-time updates via WebSocket connections
  • Rich analytics and reporting capabilities
  • Webhook support for event notifications

Base URL

https://api.screen-signs.com/v1

Getting Started

Get up and running with the Screen-Signs API in minutes. Follow these simple steps to make your first API call.

Step 1: Get Your API Key

Sign up for a Screen-Signs account and navigate to your account settings to generate an API key.

Pro Tip: Keep your API keys secure and never expose them in client-side code. Use environment variables or secure key management systems.

Step 2: Make Your First Request

Test your API key by fetching your account information:

Example Request
curl -X GET "https://api.screen-signs.com/v1/account" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json"
const response = await fetch('https://api.screen-signs.com/v1/account', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  }
});

const data = await response.json();
console.log(data);
import requests

headers = {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
}

response = requests.get('https://api.screen-signs.com/v1/account', headers=headers)
data = response.json()
print(data)
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.screen-signs.com/v1/account');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer YOUR_API_KEY',
    'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);

print_r($data);
?>

Authentication

The Screen-Signs API uses Bearer token authentication. Include your API key in the Authorization header of every request.

API Key Authentication

Authorization: Bearer YOUR_API_KEY

JWT Token Authentication (Advanced)

For server-to-server integrations, you can also use JWT tokens for enhanced security:

Security Note: JWT tokens expire after 1 hour. Implement token refresh logic in your applications for continuous access.
JWT Token Request
POST /v1/auth/token
Content-Type: application/json

{
  "api_key": "YOUR_API_KEY",
  "expires_in": 3600
}

Response:
{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "Bearer",
  "expires_in": 3600
}

API Endpoints

Screens Management

GET /screens
List all screens

Retrieve a paginated list of all screens in your account.

Query Parameters

Parameter Type Description
page integer Page number (default: 1)
per_page integer Items per page (max: 100)
status string Filter by status: active, offline, error
Example Response
{
  "data": [
    {
      "id": 123,
      "name": "Lobby Display",
      "location": "Main Lobby",
      "status": "active",
      "last_seen": "2025-01-15T10:30:00Z",
      "display_code": "ABC123",
      "current_design": {
        "id": 456,
        "name": "Welcome Message"
      }
    }
  ],
  "meta": {
    "current_page": 1,
    "total": 25,
    "per_page": 20
  }
}
POST /screens
Create a new screen

Create a new screen and get a unique display code.

Example Request
{
  "name": "Reception Display",
  "location": "Front Desk",
  "description": "Customer information display",
  "tags": ["reception", "customer-facing"],
  "settings": {
    "auto_refresh": true,
    "refresh_interval": 60
  }
}

Design Management

POST /designs
Create a new design

Create a new design using a template or from scratch.

Example Request
{
  "name": "Summer Sale Promotion",
  "template_id": 456,
  "elements": [
    {
      "type": "text",
      "content": "Summer Sale - 50% Off!",
      "style": {
        "fontSize": "48px",
        "color": "#ffffff",
        "textAlign": "center"
      },
      "position": { "x": 100, "y": 200 }
    }
  ]
}

Content Management

PUT /screens/{id}/content
Update screen content

Update content on a specific screen in real-time.

Example Request
{
  "design_id": 789,
  "schedule": {
    "start_time": "2025-01-15T09:00:00Z",
    "end_time": "2025-01-15T17:00:00Z",
    "repeat": "daily"
  },
  "priority": 1
}

Templates

DELETE /templates/{id}
Delete a custom template

Delete a custom template from your account. Built-in templates cannot be deleted.

Warning: This action is irreversible. Any designs using this template will need to be updated.

Rate Limiting

To ensure fair usage and maintain service quality, the Screen-Signs API implements rate limiting based on your subscription plan.

Free Plan

Requests per hour: 100
Concurrent requests: 5
Burst limit: 20

Pro & Business Plans

Requests per hour: 1,000
Concurrent requests: 20
Burst limit: 100

Rate Limit Headers

Every API response includes headers with your current rate limit status:

Response Headers
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1642694400
X-RateLimit-Retry-After: 3600
Rate Limit Exceeded: When you exceed your rate limit, the API returns a 429 status code. Implement exponential backoff in your applications.

Error Codes

The Screen-Signs API uses standard HTTP status codes and returns detailed error information in JSON format.

Status Code Error Type Description
400 Bad Request Invalid request format or missing required parameters
401 Unauthorized Invalid or missing API key
403 Forbidden Insufficient permissions for the requested resource
404 Not Found Requested resource does not exist
422 Validation Error Request validation failed
429 Rate Limited Too many requests - rate limit exceeded
500 Server Error Internal server error occurred

Error Response Format

Example Error Response
{
  "error": {
    "code": "validation_failed",
    "message": "The given data was invalid.",
    "details": {
      "name": ["The name field is required."],
      "location": ["The location field must be a string."]
    },
    "documentation_url": "https://docs.screen-signs.com/api/errors#validation_failed"
  }
}

SDKs & Libraries

Accelerate your integration with our official SDKs and community-maintained libraries.

Official SDKs

JavaScript SDK

Official

Full-featured SDK for Node.js and browser applications.

npm install @screen-signs/sdk View Docs

Python SDK

Official

Pythonic interface for the Screen-Signs API.

pip install screen-signs View Docs

PHP SDK

Official

Laravel and standard PHP integration library.

composer require screen-signs/php-sdk View Docs

Community Libraries

Ruby Gem

Community

Ruby wrapper for the Screen-Signs API.

gem install screen_signs View on GitHub

Go Package

Community

Go client library with full API coverage.

go get github.com/screen-signs/go-sdk View on GitHub

.NET Package

Community

C# library for .NET applications.

Install-Package ScreenSigns View on NuGet

Want to contribute?

Help us build SDKs for more languages and frameworks.

View Contribution Guide

Ready to Start Building?

Get your API key and start integrating digital signage into your applications today.

Free tier includes 100 API calls per hour • No credit card required