What is public?
The public documentation shows only the client path: OAuth, GraphQL, and integration examples. Device channels and private REST APIs remain internal.
Typical flow
- Create an OAuth integration in the console.
- Exchange client credentials for an access token.
- List workspaces and copy the id of the workspace you want to use.
- Query workspace(id: $workspaceId).devices and copy the phone’s id.
- Send the message_create mutation with input.deviceId, your own recipient number, and text.
- Check errors and read message status from workspace(id: $workspaceId).messages.
For this flow, an integration token needs smspipe/devices.read, smspipe/messages.write, and smspipe/messages.read. The mutation sends real SMS messages and consumes credits.
Request example
curl -X POST "https://api.smsport.app/graphql" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
--data '{
"query": "query Workspaces($after: String) {\n workspaces(first: 20, after: $after) {\n nodes { id displayName status }\n pageInfo { hasNextPage endCursor }\n }\n}",
"variables": {}
}'