Endpoints
Projects
List your projects and read one, with the languages it translates into.
Projects are created and set up in the dashboard. Over the API they are read: to find the one a chapter goes into, and to see what it will do with it.
List projects
GET/api/v1/projects
Every project of the workspace that is not in the trash, the one with the newest chapter first.
curl https://tinypica.com/api/v1/projects \
-H "Authorization: Bearer $TINYPICA_KEY"[
{
"id": "0cf217a0-c404-4fd7-8732-5f83b9e766ca",
"translationGroupId": "46f5fe4d-7be4-48e4-99a9-3a0f2c440c04",
"name": "Pepper & Carrot",
"sourceLanguage": "fr",
"readingDirection": "ltr",
"kind": "comic",
"processSteps": "full",
"translationModel": null,
"seriesProfile": null,
"coverKey": null,
"deletedAt": null,
"createdAt": "2026-09-28T12:46:50.415Z",
"targetLanguages": [
{ "projectId": "0cf217a0-…", "languageCode": "en", "addedAt": "2026-09-28T12:46:50.445Z" },
{ "projectId": "0cf217a0-…", "languageCode": "es", "addedAt": "2026-09-28T12:46:50.459Z" }
],
"lastChapterAt": 1790599610526,
"chapterCount": 1
}
]interface Project {
id: string
name: string
kind: 'comic' | 'novel'
sourceLanguage: string
readingDirection: 'ltr' | 'rtl' | 'vertical'
processSteps: 'text' | 'translate' | 'clean' | 'full'
translationModel: string | null
createdAt: string
}
interface ProjectListItem extends Project {
targetLanguages: { languageCode: string, addedAt: string }[]
chapterCount: number
lastChapterAt: number | null // milliseconds since 1970
}| Field | Type | What it is |
|---|---|---|
id | string | The project's id, for the chapter routes. |
name | string | |
kind | string | comic takes page images, novel takes text. |
sourceLanguage | string | The language the chapters are written in, as a two-letter code. |
readingDirection | string | ltr, rtl or vertical. |
processSteps | string | How far a page is taken: text (read), translate, clean (the art erased) or full (lettered). Decides which files a chapter has. |
translationModel | string or null | The model that translates; null is the default. |
targetLanguages | array | The languages every chapter is translated into: languageCode, and when it was added. |
chapterCount | number | Chapters not in the trash. |
lastChapterAt | number or null | When the newest chapter was created, in milliseconds since 1970. The one time not given as an ISO string. |
createdAt | string | ISO 8601. |
The other fields are the dashboard's: seriesProfile is what the translation is told about the series, and coverKey names the cover image, which the API does not serve.
Get a project
GET/api/v1/projects/:id
One project, with the fields it has in the list, less targetLanguages, chapterCount and lastChapterAt. A project that does not exist, is in the trash or is another workspace's is a 404, Project not found.
curl https://tinypica.com/api/v1/projects/$PROJECT \
-H "Authorization: Bearer $TINYPICA_KEY" A project's chapters are listed by GET /projects/:id/chapters.