post
/channels/{channel_id}/messages/{message_id}/memesCreate meme from message
Saves a message attachment as a favorite meme.
create_meme_from_message
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| channel_id* | path | SnowflakeType | The ID of the channel |
| message_id* | path | SnowflakeType | The 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": {}
}