Skip to main content
OpenPMM returns an RFC 9457 problem response for an API error. The response has the application/problem+json media type. Use the HTTP status for the error class. Use code for application logic.

Problem fields

A problem response always has these fields. Some 429 responses also include reason and retry_at. Use reason to distinguish a request-rate limit from a publishing-safety limit. Use retry_at when it is present. Each item in errors has a code and a detail. An item that refers to a member of the request also has a pointer. The pointer value is a JSON Pointer to that member. Destination-specific Post errors can occur during Create Post or Publish Post. They use publisher_validation_failed with HTTP status 422. For example, a missing Instagram destination_options object points to /posts/0/destination_options. These errors are not retryable until you correct the request. x_character_limit_exceeded is the top-level problem code when an X body item exceeds the selected Destination limit. The detail includes the effective weighted-character limit. Shorten the item and retry. Refresh the Destination after the X account subscription changes.

What to log

Log the HTTP status, code, and request_id. Do not log API keys, provider credentials, or post content.

Retry guidance

Read retryable first. A false value tells you to correct the request before you send it again. The table gives the typical action for each status.

CLI browser authorization

A network timeout or provider error can occur after publication. Get the post status before you create a new post.

Request limits and publishing safety

OpenPMM applies separate controls to HTTP requests and provider work. The RateLimit and RateLimit-Policy headers describe HTTP request allowance. They do not describe provider capacity or publishing units. Header items use neutral identifiers such as requests, minute, and sustained, followed by the numeric request limit and window. These identifiers are not provider names, product policy names, or versions. A publishing admission response rejects the complete new submission before OpenPMM stores a Post. The reason is velocity, backlog, or account-paused. public_idempotency_outcome_unknown means that the earlier mutation can have completed. The CLI uses exit 9 for this response. Inspect the affected Posts or other resources before you create new work. Provider publishing limits apply to one destination. A Post can fail with provider_publishing_limit and automatic retry is disabled. Other destination Posts continue. Use a confirmed manual retry later.