REST APIv1

API Reference

Every MonkKit tool available as a JSON REST API. One endpoint pattern, one API key, 31 tools.

Required

Authentication

Pass your API key as a Bearer token in every request.

Authorization: Bearer mk_live_…
Pattern

Endpoint

All tools share the same URL pattern. Always POST with JSON body.

POST /api/v1/category/tool
Free tier

Rate Limit

Generous daily quota for building and automation.

1,000requests / day

Quick Start

Validate a JSON string in one curl command.

terminal
curl -X POST https://tools.devops-monk.com/api/v1/json/validator \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{"input": "{\"name\": \"Alice\", \"age\": 32}"}'
response.json
{
  "success": true,
  "tool": "json-validator",
  "result": {
    "valid": true,
    "formatted": "{\n  \"name\": \"Alice\",\n  \"age\": 32\n}"
  }
}

Response Format

Every endpoint returns the same wrapper — check success first, then read result.

✓ Success

{
  "success": true,
  "tool": "json-validator",
  "result": { ... }
}

✗ Error

{
  "error": "Invalid API key"
}

Error Codes

Standard HTTP status codes indicate what went wrong.

StatusMeaning
401Missing or invalid API key
404Tool not found — check category/slug spelling
429Daily rate limit exceeded — resets at midnight UTC
400Invalid JSON request body
500Tool execution error — check your input

JSON Endpoints

31 tools

All endpoints: POST https://tools.devops-monk.com/api/v1/json/tool

Format & Fix

POST/api/v1/json/validator

Format, minify, and validate JSON in one place.

Try it

Request Body

{
  "input": "{\"name\":\"Alice\",\"age\":32}"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/validator \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"{\"name\":\"Alice\",\"age\":32}"}'
POST/api/v1/json/repair

Fix broken JSON — trailing commas, single quotes, unquoted keys, and more.

Try it

Request Body

{
  "input": "{name: 'Alice', age: 32,}"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/repair \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"{name: 'Alice', age: 32,}"}'
POST/api/v1/json/escape

Escape special characters in a string for safe embedding in JSON.

Try it

Request Body

{
  "input": "{\"name\":\"Alice\"}"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/escape \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"{\"name\":\"Alice\"}"}'
POST/api/v1/json/unescape

Unescape a JSON-encoded string back to human-readable text.

Try it

Request Body

{
  "input": "{\\\"name\\\": \\\"Alice\\\"}"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/unescape \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"{\\\"name\\\": \\\"Alice\\\"}"}'
POST/api/v1/json/stringify

Convert a JavaScript object literal to valid, spec-compliant JSON.

Try it

Request Body

{
  "input": "{ name: 'Alice', active: true }"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/stringify \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"{ name: 'Alice', active: true }"}'
POST/api/v1/json/sort

Sort all object keys alphabetically (A→Z or Z→A), deeply nested.

Try it

Request Body

{
  "input": "{\"z\":1,\"a\":2}",
  "direction": "asc"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/sort \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"{\"z\":1,\"a\":2}","direction":"asc"}'

View & Query

POST/api/v1/json/diff

Compare two JSON objects and highlight added, removed, and changed fields.

Try it

Request Body

{
  "left": "{\"a\":1,\"b\":2}",
  "right": "{\"a\":1,\"b\":3,\"c\":4}"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/diff \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"left":"{\"a\":1,\"b\":2}","right":"{\"a\":1,\"b\":3,\"c\":4}"}'
POST/api/v1/json/jsonpath

Run JSONPath expressions to extract data from JSON.

Try it

Request Body

{
  "input": "{\"users\":[{\"name\":\"Alice\"},{\"name\":\"Bob\"}]}",
  "path": "$.users[*].name"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/jsonpath \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"{\"users\":[{\"name\":\"Alice\"},{\"name\":\"Bob\"}]}","path":"$.users[*].name"}'
POST/api/v1/json/flatten

Flatten nested JSON into a single-level object with dot-notation keys.

Try it

Request Body

{
  "input": "{\"a\":{\"b\":{\"c\":1}}}",
  "delimiter": "."
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/flatten \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"{\"a\":{\"b\":{\"c\":1}}}","delimiter":"."}'
POST/api/v1/json/unflatten

Restore a flat dot-notation object back to a nested JSON structure.

Try it

Request Body

{
  "input": "{\"a.b.c\":1}",
  "delimiter": "."
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/unflatten \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"{\"a.b.c\":1}","delimiter":"."}'
POST/api/v1/json/size

Analyze JSON byte size, key count, nesting depth, and type breakdown.

Try it

Request Body

{
  "input": "{\"name\":\"Alice\",\"age\":32}"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/size \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"{\"name\":\"Alice\",\"age\":32}"}'
POST/api/v1/json/search

Search for keys or values anywhere in a JSON document.

Try it

Request Body

{
  "input": "{\"name\":\"Alice\",\"role\":\"admin\"}",
  "query": "admin",
  "searchIn": "both"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/search \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"{\"name\":\"Alice\",\"role\":\"admin\"}","query":"admin","searchIn":"both"}'

Converters

POST/api/v1/json/to-yaml

Convert JSON to YAML format.

Try it

Request Body

{
  "input": "{\"name\":\"Alice\",\"age\":32}",
  "indent": 2
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/to-yaml \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"{\"name\":\"Alice\",\"age\":32}","indent":2}'
POST/api/v1/json/from-yaml

Convert YAML to JSON format.

Try it

Request Body

{
  "input": "name: Alice\nage: 32"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/from-yaml \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"name: Alice\nage: 32"}'
POST/api/v1/json/to-csv

Convert a JSON array of objects to CSV rows.

Try it

Request Body

{
  "input": "[{\"name\":\"Alice\",\"age\":32}]",
  "delimiter": ","
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/to-csv \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"[{\"name\":\"Alice\",\"age\":32}]","delimiter":","}'
POST/api/v1/json/from-csv

Parse CSV and convert each row to a JSON object.

Try it

Request Body

{
  "input": "name,age\nAlice,32",
  "header": true
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/from-csv \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"name,age\nAlice,32","header":true}'
POST/api/v1/json/to-xml

Convert JSON to well-formed XML with a configurable root tag.

Try it

Request Body

{
  "input": "{\"name\":\"Alice\"}",
  "rootTag": "root"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/to-xml \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"{\"name\":\"Alice\"}","rootTag":"root"}'
POST/api/v1/json/from-xml

Parse XML and convert it to JSON.

Try it

Request Body

{
  "input": "<root><name>Alice</name></root>"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/from-xml \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"<root><name>Alice</name></root>"}'
POST/api/v1/json/to-toml

Convert JSON config objects to TOML format.

Try it

Request Body

{
  "input": "{\"title\":\"App\",\"port\":3000}"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/to-toml \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"{\"title\":\"App\",\"port\":3000}"}'
POST/api/v1/json/to-sql

Generate SQL INSERT statements from a JSON array.

Try it

Request Body

{
  "input": "[{\"id\":1,\"name\":\"Alice\"}]",
  "tableName": "users",
  "dialect": "postgres"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/to-sql \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"[{\"id\":1,\"name\":\"Alice\"}]","tableName":"users","dialect":"postgres"}'

Code Generators

POST/api/v1/json/to-typescript

Generate TypeScript interfaces from JSON.

Try it

Request Body

{
  "input": "{\"name\":\"Alice\",\"age\":32}",
  "typeName": "User"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/to-typescript \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"{\"name\":\"Alice\",\"age\":32}","typeName":"User"}'
POST/api/v1/json/to-python

Generate Python dataclasses from JSON.

Try it

Request Body

{
  "input": "{\"name\":\"Alice\",\"age\":32}",
  "typeName": "User"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/to-python \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"{\"name\":\"Alice\",\"age\":32}","typeName":"User"}'
POST/api/v1/json/to-golang

Generate Go structs with JSON tags from JSON.

Try it

Request Body

{
  "input": "{\"name\":\"Alice\",\"age\":32}",
  "typeName": "User"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/to-golang \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"{\"name\":\"Alice\",\"age\":32}","typeName":"User"}'
POST/api/v1/json/to-java

Generate Java POJOs from JSON.

Try it

Request Body

{
  "input": "{\"name\":\"Alice\",\"age\":32}",
  "typeName": "User"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/to-java \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"{\"name\":\"Alice\",\"age\":32}","typeName":"User"}'
POST/api/v1/json/to-csharp

Generate C# classes from JSON.

Try it

Request Body

{
  "input": "{\"name\":\"Alice\",\"age\":32}",
  "typeName": "User"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/to-csharp \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"{\"name\":\"Alice\",\"age\":32}","typeName":"User"}'
POST/api/v1/json/to-rust

Generate Rust structs with Serde from JSON.

Try it

Request Body

{
  "input": "{\"name\":\"Alice\",\"age\":32}",
  "typeName": "User"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/to-rust \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"{\"name\":\"Alice\",\"age\":32}","typeName":"User"}'
POST/api/v1/json/to-zod

Generate a Zod validation schema from JSON.

Try it

Request Body

{
  "input": "{\"name\":\"Alice\",\"age\":32}",
  "typeName": "User"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/to-zod \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"{\"name\":\"Alice\",\"age\":32}","typeName":"User"}'

Schema & Advanced

POST/api/v1/json/schema-validate

Validate JSON data against a JSON Schema (Draft 7/2019/2020).

Try it

Request Body

{
  "data": "{\"name\":\"Alice\",\"age\":32}",
  "schema": "{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"age\":{\"type\":\"integer\"}}}"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/schema-validate \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"data":"{\"name\":\"Alice\",\"age\":32}","schema":"{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"age\":{\"type\":\"integer\"}}}"}'
POST/api/v1/json/schema-generate

Infer a JSON Schema from an example JSON document.

Try it

Request Body

{
  "input": "{\"name\":\"Alice\",\"age\":32}",
  "title": "User",
  "draft": "draft-07"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/schema-generate \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"{\"name\":\"Alice\",\"age\":32}","title":"User","draft":"draft-07"}'
POST/api/v1/json/jwt-decode

Decode and inspect JWT header, payload, and expiry.

Try it

Request Body

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjgNryP4J3jVmNHl0w5N_XgL0n3I9PlFUP0THsR8U"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/jwt-decode \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjgNryP4J3jVmNHl0w5N_XgL0n3I9PlFUP0THsR8U"}'
POST/api/v1/json/token-count

Count GPT tokens in any JSON or text (cl100k_base encoding).

Try it

Request Body

{
  "input": "{\"messages\":[{\"role\":\"user\",\"content\":\"Hello!\"}]}",
  "model": "gpt-4o"
}

curl

curl -X POST https://tools.devops-monk.com/api/v1/json/token-count \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"input":"{\"messages\":[{\"role\":\"user\",\"content\":\"Hello!\"}]}","model":"gpt-4o"}'