Personality — entry 004 of 17

Dev.to

Verified Sep 2026

Dev.to's API (built on the open-source Forem platform) exposes articles, users, comments and other community content as JSON, with most read endpoints open to the public and write/user-scoped endpoints requiring a key. A live GET against the real gateway, dev.to/api/articles, returned genuine article JSON while carrying Access-Control-Allow-Origin: *, resolving cors unknown -> yes; no key was required for this public read call, though write endpoints still require the documented API Key. Free for community use with no paid tier — pricingModel free.

articlescommunitybloggingdeveloper-content
AuthenticationAPI KeySign up with the provider to obtain credentials.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSONResponses can be requested as JSON.

GreatAPIs Score

Score84out of 100
Authentication15/25API key required
Pricing20/20Free to use
Docs20/20Machine-readable spec file bundled
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 84 on greatapis.com
<a href="https://greatapis.com/api/dev-to/"><img src="https://greatapis.com/badge/dev-to.svg" alt="Scored 84 on greatapis.com"></a>

Auth quickstart

  1. Sign up with the provider to get an API key.
  2. Send it on every request as a headerapi-key: <key>
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Endpoints

Servers
https://dev.to
Auth
api-key
agent_sessions5
GET/api/agent_sessionslist the authenticated user's agent sessions
Responses
StatusDescriptionSchema
200successful
401unauthorized
POST/api/agent_sessionsupload a new agent session
Request body

application/json

Responses
StatusDescriptionSchema
201createdAgentSessionIndex
401unauthorized
422unprocessable
POST/api/agent_sessions/presignrequest a presigned URL to upload raw session transcript to S3
Responses
StatusDescriptionSchema
200successful
401unauthorized
503service unavailable
GET/api/agent_sessions/{id}show details for an agent session
Parameters
NameInRequiredType
idpathyesstring
Responses
StatusDescriptionSchema
200successfulAgentSessionShow
401unauthorized
404not found
GET/api/agent_sessions/{id}/raw_urlrequest a presigned S3 GET URL to download the raw session transcript
Parameters
NameInRequiredType
idpathyesstring
Responses
StatusDescriptionSchema
200successful
401unauthorized
404not found
analytics8
GET/api/analytics/dashboardRetrieve dashboard analytics bundle
Parameters
NameInRequiredType
startquerynostring
endquerynostring
article_idquerynointeger
organization_idquerynointeger
Responses
StatusDescriptionSchema
200successful
GET/api/analytics/follower_engagementRetrieve follower engagement analytics
Parameters
NameInRequiredType
startquerynostring
endquerynostring
Responses
StatusDescriptionSchema
200successful
GET/api/analytics/heatmapRetrieve heatmap activity
Parameters
NameInRequiredType
endquerynostring
Responses
StatusDescriptionSchema
200successful
GET/api/analytics/historicalRetrieve historical analytics
Parameters
NameInRequiredType
startqueryyesstring
endquerynostring
article_idquerynointeger
organization_idquerynointeger
Responses
StatusDescriptionSchema
200successful
GET/api/analytics/past_dayRetrieve analytics for the past day
Parameters
NameInRequiredType
article_idquerynointeger
organization_idquerynointeger
Responses
StatusDescriptionSchema
200successful
GET/api/analytics/referrersRetrieve referrer analytics
Parameters
NameInRequiredType
startquerynostring
endquerynostring
article_idquerynointeger
organization_idquerynointeger
Responses
StatusDescriptionSchema
200successful
GET/api/analytics/top_contributorsRetrieve top contributors analytics
Parameters
NameInRequiredType
startquerynostring
endquerynostring
article_idquerynointeger
organization_idquerynointeger
Responses
StatusDescriptionSchema
200successful
GET/api/analytics/totalsRetrieve analytics totals
Parameters
NameInRequiredType
article_idquerynointeger
organization_idquerynointeger
Responses
StatusDescriptionSchema
200successful
articles13
GET/api/articlesPublished articles
Parameters
NameInRequiredType
pagequerynointeger
per_pagequerynointeger
tagquerynostring
tagsquerynostring
tags_excludequerynostring
usernamequerynostring
statequerynostring
topquerynointeger
collection_idquerynointeger
Responses
StatusDescriptionSchema
200A List of Articles
POST/api/articlesPublish article
Request body

application/jsonArticle

Responses
StatusDescriptionSchema
201An Article
401Unauthorized
422Unprocessable Entity
GET/api/articles/latestPublished articles sorted by published date
Parameters
NameInRequiredType
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200A List of Articles
GET/api/articles/meUser's articles
Parameters
NameInRequiredType
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200A List of the authenticated user's Articles
401Unauthorized
GET/api/articles/me/allUser's all articles
Parameters
NameInRequiredType
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200A List of the authenticated user's Articles
401Unauthorized
GET/api/articles/me/publishedUser's published articles
Parameters
NameInRequiredType
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200A List of the authenticated user's Articles
401Unauthorized
GET/api/articles/me/unpublishedUser's unpublished articles
Parameters
NameInRequiredType
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200A List of the authenticated user's Articles
401Unauthorized
GET/api/articles/searchSearch for articles
Parameters
NameInRequiredType
qquerynostring
topquerynointeger
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200A List of Articles
GET/api/articles/semantic_searchPerform a semantic fuzzy search on articles
Parameters
NameInRequiredType
qqueryyesstring
per_pagequerynointeger
pagequerynointeger
thresholdquerynonumber
Responses
StatusDescriptionSchema
200successful
400bad request
401unauthorized
GET/api/articles/{id}Published article by id
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200An Article
404Article Not Found
PUT/api/articles/{id}Update an article by id
Parameters
NameInRequiredType
idpathyesinteger
Request body

application/jsonArticle

Responses
StatusDescriptionSchema
200An Article
401Unauthorized
404Article Not Found
422Unprocessable Entity
PUT/api/articles/{id}/unpublishUnpublish an article
Parameters
NameInRequiredType
idpathyesinteger
notequerynostring
Responses
StatusDescriptionSchema
204Article successfully unpublished
401Unauthorized
404Article Not Found
GET/api/articles/{username}/{slug}Published article by path
Parameters
NameInRequiredType
usernamepathyesstring
slugpathyesstring
Responses
StatusDescriptionSchema
200An Article
404Article Not Found
badge_achievements4
GET/api/badge_achievementsRetrieve all badge achievements
Parameters
NameInRequiredType
pagequerynointeger
Responses
StatusDescriptionSchema
200successful
POST/api/badge_achievementsCreate a badge achievement
Request body

application/json

Responses
StatusDescriptionSchema
201createdBadgeAchievement
409conflict
422unprocessable
GET/api/badge_achievements/{id}Retrieve a badge achievement's details
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200successfulBadgeAchievement
DELETE/api/badge_achievements/{id}Delete a badge achievement
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
204no content
badges5
GET/api/badgesRetrieve all badges
Parameters
NameInRequiredType
pagequerynointeger
Responses
StatusDescriptionSchema
200successful
POST/api/badgesCreate a badge
Request body

application/json

Responses
StatusDescriptionSchema
201createdBadge
GET/api/badges/{id}Retrieve a badge's details
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200successfulBadge
PATCH/api/badges/{id}Update a badge
Parameters
NameInRequiredType
idpathyesinteger
Request body

application/json

Responses
StatusDescriptionSchema
200successfulBadge
DELETE/api/badges/{id}Delete a badge
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
204no content
billboards5
GET/api/billboardsBillboards
Responses
StatusDescriptionSchema
200successful
401unauthorized
POST/api/billboardsCreate a billboard
Request body

application/json

Responses
StatusDescriptionSchema
201A billboard
401unauthorized
422unprocessable
GET/api/billboards/{id}A billboard (by id)
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200successful
401unauthorized
404Unknown Billboard ID
PUT/api/billboards/{id}Update a billboard by ID
Parameters
NameInRequiredType
idpathyesinteger
Request body

application/json

Responses
StatusDescriptionSchema
200successful
401unauthorized
404not found
PUT/api/billboards/{id}/unpublishUnpublish a billboard
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
204no content
401unauthorized
404not found
comments2
GET/api/commentsComments
Parameters
NameInRequiredType
pagequerynostring
per_pagequerynointeger
a_idquerynostring
p_idquerynostring
Responses
StatusDescriptionSchema
200A List of Comments
404Resource Not Found
GET/api/comments/{id}Comment by id
Parameters
NameInRequiredType
idpathyesstring
Responses
StatusDescriptionSchema
200A List of the Comments
404Comment Not Found
concepts11
GET/api/admin/conceptsRetrieve all concepts (Admin)
Parameters
NameInRequiredType
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200successful
POST/api/admin/conceptsCreate a concept (Admin)
Request body

application/json

Responses
StatusDescriptionSchema
201createdConcept
GET/api/admin/concepts/{id}Retrieve concept detail (Admin)
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200successfulConcept
PATCH/api/admin/concepts/{id}Update a concept (Admin)
Parameters
NameInRequiredType
idpathyesinteger
Request body

application/json

Responses
StatusDescriptionSchema
200successfulConcept
DELETE/api/admin/concepts/{id}Delete a concept (Admin)
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
204no content
POST/api/admin/concepts/{id}/trigger_lookbackTrigger concept lookback backfill (Admin)
Parameters
NameInRequiredType
idpathyesinteger
Request body

application/json

Responses
StatusDescriptionSchema
200successful
GET/api/conceptsRetrieve all accessible concepts
Parameters
NameInRequiredType
pagequerynointeger
per_pagequerynointeger
daysquerynointeger
Responses
StatusDescriptionSchema
200successful
401unauthorized
GET/api/concepts/searchPerform a semantic fuzzy search on concepts
Parameters
NameInRequiredType
qqueryyesstring
per_pagequerynointeger
thresholdquerynonumber
Responses
StatusDescriptionSchema
200successful
400bad request
401unauthorized
GET/api/concepts/{id}Retrieve details of a concept
Parameters
NameInRequiredType
idpathyesinteger
daysquerynointeger
Responses
StatusDescriptionSchema
200successfulConcept
401unauthorized
PATCH/api/concepts/{id}Update a concept's metadata
Parameters
NameInRequiredType
idpathyesinteger
Request body

application/json

Responses
StatusDescriptionSchema
200successfulConcept
GET/api/concepts/{id}/articlesRetrieve articles mapped to a concept
Parameters
NameInRequiredType
idpathyesinteger
sortquerynostring
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200successful
events5
GET/api/eventsRetrieve events
Parameters
NameInRequiredType
type_ofquerynostring
Responses
StatusDescriptionSchema
200A list of events
POST/api/eventsCreate an event
Request body

application/jsonEventInput

Responses
StatusDescriptionSchema
201Event createdEvent
GET/api/events/{id}Retrieve an event
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200The requested eventEvent
PATCH/api/events/{id}Update an event
Parameters
NameInRequiredType
idpathyesinteger
Request body

application/jsonEventInput

Responses
StatusDescriptionSchema
200Event updatedEvent
DELETE/api/events/{id}Delete an event
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
204Event deleted
feedback_messages1
PATCH/api/feedback_messages/{id}Update a feedback message's status (Admin)
Parameters
NameInRequiredType
idpathyesinteger
Request body

application/json

Responses
StatusDescriptionSchema
200successful
followed_tags1
GET/api/follows/tagsFollowed Tags
Responses
StatusDescriptionSchema
200A List of followed tags
401unauthorized
followers1
GET/api/followers/usersFollowers
Parameters
NameInRequiredType
pagequerynointeger
per_pagequerynointeger
sortquerynostring
Responses
StatusDescriptionSchema
200A List of followers
401unauthorized
follows1
POST/api/followsFollow users or organizations
Request body

application/json

Responses
StatusDescriptionSchema
200successful
health_checks3
GET/api/health_checks/appCheck app health
Parameters
NameInRequiredType
health-check-tokenheadernostring
Responses
StatusDescriptionSchema
200successful
GET/api/health_checks/cacheCheck cache connection
Parameters
NameInRequiredType
health-check-tokenheadernostring
Responses
StatusDescriptionSchema
200successful
GET/api/health_checks/databaseCheck database connection
Parameters
NameInRequiredType
health-check-tokenheadernostring
Responses
StatusDescriptionSchema
200successful
instance1
GET/api/instanceRetrieve instance configuration details
Responses
StatusDescriptionSchema
200successful
openapi1
GET/api/v1/openapi.jsonOpenAPI description
Responses
StatusDescriptionSchema
200The OpenAPI description
organizations8
GET/api/organizationsOrganizations
Parameters
NameInRequiredType
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200A list of all organizations
POST/api/organizationsCreate an Organization
Request body

application/jsonOrganization

Responses
StatusDescriptionSchema
201Successful
401Unauthorized
422Unprocessable Entity
GET/api/organizations/{id}An organization (by id)
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200An Organization
404Not Found
PUT/api/organizations/{id}Update an organization by id
Parameters
NameInRequiredType
idpathyesinteger
Request body

application/jsonOrganization

Responses
StatusDescriptionSchema
200An Organization
401Unauthorized
404organization Not Found
422Unprocessable Entity
DELETE/api/organizations/{id}Delete an Organization by id
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200successful
401unauthorized
GET/api/organizations/{organization_id_or_username}/articlesOrganization's Articles
Parameters
NameInRequiredType
organization_id_or_usernamepathyesstring
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200An Organization's Articles (with ID)
404Not Found
GET/api/organizations/{organization_id_or_username}/usersOrganization's users
Parameters
NameInRequiredType
organization_id_or_usernamepathyesstring
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200An Organization's users (with ID)
404Not Found
GET/api/organizations/{username}An organization (by username)
Parameters
NameInRequiredType
usernamepathyesstring
Responses
StatusDescriptionSchema
200An Organization
404Not Found
pages5
GET/api/pagesshow details for all pages
Responses
StatusDescriptionSchema
200successful
POST/api/pagespages
Request body

application/json

Responses
StatusDescriptionSchema
200successful
401unauthorized
422unprocessable
GET/api/pages/{id}show details for a page
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200successfulPage
PUT/api/pages/{id}update details for a page
Parameters
NameInRequiredType
idpathyesinteger
Request body

application/jsonPage

Responses
StatusDescriptionSchema
200successfulPage
401unauthorized
422unprocessable
DELETE/api/pages/{id}remove a page
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200successfulPage
401unauthorized
422unprocessable
podcast_episodes1
GET/api/podcast_episodesPodcast Episodes
Parameters
NameInRequiredType
pagequerynointeger
per_pagequerynointeger
usernamequerynostring
Responses
StatusDescriptionSchema
200A List of Podcast episodes filtered by username
404Unknown Podcast username
profile images1
GET/api/profile_images/{username}A Users or organizations profile image
Parameters
NameInRequiredType
usernamepathyesstring
Responses
StatusDescriptionSchema
200An object containing profile image details
404Resource Not Found
reactions2
POST/api/reactionscreate reaction
Parameters
NameInRequiredType
categoryqueryyesstring
reactable_idqueryyesinteger
reactable_typequeryyesstring
Responses
StatusDescriptionSchema
200successful
401unauthorized
POST/api/reactions/toggletoggle reaction
Parameters
NameInRequiredType
categoryqueryyesstring
reactable_idqueryyesinteger
reactable_typequeryyesstring
Responses
StatusDescriptionSchema
200successful
401unauthorized
readinglist1
GET/api/readinglistReadinglist
Parameters
NameInRequiredType
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200A list of articles in the users readinglist
401Unauthorized
recommended_articles_lists4
GET/api/recommended_articles_listsRetrieve all recommended articles lists
Parameters
NameInRequiredType
pagequerynointeger
searchquerynostring
Responses
StatusDescriptionSchema
200successful
POST/api/recommended_articles_listsCreate or update a recommended articles list
Request body

application/json

Responses
StatusDescriptionSchema
201createdRecommendedArticlesList
GET/api/recommended_articles_lists/{id}Retrieve details of a recommended articles list
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200successfulRecommendedArticlesList
PATCH/api/recommended_articles_lists/{id}Update a recommended articles list
Parameters
NameInRequiredType
idpathyesinteger
Request body

application/json

Responses
StatusDescriptionSchema
200successfulRecommendedArticlesList
request_redirects5
GET/api/admin/request_redirectsRetrieve all request redirects (Admin)
Parameters
NameInRequiredType
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200successful
POST/api/admin/request_redirectsCreate a request redirect (Admin)
Request body

application/json

Responses
StatusDescriptionSchema
201createdRequestRedirect
GET/api/admin/request_redirects/{id}Retrieve a request redirect's details (Admin)
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200successfulRequestRedirect
PATCH/api/admin/request_redirects/{id}Update a request redirect (Admin)
Parameters
NameInRequiredType
idpathyesinteger
Request body

application/json

Responses
StatusDescriptionSchema
200successfulRequestRedirect
DELETE/api/admin/request_redirects/{id}Delete a request redirect (Admin)
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
204no content
segments7
GET/api/segmentsManually managed audience segments
Parameters
NameInRequiredType
per_pagequerynointeger
Responses
StatusDescriptionSchema
200A List of manually managed audience segments
401Unauthorized
POST/api/segmentsCreate a manually managed audience segment
Responses
StatusDescriptionSchema
201A manually managed audience segment
401Unauthorized
GET/api/segments/{id}A manually managed audience segment
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200The audience segment
401Unauthorized
404Audience Segment Not Found
DELETE/api/segments/{id}Delete a manually managed audience segment
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200The deleted audience segment
401Unauthorized
404Audience Segment Not Found
409Audience segment could not be deleted
PUT/api/segments/{id}/add_usersAdd users to a manually managed audience segment
Parameters
NameInRequiredType
idpathyesinteger
Request body

application/jsonSegmentUserIds

Responses
StatusDescriptionSchema
200Result of adding the users to the segment.
401Unauthorized
404Audience Segment Not Found
422Unprocessable Entity
PUT/api/segments/{id}/remove_usersRemove users from a manually managed audience segment
Parameters
NameInRequiredType
idpathyesinteger
Request body

application/jsonSegmentUserIds

Responses
StatusDescriptionSchema
200Result of removing the users to the segment.
401Unauthorized
404Audience Segment Not Found
422Unprocessable Entity
GET/api/segments/{id}/usersUsers in a manually managed audience segment
Parameters
NameInRequiredType
idpathyesinteger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200A List of users in the audience segment
401Unauthorized
404Audience Segment Not Found
subforems1
GET/api/subforemsRetrieve all discoverable subforems
Responses
StatusDescriptionSchema
200successful
surveys7
GET/api/surveysList surveys
Parameters
NameInRequiredType
pagequerynointeger
per_pagequerynointeger
activequerynoboolean
Responses
StatusDescriptionSchema
200A list of surveys
401Unauthorized
POST/api/surveysCreate a survey
Request body

application/jsonSurveyInput

Responses
StatusDescriptionSchema
201CreatedSurveyWithPolls
401Unauthorized
422Unprocessable Entity
GET/api/surveys/{id_or_slug}A survey with polls
Parameters
NameInRequiredType
id_or_slugpathyesstring
Responses
StatusDescriptionSchema
200A survey with nested polls and optionsSurveyWithPolls
401Unauthorized
404Not found
PATCH/api/surveys/{id_or_slug}Update a survey
Parameters
NameInRequiredType
id_or_slugpathyesstring
Request body

application/jsonSurveyInput

Responses
StatusDescriptionSchema
200SuccessfulSurveyWithPolls
401Unauthorized
404Not Found
422Unprocessable Entity
DELETE/api/surveys/{id_or_slug}Delete a survey
Parameters
NameInRequiredType
id_or_slugpathyesstring
Responses
StatusDescriptionSchema
204No Content
401Unauthorized
404Not Found
422Unprocessable Entity
GET/api/surveys/{id_or_slug}/poll_text_responsesSurvey poll text responses
Parameters
NameInRequiredType
id_or_slugpathyesstring
per_pagequerynointeger
afterquerynointeger
Responses
StatusDescriptionSchema
200Poll text responses
401Unauthorized
404Not found
GET/api/surveys/{id_or_slug}/poll_votesSurvey poll votes
Parameters
NameInRequiredType
id_or_slugpathyesstring
per_pagequerynointeger
afterquerynointeger
Responses
StatusDescriptionSchema
200Poll votes
401Unauthorized
404Not found
tags1
GET/api/tagsTags
Parameters
NameInRequiredType
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200A List of all tags
trends3
GET/api/trendsTrends
Parameters
NameInRequiredType
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200A List of Trends
GET/api/trends/{id_or_slug}A Trend
Parameters
NameInRequiredType
id_or_slugpathyesstring
Responses
StatusDescriptionSchema
200A Trend
404Trend Not Found
GET/api/trends/{trend_id_or_slug}/articlesArticles in a Trend
Parameters
NameInRequiredType
trend_id_or_slugpathyesstring
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200A List of Articles in the Trend
404Trend Not Found
users25
GET/api/admin/usersList all users (Admin)
Parameters
NameInRequiredType
pagequerynointeger
per_pagequerynointeger
emailquerynostring
usernamequerynostring
Responses
StatusDescriptionSchema
200successful
POST/api/admin/usersInvite a User
Request body

application/jsonUserInviteParam

Responses
StatusDescriptionSchema
200Successful
POST/api/admin/users/identities/bulkBulk link identities (Admin)
Request body

application/json

Responses
StatusDescriptionSchema
200successful
GET/api/admin/users/{id}Get user detail (Admin)
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200successful
PATCH/api/admin/users/{id}Update user profile (Admin)
Parameters
NameInRequiredType
idpathyesinteger
Request body

application/json

Responses
StatusDescriptionSchema
200successful
PUT/api/admin/users/{id}/emailUpdate user email (Admin)
Parameters
NameInRequiredType
idpathyesinteger
Request body

application/json

Responses
StatusDescriptionSchema
200successful
POST/api/admin/users/{id}/mergeMerge user into another (Admin)
Parameters
NameInRequiredType
idpathyesinteger
Request body

application/json

Responses
StatusDescriptionSchema
200successful
PUT/api/admin/users/{id}/notification_settingsUpdate user notification settings (Admin)
Parameters
NameInRequiredType
idpathyesinteger
Request body

application/json

Responses
StatusDescriptionSchema
200successful
PUT/api/admin/users/{id}/statusUpdate user moderation status (Admin)
Parameters
NameInRequiredType
idpathyesinteger
Request body

application/json

Responses
StatusDescriptionSchema
200successful
GET/api/admin/users/{user_id}/identitiesList identities for a user (Admin)
Parameters
NameInRequiredType
user_idpathyesinteger
Responses
StatusDescriptionSchema
200successful
POST/api/admin/users/{user_id}/identitiesLink an identity to a user (Admin)
Parameters
NameInRequiredType
user_idpathyesinteger
Request body

application/json

Responses
StatusDescriptionSchema
201created
DELETE/api/admin/users/{user_id}/identities/{id}Unlink an identity from a user (Admin)
Parameters
NameInRequiredType
user_idpathyesinteger
idpathyesinteger
Responses
StatusDescriptionSchema
204no content
GET/api/admin/users/{user_id}/notesList notes for a user (Admin)
Parameters
NameInRequiredType
user_idpathyesinteger
Responses
StatusDescriptionSchema
200successful
POST/api/admin/users/{user_id}/notesAdd a note to a user (Admin)
Parameters
NameInRequiredType
user_idpathyesinteger
Request body

application/json

Responses
StatusDescriptionSchema
201created
GET/api/users/meThe authenticated user
Responses
StatusDescriptionSchema
200successful
401Unauthorized
GET/api/users/searchSearch for users
Parameters
NameInRequiredType
emailqueryyesstring
Responses
StatusDescriptionSchema
200successfulExtendedUser
GET/api/users/{id}A User
Parameters
NameInRequiredType
idpathyesstring
Responses
StatusDescriptionSchema
200successful
PUT/api/users/{id}/limitedAdd limited role for a User
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
204User successfully limited
401Unauthorized
404Unknown User ID
DELETE/api/users/{id}/limitedRemove limited for a User
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
204User successfully un-limited
401Unauthorized
404Unknown User ID
PUT/api/users/{id}/spamAdd spam role for a User
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
204Spam role assigned to the user successfully
401Unauthorized
404Unknown User ID
DELETE/api/users/{id}/spamRemove spam role from a User
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
204Successfully removed the spam role from a user
401Unauthorized
404Unknown User ID
PUT/api/users/{id}/suspendSuspend a User
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
204User successfully unpublished
401Unauthorized
404Unknown User ID
PUT/api/users/{id}/trustedAdd trusted role for a User
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
204Trusted role assigned to the user successfully
401Unauthorized
404Unknown User ID
DELETE/api/users/{id}/trustedRemove trusted role from a User
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
204Successfully removed the trusted role from a user
401Unauthorized
404Unknown User ID
PUT/api/users/{id}/unpublishUnpublish a User's Articles and Comments
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
204User's articles and comments successfully unpublished
videos1
GET/api/videosArticles with a video
Parameters
NameInRequiredType
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200A List of all articles with videos

Try it

Developer reference

Base URLhttps://dev.to
Rate limit

10 requests per 30 seconds for article creation; 30 requests per 30 seconds for article updates (per Forem's API v0 docs).

Key endpoints
  • GET/api/articles
  • GET/api/articles/latest
  • GET/api/tags
  • GET/api/podcast_episodes

Changelog

Spec version1.0.0
Tracked paths99
  • Sep 2026gained an OpenAPI spec

Tracking since Sep 2026. See every tracked change ↗ ·Subscribe with RSS ↗