> For the complete documentation index, see [llms.txt](https://docs.videograph.ai/llms.txt).
> Use it to discover all available pages before exploring further.

# Portrait PRO

**Use this endpoint to create a portrait pro video**


<PlaygroundComponent />

<AuthParams schemes={["basicAuth"]}>
<AuthType scheme="basicAuth">
<ParamField header="Authorization" param-type="string" required="true">
Basic authentication credentials. Provide username and password encoded in Base64 format: Basic base64(username:password)
</ParamField>
</AuthType>
</AuthParams>

### Headers

<ParamField showLocation="false" header="Accept" param-type="string" required="false">

</ParamField>

<BodyParams contentTypes={["application/json"]} defaultType="application/json">
  <ContentType type="application/json">
<ParamField showLocation="false" body="title" param-type="string" required="true">
Provide a title for your content.
</ParamField>

<ParamField showLocation="false" body="description" param-type="string" required="false">
Describe your content.
</ParamField>

<ParamField showLocation="false" body="content" param-type="array" required="false">
Provide the source url to download the content. If you want to create video clips from the video then pass on the start time and end time of the clip along with source url.

<Expandable title="Array Items" default-open="false">

  <ParamField showLocation="false" body="url" param-type="string" required="true">
  MP4 Video Source
  </ParamField>

</Expandable>
</ParamField>

<ParamField showLocation="false" body="tags" param-type="array" required="false">
Provide a list of tags that best describe your content.
</ParamField>

<ParamField showLocation="false" body="metadata" param-type="array" required="false">
Provide content metadata as key value pairs.

<Expandable title="Array Items" default-open="false">

  <ParamField showLocation="false" body="key" param-type="string" required="true">
  The constant that defines the data set ex-color
  </ParamField>

  <ParamField showLocation="false" body="value" param-type="string" required="true">
  A variable whihc belongs to the data set ex-blue
  </ParamField>

</Expandable>
</ParamField>

<ParamField showLocation="false" body="playback_policy" param-type="array" required="true">
Playback policies. Allowed are public, signed or both
</ParamField>
  </ContentType>
</BodyParams>

<Request tabs="curl,python,javascript,go,ruby">

```bash
curl -X POST "https://api.videograph.ai/video/services/api/v1/contents/portrait_pro" \
  -H "Content-Type: application/json" \
  -H "Accept: example_string" \
  -H "Authorization: Basic YOUR_CREDENTIALS" \
  -d '{
  "title": "Portrait PRO Test",
  "description": "Video description",
  "tags": [
    "tag1",
    "tag2"
  ],
  "metadata": [
    {
      "key": "abc",
      "value": "pqr"
    }
  ],
  "playback_policy": [
    "public",
    "signed"
  ],
  "content": [
    {
      "url": "https://d19nx8bm4jzw4h.cloudfront.net/Tears-of-steel.mp4"
    }
  ]
}'
```

```python
import requests
import json

url = "https://api.videograph.ai/video/services/api/v1/contents/portrait_pro"
headers = {
  "Content-Type": "application/json",
  "Accept": "example_string",
  "Authorization": "Basic YOUR_CREDENTIALS"
}
data = {
  "title": "Portrait PRO Test",
  "description": "Video description",
  "tags": [
    "tag1",
    "tag2"
  ],
  "metadata": [
    {
      "key": "abc",
      "value": "pqr"
    }
  ],
  "playback_policy": [
    "public",
    "signed"
  ],
  "content": [
    {
      "url": "https://d19nx8bm4jzw4h.cloudfront.net/Tears-of-steel.mp4"
    }
  ]
}

response = requests.post(url, headers=headers, json=data)
print(response.json())
```

```javascript
const response = await fetch("https://api.videograph.ai/video/services/api/v1/contents/portrait_pro", {
  method: "POST",
  headers: {
  "Content-Type": "application/json",
  "Accept": "example_string",
  "Authorization": "Basic YOUR_CREDENTIALS"
},
  body: JSON.stringify({
  "title": "Portrait PRO Test",
  "description": "Video description",
  "tags": [
    "tag1",
    "tag2"
  ],
  "metadata": [
    {
      "key": "abc",
      "value": "pqr"
    }
  ],
  "playback_policy": [
    "public",
    "signed"
  ],
  "content": [
    {
      "url": "https://d19nx8bm4jzw4h.cloudfront.net/Tears-of-steel.mp4"
    }
  ]
})
});

const data = await response.json();
console.log(data);
```

```go
package main

import (
    "fmt"
    "net/http"
    "bytes"
    "encoding/json"
)

func main() {
    data := []byte(`{
  "title": "Portrait PRO Test",
  "description": "Video description",
  "tags": [
    "tag1",
    "tag2"
  ],
  "metadata": [
    {
      "key": "abc",
      "value": "pqr"
    }
  ],
  "playback_policy": [
    "public",
    "signed"
  ],
  "content": [
    {
      "url": "https://d19nx8bm4jzw4h.cloudfront.net/Tears-of-steel.mp4"
    }
  ]
}`)
    
    req, err := http.NewRequest("POST", "https://api.videograph.ai/video/services/api/v1/contents/portrait_pro", bytes.NewBuffer(data))
    if err != nil {
        panic(err)
    }
    
    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("Accept", "example_string")
    req.Header.Set("Authorization", "Basic YOUR_CREDENTIALS")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()
    
    fmt.Println("Response Status:", resp.Status)
}
```

```ruby
require 'net/http'
require 'json'

uri = URI('https://api.videograph.ai/video/services/api/v1/contents/portrait_pro')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request['Accept'] = 'example_string'
request['Authorization'] = 'Basic YOUR_CREDENTIALS'
request.body = '{
  "title": "Portrait PRO Test",
  "description": "Video description",
  "tags": [
    "tag1",
    "tag2"
  ],
  "metadata": [
    {
      "key": "abc",
      "value": "pqr"
    }
  ],
  "playback_policy": [
    "public",
    "signed"
  ],
  "content": [
    {
      "url": "https://d19nx8bm4jzw4h.cloudfront.net/Tears-of-steel.mp4"
    }
  ]
}'

response = http.request(request)
puts response.body
```

</Request>

### Responses

<div data-component="ResponsesCollection"><Expandable title="200 - OK" default-open="true">

*OK*

</Expandable>

</div>

<Response tabs="200">

```json
{
  "code": 200,
  "message": "Data success",
  "status": "Success",
  "data": {
    "category": "SocialClip",
    "contentId": "702c325b-5c57-4162-924e-8accbef622b0",
    "created_at": 1678796834550,
    "description": "",
    "duration": 0,
    "isAdvanced": false,
    "isSocialClip": true,
    "metadata": [],
    "playbackPolicy": [
      "public"
    ],
    "status": "Pending",
    "statusId": 1,
    "test_video": false,
    "title": "Portrait PRO Test"
  }
}
```

</Response>

