API Documentation

Post your deployments to the global feed with a single HTTP request. Generate your API token from your profile page and include it in all requests. Fast, minimal, boring.

1. Endpoint

Create a Deployment

POST /api

Create a new deployment announcement.

Request Body

{
  "message": ":sparkles: Released v1.0.42 with brand new dashboard",
  "url": "https://example.com" // Optional
}

Examples

JSON format:

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d '{"message": "Deployed v1.2.3", "url": "https://example.com"}' \
  https://dplyd.com/api

Form-encoded format:

curl -X POST \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d 'message=Deployed%20v1.2.3&url=https%3A%2F%2Fexample.com' \
  https://dplyd.com/api

Response

{
  "id": 123,
  "message": "Deployed v1.2.3 with new user dashboard",
  "url": "https://example.com",
  "deployed_at": "2025-04-06T09:30:00Z",
  "user": { "id": 42, "name": "Jane Smith" },
  "status": "success"
}

2. Error Responses

Authentication Error

{
  "error": "Unauthorized"
}

Validation Error

{
  "error": "validation_error",
  "message": "Validation failed",
  "details": { "message": ["can't be blank"] }
}

Resource Not Found (future reserved)

{
  "error": "Not Found",
  "message": "The requested resource could not be found"
}

3. Deployment Badge

Show your project's deployment freshness anywhere (README, docs, status page).

Replace USERNAME with your username.

Markdown
[![Latest Deploy](https://dplyd.com/badge/USERNAME.svg)](https://dplyd.com/USERNAME)
HTML
<a href="https://dplyd.com/USERNAME"><img src="https://dplyd.com/badge/USERNAME.svg" alt="Latest Deploy" /></a>

Status colors: fresh (≤3h), warm (>3h–24h), active (>24h–7d), quiet (>7d–30d), stale (>30d), inactive (none yet).

No caching headers set (always current). Add your own CDN layer if desired.

Styles: default wide badge plus ?style=square (20×20 icon) or ?style=dot (12×12 color dot). All styles share the same color mapping.

Latest deploy wide badge wide
Latest deploy square badge square
Latest deploy dot badge dot

Filter by domain: append ?url=example.com (host only) to the badge URL to scope to deployments whose URL contains that host (case-insensitive). Falls back to a host-specific "No deployments" message if none match.

Filtered Markdown
[![Latest Deploy](https://dplyd.com/badge/USERNAME.svg?url=example.com)](https://dplyd.com/USERNAME?url=example.com)
Filtered HTML
<a href="https://dplyd.com/USERNAME?url=example.com"><img src="https://dplyd.com/badge/USERNAME.svg?url=example.com" alt="Latest Deploy (example.com)" /></a>
Square (Markdown)
[![Latest Deploy](https://dplyd.com/badge/USERNAME.svg?style=square)](https://dplyd.com/USERNAME)
Dot (HTML)
<img src="https://dplyd.com/badge/USERNAME.svg?style=dot" alt="Latest deploy status" width="12" height="12" />
Square + time
<a href="https://dplyd.com/USERNAME"><img src="https://dplyd.com/badge/USERNAME.svg?style=square" alt="Latest deploy" width="20" height="20" /></a>

4. Quick Start Recipes

Copy one that matches your setup. Replace YOUR_API_TOKEN with your token.

Shell one-liner

curl -X POST https://dplyd.com/api \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d "message=Shipped v1.2.3" \
  -d "url=https://example.com"

GitHub Action step

- name: Post deploy to Dplyd
  run: |
    curl -X POST https://dplyd.com/api \
      -H "Authorization: Bearer ${{ secrets.DPLYD_TOKEN }}" \
      -d "message=Deploy $GITHUB_SHA" \
      -d "url=https://github.com/${{ github.repository }}/commit/$GITHUB_SHA"

Minimal bash script (drop in repo)

#!/usr/bin/env bash
set -euo pipefail
: "${DPLYD_TOKEN?Set DPLYD_TOKEN}"
MESSAGE=${1:-"Deployed $(date -u +%Y-%m-%dT%H:%M:%SZ)"}
URL=${2:-""}
curl -s -X POST https://dplyd.com/api \
  -H "Authorization: Bearer ${DPLYD_TOKEN}" \
  -d "message=${MESSAGE}" ${URL:+ -d "url=${URL}"} | jq .

Node.js snippet

import fetch from "node-fetch";
const res = await fetch("https://dplyd.com/api", {
  method: "POST",
  headers: { Authorization: "Bearer " + process.env.DPLYD_TOKEN },
  body: new URLSearchParams({ message: "Deploy from Node", url: "https://example.com" })
});
console.log(await res.json());

Python snippet (requests)

import os, requests
resp = requests.post("https://dplyd.com/api", headers={"Authorization": f"Bearer {os.environ['DPLYD_TOKEN']}"}, data={"message":"Deploy from Python"})
print(resp.json())