Thanks.io Creatives Library API

Your Creatives library: saved pairings of an image template and a message template. Sending one by `creative_id` is the recommended way to send. Creatives are designed in your dashboard; these endpoints list and read them so your integration can find the right `creative_id`.

Operations 2

GET /creatives/ List All #
GET /creatives/{creativeId} Get #

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/thanks-io:thanks-io-creatives-library-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

thanks-io-creatives-library-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: thanks.io Creatives Library API
  description: Use the thanks.io API to send postcards, letters, notecards, windowless letters, and gift cards.
  contact:
    url: https://thanks.io
    email: support@thanks.io
  version: 1.0.0
servers:
- url: https://api.thanks.io/api/v2
  description: The main API server for thanks.io
security:
- bearerAuth: []
tags:
- name: Creatives Library
  description: 'Your Creatives library: saved pairings of an image template and a message template. Sending one by `creative_id` is the recommended way to send. Creatives are designed in your dashboard; these endpoints list and read them so your integration can find the right `creative_id`.'
paths:
  /creatives/:
    get:
      tags:
      - Creatives Library
      operationId: getCreatives
      summary: List All
      description: 'List the creatives in your Creatives library, 24 per page: the default creative of each type first, then most recently updated. A creative pairs an image template with a message template; send one by passing its `id` as `creative_id` to any send or estimate endpoint.'
      parameters:
      - $ref: '#/components/parameters/sub_account_id'
      - name: mailer_type
        in: query
        schema:
          type: string
          enum:
          - postcard
          - postcard6x9
          - postcard6x11
          - letter
          - windowlessletter
          - notecard
          - giftcard
          - magnacard
        description: 'Only return creatives of this type. `postcard` is 4x6. Use the type you will send: a 6x9 postcard send takes a `postcard6x9` creative.'
      - name: complete_only
        in: query
        schema:
          type: boolean
        description: Only return creatives with both sides present (letters need only a message). Only complete creatives can be sent. Pass `1` to turn the filter on.
      - name: search
        in: query
        schema:
          type: string
        description: Only return creatives whose name contains this text.
      - name: include_hidden
        in: query
        schema:
          type: boolean
        description: Include creatives hidden from the library. Pass `1` to turn it on.
      - name: page
        in: query
        schema:
          type: integer
        description: Page number.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/creative'
                  links:
                    $ref: '#/components/schemas/links'
                  meta:
                    $ref: '#/components/schemas/meta'
              example:
                data:
                - id: 501
                  name: Spring open house
                  mailer_type: postcard
                  postcard_size: 4x6
                  sub_account_id: null
                  source: user
                  hidden: false
                  default: true
                  preview_image_url: null
                  thumbnail_url: https://cdn.thanks.io/creative-thumbnails/501.png
                  share_url: https://dashboard.thanks.io/creatives/share/6f1c2e9a-8a7d-4b8e-9d37-1c2b3a4d5e6f
                  is_complete: true
                  needs: []
                  image_template:
                    id: 6
                    name: Spring open house
                    type: postcard
                    image: https://s3.amazonaws.com/cdn.thanks.io/user_image_library/1533645532.png
                    is_dynamic: false
                    dynamic_image_url: null
                    canva_id: null
                    default: false
                    created_from_creative_generation_id: null
                    deleted: false
                  message_template:
                    id: 12
                    name: Spring open house
                    type: postcard
                    content: Hi %FIRST_NAME%, spring is here!
                    handwriting_style_id: 7
                    custom_background_url: null
                    skip_creative_generation: false
                    default: false
                    deleted: false
                  back_background: null
                  created_at: '2026-09-27T00:00:00.000000Z'
                  updated_at: '2026-10-01T00:00:00.000000Z'
                links:
                  first: https://api.thanks.io/api/v2/creatives?page=1
                  last: https://api.thanks.io/api/v2/creatives?page=1
                  prev: null
                  next: null
                meta:
                  current_page: 1
                  from: 1
                  last_page: 1
                  path: https://api.thanks.io/api/v2/creatives
                  per_page: 24
                  to: 1
                  total: 1
        '403':
          $ref: '#/components/responses/Unauthorized'
  /creatives/{creativeId}:
    get:
      tags:
      - Creatives Library
      operationId: getCreative
      summary: Get
      description: Get one creative from your Creatives library, with the image and message templates it pairs.
      parameters:
      - name: creativeId
        in: path
        required: true
        schema:
          type: integer
        description: The creative's ID.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/creative'
              example:
                data:
                  id: 501
                  name: Spring open house
                  mailer_type: postcard
                  postcard_size: 4x6
                  sub_account_id: null
                  source: user
                  hidden: false
                  default: true
                  preview_image_url: null
                  thumbnail_url: https://cdn.thanks.io/creative-thumbnails/501.png
                  share_url: https://dashboard.thanks.io/creatives/share/6f1c2e9a-8a7d-4b8e-9d37-1c2b3a4d5e6f
                  is_complete: true
                  needs: []
                  image_template:
                    id: 6
                    name: Spring open house
                    type: postcard
                    image: https://s3.amazonaws.com/cdn.thanks.io/user_image_library/1533645532.png
                    is_dynamic: false
                    dynamic_image_url: null
                    canva_id: null
                    default: false
                    created_from_creative_generation_id: null
                    deleted: false
                  message_template:
                    id: 12
                    name: Spring open house
                    type: postcard
                    content: Hi %FIRST_NAME%, spring is here!
                    handwriting_style_id: 7
                    custom_background_url: null
                    skip_creative_generation: false
                    default: false
                    deleted: false
                  back_background: null
                  created_at: '2026-09-27T00:00:00.000000Z'
                  updated_at: '2026-10-01T00:00:00.000000Z'
        '403':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  responses:
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: Not Found
    Unauthorized:
      description: Access token is missing or invalid
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: Unauthorized
  schemas:
    creative:
      type: object
      description: 'A creative from your Creatives library: a saved pairing of an image template and a message template, sent exactly as saved by passing its `id` as `creative_id` to any send or estimate endpoint.'
      properties:
        id:
          type: integer
          description: Pass this as `creative_id` to send the creative.
        name:
          type: string
        mailer_type:
          type:
          - string
          - 'null'
          description: The type the creative sends as. `postcard` is 4x6.
        postcard_size:
          type:
          - string
          - 'null'
        sub_account_id:
          type:
          - integer
          - 'null'
        source:
          type:
          - string
          - 'null'
        hidden:
          type: boolean
        default:
          type: boolean
        preview_image_url:
          type:
          - string
          - 'null'
        thumbnail_url:
          type:
          - string
          - 'null'
        share_url:
          type:
          - string
          - 'null'
        is_complete:
          type: boolean
          description: 'Whether the creative can be sent: both sides present and not deleted (letters need only a message).'
        needs:
          type: array
          items:
            type: string
            enum:
            - front
            - message
          description: The sides an incomplete creative is missing.
        image_template:
          type:
          - object
          - 'null'
          description: The front. `deleted` is true when the template was deleted after the creative was made. `tracked_qr_url` is set when the front prints a tracked thanks.io QR code over the one in your uploaded design, and is the address its scans go to.
        message_template:
          type:
          - object
          - 'null'
          description: The message. `deleted` is true when the template was deleted after the creative was made.
        back_background:
          type:
          - object
          - 'null'
        created_at:
          type: string
        updated_at:
          type: string
    meta:
      type: object
      properties:
        current_page:
          type: integer
          example: 1
          description: Current page number
        from:
          type:
          - integer
          - 'null'
          example: 1
          description: Index of the first item on the current page
        last_page:
          type: integer
          example: 1
          description: Total number of pages
        path:
          type: string
          description: Base URL for the resource
        per_page:
          type: integer
          example: 25
          description: Number of items per page
        to:
          type:
          - integer
          - 'null'
          example: 1
          description: Index of the last item on the current page
        total:
          type: integer
          example: 1
          description: Total number of items
    links:
      type: object
      properties:
        first:
          type:
          - string
          - 'null'
          description: URL of the first page of results
        last:
          type:
          - string
          - 'null'
          description: URL of the last page of results
        prev:
          type:
          - string
          - 'null'
          description: URL of the previous page of results
        next:
          type:
          - string
          - 'null'
          description: URL of the next page of results
  parameters:
    sub_account_id:
      name: sub_account_id
      in: query
      description: Filter results by Sub Account ID.
      required: false
      schema:
        type: integer
      example: 1
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Bearer token authentication using your thanks.io API key
externalDocs:
  description: Learn more about thanks.io
  url: https://docs.thanks.io
x-mint:
  mcp:
    enabled: true
x-mcp:
  enabled: true