@platform/sdk-content
Typed TypeScript client for services/content. The page is generated from the SDK package source plus its generated OpenAPI types.
Installation
npm install @platform/sdk-contentYou’ll also need the shared auth/client helpers:
npm install @platform/hosts @platform/sdkQuick start
import { LoopClient } from "@platform/sdk";
import { platformHost, SERVICE_NAMES } from "@platform/hosts";
import { createContentClient } from "@platform/sdk-content";
const loop = new LoopClient({
clientId: process.env.LOOP_CLIENT_ID!,
clientSecret: process.env.LOOP_CLIENT_SECRET!,
redirectUri: "https://your-app.example.com/auth/loop/callback",
});
const content = createContentClient({
baseUrl: platformHost({ service: SERVICE_NAMES.CONTENT }),
accessToken: tokens.access_token,
});Use the convenience helpers below when the SDK exposes them, or call the typed endpoint methods directly with GET / POST / PATCH / DELETE.
Convenience helpers
getLearnArticle
Underlying REST endpoint: GET /v1/learn-articles/by-slug/\{slug\}
Parameters
slug: stringbrandId?: "loop-health" | "loop-bio-labs"
Return type
Promise<Result<LearnArticleBySlugResponse>>Example
const result = await content.getLearnArticle("<slug>", {
/* "loop-health" | "loop-bio-labs" */
});getPeptide
Underlying REST endpoint: GET /v1/peptides/by-slug/\{slug\}
Parameters
slug: stringbrandId?: string
Return type
Promise<Result<PeptideBySlugResponse>>Example
const result = await content.getPeptide("<slug>", "<brandId>");getPolicy
Underlying REST endpoint: GET /v1/policies/\{slug\}
Parameters
slug: string
Return type
Promise<Result<Policy>>Example
const result = await content.getPolicy("<slug>");listCoas
Underlying REST endpoint: GET /v1/coas
Parameters
opts?: ListCoasOpts
Return type
Promise<Result<CoasListResponse>>Example
const result = await content.listCoas({
/* ListCoasOpts */
});listFaqs
Underlying REST endpoint: GET /v1/faqs
Parameters
opts?: ListFaqsOpts
Return type
Promise<Result<FaqListResponse>>Example
const result = await content.listFaqs({
/* ListFaqsOpts */
});listLearnArticles
Underlying REST endpoint: GET /v1/learn-articles
Parameters
opts?: ListLearnArticlesOpts
Return type
Promise<Result<LearnArticlesListResponse>>Example
const result = await content.listLearnArticles({
/* ListLearnArticlesOpts */
});listPeptides
Underlying REST endpoint: GET /v1/peptides
Parameters
opts?: { brandId?: string; status?: string; page?: number; limit?: number; }
Return type
Promise<Result<PeptideListResponse>>Example
const result = await content.listPeptides(123);listPolicies
Underlying REST endpoint: GET /v1/policies
Parameters
opts?: ListPoliciesOpts
Return type
Promise<Result<PolicyListResponse>>Example
const result = await content.listPolicies({
/* ListPoliciesOpts */
});listProtocols
Underlying REST endpoint: GET /v1/stacks
Parameters
opts?: ListProtocolsOpts
Return type
Promise<Result<ProtocolListResult>>Example
const result = await content.listProtocols({
/* ListProtocolsOpts */
});resolveAutocard
Underlying REST endpoint: GET /v1/autocard/resolve
Parameters
type: stringid: string
Return type
Promise<Result<AutocardResponse>>Example
const result = await content.resolveAutocard("<type>", "<id>");savePolicy
Underlying REST endpoint: PUT /v1/policies/\{slug\}
Parameters
input: SavePolicyInput
Return type
Promise<Result<Policy>>Example
const result = await content.savePolicy({
/* SavePolicyInput */
});search
Underlying REST endpoint: GET /v1/search
Parameters
query: stringopts?: SearchOpts
Return type
Promise<Result<SearchResponse>>Example
const result = await content.search("<query>", {
/* SearchOpts */
});unfurl
Underlying REST endpoint: GET /v1/unfurl
Parameters
url: string
Return type
Promise<Result<UnfurlResponse>>Example
const result = await content.unfurl("<url>");Endpoint calls
GET /readyz
Underlying REST endpoint: GET /readyz
Parameters
None
Return type
Promise<{
data?: paths["/readyz"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/readyz");GET /v1/autocard/resolve
Underlying REST endpoint: GET /v1/autocard/resolve
Parameters
query: paths["/v1/autocard/resolve"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/autocard/resolve"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/autocard/resolve", {
params: {
query: {
/* paths["/v1/autocard/resolve"]["get"]["parameters"]["query"] */
},
},
});GET /v1/coas
Underlying REST endpoint: GET /v1/coas
Parameters
query?: paths["/v1/coas"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/coas"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/coas", {
params: {
query: {
/* paths["/v1/coas"]["get"]["parameters"]["query"] */
},
},
});POST /v1/coas
Underlying REST endpoint: POST /v1/coas
Parameters
body?: paths["/v1/coas"]["post"]["requestBody"]["content"]["application/json"]
Return type
Promise<{
data?: paths["/v1/coas"]["post"]["responses"]["201"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.POST("/v1/coas", {
body: {
/* paths["/v1/coas"]["post"]["requestBody"]["content"]["application/json"] */
},
});GET /v1/coas/{id}
Underlying REST endpoint: GET /v1/coas/\{id\}
Parameters
path: paths["/v1/coas/{id}"]["get"]["parameters"]["path"]
Return type
Promise<{
data?: paths["/v1/coas/{id}"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/coas/{id}", {
params: {
path: {
id: "<id>",
},
},
});GET /v1/faqs
Underlying REST endpoint: GET /v1/faqs
Parameters
query?: paths["/v1/faqs"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/faqs"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/faqs", {
params: {
query: {
/* paths["/v1/faqs"]["get"]["parameters"]["query"] */
},
},
});POST /v1/faqs
Underlying REST endpoint: POST /v1/faqs
Parameters
body?: paths["/v1/faqs"]["post"]["requestBody"]["content"]["application/json"]
Return type
Promise<{
data?: paths["/v1/faqs"]["post"]["responses"]["201"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.POST("/v1/faqs", {
body: {
/* paths["/v1/faqs"]["post"]["requestBody"]["content"]["application/json"] */
},
});GET /v1/faqs/{id}
Underlying REST endpoint: GET /v1/faqs/\{id\}
Parameters
path: paths["/v1/faqs/{id}"]["get"]["parameters"]["path"]
Return type
Promise<{
data?: paths["/v1/faqs/{id}"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/faqs/{id}", {
params: {
path: {
id: "<id>",
},
},
});GET /v1/goals
Underlying REST endpoint: GET /v1/goals
Parameters
query?: paths["/v1/goals"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/goals"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/goals", {
params: {
query: {
/* paths["/v1/goals"]["get"]["parameters"]["query"] */
},
},
});POST /v1/goals
Underlying REST endpoint: POST /v1/goals
Parameters
body?: paths["/v1/goals"]["post"]["requestBody"]["content"]["application/json"]
Return type
Promise<{
data?: paths["/v1/goals"]["post"]["responses"]["201"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.POST("/v1/goals", {
body: {
/* paths["/v1/goals"]["post"]["requestBody"]["content"]["application/json"] */
},
});GET /v1/goals/{id}
Underlying REST endpoint: GET /v1/goals/\{id\}
Parameters
path: paths["/v1/goals/{id}"]["get"]["parameters"]["path"]
Return type
Promise<{
data?: paths["/v1/goals/{id}"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/goals/{id}", {
params: {
path: {
id: "<id>",
},
},
});GET /v1/learn-articles
Underlying REST endpoint: GET /v1/learn-articles
Parameters
query?: paths["/v1/learn-articles"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/learn-articles"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/learn-articles", {
params: {
query: {
/* paths["/v1/learn-articles"]["get"]["parameters"]["query"] */
},
},
});POST /v1/learn-articles
Underlying REST endpoint: POST /v1/learn-articles
Parameters
body?: paths["/v1/learn-articles"]["post"]["requestBody"]["content"]["application/json"]
Return type
Promise<{
data?: paths["/v1/learn-articles"]["post"]["responses"]["201"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.POST("/v1/learn-articles", {
body: {
/* paths["/v1/learn-articles"]["post"]["requestBody"]["content"]["application/json"] */
},
});GET /v1/learn-articles/by-slug/{slug}
Underlying REST endpoint: GET /v1/learn-articles/by-slug/\{slug\}
Parameters
path: paths["/v1/learn-articles/by-slug/{slug}"]["get"]["parameters"]["path"]query?: paths["/v1/learn-articles/by-slug/{slug}"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/learn-articles/by-slug/{slug}"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/learn-articles/by-slug/{slug}", {
params: {
path: {
slug: "<slug>",
},
query: {
/* paths["/v1/learn-articles/by-slug/{slug}"]["get"]["parameters"]["query"] */
},
},
});GET /v1/media
Underlying REST endpoint: GET /v1/media
Parameters
query?: paths["/v1/media"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/media"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/media", {
params: {
query: {
/* paths["/v1/media"]["get"]["parameters"]["query"] */
},
},
});GET /v1/media/{id}
Underlying REST endpoint: GET /v1/media/\{id\}
Parameters
path: paths["/v1/media/{id}"]["get"]["parameters"]["path"]
Return type
Promise<{
data?: paths["/v1/media/{id}"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/media/{id}", {
params: {
path: {
id: "<id>",
},
},
});GET /v1/pages
Underlying REST endpoint: GET /v1/pages
Parameters
query?: paths["/v1/pages"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/pages"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/pages", {
params: {
query: {
/* paths["/v1/pages"]["get"]["parameters"]["query"] */
},
},
});GET /v1/pages/{id}
Underlying REST endpoint: GET /v1/pages/\{id\}
Parameters
path: paths["/v1/pages/{id}"]["get"]["parameters"]["path"]
Return type
Promise<{
data?: paths["/v1/pages/{id}"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/pages/{id}", {
params: {
path: {
id: "<id>",
},
},
});GET /v1/peptides
Underlying REST endpoint: GET /v1/peptides
Parameters
query?: paths["/v1/peptides"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/peptides"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/peptides", {
params: {
query: {
/* paths["/v1/peptides"]["get"]["parameters"]["query"] */
},
},
});POST /v1/peptides
Underlying REST endpoint: POST /v1/peptides
Parameters
body?: paths["/v1/peptides"]["post"]["requestBody"]["content"]["application/json"]
Return type
Promise<{
data?: paths["/v1/peptides"]["post"]["responses"]["201"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.POST("/v1/peptides", {
body: {
/* paths["/v1/peptides"]["post"]["requestBody"]["content"]["application/json"] */
},
});GET /v1/peptides/{id}
Underlying REST endpoint: GET /v1/peptides/\{id\}
Parameters
path: paths["/v1/peptides/{id}"]["get"]["parameters"]["path"]
Return type
Promise<{
data?: paths["/v1/peptides/{id}"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/peptides/{id}", {
params: {
path: {
id: "<id>",
},
},
});GET /v1/peptides/by-slug/{slug}
Underlying REST endpoint: GET /v1/peptides/by-slug/\{slug\}
Parameters
path: paths["/v1/peptides/by-slug/{slug}"]["get"]["parameters"]["path"]query?: paths["/v1/peptides/by-slug/{slug}"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/peptides/by-slug/{slug}"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/peptides/by-slug/{slug}", {
params: {
path: {
slug: "<slug>",
},
query: {
/* paths["/v1/peptides/by-slug/{slug}"]["get"]["parameters"]["query"] */
},
},
});GET /v1/policies
Underlying REST endpoint: GET /v1/policies
Parameters
query?: paths["/v1/policies"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/policies"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/policies", {
params: {
query: {
/* paths["/v1/policies"]["get"]["parameters"]["query"] */
},
},
});GET /v1/policies/{slug}
Underlying REST endpoint: GET /v1/policies/\{slug\}
Parameters
path: paths["/v1/policies/{slug}"]["get"]["parameters"]["path"]
Return type
Promise<{
data?: paths["/v1/policies/{slug}"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/policies/{slug}", {
params: {
path: {
slug: "<slug>",
},
},
});PUT /v1/policies/{slug}
Underlying REST endpoint: PUT /v1/policies/\{slug\}
Parameters
path: paths["/v1/policies/{slug}"]["put"]["parameters"]["path"]body?: paths["/v1/policies/{slug}"]["put"]["requestBody"]["content"]["application/json"]
Return type
Promise<{
data?: paths["/v1/policies/{slug}"]["put"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.PUT("/v1/policies/{slug}", {
params: {
path: {
slug: "<slug>",
},
},
body: {
/* paths["/v1/policies/{slug}"]["put"]["requestBody"]["content"]["application/json"] */
},
});GET /v1/posts
Underlying REST endpoint: GET /v1/posts
Parameters
query?: paths["/v1/posts"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/posts"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/posts", {
params: {
query: {
/* paths["/v1/posts"]["get"]["parameters"]["query"] */
},
},
});GET /v1/posts/{id}
Underlying REST endpoint: GET /v1/posts/\{id\}
Parameters
path: paths["/v1/posts/{id}"]["get"]["parameters"]["path"]
Return type
Promise<{
data?: paths["/v1/posts/{id}"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/posts/{id}", {
params: {
path: {
id: "<id>",
},
},
});GET /v1/protocol-details/{slug}
Underlying REST endpoint: GET /v1/protocol-details/\{slug\}
Parameters
path: paths["/v1/protocol-details/{slug}"]["get"]["parameters"]["path"]query?: paths["/v1/protocol-details/{slug}"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/protocol-details/{slug}"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/protocol-details/{slug}", {
params: {
path: {
slug: "<slug>",
},
query: {
/* paths["/v1/protocol-details/{slug}"]["get"]["parameters"]["query"] */
},
},
});GET /v1/research-papers
Underlying REST endpoint: GET /v1/research-papers
Parameters
query?: paths["/v1/research-papers"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/research-papers"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/research-papers", {
params: {
query: {
/* paths["/v1/research-papers"]["get"]["parameters"]["query"] */
},
},
});POST /v1/research-papers
Underlying REST endpoint: POST /v1/research-papers
Parameters
body?: paths["/v1/research-papers"]["post"]["requestBody"]["content"]["application/json"]
Return type
Promise<{
data?: paths["/v1/research-papers"]["post"]["responses"]["201"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.POST("/v1/research-papers", {
body: {
/* paths["/v1/research-papers"]["post"]["requestBody"]["content"]["application/json"] */
},
});GET /v1/research-papers/{id}
Underlying REST endpoint: GET /v1/research-papers/\{id\}
Parameters
path: paths["/v1/research-papers/{id}"]["get"]["parameters"]["path"]
Return type
Promise<{
data?: paths["/v1/research-papers/{id}"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/research-papers/{id}", {
params: {
path: {
id: "<id>",
},
},
});GET /v1/search
Underlying REST endpoint: GET /v1/search
Parameters
query: paths["/v1/search"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/search"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/search", {
params: {
query: {
/* paths["/v1/search"]["get"]["parameters"]["query"] */
},
},
});GET /v1/stacks
Underlying REST endpoint: GET /v1/stacks
Parameters
query?: paths["/v1/stacks"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/stacks"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/stacks", {
params: {
query: {
/* paths["/v1/stacks"]["get"]["parameters"]["query"] */
},
},
});POST /v1/stacks
Underlying REST endpoint: POST /v1/stacks
Parameters
body?: paths["/v1/stacks"]["post"]["requestBody"]["content"]["application/json"]
Return type
Promise<{
data?: paths["/v1/stacks"]["post"]["responses"]["201"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.POST("/v1/stacks", {
body: {
/* paths["/v1/stacks"]["post"]["requestBody"]["content"]["application/json"] */
},
});GET /v1/stacks/{id}
Underlying REST endpoint: GET /v1/stacks/\{id\}
Parameters
path: paths["/v1/stacks/{id}"]["get"]["parameters"]["path"]
Return type
Promise<{
data?: paths["/v1/stacks/{id}"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/stacks/{id}", {
params: {
path: {
id: "<id>",
},
},
});GET /v1/testimonials
Underlying REST endpoint: GET /v1/testimonials
Parameters
query?: paths["/v1/testimonials"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/testimonials"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/testimonials", {
params: {
query: {
/* paths["/v1/testimonials"]["get"]["parameters"]["query"] */
},
},
});POST /v1/testimonials
Underlying REST endpoint: POST /v1/testimonials
Parameters
body?: paths["/v1/testimonials"]["post"]["requestBody"]["content"]["application/json"]
Return type
Promise<{
data?: paths["/v1/testimonials"]["post"]["responses"]["201"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.POST("/v1/testimonials", {
body: {
/* paths["/v1/testimonials"]["post"]["requestBody"]["content"]["application/json"] */
},
});GET /v1/testimonials/{id}
Underlying REST endpoint: GET /v1/testimonials/\{id\}
Parameters
path: paths["/v1/testimonials/{id}"]["get"]["parameters"]["path"]
Return type
Promise<{
data?: paths["/v1/testimonials/{id}"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/testimonials/{id}", {
params: {
path: {
id: "<id>",
},
},
});GET /v1/unfurl
Underlying REST endpoint: GET /v1/unfurl
Parameters
query: paths["/v1/unfurl"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/unfurl"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await content.GET("/v1/unfurl", {
params: {
query: {
/* paths["/v1/unfurl"]["get"]["parameters"]["query"] */
},
},
});