Resource icon

hampel/xenforo-api – a PHP client for the XenForo REST API

Sim

Well-known member
Licensed customer
Sim submitted a new resource:

hampel/xenforo-api – a PHP client for the XenForo REST API - XenForo REST API PHP client: core endpoints add-on extensions and OAuth2 over any PSR-18 HTTP Client

I've been working on an integration project which includes accessing my XenForo forums from an external PHP application (Laravel based). I wanted to have a fully tested XenForo API client that I could plug in to my codebase and be confident that it would just work - so I built one.

I've now released my PHP client for XenForo's REST API, with a Laravel integration alongside it.

hampel/xenforo-api – the client...

Read more about this resource...
 
Sim updated hampel/xenforo-api – a PHP client for the XenForo REST API with a new update entry:

api v1.2.1 + laravel v1.1.0

hampel/xenforo-api

1.2.1 (2026-09-13)​


  • A 4xx is logged at info, not error: XenForo answered, and the typed exception carries the answer. error is for a forum that did not - a transport failure, a 5xx, a 2xx that is not JSON
  • The query string is left out of every logged URI, since on a lookup endpoint it is the lookup

1.2.0 (2026-09-13)​


  • ...

Read the rest of this update entry...
 
Sim updated hampel/xenforo-api – a PHP client for the XenForo REST API with a new update entry:

laravel v1.2.0

hampel/xenforo-api

Unchanged - still at 1.2.1

hampel/xenforo-api-laravel

1.2.0 (2026-09-14)​


  • Breaking: the transport is bound under the container key xenforo.http_client instead of Psr\Http\Client\ClientInterface. Rebind xenforo.http_client from any service provider to replace it; binding ClientInterface no longer affects this package...

Read the rest of this update entry...
 
Sim updated hampel/xenforo-api – a PHP client for the XenForo REST API with a new update entry:

api v1.2.2

hampel/xenforo-api

1.2.2 (2026-10-08)​

  • SiteInfo reads the scopes a key holds. XenForo sends key.scopes as a map of scope to true, not the list its documentation describes, so $scopes was always empty and hasScope() false for every key that is not allowed all scopes. Both shapes are read
  • The error-response log line carries the error codes, not the response body
...

Read the rest of this update entry...
 
Back
Top Bottom