Retrieves the Direct Message (DM) availability status for a list of users. This endpoint checks if the specified accounts can receive messages based on their privacy settings, follow status, or verified permissions.
declare(strict_types=1);
require 'vendor/autoload.php';
use XapiScraper;
$sdk = XapiScraper\XapiScraper::builder()
->setSecurity(
'<YOUR_BEARER_TOKEN_HERE>'
)
->build();
$request = [
'1696160451770429440',
];
$response = $sdk->dm->status(
request: $request
);
if ($response->dmStatusResponseV2 !== null) {
// handle response
}
| Parameter |
Type |
Required |
Description |
$request |
array |
✔️ |
The request object to use for the request. |
?Operations\DmStatusResponse
| Error Type |
Status Code |
Content Type |
| Errors\HTTPValidationError |
422 |
application/json |
| Errors\APIException |
4XX, 5XX |
*/* |
Send DM via XChat encrypted chat API (1:1 or existing group g...), optional image via media_urls (max 1) or video via video_url (mutually exclusive). $0.001 per call.
declare(strict_types=1);
require 'vendor/autoload.php';
use XapiScraper;
use XapiScraper\Models\Components;
$sdk = XapiScraper\XapiScraper::builder()
->setSecurity(
'<YOUR_BEARER_TOKEN_HERE>'
)
->build();
$request = new Components\SendDmV3Query(
recipient: 'baker_donn80196',
text: 'hello from docs',
mediaUrls: [
'https://example.com/image.jpg',
],
videoUrl: 'https://video.twimg.com/amplify_video/2077160248830275584/vid/avc1/320x568/kwNDLTm',
pin: '1234',
cookie: 'ct0=abc123... or 2c4a4e1832096aa694c739b83c83b6d96d43eba7',
proxy: 'http://username:password@ip:port',
);
$response = $sdk->dm->send(
request: $request
);
if ($response->sendDmResponse !== null) {
// handle response
}
?Operations\DmSendResponse
| Error Type |
Status Code |
Content Type |
| Errors\HTTPValidationError |
422 |
application/json |
| Errors\APIException |
4XX, 5XX |
*/* |
Get DM history via XChat encrypted chat API. Use count for page size (10–200). Set all=true to follow has_more and return every page. Or paginate manually: when has_more is true, pass the oldest message's sequence_id as before.
declare(strict_types=1);
require 'vendor/autoload.php';
use XapiScraper;
use XapiScraper\Models\Components;
$sdk = XapiScraper\XapiScraper::builder()
->setSecurity(
'<YOUR_BEARER_TOKEN_HERE>'
)
->build();
$request = new Components\GetDmHistoryV3Query(
recipient: '1928096185664843776:1989842918455291904',
pin: '1234',
count: 50,
all: false,
before: '2076684837654876160',
cookie: 'ct0=abc123... or 2c4a4e1832096aa694c739b83c83b6d96d43eba7',
proxy: 'http://username:password@ip:port',
);
$response = $sdk->dm->history(
request: $request
);
if ($response->getDmHistoryV3Response !== null) {
// handle response
}
?Operations\DmHistoryResponse
| Error Type |
Status Code |
Content Type |
| Errors\HTTPValidationError |
422 |
application/json |
| Errors\APIException |
4XX, 5XX |
*/* |
Fetch one XChat media attachment and return a playable URL. Use conversation_id, media_hash_key, and optional key_version from /v3/twitter/dm-history attachments.
declare(strict_types=1);
require 'vendor/autoload.php';
use XapiScraper;
use XapiScraper\Models\Components;
$sdk = XapiScraper\XapiScraper::builder()
->setSecurity(
'<YOUR_BEARER_TOKEN_HERE>'
)
->build();
$request = new Components\GetDmMediaV3Query(
conversationId: '1928096185664843776:1989842918455291904',
mediaHashKey: 'blRIlZCVIO',
keyVersion: '3',
typeName: 'VIDEO',
filename: 'clip.mp4',
pin: '1234',
cookie: 'ct0=abc123... or 2c4a4e1832096aa694c739b83c83b6d96d43eba7',
proxy: 'http://username:password@ip:port',
);
$response = $sdk->dm->media(
request: $request
);
if ($response->getDmMediaV3Response !== null) {
// handle response
}
?Operations\DmMediaResponse
| Error Type |
Status Code |
Content Type |
| Errors\HTTPValidationError |
422 |
application/json |
| Errors\APIException |
4XX, 5XX |
*/* |
Get XChat conversation list. Use count for page size (10–200). Set all=true to follow the inbox cursor and return every conversation.
declare(strict_types=1);
require 'vendor/autoload.php';
use XapiScraper;
use XapiScraper\Models\Components;
$sdk = XapiScraper\XapiScraper::builder()
->setSecurity(
'<YOUR_BEARER_TOKEN_HERE>'
)
->build();
$request = new Components\GetConversationsV3Query(
count: 100,
all: true,
cookie: 'ct0=abc123... or 2c4a4e1832096aa694c739b83c83b6d96d43eba7',
proxy: 'http://username:password@ip:port',
);
$response = $sdk->dm->conversations(
request: $request
);
if ($response->getConversationsV3Response !== null) {
// handle response
}
?Operations\DmConversationsResponse
| Error Type |
Status Code |
Content Type |
| Errors\HTTPValidationError |
422 |
application/json |
| Errors\APIException |
4XX, 5XX |
*/* |