Zernio
Zernio
API Reference

Validate

Validate media URLPOSTValidate character countPOSTValidate post contentPOSTCheck subreddit existenceGET
Dashboard
llms.txtOpenAPI
OverviewPlatformsAPI ReferenceResources
Validate

Validate media URL

Check if a media URL is accessible and return metadata (content type, file size) plus per-platform size limit comparisons.

Performs a HEAD request (with GET fallback) to detect content type and size. Rejects private/localhost URLs for SSRF protection.

Platform limits are sourced from each platform's actual upload constraints.


POST
/v1/tools/validate/media

Authorization

bearerAuth
AuthorizationBearer <token>

API key authentication: send your Zernio API key in the Authorization header, prefixed with Bearer.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

{  "valid": true,  "url": "http://example.com",  "error": "string",  "contentType": "string",  "size": 0,  "sizeFormatted": "string",  "type": "image",  "platformLimits": {    "property1": {      "limit": 0,      "limitFormatted": "string",      "withinLimit": true    },    "property2": {      "limit": 0,      "limitFormatted": "string",      "withinLimit": true    }  }}
Was this page helpful?

Get upload URL

Get a presigned URL to upload files directly to cloud storage (up to 5GB). Returns an uploadUrl and publicUrl. PUT your file to the uploadUrl, then use the publicUrl in your posts.

Validate character count

Check weighted character count per platform and whether the text is within each platform's limit. X uses weighted counting (URLs = 23 chars via t.co, emojis = 2 chars). All other platforms use plain character length. Returns counts and limits for all 15 supported platform variants. X returns two rows and this endpoint cannot tell you which one applies to you: it takes only `text`, so it never resolves an account. `twitter` (280) is the free tier limit. `twitterPremium` (25000) applies only when the target X account has a paid X subscription, and publishing enforces 280 instead for any post carrying a poll (this endpoint has no poll input, so the `twitterPremium` row always shows 25000). A free account trusting the `twitterPremium` row can pass validation here and still fail at publish time, where the account's real limit is enforced. To validate against the per-account limit, use `POST /v1/tools/validate/post` instead: it accepts an `accountId` per platform entry, resolves X Premium status, and checks the text against the limit publishing enforces, including the poll cap. A missing, foreign, or invalid `accountId` falls back to the conservative 280.

url*string

Public media URL to validate

Formaturi