Skip to main content
GET
/
v1
/
interview-flows
/
{interview_flow_id}
Get interview flow
curl --request GET \
  --url https://app.ribbon.ai/be-api/v1/interview-flows/{interview_flow_id} \
  --header 'Authorization: Bearer <token>'
import requests

url = "https://app.ribbon.ai/be-api/v1/interview-flows/{interview_flow_id}"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://app.ribbon.ai/be-api/v1/interview-flows/{interview_flow_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://app.ribbon.ai/be-api/v1/interview-flows/{interview_flow_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://app.ribbon.ai/be-api/v1/interview-flows/{interview_flow_id}"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("Authorization", "Bearer <token>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://app.ribbon.ai/be-api/v1/interview-flows/{interview_flow_id}")
.header("Authorization", "Bearer <token>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://app.ribbon.ai/be-api/v1/interview-flows/{interview_flow_id}")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
{
  "interview_flow_id": "<string>",
  "team_id": "<string>",
  "org_name": "<string>",
  "title": "<string>",
  "questions": [
    "<string>"
  ],
  "voice_id": "11labs-Kate",
  "language": "en-US",
  "company_logo_url": null,
  "additional_info": null,
  "additional_instructions": null,
  "interview_type": "general",
  "is_video_enabled": false,
  "is_doc_upload_enabled": false,
  "redirect_url": null,
  "webhook_url": null,
  "webhook_secret_key": null,
  "intro": null,
  "outro": null
}
{
"message": "<string>",
"code": 123,
"status": "<string>"
}
{
"message": "<string>",
"code": 123,
"status": "<string>"
}
{
"code": 123,
"status": "<string>",
"message": "<string>",
"errors": {}
}

Authorizations

Authorization
string
header
required

Provide your API key UUID in the 'Authorization' header prefixed with 'Bearer '. Example: 'Authorization: Bearer 123e4567-e89b-12d3-a456-426614174000'

Path Parameters

interview_flow_id
string
required
Minimum string length: 1

Response

OK

interview_flow_id
string
required

The ID of the interview flow.

team_id
string
required

The ID of the team this interview flow belongs to.

org_name
string
required

The name of the organization requesting the interview.

title
string
required

The title for the interview.

status
enum<string>
required

The status of the interview flow. One of: open, closed, archived. Archived flows have been deleted.

Available options:
open,
closed,
archived
questions
string[]
required

A list of questions to include in the interview.

voice_id
any | null
default:11labs-Kate

The voice ID to be used for the interview agent.

Available options:
11labs-Anna,
openai-Onyx,
openai-Shimmer,
11labs-Anthony,
11labs-Kate,
11labs-Amy,
11labs-Rahul,
IPgYtHTNLjC7Bq7IPHrm,
UOIqAnmS11Reiei1Ytkc,
vUmLiNBm6MDcy1NUHaVr,
bhJUNIXWQQ94l8eI2VUf,
b3jcIbyC3BSnaRu8avEk,
xF681s0UeE04gsf0mVsJ,
uNsWM1StCcpydKYOjKyu,
BGEU6wFi2uNm6Kje1Yhk,
4kCDY3HJwvO7Zp3con83,
null
language
any | null
default:en-US

The language of the interview flow.

Available options:
en-US,
de-DE,
es-419,
hi-IN,
ja-JP,
pt-BR,
fr-FR,
zh-CN,
ko-KR,
vi-VN,
th-TH,
ar-AE,
no-NO,
null
company_logo_url
string | null

Optional URL for the company's logo. If not provided, the Ribbon logo will be shown.

additional_info
string | null

Extra contextual information relevant to the interview. This can include background details, facts, or data points that the AI may use to enrich its questions or answers. For example: research focus, demographics or situational context.

additional_instructions
string | null

Guidelines on how the AI should behave during the interview. For example, adjust tone formality, avoid certain topics, or follow specific communication rules.

interview_type
enum<string> | null
default:general

The type of interview.

Available options:
recruitment,
general,
null
is_video_enabled
boolean | null
default:false

Whether the interview is video recorded or not.

is_doc_upload_enabled
boolean | null
default:false

Whether candidates can add resumes or other documents during the interview or not.

redirect_url
string | null

The URL where interviewee will be redirected after completing the interview. Make sure you're using the full URL, including https://

webhook_url
string | null

The URL that will be called after interview processing is complete. The payload will contain interview_flow_id, interview_id, and status.

webhook_secret_key
string | null

A secret key used to sign webhook payloads. When set, an X-Ribbon-Signature header containing an HMAC-SHA256 signature will be included with each webhook request.

intro
string | null

Introductory text spoken by the AI interviewer at the beginning of the interview.

outro
string | null

Concluding text spoken by the AI interviewer at the end of the interview.