post/channels/{channel_id}/messages/{message_id}/memes

Create meme from message

Saves a message attachment as a favorite meme.

create_meme_from_message

Parameters

NameInTypeDescription
channel_id*pathSnowflakeTypeThe ID of the channel
message_id*pathSnowflakeTypeThe ID of the message

Request body

application/json

json
{
  "type": "object",
  "properties": {
    "name": {
      "description": "Display name for the meme",
      "type": "string"
    },
    "alt_text": {
      "description": "Alternative text description for accessibility",
      "type": [
        "string",
        "null"
      ]
    },
    "tags": {
      "description": "Tags for categorizing and searching the meme",
      "default": [],
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "attachment_id": {
      "description": "ID of the message attachment to save as a meme",
      "anyOf": [
        {
          "$ref": "#/components/schemas/SnowflakeType"
        },
        {
          "type": "null"
        }
      ]
    },
    "embed_index": {
      "description": "Index of the message embed to save as a meme",
      "anyOf": [
        {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "name"
  ]
}

Responses

201

Success

json
{
  "type": "object",
  "properties": {
    "id": {
      "description": "Unique identifier for the favorite meme",
      "$ref": "#/components/schemas/SnowflakeStringType"
    },
    "user_id": {
      "description": "ID of the user who owns this favorite meme",
      "$ref": "#/components/schemas/SnowflakeStringType"
    },
    "name": {
      "type": "string",
      "description": "Display name of the meme"
    },
    "alt_text": {
      "description": "Alternative text description for accessibility",
      "type": [
        "string",
        "null"
      ]
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Tags for categorizing and searching the meme"
    },
    "attachment_id": {
      "description": "ID of the attachment storing the meme",
      "$ref": "#/components/schemas/SnowflakeStringType"
    },
    "filename": {
      "type": "string",
      "description": "Original filename of the meme"
    },
    "content_type": {
      "type": "string",
      "description": "MIME type of the meme file"
    },
    "content_hash": {
      "description": "Hash of the file content for deduplication",
      "type": [
        "string",
        "null"
      ]
    },
    "size": {
      "description": "File size in bytes",
      "$ref": "#/components/schemas/NonNegativeSafeIntegerType"
    },
    "width": {
      "description": "Width of the image or video in pixels",
      "anyOf": [
        {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        {
          "type": "null"
        }
      ]
    },
    "height": {
      "description": "Height of the image or video in pixels",
      "anyOf": [
        {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        {
          "type": "null"
        }
      ]
    },
    "duration": {
      "description": "Duration of the video in seconds",
      "type": [
        "number",
        "null"
      ]
    },
    "url": {
      "type": "string",
      "description": "CDN URL to access the meme"
    },
    "is_gifv": {
      "default": false,
      "description": "Whether the meme is a video converted from GIF",
      "type": "boolean"
    },
    "gif_slug": {
      "description": "Provider-issued slug for the GIF this meme was sourced from, if any",
      "type": [
        "string",
        "null"
      ]
    },
    "gif_provider": {
      "description": "Stable name of the GIF provider that issued gif_slug, if any. Legacy records may contain older provider names.",
      "type": [
        "string",
        "null"
      ]
    },
    "media": {
      "description": "Provider-issued format-name → media descriptor map for gif-sourced memes (mirrors GifResponse.media). Null on memes uploaded as plain attachments.",
      "anyOf": [
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "$ref": "#/components/schemas/GifMediaFormat"
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "placeholder": {
      "description": "Compact thumbhash placeholder produced by the media proxy at favorite-time. Clients render it as a low-res preview while the full media loads. Null when the proxy did not emit one.",
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "id",
    "user_id",
    "name",
    "tags",
    "attachment_id",
    "filename",
    "content_type",
    "size",
    "url",
    "is_gifv"
  ],
  "additionalProperties": false
}
400

Bad Request - The request was malformed or contained invalid data

json
{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "description": "Machine-readable error code"
    },
    "message": {
      "type": "string",
      "description": "Human-readable error message"
    },
    "errors": {
      "description": "Field-specific validation errors",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "Field path that failed validation"
          },
          "code": {
            "description": "Machine-readable validation error code",
            "type": "string"
          },
          "message": {
            "type": "string",
            "description": "Human-readable validation error message"
          }
        },
        "required": [
          "path",
          "message"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "code",
    "message"
  ],
  "additionalProperties": {}
}
401

Unauthorized - Authentication is required or the token is invalid

json
{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "description": "Machine-readable error code"
    },
    "message": {
      "type": "string",
      "description": "Human-readable error message"
    },
    "errors": {
      "description": "Field-specific validation errors",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "Field path that failed validation"
          },
          "code": {
            "description": "Machine-readable validation error code",
            "type": "string"
          },
          "message": {
            "type": "string",
            "description": "Human-readable validation error message"
          }
        },
        "required": [
          "path",
          "message"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "code",
    "message"
  ],
  "additionalProperties": {}
}
403

Forbidden - You do not have permission to perform this action

json
{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "description": "Machine-readable error code"
    },
    "message": {
      "type": "string",
      "description": "Human-readable error message"
    },
    "errors": {
      "description": "Field-specific validation errors",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "Field path that failed validation"
          },
          "code": {
            "description": "Machine-readable validation error code",
            "type": "string"
          },
          "message": {
            "type": "string",
            "description": "Human-readable validation error message"
          }
        },
        "required": [
          "path",
          "message"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "code",
    "message"
  ],
  "additionalProperties": {}
}
429

Too Many Requests - You are being rate limited

json
{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "description": "Machine-readable error code"
    },
    "message": {
      "type": "string",
      "description": "Human-readable error message"
    },
    "errors": {
      "description": "Field-specific validation errors",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "Field path that failed validation"
          },
          "code": {
            "description": "Machine-readable validation error code",
            "type": "string"
          },
          "message": {
            "type": "string",
            "description": "Human-readable validation error message"
          }
        },
        "required": [
          "path",
          "message"
        ],
        "additionalProperties": false
      }
    },
    "retry_after": {
      "type": "number",
      "description": "Seconds to wait before retrying"
    },
    "global": {
      "type": "boolean",
      "description": "Whether this is a global rate limit"
    }
  },
  "required": [
    "code",
    "message"
  ],
  "additionalProperties": {}
}
500

Internal Server Error - An unexpected error occurred

json
{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "description": "Machine-readable error code"
    },
    "message": {
      "type": "string",
      "description": "Human-readable error message"
    },
    "errors": {
      "description": "Field-specific validation errors",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "Field path that failed validation"
          },
          "code": {
            "description": "Machine-readable validation error code",
            "type": "string"
          },
          "message": {
            "type": "string",
            "description": "Human-readable validation error message"
          }
        },
        "required": [
          "path",
          "message"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "code",
    "message"
  ],
  "additionalProperties": {}
}