Dealership APIBlog Post

Blog Post entity

Read dealership blog post records, publishing state, content, creators, images, SEO fields, and public URLs.

#Endpoints

Blog post records for the dealership site. Detail responses include the rich-text content JSON, hero image, creator, collaborators, state, SEO fields, and public URL.

GET/v1/blog-posts
GET/v1/blog-posts/{id}
Auth
Send the dealership API key in the x-api-key header.
Detail IDs
Detail routes use the UUID returned by the corresponding list endpoint.
Dates
Date fields and date filters use ISO 8601 timestamps.

#Filters and Limits

List endpoints share the same pagination envelope. Query booleans use true or false.

ParameterTypeRequiredNotes
limitnumberNoNumber of records to return. Defaults to 100. Maximum is 500.
offsetnumberNoNumber of records to skip. Defaults to 0.
searchstringNoOptional text search. Searchable fields are listed on each entity.
createdAfterdatetimeNoReturn records created at or after an ISO 8601 timestamp.
createdBeforedatetimeNoReturn records created at or before an ISO 8601 timestamp.
updatedAfterdatetimeNoReturn records updated at or after an ISO 8601 timestamp.
updatedBeforedatetimeNoReturn records updated at or before an ISO 8601 timestamp.
statePostStateNoDRAFTPUBLISHEDARCHIVED
createdByuuidNoFilter by the UUID of the user who created the post.
Entity filters
Common list filters plus state, createdBy, and search.
Search fields
title, slug, description, and metaTitle.
createdBy
Filter by the UUID of the user who created the post.
Archived behavior
Archived posts are excluded by default. Pass state=ARCHIVED to request them.
Default sort
updatedAt descending, then id descending.
PostState
DRAFTPUBLISHEDARCHIVED
JSON
{
  "data": [],
  "pagination": {
    "limit": 100,
    "offset": 0,
    "total": 0
  }
}

#Response

FieldTypeNullableNotes
iduuidNoBlog post ID.
siteIduuidNoWebsite/site ID for the dealership.
titlestringNoPost title.
slugstringNoURL slug used for the public blog post.
statePostStateNoDRAFTPUBLISHEDARCHIVED
metaTitlestringYesSEO title override.
descriptionstringYesSEO/social description.
aiGeneratedbooleanNoWhether the post was AI-generated.
publishedAtdatetimeYesPublication timestamp.
publicUrlurlYesPublic blog post URL.
contentjsonNoRich-text content JSON on detail responses.
createdByUserNoUser who created the post.
collaboratorsUser[]NoUsers attached as collaborators.
heroImageFileYesHero image metadata.
archivedAtdatetimeYesArchive timestamp when archived.
createdAtdatetimeNoCreation timestamp.
updatedAtdatetimeNoLast update timestamp.
Identity
id, siteId, version, title, slug, and state.
Publishing
publishedAt, archivedAt, publicUrl, and aiGenerated.
Content
content, description, metaTitle, and heroImage.
People
createdBy and collaborators user summaries.
Dates
createdAt and updatedAt ISO 8601 timestamps.

#Example Request

Shell
curl "https://api.driverseat.io/v1/blog-posts?state=PUBLISHED&limit=25" \
  -H "x-api-key: sk-driverseat-..."

#Example Response

JSON
{
  "data": [
    {
      "id": "post-id",
      "title": "How to Prepare for a Test Drive",
      "slug": "prepare-for-a-test-drive",
      "state": "PUBLISHED",
      "publishedAt": "2026-06-24T12:00:00.000Z",
      "publicUrl": "https://example-dealer.com/blog/prepare-for-a-test-drive",
      "createdBy": {
        "id": "user-id",
        "name": "Jane Editor",
        "email": "jane@example.com"
      }
    }
  ],
  "pagination": {
    "limit": 25,
    "offset": 0,
    "total": 1
  }
}

#Errors

400
Invalid query parameter or resource ID. Common causes include a limit above 500, an invalid UUID, an invalid datetime, or an unsupported enum value.
401
The API key is missing, invalid, or revoked.
404
The requested blog post does not exist or does not belong to the dealership authorized by the API key.