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.
- Fetch devices with node(id: $workspaceId) { ... on Workspace { 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 with node(id: $workspaceId) { ... on Workspace { messages } }.
For this flow, an integration token needs smsport/devices.read, smsport/messages.send, and smsport/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": {}
}'