Documentation

Endpoint Reference

Base URL: https://app.hintoai.com/api/external/v2

All requests require the X-API-Key header. See Authentication for details.

Machine-readable spec: https://app.hintoai.com/api/external/v2/openapi (OpenAPI 3.1)


Async jobs

Several operations take time (video import, content generation, publishing). These endpoints return 202 Accepted immediately with a job object:

{
  "jobId": "uuid",
  "type": "generate",
  "status": "pending",
  "output": null,
  "error": null,
  "createdAt": "2026-06-01T10:00:00Z",
  "completedAt": null
}

Poll GET /generate/{jobId} until status is completed or failed. On completion, output contains the result. On failure, error contains the message.

Alternatively, pass a callbackUrl in the request body to receive a webhook when the job finishes (see Webhooks).


Videos

Scope required: read for GET, write for DELETE, generate for import/upload.

MethodPathDescription
GET/videosList videos (limit, offset query params)
GET/videos/{videoId}Get a video by ID
GET/videos/{videoId}/statusGet processing status
DELETE/videos/{videoId}Delete a video
POST/videos/importImport a video from a public URL (async)
POST/videos/upload/presignedGet a presigned S3 URL for direct upload
POST/videos/upload/completeConfirm a presigned upload is complete

Import a video from a URL:

curl -X POST https://app.hintoai.com/api/external/v2/videos/import \
  -H "X-API-Key: hinto_..." \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/demo.mp4"}'

Response (202):

{ "jobId": "uuid", "type": "import_video_url", "status": "pending", "output": null, "createdAt": "..." }

Poll GET /generate/{jobId} — when completed, output.videoId contains the video ID.


Generate

Scope required: generate.

MethodPathDescription
POST/generateStart article generation from a video (async)
GET/generate/{jobId}Poll a job (generation, import, publish, translate)
POST/generate/structureGenerate article structure from a video (async)

Start article generation:

curl -X POST https://app.hintoai.com/api/external/v2/generate \
  -H "X-API-Key: hinto_..." \
  -H "Content-Type: application/json" \
  -d '{"videoId": "video-uuid", "templateId": 1}'

Response (202): job object. Poll GET /generate/{jobId} until completed.


Articles

Scope required: read for GET/list, write for create/update/delete/move.

MethodPathDescription
GET/articlesList articles (folderId, limit, offset query params)
GET/articles/{id}Get article with full content (`format=markdown\
POST/articlesCreate article from Markdown (title, content, folderId)
POST/articles/emptyCreate empty article (title, folderId)
PATCH/articles/{id}Update title, slug, or SEO fields
DELETE/articles/{id}Delete an article

Get an article as Markdown:

curl "https://app.hintoai.com/api/external/v2/articles/123?format=markdown" \
  -H "X-API-Key: hinto_..."

Folders

Scope required: read for GET/list, write for create/update/delete.

MethodPathDescription
GET/foldersList folders
POST/foldersCreate a folder (name, parentId)
PATCH/folders/{id}Rename or reparent a folder
DELETE/folders/{id}Delete a folder

Templates

Scope required: read.

MethodPathDescription
GET/templates/articleList available article templates
GET/templates/structureList available structure templates

Publish

Scope required: publish.

MethodPathDescription
POST/publishPublish the project (async — returns jobId)
POST/publish/republishRepublish with latest content (async — returns jobId)
GET/publish/statusGet current publish status

Export

Scope required: read.

MethodPathDescription
GET/exportExport project as ZIP or LLM text (`format=html\

Project

Scope required: read.

MethodPathDescription
GET/projectGet project metadata
GET/project/structureGet full folder + article tree
GET/project/languagesList configured languages