REST Client
The REST namespace provides an HTTP client for the SignalWire platform APIs. It organizes every HTTP endpoint into namespaced resource objects with standard CRUD operations, letting you manage phone numbers, fabric resources, call logs, video rooms, datasphere documents, and more from TypeScript.
Example
Search for available phone numbers, purchase one, and assign it to a fabric AI agent resource:
All three constructor arguments can also be provided via environment variables:
SIGNALWIRE_PROJECT_ID, SIGNALWIRE_API_TOKEN, and SIGNALWIRE_SPACE (or
SIGNALWIRE_REST_BASE_URL for a full base URL, which takes precedence).
When those are set, you can instantiate with new RestClient() and no arguments.
Pagination
list() returns one page. paginate() returns an async iterator that follows
the server’s next-page links and yields one item at a time, so you don’t build
the page loop yourself. Query parameters apply to the first request only.
The standalone paginate() and paginateAll() functions do the same for any list path, given
an HttpClient. paginateAll() collects every page into one array, so it holds the whole result
set in memory; iterate with paginate() for large ones. Both take the client, the path, query
parameters for the first request, and the key that holds each page’s items (default data).
paginate() also takes request options, applied to every page.
Timeouts, retries, and cancellation
Every resource method accepts a trailing requestOptions object that sets the
timeout, retry count, backoff, and an AbortSignal for that one call. Pass the
same object to the constructor to set a client-wide default. See
RequestOptions.
Error handling
REST errors throw RestError. A request that never reaches the
server, such as a DNS failure or a timeout, throws RestTransportError, a
subclass of RestError with a null status code, so one catch handles both: