Ghost Member
A member represents a person who has signed up for a Ghost publication. Members can be free subscribers who receive newsletters, or paid subscribers with access to premium content through membership tiers. Members have associated labels for segmentation, newsletter subscriptions, and Stripe-based paid subscriptions.
Properties
| Name | Type | Description |
|---|---|---|
| id | string | Unique identifier for the member |
| uuid | string | Universally unique identifier for the member |
| string | Email address of the member, used as the primary identifier for signups | |
| name | stringnull | Display name of the member |
| note | stringnull | Internal note about the member, visible only to staff |
| geolocation | stringnull | Geolocation data captured at signup time, stored as a JSON string |
| status | string | Membership status based on subscription state |
| labels | array | Labels applied to the member for segmentation and filtering |
| subscriptions | array | Paid subscriptions associated with the member, managed through Stripe |
| newsletters | array | Newsletters the member is subscribed to receive |
| avatar_image | string | Gravatar URL generated from the member email address |
| email_count | integer | Total number of emails sent to this member |
| email_opened_count | integer | Total number of emails opened by this member |
| email_open_rate | numbernull | Email open rate as a percentage |
| created_at | string | ISO 8601 timestamp when the member signed up |
| updated_at | string | ISO 8601 timestamp when the member record was last updated |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://ghost.org/schemas/ghost/member.json",
"title": "Ghost Member",
"description": "A member represents a person who has signed up for a Ghost publication. Members can be free subscribers who receive newsletters, or paid subscribers with access to premium content through membership tiers. Members have associated labels for segmentation, newsletter subscriptions, and Stripe-based paid subscriptions.",
"type": "object",
"required": ["id", "email"],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Unique identifier for the member"
},
"uuid": {
"type": "string",
"format": "uuid",
"description": "Universally unique identifier for the member"
},
"email": {
"type": "string",
"format": "email",
"description": "Email address of the member, used as the primary identifier for signups"
},
"name": {
"type": ["string", "null"],
"description": "Display name of the member",
"maxLength": 191
},
"note": {
"type": ["string", "null"],
"description": "Internal note about the member, visible only to staff",
"maxLength": 2000
},
"geolocation": {
"type": ["string", "null"],
"description": "Geolocation data captured at signup time, stored as a JSON string"
},
"status": {
"type": "string",
"description": "Membership status based on subscription state",
"enum": ["free", "paid", "comped"]
},
"labels": {
"type": "array",
"description": "Labels applied to the member for segmentation and filtering",
"items": {
"$ref": "#/$defs/Label"
}
},
"subscriptions": {
"type": "array",
"description": "Paid subscriptions associated with the member, managed through Stripe",
"items": {
"$ref": "#/$defs/Subscription"
}
},
"newsletters": {
"type": "array",
"description": "Newsletters the member is subscribed to receive",
"items": {
"$ref": "#/$defs/NewsletterSubscription"
}
},
"avatar_image": {
"type": "string",
"format": "uri",
"description": "Gravatar URL generated from the member email address"
},
"email_count": {
"type": "integer",
"description": "Total number of emails sent to this member",
"minimum": 0
},
"email_opened_count": {
"type": "integer",
"description": "Total number of emails opened by this member",
"minimum": 0
},
"email_open_rate": {
"type": ["number", "null"],
"description": "Email open rate as a percentage",
"minimum": 0,
"maximum": 100
},
"created_at": {
"type": "string",
"format": "date-time",
"description": "ISO 8601 timestamp when the member signed up"
},
"updated_at": {
"type": "string",
"format": "date-time",
"description": "ISO 8601 timestamp when the member record was last updated"
}
},
"$defs": {
"Label": {
"type": "object",
"description": "A label for categorizing and segmenting members",
"required": ["name"],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Unique identifier for the label"
},
"name": {
"type": "string",
"description": "Display name of the label",
"minLength": 1,
"maxLength": 191
},
"slug": {
"type": "string",
"description": "URL-safe slug for the label",
"maxLength": 191
},
"created_at": {
"type": "string",
"format": "date-time",
"description": "Creation timestamp"
},
"updated_at": {
"type": "string",
"format": "date-time",
"description": "Last update timestamp"
}
}
},
"Subscription": {
"type": "object",
"description": "A paid subscription managed through Stripe, linking a member to a membership tier",
"properties": {
"id": {
"type": "string",
"description": "Stripe subscription identifier"
},
"customer": {
"type": "object",
"description": "Stripe customer associated with the subscription",
"properties": {
"id": {
"type": "string",
"description": "Stripe customer ID"
},
"name": {
"type": ["string", "null"],
"description": "Customer display name"
},
"email": {
"type": "string",
"format": "email",
"description": "Customer email address"
}
}
},
"status": {
"type": "string",
"description": "Current subscription status",
"enum": ["active", "trialing", "canceled", "unpaid", "past_due"]
},
"start_date": {
"type": "string",
"format": "date-time",
"description": "When the subscription started"
},
"default_payment_card_last4": {
"type": ["string", "null"],
"description": "Last four digits of the payment card on file",
"pattern": "^\\d{4}$"
},
"cancel_at_period_end": {
"type": "boolean",
"description": "Whether the subscription will cancel at the end of the current billing period"
},
"cancellation_reason": {
"type": ["string", "null"],
"description": "Reason provided for subscription cancellation"
},
"current_period_end": {
"type": "string",
"format": "date-time",
"description": "End date of the current billing period"
},
"price": {
"type": "object",
"description": "Pricing details for the subscription",
"properties": {
"id": {
"type": "string",
"description": "Stripe price identifier"
},
"nickname": {
"type": ["string", "null"],
"description": "Human-readable price name"
},
"amount": {
"type": "integer",
"description": "Price amount in the smallest currency unit (e.g., cents)",
"minimum": 0
},
"interval": {
"type": "string",
"description": "Billing interval",
"enum": ["month", "year"]
},
"currency": {
"type": "string",
"description": "ISO 4217 currency code",
"pattern": "^[A-Z]{3}$"
}
}
}
}
},
"NewsletterSubscription": {
"type": "object",
"description": "A newsletter that the member is subscribed to",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Newsletter identifier"
},
"name": {
"type": "string",
"description": "Newsletter display name"
},
"status": {
"type": "string",
"description": "Subscription status for this newsletter"
}
}
}
}
}
Work with this as data
Every JSON Schema 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 schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.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.
Call it yourself
curl for this page
curl "https://apis.io/api/v1/json-schemas/ghost-org-member"
curl "https://apis.io/api/v1/json-schemas?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.