Ccmmutty logo
Commutty IT
2 min read

【Bluesky API】BadRequestError createdAt must be an valid atproto datetime both RFC-3339 and ISO-8601

https://cdn.magicode.io/media/notebox/blob_Tt52niS
BlueskyのAPIで「BadRequestError createdAt must be an valid atproto datetime (both RFC-3339 and ISO-8601)」というエラーが出る際の対処法をまとめました

起きていた事象

Blueskyに対してAPIで投稿を行っているBotがあるのですが、それが最近こけ始めました。
エラー内容を見てみると、リクエスト時に指定しているcreatedAtというパラメータが不正とのこと。
{
  "error": "InvalidRequest",
  "message": "Invalid app.bsky.feed.post record: createdAt must be an valid atproto datetime (both RFC-3339 and ISO-8601)"
}

対処法

以下の形式でcreatedAt を設定するとエラーなくAPIにリクエストが送信できました
import datetime
datetime.datetime.now(tz=datetime.timezone.utc).replace(tzinfo=None).isoformat(timespec="milliseconds") + "Z"

原因

API側のcreatedAt に対するバリデーションに引っかかっていた。
↓エラー内容的にはここ。
↓具体的には、ここに記載されているDatetimeの形式に合わせてあげる必要があります

参考

Discussion

コメントにはログインが必要です。