# Create a Conference Stream POST https://YOUR_SPACE.signalwire.com/api/laml/2010-04-01/Accounts/{AccountSid}/Conferences/{ConferenceSid}/Streams Content-Type: application/x-www-form-urlencoded Create a stream for an existing conference. #### Permissions The API token used to authenticate must have the following scope(s) enabled to make a successful request: _Voice_. [Learn more about API scopes](/docs/platform/your-signalwire-api-space). Reference: https://signalwire.com/docs/compatibility-api/rest/conference-streams/create-conference-stream ## OpenAPI Specification ```yaml openapi: 3.1.0 info: title: compatibility version: 1.0.0 paths: /Accounts/{AccountSid}/Conferences/{ConferenceSid}/Streams: post: operationId: create-conference-stream summary: Create a Conference Stream description: >- Create a stream for an existing conference. #### Permissions The API token used to authenticate must have the following scope(s) enabled to make a successful request: _Voice_. [Learn more about API scopes](/docs/platform/your-signalwire-api-space). tags: - subpackage_conferenceStreams parameters: - name: AccountSid in: path description: The unique identifier for the account that created this conference. required: true schema: type: string format: uuid - name: ConferenceSid in: path description: The unique identifier for the conference this participant is in. required: true schema: type: string format: uuid - name: Authorization in: header description: >- SignalWire Basic Authentication using Project ID and API Token. The client sends HTTP requests with the Authorization header containing the word Basic followed by a space and a base64-encoded string of project_id:token. The project ID will be used as the username and the API token as the password. Example: ``` Authorization: Basic base64(project_id:token) ``` required: true schema: type: string responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/ConferenceStreamResponse' '400': description: >- The request was invalid or cannot be processed. Check the error details for more information. content: application/json: schema: $ref: '#/components/schemas/CompatibilityErrorResponse' '401': description: Authentication failed. Please verify your credentials and try again. content: application/json: schema: $ref: '#/components/schemas/CompatibilityErrorResponse' '404': description: >- The requested resource was not found. Please verify the resource identifier. content: application/json: schema: $ref: '#/components/schemas/CompatibilityErrorResponse' '422': description: >- The request could not be processed due to validation errors. Review the errors array for specific issues. content: application/json: schema: $ref: '#/components/schemas/CompatibilityErrorStringArrayResponse' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateConferenceStreamRequest' servers: - url: https://YOUR_SPACE.signalwire.com/api/laml/2010-04-01 components: schemas: CreateConferenceStreamRequestTrack: type: string enum: - inbound_track - outbound_track - both_tracks default: both_tracks description: >- This attribute can be one of inbound_track, outbound_track, both_tracks. Default is `both_tracks`. title: CreateConferenceStreamRequestTrack CreateConferenceStreamRequestStatusCallbackMethod: type: string enum: - GET - POST default: POST description: >- Whether the request to `StatusCallback` URL is a `GET` or a `POST`. Default is `POST`. title: CreateConferenceStreamRequestStatusCallbackMethod CreateConferenceStreamRequestStreamCodec: type: string enum: - PCMU - PCMA - L16 - L16@16000h - L16@24000h description: The audio codec to use for the stream. title: CreateConferenceStreamRequestStreamCodec CreateConferenceStreamRequest: type: object properties: Name: type: string description: >- Unique name for the Stream, per Conference. It is used to stop a Stream by name. Track: $ref: '#/components/schemas/CreateConferenceStreamRequestTrack' description: >- This attribute can be one of inbound_track, outbound_track, both_tracks. Default is `both_tracks`. StatusCallbackMethod: $ref: >- #/components/schemas/CreateConferenceStreamRequestStatusCallbackMethod description: >- Whether the request to `StatusCallback` URL is a `GET` or a `POST`. Default is `POST`. StatusCallback: type: string format: uri description: The URL to request to when stream is available. Url: type: string format: uri description: >- Absolute or relative URL. A WebSocket connection to the url will be established and audio will start flowing towards the Websocket server. The only supported protocol is wss. For security reasons ws is NOT supported. StreamCodec: $ref: '#/components/schemas/CreateConferenceStreamRequestStreamCodec' description: The audio codec to use for the stream. StreamRealTime: type: boolean description: Enable real-time streaming for the conference stream. Parameter1.Name: type: string description: >- Custom parameter name to pass towards the WebSocket server. You can pass up to 99 custom parameters using `Parameter1.Name` through `Parameter99.Name`. Parameter1.Value: type: string description: >- Custom parameter value to pass towards the WebSocket server. You can pass up to 99 custom parameters using `Parameter1.Value` through `Parameter99.Value`. Parameter2.Name: type: string description: Custom parameter name to pass towards the WebSocket server. Parameter2.Value: type: string description: Custom parameter value to pass towards the WebSocket server. AuthorizationBearerToken: type: string description: Bearer token for authorization with the WebSocket server. required: - Url description: Request body for creating a conference stream. title: CreateConferenceStreamRequest ConferenceStreamStatus: type: string enum: - queued - in-progress - stopped description: Conference stream status. title: ConferenceStreamStatus ConferenceStreamResponse: type: object properties: account_sid: type: string format: uuid description: The unique identifier for the account. conference_sid: type: string format: uuid description: The unique identifier for the conference. date_updated: type: string description: The date, in RFC 2822 GMT format, this stream was updated. name: type: - string - 'null' description: >- The name of the stream. May be null if not specified when creating the stream. sid: type: string format: uuid description: The unique identifier for the stream. status: $ref: '#/components/schemas/ConferenceStreamStatus' description: The status of the stream. uri: type: string description: The URI for the stream. required: - account_sid - conference_sid - date_updated - name - sid - status - uri description: Response containing a single conference stream. title: ConferenceStreamResponse CompatibilityErrorResponse: type: object properties: code: type: integer description: Error code. message: type: string description: Error message. more_info: type: string description: URL for more information about the error. status: type: integer description: HTTP status code. required: - code - message - more_info - status description: Error response model. title: CompatibilityErrorResponse CompatibilityErrorStringArrayResponse: type: object properties: errors: type: array items: type: string description: List of validation error messages. required: - errors description: Error response with errors array of strings format. title: CompatibilityErrorStringArrayResponse securitySchemes: SignalWireBasicAuth: type: http scheme: basic description: >- SignalWire Basic Authentication using Project ID and API Token. The client sends HTTP requests with the Authorization header containing the word Basic followed by a space and a base64-encoded string of project_id:token. The project ID will be used as the username and the API token as the password. Example: ``` Authorization: Basic base64(project_id:token) ``` ``` ## SDK Code Examples ```python import requests url = "https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Conferences/ConferenceSid/Streams" payload = "" headers = { "Authorization": "Basic :", "Content-Type": "application/x-www-form-urlencoded" } response = requests.post(url, data=payload, headers=headers) print(response.json()) ``` ```javascript const url = 'https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Conferences/ConferenceSid/Streams'; const options = { method: 'POST', headers: { Authorization: 'Basic :', 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams('') }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "net/http" "io" ) func main() { url := "https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Conferences/ConferenceSid/Streams" req, _ := http.NewRequest("POST", url, nil) req.Header.Add("Authorization", "Basic :") req.Header.Add("Content-Type", "application/x-www-form-urlencoded") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Conferences/ConferenceSid/Streams") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["Authorization"] = 'Basic :' request["Content-Type"] = 'application/x-www-form-urlencoded' response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Conferences/ConferenceSid/Streams") .header("Authorization", "Basic :") .header("Content-Type", "application/x-www-form-urlencoded") .asString(); ``` ```php request('POST', 'https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Conferences/ConferenceSid/Streams', [ 'form_params' => null, 'headers' => [ 'Authorization' => 'Basic :', 'Content-Type' => 'application/x-www-form-urlencoded', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Conferences/ConferenceSid/Streams"); var request = new RestRequest(Method.POST); request.AddHeader("Authorization", "Basic :"); request.AddHeader("Content-Type", "application/x-www-form-urlencoded"); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "Authorization": "Basic :", "Content-Type": "application/x-www-form-urlencoded" ] let request = NSMutableURLRequest(url: NSURL(string: "https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Conferences/ConferenceSid/Streams")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```