> ## Documentation Index
> Fetch the complete documentation index at: https://developers.respondent.io/llms.txt
> Use this file to discover all available pages before exploring further.

> Permanently close a project and stop all recruitment. **This action cannot be undone.** Ensure all participants have been paid before closing.

# Close a project



## OpenAPI

````yaml patch /v1/projects/{projectId}/close
openapi: 3.0.0
info:
  title: Partner API
  description: Public API for partner integrations
  version: '1.0'
  contact: {}
servers:
  - url: https://api-staging.respondent.io
security: []
tags: []
paths:
  /v1/projects/{projectId}/close:
    patch:
      tags:
        - projects
      summary: Close a project
      description: |-
        Once a project is closed you can't contact participants, or change any
        participants' status.
      operationId: ProjectsController_close
      parameters:
        - name: x-api-key
          in: header
          required: true
          schema:
            type: string
        - name: x-api-secret
          in: header
          required: true
          schema:
            type: string
        - name: projectId
          required: true
          in: path
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloseProjectDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
components:
  schemas:
    CloseProjectDto:
      type: object
      properties:
        message:
          type: string
    Project:
      type: object
      properties:
        createdAt:
          type: string
        updatedAt:
          type: string
        publicTitle:
          type: string
          description: >-
            Project Title.

            This is visible to Respondents, do not mention any incentive amount
            as you may change it during your project.
        publicInternalName:
          type: string
          description: |-
            Internal Project Name.
            This is visible only to your organization.
            Character Limit: Min 3 and Max 50.
        publicDescription:
          type: string
          description: >-
            Required when publishing a project.

            This is visible to Respondents.

            A short description of the project visible to participants. This
            should clearly outline the purpose, requirements, and expectations
            for participation.

            Character Limit: Max 800.
        organizationId:
          type: string
          format: ObjectId
        teamId:
          type: string
          format: ObjectId
        projectStatus:
          $ref: '#/components/schemas/ProjectStatus'
        projectRecruitingStatus:
          $ref: '#/components/schemas/ProjectRecruitingStatus'
        targetMarketType:
          $ref: '#/components/schemas/AudienceTypes'
        typeOfResearch:
          $ref: '#/components/schemas/ResearchTypes'
        targetResearchMethodology:
          $ref: '#/components/schemas/KindOfResearch'
        unmoderatedStudyOrSurvey:
          description: For Unmoderated Studies and Surveys only.
          allOf:
            - $ref: '#/components/schemas/UnmoderatedStudyOrSurvey'
        participantTimeRequiredMinutes:
          type: number
        incentiveAmount:
          type: number
          description: >-
            Dollars ranging: Min 5 and Max 1000.

            Pro tip: Set your incentive at or above $2 per minute (B2C) or $3
            per minute (B2B) to attract quality participants faster.

            More tips to pick the right incentive:
            https://help.respondent.io/en/articles/5471087-what-is-the-best-incentive-for-my-research-project
        targetNumberOfParticipants:
          type: number
          description: >-
            Number of Participants

            We will recruit up to 3 times your target number of qualified
            participants.

            Number Limit: Min 1 and Max 500.
        targetCountry:
          $ref: '#/components/schemas/ProjectCountryCode'
        targetCountries:
          type: array
          items:
            $ref: '#/components/schemas/ProjectCountryCode'
        targetCities:
          type: array
          items:
            $ref: '#/components/schemas/ProjectCities'
        targetJobFunctions:
          type: array
          items:
            $ref: '#/components/schemas/JobFunction'
        targetCompanySize:
          type: array
          items:
            $ref: '#/components/schemas/CompanySize'
        targetLocationRespondentInPerson:
          description: >-
            Required for In-Person projects only.

            Please provide the full address (including city & state if
            applicable) where the project will be conducted.
          allOf:
            - $ref: '#/components/schemas/ProjectLocationInPerson'
        targetHouseholdIncome:
          type: array
          items:
            $ref: '#/components/schemas/HouseholdIncome'
        targetGenders:
          $ref: '#/components/schemas/Gender'
        targetEducation:
          type: array
          items:
            $ref: '#/components/schemas/EducationLevel'
        targetEthnicities:
          type: array
          items:
            $ref: '#/components/schemas/Ethnicities'
        targetAgeGroups:
          type: array
          items:
            $ref: '#/components/schemas/AgeGroup'
        screenerQuestions:
          type: array
          items:
            $ref: '#/components/schemas/ScreenerQuestion'
        inviteSurveyLink:
          type: string
        closedDetails:
          $ref: '#/components/schemas/ProjectClosedDetails'
        closed:
          type: boolean
          description: 'Use projectStatus: ''CLOSED'''
          deprecated: true
        closedMessage:
          type: string
          description: Use closedDetails.closedMessage.
          deprecated: true
        closedOnDate:
          format: date-time
          type: string
          description: Use closedDetails.closedOnDate.
          deprecated: true
        closedByUserId:
          type: string
          description: Use closedDetails.closedByUserId.
          deprecated: true
        ndaDetails:
          $ref: '#/components/schemas/NdaDetails'
        ndaType:
          $ref: '#/components/schemas/NdaTypeDeprecated'
        ndaFileUrl:
          type: string
          nullable: true
          description: Use ndaDetails.ndaFileUrl
          deprecated: true
        ndaLink:
          type: string
          nullable: true
          description: Use ndaDetails.ndaLink.
          deprecated: true
        filterPastParticipation:
          description: >-
            - If researcher wants to filter out participants who have
            participated in past projects.

            - Past Participation logic is used at Researcher level based on
            external reseacher id.

            - The participant must have been paid for a project to count as a
            past participant.

            - Past participation filtering is available within 4 hours of a
            payout being made, NOT immediately after payment.
          allOf:
            - $ref: '#/components/schemas/PastParticipation'
        externalResearcher:
          description: >-
            Required for all projects to identify your researcher with
            Respondent to differentiate from other researchers recruiting
            through your platform.
          allOf:
            - $ref: '#/components/schemas/ExternalResearcher'
        seniority:
          type: array
          items:
            $ref: '#/components/schemas/SeniorityLevel'
        publishedAt:
          format: date-time
          type: string
        automations:
          description: >-
            - Autopay is used to automatically pay participants after they
            complete a project.
              - If not provided, defaults to `true`.
            - Autoinvite is used to automatically invite participants to a
            project if they qualify after completing the screener.
              - Only available when `targetResearchMethodology` is one of: [`unmoderatedStudy`, `survey`].
              - If not provided, defaults to `false`.
          allOf:
            - $ref: '#/components/schemas/Automation'
        keyQualifiers:
          type: array
          items:
            $ref: '#/components/schemas/KeyQualifier'
        completionUrl:
          type: string
          nullable: true
          description: >-
            Researchers can provide participants with this link at the
            conclusion of their survey or study, enabling them to self-report
            task completion.

            Available for projects where the targetResearchMethodology is either
            unmoderatedStudy or survey.
        targetProfessionalIndustries:
          description: |-
            Required for Industry professionals (B2B) projects
            Array: Min 1 and Max 5.
          type: array
          items:
            $ref: '#/components/schemas/SimpleIndustry'
        targetJobTitles:
          description: |-
            Available for Industry professionals (B2B) projects.
            Array: Max 30.
          type: array
          items:
            $ref: '#/components/schemas/SimpleJobTitle'
        targetProjectTopics:
          description: >-
            Required for General Population (B2C) projects only

            Tagging your projects with topics will better help match your
            general population project with participants that have indicated
            interest in these topics.

            Array: Min 1 and Max 2.
          type: array
          items:
            $ref: '#/components/schemas/SimpleTopic'
        targetAudienceSkills:
          description: >-
            Array: Min 0 and Max 25.

            Select skills, knowledge areas, tools and/or certifications you
            would like to target.
          type: array
          items:
            $ref: '#/components/schemas/Skill'
        id:
          type: string
      required:
        - createdAt
        - publicTitle
        - publicInternalName
        - projectStatus
        - projectRecruitingStatus
        - targetMarketType
        - typeOfResearch
        - targetResearchMethodology
        - participantTimeRequiredMinutes
        - incentiveAmount
        - targetNumberOfParticipants
        - externalResearcher
        - id
    ProjectStatus:
      type: string
      enum:
        - DRAFT
        - PAID
        - ARCHIVED
        - CLOSED
    ProjectRecruitingStatus:
      type: string
      enum:
        - RECRUITING
        - RECRUITED
        - PAUSED
    AudienceTypes:
      type: string
      description: >-
        Audience type to be targeted for this project. Example values: Industry
        professionals (B2B) or General Population (B2C)
      enum:
        - b2b
        - b2c
    ResearchTypes:
      type: string
      description: Research type for this project, if it is in-person or remote
      enum:
        - inPerson
        - remote
    KindOfResearch:
      type: string
      description: >-
        Kind of research to be conducted for this project. [Details
        here](https://help.respondent.io/en/articles/5489302-research-method-and-types-of-research-projects).

        If `typeOfResearch == inPerson` &rarr; allowed values are: [`oneOnOne`,
        `focusGroup`, `inRespondentHome`, `inRespondentOffice`]

        If `typeOfResearch == remote` &rarr; allowed values are: [`oneOnOne`,
        `focusGroup`, `unmoderatedStudy`, `survey`, `diaryStudy`]
      enum:
        - oneOnOne
        - focusGroup
        - inRespondentHome
        - inRespondentOffice
        - unmoderatedStudy
        - survey
        - diaryStudy
    UnmoderatedStudyOrSurvey:
      type: object
      properties:
        remoteCommunicationDetails:
          type: string
          description: |-
            Custom url for the study, to be sent in the invitation .
            Can be updated when inviting the participant.
        specialInstructions:
          type: string
          description: |-
            Special instructions for the study, to be sent in the invitation.
            Can be updated when inviting the participant.
            Character limit: Max 2000.
    ProjectCountryCode:
      type: string
      enum:
        - AX
        - AL
        - DZ
        - AS
        - AD
        - AI
        - AQ
        - AG
        - AR
        - AM
        - AW
        - AU
        - AT
        - BS
        - BH
        - BD
        - BB
        - BY
        - BE
        - BZ
        - BJ
        - BM
        - BT
        - BO
        - BA
        - BW
        - BV
        - BR
        - VG
        - IO
        - BN
        - BG
        - BF
        - BI
        - CV
        - CM
        - CA
        - KY
        - CF
        - TD
        - CL
        - CX
        - CC
        - CO
        - KM
        - CG
        - CK
        - CR
        - HR
        - CU
        - CW
        - CY
        - CZ
        - CI
        - CD
        - DK
        - DJ
        - DM
        - EC
        - EG
        - SV
        - GQ
        - ER
        - EE
        - SZ
        - ET
        - FK
        - FO
        - FJ
        - FI
        - FR
        - GF
        - PF
        - TF
        - GA
        - GM
        - GE
        - DE
        - GI
        - GR
        - GL
        - GD
        - GP
        - GU
        - GT
        - GG
        - GN
        - GW
        - GY
        - HT
        - HM
        - VA
        - HN
        - HK
        - HU
        - IS
        - IN
        - ID
        - IR
        - IQ
        - IE
        - IM
        - IL
        - IT
        - JM
        - JP
        - JE
        - JO
        - KZ
        - KE
        - KI
        - LA
        - LV
        - LB
        - LR
        - LY
        - LI
        - LT
        - LU
        - MG
        - MW
        - MY
        - MV
        - ML
        - MT
        - MH
        - MQ
        - MR
        - MU
        - YT
        - MX
        - FM
        - MD
        - MC
        - MN
        - ME
        - MS
        - MA
        - MZ
        - NA
        - NR
        - NP
        - NL
        - NC
        - NZ
        - NI
        - NE
        - NU
        - NF
        - KP
        - MK
        - MP
        - 'NO'
        - OM
        - PW
        - PA
        - PG
        - PY
        - PE
        - PH
        - PN
        - PL
        - PT
        - PR
        - QA
        - RO
        - RW
        - RE
        - SH
        - KN
        - LC
        - PM
        - VC
        - WS
        - SM
        - ST
        - SA
        - RS
        - SC
        - SL
        - SG
        - SK
        - SI
        - SB
        - SO
        - ZA
        - GS
        - KR
        - ES
        - LK
        - SR
        - SJ
        - SE
        - CH
        - TZ
        - TW
        - TH
        - TL
        - TG
        - TK
        - TO
        - TT
        - TN
        - TR
        - TM
        - TC
        - TV
        - VI
        - UG
        - AE
        - GB
        - UM
        - US
        - UY
        - VU
        - VE
        - VN
        - WF
        - EH
        - ZM
        - ZW
        - all
    ProjectCities:
      type: object
      properties:
        location:
          $ref: '#/components/schemas/Location'
      required:
        - location
    JobFunction:
      type: string
      description: |-
        Available for Industry professionals (B2B) projects
        Max: 3
      enum:
        - accountingAuditing
        - administrative
        - advertising
        - analyst
        - artCreative
        - businessDevelopment
        - consulting
        - customerService
        - distribution
        - design
        - education
        - finance
        - generalBusiness
        - healthcareProvider
        - humanResources
        - informationTechnology
        - legal
        - management
        - manufacturing
        - marketing
        - other
        - publicRelations
        - purchasing
        - productManagement
        - projectManagement
        - production
        - qualityAssurance
        - research
        - sales
        - science
        - strategyPlanning
        - supplyChain
        - training
        - writingEditing
    CompanySize:
      type: string
      enum:
        - selfemployed
        - 1-10
        - 11-50
        - 51-200
        - 201-500
        - 501-1000
        - 1001-5000
        - 5001-10000
        - 10000+
        - all
    ProjectLocationInPerson:
      type: object
      properties:
        id:
          type: string
        address1:
          type: string
        zipcode:
          type: string
        city:
          type: string
        region:
          type: string
        state:
          type: string
        country:
          $ref: '#/components/schemas/ProjectCountryCode'
        formattedAddress:
          type: string
        latitude:
          type: number
        longitude:
          type: number
      required:
        - address1
        - city
        - country
        - formattedAddress
        - latitude
        - longitude
    HouseholdIncome:
      type: string
      enum:
        - <30000
        - 30000-39999
        - 40000-59999
        - 60000-79999
        - 80000-99999
        - 100000-149999
        - 150000-199999
        - 200000+
        - all
        - all
    Gender:
      type: string
      enum:
        - male
        - female
        - other
        - nonbinary
        - transmale
        - transfemale
        - prefernottoanswer
        - N/A
    EducationLevel:
      type: string
      enum:
        - somehighschool
        - highschoolgraduate
        - somecollegenodegree
        - tradetechnicalvocationaltraining
        - associatedegree
        - bachelordegree
        - masterdegree
        - doctoratedegree
        - N/A
    Ethnicities:
      type: string
      enum:
        - americanindianalaskannative
        - hispaniclatino
        - blackorafricanamerican
        - asianpacificislander
        - whitecaucasian
        - middleeastern
        - multipleethnicity
        - prefernotdisclose
        - N/A
    AgeGroup:
      type: string
      enum:
        - 18-20
        - 21-29
        - 30-39
        - 40-54
        - 55+
        - N/A
    ScreenerQuestion:
      type: object
      properties:
        createdAt:
          type: string
        updatedAt:
          type: string
        questionType:
          $ref: '#/components/schemas/QuestionType'
        uid:
          type: string
        text:
          type: string
        answers:
          type: array
          items:
            $ref: '#/components/schemas/ScreenerQuestionAnswer'
        isRequired:
          type: boolean
        skipLogic:
          type: boolean
        includeOtherOption:
          type: boolean
        isEnd:
          type: boolean
        logic:
          $ref: '#/components/schemas/ScreenerQuestionSkipLogic'
        minValue:
          type: number
        maxValue:
          type: number
        step:
          type: number
        order:
          type: number
        warnings:
          type: array
          items:
            type: string
        id:
          type: string
      required:
        - createdAt
        - text
        - minValue
        - maxValue
        - step
        - id
    ProjectClosedDetails:
      type: object
      properties:
        closed:
          type: boolean
        closedMessage:
          type: string
        closedOnDate:
          format: date-time
          type: string
        closedByUserId:
          type: string
    NdaDetails:
      type: object
      properties:
        ndaType:
          $ref: '#/components/schemas/NdaType'
        ndaLink:
          type: string
          nullable: true
        ndaFileUrl:
          type: string
          nullable: true
    NdaTypeDeprecated:
      type: string
      description: Use ndaDetails.ndaType.
      deprecated: true
      default: none
      enum:
        - none
        - file
        - link
    PastParticipation:
      type: object
      properties:
        hasNeverParticipated:
          type: boolean
          description: >-
            If true &rarr; only include participants who have never participated
            in a project with the researcher.

            If false &rarr; only include participants who have not participated
            in a project with the researcher in the past `months` months.
        since:
          format: date-time
          type: string
          description: >-
            It's autocalculated based on the `hasNeverParticipated` / `months`
            entered and displays in the API response
        months:
          $ref: '#/components/schemas/PastParticipationMonths'
      required:
        - hasNeverParticipated
    ExternalResearcher:
      type: object
      properties:
        researcherId:
          type: string
          description: >-
            A unique researcher ID provided by you, used to associate and filter
            projects.
        researcherName:
          type: string
          description: >-
            To be used when sending messages or emails to the respondent. Full
            name not required.
        teamId:
          type: string
          description: >-
            Optional additional filtering. This researcher's internal teamId
            from your organization.
        companyName:
          type: string
        companyId:
          type: string
          description: >-
            Optional additional filtering. This researcher's internal companyId
            from your organization.
        bookingUrl:
          type: string
          description: >-
            Link to book a meeting with the researcher. Required if
            targetResearchMethodology of project is oneOnOne or focusGroup.
      required:
        - researcherId
    SeniorityLevel:
      type: string
      enum:
        - unpaid
        - student
        - training
        - entrylevel
        - senior
        - manager
        - director
        - chiefofficer
        - partner
        - vicepresident
    Automation:
      type: object
      properties:
        autopay:
          type: boolean
        autoinvite:
          type: boolean
      required:
        - autopay
    KeyQualifier:
      type: string
      description: >-
        Converts signals into required match filters. [Details
        here](https://developers.respondent.io/docs/targeting-audiences-effectively).
      enum:
        - targetHouseholdIncome
        - targetProfessionalIndustries
        - targetCompanySize
        - targetProjectTopics
        - targetAudienceSkills
    SimpleIndustry:
      type: object
      properties:
        id:
          type: string
          format: ObjectId
        name:
          type: string
      required:
        - id
        - name
    SimpleJobTitle:
      type: object
      properties:
        id:
          type: string
          format: ObjectId
        name:
          type: string
      required:
        - id
        - name
    SimpleTopic:
      type: object
      properties:
        id:
          type: string
          format: ObjectId
        name:
          type: string
      required:
        - id
        - name
    Skill:
      type: object
      properties:
        createdAt:
          type: string
        updatedAt:
          type: string
        name:
          type: string
        slug:
          type: string
        validated:
          type: boolean
          default: false
        type:
          type: string
          default: skill
        count:
          type: number
          default: 0
        id:
          type: string
      required:
        - createdAt
        - name
        - slug
        - validated
        - type
        - id
    Location:
      type: object
      properties:
        id:
          type: string
        googleId:
          type: string
        region:
          type: string
        city:
          type: string
        state:
          type: string
        country:
          $ref: '#/components/schemas/ProjectCountryCode'
        zipcode:
          type: string
        address1:
          type: string
        formattedAddress:
          type: string
        location:
          $ref: '#/components/schemas/LocationCoordinate'
      required:
        - city
        - country
        - location
    QuestionType:
      type: string
      enum:
        - radio
        - multiLineTextbox
        - checkbox
        - singleLineTextbox
        - numericBox
        - sliderScale
        - fileUpload
    ScreenerQuestionAnswer:
      type: object
      properties:
        createdAt:
          type: string
        updatedAt:
          type: string
        uid:
          type: string
        text:
          type: string
          description: Required  unless `isOther`, then text will be set to 'Other'
        answerValue:
          type: number
          description: |-
            CHECKBOX: {
                    id: 3,
                    answerValues: [
                      { id: 1, text: 'May Select' },
                      { id: 2, text: 'Must Select' },
                      { id: 3, text: 'Disqualify' },
                    ],
                  },
                   RADIO: {
                    id: 1,
                    answerValues: [
                      { id: 1, text: 'Qualify' },
                      { id: 2, text: 'Disqualify' },
                    ],
                  },
        goToQuestionUid:
          type: string
          description: Skip logic for radio questions. Uid of question to skip to.
        isOther:
          type: boolean
          description: Is 'Other' answer with comment field
        id:
          type: string
      required:
        - createdAt
        - uid
        - answerValue
        - id
    ScreenerQuestionSkipLogic:
      type: object
      properties:
        answerUid:
          type: string
        goToQuestionUid:
          type: string
        skipLogicType:
          $ref: '#/components/schemas/ScreenerQuestionSkipLogicType'
        multipleAnswers:
          type: array
          items:
            $ref: '#/components/schemas/SkipLogicMultipleAnswer'
        multipleAnswersBoolType:
          $ref: '#/components/schemas/SkipLogicMultipleAnswersBoolType'
      required:
        - answerUid
    NdaType:
      type: string
      default: none
      enum:
        - none
        - file
        - link
    PastParticipationMonths:
      type: string
      description: >-
        Number of months to exclude participants who have previously
        participated in a study.

        Used only when `hasNeverParticipated` is false. For example, `months: 3`
        excludes participants who participated in the past 3 months.
      enum:
        - '-1'
        - '1'
        - '2'
        - '3'
        - '6'
        - '9'
        - '12'
    LocationCoordinate:
      type: object
      properties:
        longitude:
          type: number
        latitude:
          type: number
      required:
        - longitude
        - latitude
    ScreenerQuestionSkipLogicType:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/SkipLogicTypeId'
        text:
          $ref: '#/components/schemas/SkipLogicType'
      required:
        - id
        - text
    SkipLogicMultipleAnswer:
      type: object
      properties:
        answer:
          type: string
        logicType:
          $ref: '#/components/schemas/ScreenerQuestionSkipLogicType'
      required:
        - answer
        - logicType
    SkipLogicMultipleAnswersBoolType:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/MultipleAnswersBoolTypeId'
        text:
          $ref: '#/components/schemas/MultipleAnswersBoolType'
      required:
        - id
        - text
    SkipLogicTypeId:
      type: number
      description: |-
        [

         SELECTED: 1

         NOT_SELECTED: 2

        ]
      enum:
        - 1
        - 2
    SkipLogicType:
      type: string
      enum:
        - Selected
        - Not Selected
    MultipleAnswersBoolTypeId:
      type: number
      description: |-
        [

         AND: 1

         OR: 2

        ]
      enum:
        - 1
        - 2
    MultipleAnswersBoolType:
      type: string
      enum:
        - AND
        - OR

````