> ## Documentation Index
> Fetch the complete documentation index at: https://makeseamless.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> MakeSeamless (makeseamless.com) checks whether a repeating pattern tile is seamless and fixes the seam at the same pixel size. Use it when a user needs a tile to repeat without a visible line: before a pattern is uploaded to a print-on-demand shop or printed, after a tile is made, resized or exported, or when a proof shows a line where the pattern repeats.
> Check first: POST https://makeseamless.com/v1/check with the image as the multipart field file. It is free and needs no account and no key. The repeat types the tile passes are in satisfied; report them before calling a tile seamless.
> Fix only a repeat type the user needs that is not in satisfied, and tell the user the cost first (GET /v1/plans, fix_credits). POST /v1/fix needs an API key in the x-api-key header. Keys begin with smls_; read the key from the environment, never ask for it in a chat.
> POST /v1/fix answers 202 with a job. Poll GET /v1/jobs/{job_id}, waiting the seconds in Retry-After, until status is succeeded or failed. The fixed PNG is at result.image_url. Answers are JSON, except the images, which are PNG.
> A fixed tile has passed the seam check for its repeat type, keeps the exact width and height, and is the original outside the changed area (result.changed_mask_url). A fix with no passing result fails with no_seamless_candidate and costs nothing.
> Branch on error.code, never on error.message, and retry only when error.retryable is true.

# Retrieve a fix job, its status and its seam report

> The job as it stands. A succeeded job carries its `result` and the other images the fix made
(`candidates`); a failed one its `error`. Anyone with the job's id can read it.


```js Node.js theme={"theme":{"light":"github-light","dark":"vesper"}}
const response = await fetch("https://makeseamless.com/v1/jobs/job_2432c1827f32450f800694e552e9915c", {
  method: "GET",
});

const data = await response.json();
console.log(data);
```

```php PHP theme={"theme":{"light":"github-light","dark":"vesper"}}
<?php

$ch = curl_init("https://makeseamless.com/v1/jobs/job_2432c1827f32450f800694e552e9915c");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
```

```python Python theme={"theme":{"light":"github-light","dark":"vesper"}}
import requests

response = requests.get(
    "https://makeseamless.com/v1/jobs/job_2432c1827f32450f800694e552e9915c",
)

response.raise_for_status()
print(response.json())
```

```ruby Ruby theme={"theme":{"light":"github-light","dark":"vesper"}}
require "net/http"
require "uri"

uri = URI("https://makeseamless.com/v1/jobs/job_2432c1827f32450f800694e552e9915c")
request = Net::HTTP::Get.new(uri)

response = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
  http.request(request)
end

puts response.body
```

```go Go theme={"theme":{"light":"github-light","dark":"vesper"}}
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, err := http.NewRequest("GET", "https://makeseamless.com/v1/jobs/job_2432c1827f32450f800694e552e9915c", nil)
	if err != nil {
		panic(err)
	}

	res, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()

	body, _ := io.ReadAll(res.Body)
	fmt.Println(string(body))
}
```

```java Java theme={"theme":{"light":"github-light","dark":"vesper"}}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://makeseamless.com/v1/jobs/job_2432c1827f32450f800694e552e9915c"))
    .GET()
    .build();

HttpResponse<String> response = HttpClient.newHttpClient()
    .send(request, HttpResponse.BodyHandlers.ofString());

System.out.println(response.body());
```

```csharp .NET theme={"theme":{"light":"github-light","dark":"vesper"}}
using System.Net.Http;

var request = new HttpRequestMessage(HttpMethod.Get, "https://makeseamless.com/v1/jobs/job_2432c1827f32450f800694e552e9915c");

var client = new HttpClient();
var response = await client.SendAsync(request);

Console.WriteLine(await response.Content.ReadAsStringAsync());
```

```bash cURL theme={"theme":{"light":"github-light","dark":"vesper"}}
curl -X GET "https://makeseamless.com/v1/jobs/job_2432c1827f32450f800694e552e9915c"
```

```json Response theme={"theme":{"light":"github-light","dark":"vesper"}}
{
  "id": "job_2432c1827f32450f800694e552e9915c",
  "status": "succeeded",
  "stage": "finished",
  "repeat": "straight",
  "cached": false,
  "input": {
    "sha256": "9cf95d486b4c7d1bd6022a3e51d7c89b89ba5239d0378033c9a9f53413dd7770",
    "width": 256,
    "height": 256,
    "format": "PNG",
    "has_alpha": true
  },
  "created_at": "2026-11-03T15:24:08.435Z",
  "started_at": "2026-11-03T15:24:08.436Z",
  "finished_at": "2026-11-03T15:24:08.953Z",
  "result": {
    "outcome": "ok",
    "image_url": "/v1/jobs/job_2432c1827f32450f800694e552e9915c/result",
    "changed_mask_url": "/v1/jobs/job_2432c1827f32450f800694e552e9915c/changed_mask",
    "visible_changed_mask_url": "/v1/jobs/job_2432c1827f32450f800694e552e9915c/visible_mask",
    "width": 256,
    "height": 256,
    "sha256": "d896bd338713c58bfc87b1c235410a4e663a37dcc67e6b5b9ea7197ce7905ee8",
    "resampled": false,
    "changed_share": 0.3017578125,
    "visible_changed_share": 0.21240234375,
    "seam_report": {
      "before": {
        "repeat": "straight",
        "verdict": "bad",
        "edges": [
          {
            "edge": "vertical",
            "verdict": "bad",
            "anomaly": 1.5306,
            "broken": [
              [
                33,
                97
              ]
            ]
          },
          {
            "edge": "horizontal",
            "verdict": "ok",
            "anomaly": 0.9328,
            "broken": []
          }
        ]
      },
      "after": {
        "repeat": "straight",
        "verdict": "ok",
        "edges": [
          {
            "edge": "vertical",
            "verdict": "ok",
            "anomaly": 0.9477,
            "broken": []
          },
          {
            "edge": "horizontal",
            "verdict": "ok",
            "anomaly": 0.9328,
            "broken": []
          }
        ]
      }
    },
    "alternative": {
      "id": "candidate_a",
      "image_url": "/v1/jobs/job_2432c1827f32450f800694e552e9915c/candidates/candidate_a",
      "passed": false,
      "changed_share": 1.0
    }
  },
  "error": null,
  "candidates": [
    {
      "id": "candidate_a",
      "image_url": "/v1/jobs/job_2432c1827f32450f800694e552e9915c/candidates/candidate_a",
      "passed": false,
      "changed_share": 1.0,
      "resampled": false
    },
    {
      "id": "candidate_b",
      "image_url": "/v1/jobs/job_2432c1827f32450f800694e552e9915c/candidates/candidate_b",
      "passed": false,
      "changed_share": 0.3017578125,
      "resampled": false
    },
    {
      "id": "candidate_c",
      "image_url": "/v1/jobs/job_2432c1827f32450f800694e552e9915c/candidates/candidate_c",
      "passed": false,
      "changed_share": 1.0,
      "resampled": true
    }
  ]
}
```


## OpenAPI

````yaml openapi.json GET /v1/jobs/{job_id}
openapi: 3.1.0
info:
  title: MakeSeamless API
  version: 1.0.0
  summary: Check whether an image tiles seamlessly, and make it tile seamlessly.
  description: >
    Check a pattern tile for seams where its copies meet, and fix it so that it
    repeats without a

    visible seam.


    - A check is free and needs no account. A fix needs an API key and costs
    credits (`GET /v1/plans`).

    - A fix runs in the background: `POST /v1/fix` answers `202` with a job.
    Poll
      `GET /v1/jobs/{job_id}` until its `status` is `succeeded` or `failed`, waiting the seconds that
      `Retry-After` gives.
    - Every image the API returns has the exact width and height of the uploaded
    image (after its
      orientation is applied), as a fresh lossless PNG that carries no metadata of the upload.
    - Breaking changes come only under a new prefix (`/v2`). Fields may be added
    to responses; ignore
      the fields you do not know.
    - Error codes are stable: read `error.code`, not `error.message`. Any
    request may also fail with
      `500` and the code `internal_error`.
  license:
    name: Proprietary
servers:
  - url: https://makeseamless.com
security: []
tags:
  - name: check
    description: Seam check, answered at once.
  - name: fix
    description: Fix job, run in the background.
  - name: jobs
    description: Job status, result images and ratings.
  - name: health
    description: Service status.
  - name: account
    description: The account, its plan and credits.
paths:
  /v1/jobs/{job_id}:
    get:
      tags:
        - jobs
      summary: A fix job
      description: >
        The job as it stands. A succeeded job carries its `result` and the other
        images the fix made

        (`candidates`); a failed one its `error`. Anyone with the job's id can
        read it.
      operationId: getJob
      parameters:
        - $ref: '#/components/parameters/JobId'
      responses:
        '200':
          description: >-
            The job. While it is `queued` or `running`, `Retry-After` says when
            to poll again.
          headers:
            Retry-After:
              $ref: '#/components/headers/RetryAfter'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
              example:
                id: job_2432c1827f32450f800694e552e9915c
                status: succeeded
                stage: finished
                repeat: straight
                cached: false
                input:
                  sha256: >-
                    9cf95d486b4c7d1bd6022a3e51d7c89b89ba5239d0378033c9a9f53413dd7770
                  width: 256
                  height: 256
                  format: PNG
                  has_alpha: true
                created_at: '2026-11-03T15:24:08.435Z'
                started_at: '2026-11-03T15:24:08.436Z'
                finished_at: '2026-11-03T15:24:08.953Z'
                result:
                  outcome: ok
                  image_url: /v1/jobs/job_2432c1827f32450f800694e552e9915c/result
                  changed_mask_url: /v1/jobs/job_2432c1827f32450f800694e552e9915c/changed_mask
                  visible_changed_mask_url: /v1/jobs/job_2432c1827f32450f800694e552e9915c/visible_mask
                  width: 256
                  height: 256
                  sha256: >-
                    d896bd338713c58bfc87b1c235410a4e663a37dcc67e6b5b9ea7197ce7905ee8
                  resampled: false
                  changed_share: 0.3017578125
                  visible_changed_share: 0.21240234375
                  seam_report:
                    before:
                      repeat: straight
                      verdict: bad
                      edges:
                        - edge: vertical
                          verdict: bad
                          anomaly: 1.5306
                          broken:
                            - - 33
                              - 97
                        - edge: horizontal
                          verdict: ok
                          anomaly: 0.9328
                          broken: []
                    after:
                      repeat: straight
                      verdict: ok
                      edges:
                        - edge: vertical
                          verdict: ok
                          anomaly: 0.9477
                          broken: []
                        - edge: horizontal
                          verdict: ok
                          anomaly: 0.9328
                          broken: []
                  alternative:
                    id: candidate_a
                    image_url: >-
                      /v1/jobs/job_2432c1827f32450f800694e552e9915c/candidates/candidate_a
                    passed: false
                    changed_share: 1
                error: null
                candidates:
                  - id: candidate_a
                    image_url: >-
                      /v1/jobs/job_2432c1827f32450f800694e552e9915c/candidates/candidate_a
                    passed: false
                    changed_share: 1
                    resampled: false
                  - id: candidate_b
                    image_url: >-
                      /v1/jobs/job_2432c1827f32450f800694e552e9915c/candidates/candidate_b
                    passed: false
                    changed_share: 0.3017578125
                    resampled: false
                  - id: candidate_c
                    image_url: >-
                      /v1/jobs/job_2432c1827f32450f800694e552e9915c/candidates/candidate_c
                    passed: false
                    changed_share: 1
                    resampled: true
        '404':
          $ref: '#/components/responses/NotFound'
      security: []
      x-codeSamples:
        - lang: js
          label: Node.js
          source: >-
            const response = await
            fetch("https://makeseamless.com/v1/jobs/job_2432c1827f32450f800694e552e9915c",
            {
              method: "GET",
            });


            const data = await response.json();

            console.log(data);
        - lang: php
          label: PHP
          source: >-
            <?php


            $ch =
            curl_init("https://makeseamless.com/v1/jobs/job_2432c1827f32450f800694e552e9915c");

            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");

            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);


            $response = curl_exec($ch);

            curl_close($ch);


            echo $response;
        - lang: python
          label: Python
          source: |-
            import requests

            response = requests.get(
                "https://makeseamless.com/v1/jobs/job_2432c1827f32450f800694e552e9915c",
            )

            response.raise_for_status()
            print(response.json())
        - lang: ruby
          label: Ruby
          source: >-
            require "net/http"

            require "uri"


            uri =
            URI("https://makeseamless.com/v1/jobs/job_2432c1827f32450f800694e552e9915c")

            request = Net::HTTP::Get.new(uri)


            response = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do
            |http|
              http.request(request)
            end


            puts response.body
        - lang: go
          label: 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://makeseamless.com/v1/jobs/job_2432c1827f32450f800694e552e9915c\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\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
          label: Java
          source: |-
            import java.net.URI;
            import java.net.http.HttpClient;
            import java.net.http.HttpRequest;
            import java.net.http.HttpResponse;

            HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("https://makeseamless.com/v1/jobs/job_2432c1827f32450f800694e552e9915c"))
                .GET()
                .build();

            HttpResponse<String> response = HttpClient.newHttpClient()
                .send(request, HttpResponse.BodyHandlers.ofString());

            System.out.println(response.body());
        - lang: csharp
          label: .NET
          source: >-
            using System.Net.Http;


            var request = new HttpRequestMessage(HttpMethod.Get,
            "https://makeseamless.com/v1/jobs/job_2432c1827f32450f800694e552e9915c");


            var client = new HttpClient();

            var response = await client.SendAsync(request);


            Console.WriteLine(await response.Content.ReadAsStringAsync());
        - lang: bash
          label: cURL
          source: >-
            curl -X GET
            "https://makeseamless.com/v1/jobs/job_2432c1827f32450f800694e552e9915c"
components:
  parameters:
    JobId:
      name: job_id
      in: path
      required: true
      description: The job's `id`, from `POST /v1/fix`.
      schema:
        type: string
        pattern: ^job_[0-9a-f]{32}$
  headers:
    RetryAfter:
      description: Seconds to wait before polling again.
      schema:
        type: integer
        minimum: 1
  schemas:
    Job:
      type: object
      additionalProperties: false
      required:
        - id
        - status
        - stage
        - repeat
        - cached
        - input
        - created_at
        - started_at
        - finished_at
        - result
        - error
        - candidates
      properties:
        id:
          type: string
          pattern: ^job_[0-9a-f]{32}$
        status:
          $ref: '#/components/schemas/JobStatus'
        stage:
          $ref: '#/components/schemas/JobStage'
        repeat:
          $ref: '#/components/schemas/RepeatType'
        cached:
          type: boolean
          description: >-
            True when the same image was fixed before and this result was served
            again, at no charge.
        input:
          $ref: '#/components/schemas/InputInfo'
        created_at:
          type: string
          format: date-time
        started_at:
          type:
            - string
            - 'null'
          format: date-time
        finished_at:
          type:
            - string
            - 'null'
          format: date-time
        result:
          oneOf:
            - $ref: '#/components/schemas/FixResult'
            - type: 'null'
          description: Present when `status` is `succeeded`.
        error:
          oneOf:
            - $ref: '#/components/schemas/ErrorBody'
            - type: 'null'
          description: Present when `status` is `failed`.
        candidates:
          type: array
          description: >
            The other images of a succeeded job, `candidate_a` (the
            `result.alternative`) first. Empty

            until the job succeeded, and for a failed job.
          items:
            $ref: '#/components/schemas/Candidate'
    JobStatus:
      type: string
      enum:
        - queued
        - running
        - succeeded
        - failed
    JobStage:
      type: string
      enum:
        - queued
        - fixing
        - finishing
        - finished
      description: >
        Progress for display; it only moves forward. `queued`: waiting to start.
        `fixing`: seamless

        versions of the image are being made. `finishing`: the result and its
        files are being

        prepared. `finished`: the job succeeded or failed.
    RepeatType:
      type: string
      enum:
        - straight
        - half_drop
        - half_brick
      description: >
        `straight`: plain repeat on both axes. `half_drop`: the next column is
        shifted down by half the

        height (needs an even height). `half_brick`: the next row is shifted
        right by half the width

        (needs an even width).
    InputInfo:
      type: object
      additionalProperties: false
      required:
        - sha256
        - width
        - height
        - format
        - has_alpha
      properties:
        sha256:
          type: string
          pattern: ^[0-9a-f]{64}$
          description: SHA-256 of the uploaded file bytes.
        width:
          type: integer
          minimum: 64
          description: Width in px, after the image's orientation is applied.
        height:
          type: integer
          minimum: 64
          description: Height in px, after the image's orientation is applied.
        format:
          type: string
          enum:
            - PNG
            - JPEG
            - WEBP
        has_alpha:
          type: boolean
    FixResult:
      type: object
      additionalProperties: false
      required:
        - outcome
        - image_url
        - changed_mask_url
        - width
        - height
        - sha256
        - resampled
        - changed_share
        - seam_report
        - alternative
      properties:
        outcome:
          $ref: '#/components/schemas/Outcome'
        image_url:
          type: string
          description: '`/v1/jobs/{job_id}/result`.'
        changed_mask_url:
          type: string
          description: '`/v1/jobs/{job_id}/changed_mask`, the changed area.'
        visible_changed_mask_url:
          type: string
          description: >
            `/v1/jobs/{job_id}/visible_mask`, the visibly changed area. Absent
            on results made before

            it was offered.
        width:
          type: integer
          description: Always the uploaded image's width.
        height:
          type: integer
          description: Always the uploaded image's height.
        sha256:
          type: string
          pattern: ^[0-9a-f]{64}$
          description: SHA-256 of the result PNG bytes.
        resampled:
          type: boolean
          description: >-
            True when every pixel changed (outcome `resampled`); fine detail may
            look a little softer.
        changed_share:
          type: number
          minimum: 0
          maximum: 1
          description: >
            Share of the image inside the changed area (the white share of
            `changed_mask_url`): the

            band along the edges, or 1 when every pixel changed.
        visible_changed_share:
          type: number
          minimum: 0
          maximum: 1
          description: >
            Share of the image that looks different from the upload (the white
            share of

            `visible_changed_mask_url`), never more than `changed_share`. When
            every pixel changed but

            most only slightly, `changed_share` is 1 and this share is much
            smaller. Absent on results

            made before it was offered.
        seam_report:
          $ref: '#/components/schemas/SeamReport'
        alternative:
          oneOf:
            - $ref: '#/components/schemas/Alternative'
            - type: 'null'
          description: Null when the fix made no other image.
    ErrorBody:
      type: object
      additionalProperties: false
      required:
        - code
        - message
        - retryable
      properties:
        code:
          $ref: '#/components/schemas/ErrorCode'
        message:
          type: string
          description: Plain-language explanation; it may change, do not parse it.
        retryable:
          type: boolean
          description: >-
            True when the same request can succeed later (a new fix, or polling
            again).
        details:
          type: object
          description: 'Optional machine-readable context, for example `{"max_side": 3600}`.'
    Candidate:
      type: object
      additionalProperties: false
      required:
        - id
        - image_url
        - passed
        - changed_share
        - resampled
      description: An image the fix made besides the result.
      properties:
        id:
          $ref: '#/components/schemas/CandidateId'
        image_url:
          type: string
          description: '`/v1/jobs/{job_id}/candidates/{id}`.'
        passed:
          type: boolean
          description: True when it passed the same checks as a result.
        changed_share:
          type: number
          minimum: 0
          maximum: 1
          description: Share of the image inside its changed area.
        resampled:
          type: boolean
          description: >-
            True when every pixel changed (outcome `resampled`); fine detail may
            look a little softer.
    Error:
      type: object
      additionalProperties: false
      required:
        - error
      properties:
        error:
          $ref: '#/components/schemas/ErrorBody'
    Outcome:
      type: string
      enum:
        - ok
        - resampled
      description: >
        `ok`: the result passed every quality check. `resampled`: no version
        passed every quality

        check, so the result is one in which every pixel changed; it passes the
        seam check, and fine

        detail may look a little softer.
    SeamReport:
      type: object
      additionalProperties: false
      required:
        - before
        - after
      description: >-
        The seam report for the requested repeat type, on the upload and on the
        result.
      properties:
        before:
          $ref: '#/components/schemas/RepeatVerdict'
        after:
          $ref: '#/components/schemas/RepeatVerdict'
    Alternative:
      type: object
      additionalProperties: false
      required:
        - id
        - image_url
        - passed
        - changed_share
      description: The other candidate shown next to the result.
      properties:
        id:
          $ref: '#/components/schemas/CandidateId'
        image_url:
          type: string
          description: '`/v1/jobs/{job_id}/candidates/{id}`.'
        passed:
          type: boolean
          description: >-
            True when it passed the same checks as a result. Offer its download
            only when true.
        changed_share:
          type: number
          minimum: 0
          maximum: 1
          description: Share of the image inside its changed area.
    ErrorCode:
      type: string
      enum:
        - validation_error
        - payload_too_large
        - unsupported_format
        - decode_failed
        - too_small
        - too_large
        - odd_dimension
        - transparent_seam_band
        - not_found
        - result_not_ready
        - no_result
        - no_seamless_candidate
        - service_unavailable
        - interrupted
        - internal_error
        - auth_required
        - insufficient_credits
        - daily_capacity_reached
        - too_many_running_fixes
        - rate_limited
        - already_subscribed
        - pro_required
        - no_subscription
        - rating_closed
      description: >
        Stable codes. Of a failed job: `no_seamless_candidate` (no version of
        the image tiled

        seamlessly), `service_unavailable` (the fix could not run for now; try
        again later),

        `interrupted` (the service stopped while the job ran; start the fix
        again) and

        `internal_error`.
    CandidateId:
      type: string
      pattern: ^candidate_[a-z]+$
      description: >
        The id of an image of the job other than the result: `candidate_a`,
        `candidate_b` and so on.

        Ids are per job.
    RepeatVerdict:
      type: object
      additionalProperties: false
      required:
        - repeat
        - verdict
        - edges
      description: The verdict for one repeat type, with its seam report per edge.
      properties:
        repeat:
          $ref: '#/components/schemas/RepeatType'
        verdict:
          $ref: '#/components/schemas/Verdict'
        edges:
          type: array
          description: Empty when the verdict is `not_applicable`.
          items:
            $ref: '#/components/schemas/EdgeReport'
    Verdict:
      type: string
      enum:
        - ok
        - minor
        - bad
        - not_applicable
      description: >-
        `ok`: no seam. `minor`: a faint seam. `bad`: a visible seam.
        `not_applicable`: the repeat type does not fit this size.
    EdgeReport:
      type: object
      additionalProperties: false
      required:
        - edge
        - verdict
        - anomaly
        - broken
      description: >
        One edge where copies of the tile meet. Positions along the `vertical`
        edge are rows of the

        tile; along the `horizontal` edge, columns.
      properties:
        edge:
          type: string
          enum:
            - vertical
            - horizontal
          description: >-
            `vertical`: where the right side meets the left. `horizontal`: where
            the bottom meets the top.
        verdict:
          type: string
          enum:
            - ok
            - minor
            - bad
          description: The level of `anomaly`.
        anomaly:
          type: number
          minimum: 0
          description: >-
            How strong the seam is, on one scale for every edge; higher is
            stronger.
        broken:
          type: array
          description: The stretches of the edge where the seam shows.
          items:
            $ref: '#/components/schemas/Range'
    Range:
      type: array
      description: Half-open pixel range `[start, end)` along an edge.
      items:
        type: integer
        minimum: 0
      minItems: 2
      maxItems: 2
  responses:
    NotFound:
      description: No job with this id (`not_found`).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.