sudomock-com Fonts API

Upload and manage the fonts available to text layers.

Operations 4

GET /api/v1/fonts Retrieve a list of fonts #
POST /api/v1/fonts Create a new font #
GET /api/v1/fonts/{uuid} Retrieve a single font #
DELETE /api/v1/fonts/{uuid} Remove an existing font #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/sudomock-com:sudomock-com-fonts-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

sudomock-com-fonts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: SudoMock Fonts API
  description: 'Product mockup API. Render PSD templates, turn product photos into reusable mockups, create still images and videos, personalize text with fonts, and manage asynchronous jobs and signed webhooks.


    Every endpoint answers failures with the same envelope, so the status codes, the error_code values and the retry rule are documented once at https://sudomock.com/docs/errors rather than repeated per operation.'
  version: 1.0.0
servers:
- url: https://api.sudomock.com
  description: Production
tags:
- name: Fonts
  description: Upload and manage the fonts available to text layers.
paths:
  /api/v1/fonts:
    get:
      tags:
      - Fonts
      summary: Retrieve a list of fonts
      description: 'List available fonts for text layers: the shared system catalog plus your own uploaded fonts. Supports search, category filtering, and pagination.'
      operationId: list_fonts_api_v1_fonts_get
      parameters:
      - name: page
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          description: Page number (1-based)
          default: 1
        description: Page number (1-based)
      - name: per_page
        in: query
        required: false
        schema:
          type: integer
          maximum: 100
          minimum: 1
          description: Results per page (1-100)
          default: 50
        description: Results per page (1-100)
      - name: category
        in: query
        required: false
        schema:
          type: string
          description: 'Filter by category: SANS_SERIF, SERIF, DISPLAY, HANDWRITING or MONOSPACE. Case does not matter and a hyphen works in place of the underscore, so ''sans-serif'' finds SANS_SERIF.'
        description: 'Filter by category: SANS_SERIF, SERIF, DISPLAY, HANDWRITING or MONOSPACE. Case does not matter and a hyphen works in place of the underscore, so ''sans-serif'' finds SANS_SERIF.'
      - name: search
        in: query
        required: false
        schema:
          type: string
          description: Filter by family name (case-insensitive contains)
        description: Filter by family name (case-insensitive contains)
      - name: scope
        in: query
        required: false
        schema:
          type: string
          pattern: ^(all|system|custom)$
          description: 'Which fonts to return: ''all'' (system + yours), ''system'', or ''custom'' (yours only)'
          default: all
        description: 'Which fonts to return: ''all'' (system + yours), ''system'', or ''custom'' (yours only)'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FontListResponse'
      security:
      - ApiKeyAuth: []
      x-codeSamples:
      - lang: Node.js
        source: "const response = await fetch(\"https://api.sudomock.com/api/v1/fonts\", {\n  method: \"GET\",\n  headers: { \"x-api-key\": \"sm_your_api_key\" },\n});\n\nconst data = await response.json();\nconsole.log(data);"
      - lang: PHP
        source: "<?php\n\n$ch = curl_init(\"https://api.sudomock.com/api/v1/fonts\");\ncurl_setopt($ch, CURLOPT_CUSTOMREQUEST, \"GET\");\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_HTTPHEADER, [\n    \"x-api-key: sm_your_api_key\",\n]);\n\n$response = curl_exec($ch);\ncurl_close($ch);\n\necho $response;"
      - lang: Python
        source: "import requests\n\nresponse = requests.get(\n    \"https://api.sudomock.com/api/v1/fonts\",\n    headers={\"x-api-key\": \"sm_your_api_key\"},\n)\n\nresponse.raise_for_status()\nprint(response.json())"
      - lang: Ruby
        source: "require \"net/http\"\nrequire \"uri\"\n\nuri = URI(\"https://api.sudomock.com/api/v1/fonts\")\nrequest = Net::HTTP::Get.new(uri)\nrequest[\"x-api-key\"] = \"sm_your_api_key\"\n\nresponse = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|\n  http.request(request)\nend\n\nputs response.body"
      - lang: Go
        source: "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.sudomock.com/api/v1/fonts\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"x-api-key\", \"sm_your_api_key\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tbody, _ := io.ReadAll(res.Body)\n\tfmt.Println(string(body))\n}"
      - lang: Java
        source: "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.sudomock.com/api/v1/fonts\"))\n    .header(\"x-api-key\", \"sm_your_api_key\")\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.body());"
      - lang: .NET
        source: 'using System.Net.Http;

          using System.Text;


          var request = new HttpRequestMessage(HttpMethod.Get, "https://api.sudomock.com/api/v1/fonts");

          request.Headers.Add("x-api-key", "sm_your_api_key");


          var client = new HttpClient();

          var response = await client.SendAsync(request);


          Console.WriteLine(await response.Content.ReadAsStringAsync());'
      - lang: cURL
        source: "curl -X GET \"https://api.sudomock.com/api/v1/fonts\" \\\n  -H \"x-api-key: sm_your_api_key\""
    post:
      tags:
      - Fonts
      summary: Create a new font
      description: Upload a custom TTF or OTF font (Pro plan and above). Send either a multipart 'file' or a JSON body with a public 'url'. The font is validated and security-checked before it is stored.
      operationId: upload_font_api_v1_fonts_post
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FontResponse'
      x-mint:
        metadata:
          sidebarTitle: Upload custom font
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
              - file
              - license_confirmed
              properties:
                file:
                  type: string
                  format: binary
                license_confirmed:
                  type: boolean
          application/json:
            schema:
              description: 'JSON body for POST /api/v1/fonts when uploading a font by URL. The

                alternative is a multipart ''file'' upload. Send one or the other.'
              example:
                license_confirmed: true
                url: https://example.com/fonts/MyBrand-Bold.ttf
              properties:
                url:
                  description: Public URL of a TTF or OTF font file to fetch
                  maxLength: 2048
                  minLength: 1
                  title: Url
                  type: string
                license_confirmed:
                  default: false
                  description: Confirmation that you have the right to use and embed this font. Required.
                  title: License Confirmed
                  type: boolean
              required:
              - url
              title: FontUploadRequest
              type: object
      security:
      - ApiKeyAuth: []
      x-codeSamples:
      - lang: Node.js
        source: "const response = await fetch(\"https://api.sudomock.com/api/v1/fonts\", {\n  method: \"POST\",\n  headers: {\n    \"x-api-key\": \"sm_your_api_key\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"license_confirmed\": true,\n    \"url\": \"https://example.com/fonts/MyBrand-Bold.ttf\"\n  }),\n});\n\nconst data = await response.json();\nconsole.log(data);"
      - lang: PHP
        source: "<?php\n\n$payload = <<<'JSON'\n{\n  \"license_confirmed\": true,\n  \"url\": \"https://example.com/fonts/MyBrand-Bold.ttf\"\n}\nJSON;\n\n$ch = curl_init(\"https://api.sudomock.com/api/v1/fonts\");\ncurl_setopt($ch, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_HTTPHEADER, [\n    \"x-api-key: sm_your_api_key\",\n    \"Content-Type: application/json\",\n]);\ncurl_setopt($ch, CURLOPT_POSTFIELDS, $payload);\n\n$response = curl_exec($ch);\ncurl_close($ch);\n\necho $response;"
      - lang: Python
        source: "import requests\n\npayload = {'license_confirmed': True,\n 'url': 'https://example.com/fonts/MyBrand-Bold.ttf'}\n\nresponse = requests.post(\n    \"https://api.sudomock.com/api/v1/fonts\",\n    headers={\"x-api-key\": \"sm_your_api_key\"},\n    json=payload,\n)\n\nresponse.raise_for_status()\nprint(response.json())"
      - lang: Ruby
        source: "require \"net/http\"\nrequire \"uri\"\n\nuri = URI(\"https://api.sudomock.com/api/v1/fonts\")\nrequest = Net::HTTP::Post.new(uri)\nrequest[\"x-api-key\"] = \"sm_your_api_key\"\nrequest[\"Content-Type\"] = \"application/json\"\n\nrequest.body = <<~JSON\n  {\n    \"license_confirmed\": true,\n    \"url\": \"https://example.com/fonts/MyBrand-Bold.ttf\"\n  }\nJSON\n\nresponse = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|\n  http.request(request)\nend\n\nputs response.body"
      - lang: Go
        source: "package main\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tpayload := []byte(`{\n  \"license_confirmed\": true,\n  \"url\": \"https://example.com/fonts/MyBrand-Bold.ttf\"\n}`)\n\n\treq, err := http.NewRequest(\"POST\", \"https://api.sudomock.com/api/v1/fonts\", bytes.NewBuffer(payload))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"x-api-key\", \"sm_your_api_key\")\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tbody, _ := io.ReadAll(res.Body)\n\tfmt.Println(string(body))\n}"
      - lang: Java
        source: "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString payload = \"\"\"\n{\n  \"license_confirmed\": true,\n  \"url\": \"https://example.com/fonts/MyBrand-Bold.ttf\"\n}\n\"\"\";\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.sudomock.com/api/v1/fonts\"))\n    .header(\"x-api-key\", \"sm_your_api_key\")\n    .header(\"Content-Type\", \"application/json\")\n    .POST(HttpRequest.BodyPublishers.ofString(payload))\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.body());"
      - lang: .NET
        source: "using System.Net.Http;\nusing System.Text;\n\nvar payload = \"\"\"\n{\n  \"license_confirmed\": true,\n  \"url\": \"https://example.com/fonts/MyBrand-Bold.ttf\"\n}\n\"\"\";\n\nvar request = new HttpRequestMessage(HttpMethod.Post, \"https://api.sudomock.com/api/v1/fonts\");\nrequest.Headers.Add(\"x-api-key\", \"sm_your_api_key\");\nrequest.Content = new StringContent(payload, Encoding.UTF8, \"application/json\");\n\nvar client = new HttpClient();\nvar response = await client.SendAsync(request);\n\nConsole.WriteLine(await response.Content.ReadAsStringAsync());"
      - lang: cURL
        source: "curl -X POST \"https://api.sudomock.com/api/v1/fonts\" \\\n  -H \"x-api-key: sm_your_api_key\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"license_confirmed\": true,\n    \"url\": \"https://example.com/fonts/MyBrand-Bold.ttf\"\n  }'"
  /api/v1/fonts/{uuid}:
    get:
      tags:
      - Fonts
      summary: Retrieve a single font
      description: 'Fetch a single font by id: a system font, or one of your own uploads.'
      operationId: get_font_api_v1_fonts__uuid__get
      parameters:
      - name: uuid
        in: path
        required: true
        schema:
          type: string
          description: Font id
        description: Font id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FontResponse'
      x-mint:
        metadata:
          sidebarTitle: Get font
      security:
      - ApiKeyAuth: []
      x-codeSamples:
      - lang: Node.js
        source: "const response = await fetch(\"https://api.sudomock.com/api/v1/fonts/3fa85f64-5717-4562-b3fc-2c963f66afa6\", {\n  method: \"GET\",\n  headers: { \"x-api-key\": \"sm_your_api_key\" },\n});\n\nconst data = await response.json();\nconsole.log(data);"
      - lang: PHP
        source: "<?php\n\n$ch = curl_init(\"https://api.sudomock.com/api/v1/fonts/3fa85f64-5717-4562-b3fc-2c963f66afa6\");\ncurl_setopt($ch, CURLOPT_CUSTOMREQUEST, \"GET\");\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_HTTPHEADER, [\n    \"x-api-key: sm_your_api_key\",\n]);\n\n$response = curl_exec($ch);\ncurl_close($ch);\n\necho $response;"
      - lang: Python
        source: "import requests\n\nresponse = requests.get(\n    \"https://api.sudomock.com/api/v1/fonts/3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n    headers={\"x-api-key\": \"sm_your_api_key\"},\n)\n\nresponse.raise_for_status()\nprint(response.json())"
      - lang: Ruby
        source: "require \"net/http\"\nrequire \"uri\"\n\nuri = URI(\"https://api.sudomock.com/api/v1/fonts/3fa85f64-5717-4562-b3fc-2c963f66afa6\")\nrequest = Net::HTTP::Get.new(uri)\nrequest[\"x-api-key\"] = \"sm_your_api_key\"\n\nresponse = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|\n  http.request(request)\nend\n\nputs response.body"
      - lang: Go
        source: "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.sudomock.com/api/v1/fonts/3fa85f64-5717-4562-b3fc-2c963f66afa6\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"x-api-key\", \"sm_your_api_key\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tbody, _ := io.ReadAll(res.Body)\n\tfmt.Println(string(body))\n}"
      - lang: Java
        source: "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.sudomock.com/api/v1/fonts/3fa85f64-5717-4562-b3fc-2c963f66afa6\"))\n    .header(\"x-api-key\", \"sm_your_api_key\")\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.body());"
      - lang: .NET
        source: 'using System.Net.Http;

          using System.Text;


          var request = new HttpRequestMessage(HttpMethod.Get, "https://api.sudomock.com/api/v1/fonts/3fa85f64-5717-4562-b3fc-2c963f66afa6");

          request.Headers.Add("x-api-key", "sm_your_api_key");


          var client = new HttpClient();

          var response = await client.SendAsync(request);


          Console.WriteLine(await response.Content.ReadAsStringAsync());'
      - lang: cURL
        source: "curl -X GET \"https://api.sudomock.com/api/v1/fonts/3fa85f64-5717-4562-b3fc-2c963f66afa6\" \\\n  -H \"x-api-key: sm_your_api_key\""
    delete:
      tags:
      - Fonts
      summary: Remove an existing font
      description: Delete one of your own uploaded fonts. System fonts cannot be deleted.
      operationId: delete_font_api_v1_fonts__uuid__delete
      parameters:
      - name: uuid
        in: path
        required: true
        schema:
          type: string
          description: Font id
        description: Font id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FontDeleteResponse'
      x-mint:
        metadata:
          sidebarTitle: Delete custom font
      security:
      - ApiKeyAuth: []
      x-codeSamples:
      - lang: Node.js
        source: "const response = await fetch(\"https://api.sudomock.com/api/v1/fonts/3fa85f64-5717-4562-b3fc-2c963f66afa6\", {\n  method: \"DELETE\",\n  headers: { \"x-api-key\": \"sm_your_api_key\" },\n});\n\nconst data = await response.json();\nconsole.log(data);"
      - lang: PHP
        source: "<?php\n\n$ch = curl_init(\"https://api.sudomock.com/api/v1/fonts/3fa85f64-5717-4562-b3fc-2c963f66afa6\");\ncurl_setopt($ch, CURLOPT_CUSTOMREQUEST, \"DELETE\");\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_HTTPHEADER, [\n    \"x-api-key: sm_your_api_key\",\n]);\n\n$response = curl_exec($ch);\ncurl_close($ch);\n\necho $response;"
      - lang: Python
        source: "import requests\n\nresponse = requests.delete(\n    \"https://api.sudomock.com/api/v1/fonts/3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n    headers={\"x-api-key\": \"sm_your_api_key\"},\n)\n\nresponse.raise_for_status()\nprint(response.json())"
      - lang: Ruby
        source: "require \"net/http\"\nrequire \"uri\"\n\nuri = URI(\"https://api.sudomock.com/api/v1/fonts/3fa85f64-5717-4562-b3fc-2c963f66afa6\")\nrequest = Net::HTTP::Delete.new(uri)\nrequest[\"x-api-key\"] = \"sm_your_api_key\"\n\nresponse = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|\n  http.request(request)\nend\n\nputs response.body"
      - lang: Go
        source: "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"DELETE\", \"https://api.sudomock.com/api/v1/fonts/3fa85f64-5717-4562-b3fc-2c963f66afa6\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"x-api-key\", \"sm_your_api_key\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tbody, _ := io.ReadAll(res.Body)\n\tfmt.Println(string(body))\n}"
      - lang: Java
        source: "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.sudomock.com/api/v1/fonts/3fa85f64-5717-4562-b3fc-2c963f66afa6\"))\n    .header(\"x-api-key\", \"sm_your_api_key\")\n    .DELETE()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.body());"
      - lang: .NET
        source: 'using System.Net.Http;

          using System.Text;


          var request = new HttpRequestMessage(HttpMethod.Delete, "https://api.sudomock.com/api/v1/fonts/3fa85f64-5717-4562-b3fc-2c963f66afa6");

          request.Headers.Add("x-api-key", "sm_your_api_key");


          var client = new HttpClient();

          var response = await client.SendAsync(request);


          Console.WriteLine(await response.Content.ReadAsStringAsync());'
      - lang: cURL
        source: "curl -X DELETE \"https://api.sudomock.com/api/v1/fonts/3fa85f64-5717-4562-b3fc-2c963f66afa6\" \\\n  -H \"x-api-key: sm_your_api_key\""
components:
  schemas:
    FontPagination:
      properties:
        page:
          type: integer
          description: Current page (1-based)
        per_page:
          type: integer
          description: Results per page
        total:
          type: integer
          description: Total fonts matching the query
      type: object
      required:
      - page
      - per_page
      - total
      title: FontPagination
      description: Pagination envelope for the font list.
    FontListResponse:
      properties:
        success:
          type: boolean
          description: Always true on a successful response.
          default: true
        data:
          items:
            $ref: '#/components/schemas/FontResponse'
          type: array
          description: The fonts on this page.
        pagination:
          $ref: '#/components/schemas/FontPagination'
          description: Page number, page size and total matching fonts.
      type: object
      required:
      - data
      - pagination
      title: FontListResponse
      description: List response wrapper for GET /api/v1/fonts.
      example:
        data:
        - category: SANS_SERIF
          created_at: '2026-07-13T00:00:00+00:00'
          family: Open Sans
          file_url: https://cdn.sudomock.com/mockup-assets/fonts/web/9f1c2d3e-4a5b-6c7d-8e9f-0a1b2c3d4e5f.woff2
          is_premium: false
          is_system: true
          license: OFL
          postscript_name: OpenSans-Regular
          subfamily: Regular
          uuid: 9f1c2d3e-4a5b-6c7d-8e9f-0a1b2c3d4e5f
          preview_url: null
        - category: SERIF
          created_at: '2026-07-13T00:00:00+00:00'
          family: Playfair Display
          file_url: https://cdn.sudomock.com/mockup-assets/fonts/web/4b8e6a71-2c05-4f93-ae17-6d3c9b204e58.woff2
          is_premium: false
          is_system: true
          license: OFL
          postscript_name: PlayfairDisplay-Bold
          subfamily: Bold
          uuid: 4b8e6a71-2c05-4f93-ae17-6d3c9b204e58
          preview_url: null
        pagination:
          page: 1
          per_page: 50
          total: 2
        success: true
    FontDeleteResponse:
      properties:
        success:
          type: boolean
          description: Always true on a successful response.
          default: true
      type: object
      title: FontDeleteResponse
      description: Confirmation that one of your uploaded fonts was removed.
      example:
        success: true
    FontResponse:
      properties:
        uuid:
          type: string
          description: Font id
          examples:
          - 7f3a2b1c-9d4e-4a6f-b8c2-1e5d7a0c3f94
        family:
          type: string
          description: Font family name, e.g. 'Open Sans'
          examples:
          - Open Sans
        subfamily:
          anyOf:
          - type: string
          - type: 'null'
          description: Style within the family, e.g. 'Bold Italic'
          examples:
          - Regular
        postscript_name:
          type: string
          description: PostScript name, the stable key used to reference this font when rendering text layers
          examples:
          - OpenSans-Regular
        category:
          anyOf:
          - type: string
          - type: 'null'
          description: Catalog category, e.g. 'SANS_SERIF', 'SERIF', 'DISPLAY'
          examples:
          - SANS_SERIF
        license:
          anyOf:
          - type: string
          - type: 'null'
          description: License identifier (system fonts)
          examples:
          - OFL
        is_premium:
          type: boolean
          description: Whether this is a premium catalog font
          default: false
        is_system:
          type: boolean
          description: True for the shared system catalog, False for a font you uploaded
          examples:
          - true
        preview_url:
          anyOf:
          - type: string
          - type: 'null'
          description: Legacy rendered preview image, when available; new catalog entries no longer include one (use file_url for live previews)
        file_url:
          anyOf:
          - type: string
          - type: 'null'
          description: 'URL of the web-optimized WOFF2 file for live @font-face preview: a public CDN URL for system fonts, a short-lived link for your own uploads. Null for premium fonts; the original TTF/OTF source is never exposed.'
          examples:
          - https://cdn.sudomock.com/mockup-assets/fonts/web/7f3a2b1c-9d4e-4a6f-b8c2-1e5d7a0c3f94.woff2
        created_at:
          anyOf:
          - type: string
          - type: 'null'
          description: When the font was added
          examples:
          - '2026-07-13T09:14:22+00:00'
      type: object
      required:
      - uuid
      - family
      - postscript_name
      - is_system
      title: FontResponse
      description: 'A single font in the catalog: a shared system font, or one of the

        caller''s own uploaded fonts.'
      example:
        category: SANS_SERIF
        created_at: '2026-07-13T00:00:00+00:00'
        family: Open Sans
        file_url: https://cdn.sudomock.com/mockup-assets/fonts/web/9f1c2d3e-4a5b-6c7d-8e9f-0a1b2c3d4e5f.woff2
        is_premium: false
        is_system: true
        license: OFL
        postscript_name: OpenSans-Regular
        subfamily: Regular
        uuid: 9f1c2d3e-4a5b-6c7d-8e9f-0a1b2c3d4e5f
        preview_url: null
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key with sm_ prefix. Get your key at https://sudomock.com/dashboard/api-keys